← ClaudeAtlas

ha-media-source-addlisted

Augments an existing Home Assistant Custom Integration with a media source provider, conforming to spec/ha/media-source. Creates media_source.py with the top-level async_get_media_source factory, a MediaSource subclass bound to the domain, async_browse_media returning a BrowseMediaSource tree (root node on empty identifier, BrowseError on failure), and async_resolve_media returning PlayMedia (Unresolvable on failure); sets MediaClass plus correct can_play/can_expand per node, builds URIs via generate_media_source_id, and wires translatable exceptions. Discovery needs no manifest.json change. Activate on "add a media source", "let users browse my media in the media browser", or equivalent German requests. Do not activate for a media_player entity that consumes media sources (ha/entity-platforms-media), translation mechanics (ha-translation-sync), greenfield scaffolding (ha-integration-scaffold), or deploying to a live HA instance.
nolte/claude-home-assistant · ★ 1 · AI & Automation · score 68
Install: claude install-skill nolte/claude-home-assistant
# HA Media Source Add Spec: `spec/claude/ha-media-source-add/en.md` (EN canonical) / `spec/claude/ha-media-source-add/de.md` (DE translation). ## Why this is a skill, not an agent - **Human-visible augmentation surface** — the user describes a media hierarchy and reads back `media_source.py`, the browse tree shape, and the conformance report; a skill keeps this on the visible command surface, like the sibling augment skills (`ha-config-flow-augment`, `ha-coordinator-add`, `ha-repairs-add`). - **Mid-flow interactivity** — the media-source-vs-media-player-entity decision and the per-level `MediaClass`/`identifier` shape are per-run dialogues the user approves before generation. - **Bounded, inline generation** — one `media_source.py` module with two methods fits inline; no isolated agent context is needed. - Counter-dimension considered: the draft→validate loop could be an agent, but the source-vs-entity decision and the hierarchy shaping belong in the user's working context; skill wins. ## When this skill activates Use this skill to add a media source provider to an existing integration — a `media_source.py` that exposes a browsable, playable media library to the Home Assistant media browser. ## When NOT to activate - a `media_player` entity that consumes media sources (the `async_browse_media(hass, ...)` call path) → `ha/entity-platforms-media` / `ha/entity-architecture` - translation mechanics for `Unresolvable`/`BrowseError` → `ha/translations` - thumbnail proxy / st