ha-hacs-release¶
Macht eine bestehende HA-Custom-Integration HACS-release-fertig — valide hacs.json, tag-abgeglichene Manifest-Version, ZIP-Release-CD-Pflicht und brands-Pointer.
Make an existing Home Assistant Custom Integration HACS-release-ready by scaffolding and verifying the HACS-specific distribution layer defined in spec/ha/hacs-release — a valid hacs.json (name, zip_release plus filename, homeassistant floor, hide_default_branch, render_readme), the manifest.json version aligned to the GitHub release tag scheme vMAJOR.MINOR.PATCH, the ZIP-release CD obligation (build and attach the domain.zip asset), and the brands registration pointer. Operationalizes the HACS layer on top of the generic release-automation flow (release-drafter, chore(release) alignment, reusable-release-publish) without redefining it. Activate on phrasings like "make this integration HACS-release-ready", "add a hacs.json", "set up ZIP release for HACS", "mach die Integration HACS-release-fertig", "füge eine hacs.json hinzu". Do not activate for the generic release publish flow itself (release-automation), the CI validation workflow (ha-integration-ci-scaffold), the integration code (ha-integration-scaffold), or deploying to a live HA instance.
- Plugin:
claude-home-assistant - Phase: 7 Close & Release (
close-release) - Tags:
home-assistant,custom-integration,hacs,release - Quelle: skills/ha-hacs-release/SKILL.md
Anwenden wenn¶
- you want to make an integration installable through HACS
- you want to add a hacs.json to the integration
- you want to set up a ZIP release for HACS
Nicht anwenden wenn¶
- You need the CI validation workflow (hassfest / HACS action / pytest) →
ha-integration-ci-scaffold - You need to generate the integration code itself →
ha-integration-scaffold
Siehe auch¶
Referenziert von¶
HA HACS Release¶
Spec: https://github.com/nolte/claude-home-assistant/blob/develop/spec/claude/ha-hacs-release/de.md (DE canonical) / en.md.
This skill operationalizes ha/hacs-release — the HACS-specific distribution layer (hacs.json, version alignment, ZIP release, brands) — on top of the portfolio's generic release-automation flow. It closes the audit finding that the ha/hacs-release spec exists but no skill or agent makes a consumer integration HACS-release-ready.
Why this is a skill, not an agent¶
- Human-visible augmentation surface — the user reads back
hacs.json, the version-alignment check, and the ZIP-CD wiring and confirms the distribution model; a skill keeps this on the visible command surface. - Mid-flow interactivity — the ZIP-vs-default-branch distribution choice, the minimum HA version, and whether
brandsis already registered are per-run dialogues the user confirms. - Orchestrator-leaning — it surfaces the generic
release-automationprerequisites and points atnolte/gh-plumbingreusable workflows rather than duplicating release logic; the skill-orchestrates default keeps it in skill form. - Counter-dimension considered: the verify loop could be an agent, but the distribution-model decision and the report belong in the user's working context; skill wins.
When this skill activates¶
Use this skill to make an existing integration installable and updatable through HACS — scaffold or verify hacs.json, the manifest/tag version alignment, and the ZIP-release CD obligation — per ha/hacs-release.
When NOT to activate¶
- the generic release publish flow (Draft → Published,
chore(release)alignment, version-bearing files) →release-automation - the CI validation workflow (hassfest / HACS action / pytest) →
ha-integration-ci-scaffold - generating the Python integration code →
ha-integration-scaffold - deploying/importing into a running HA instance → out of scope
Hard rules¶
- All generated config is English, per the portfolio config-language rule.
hacs.jsonis mandatory and minimal-correct. It carries at leastname; for the ZIP distribution model it setszip_release: trueplusfilename: <domain>.zip(HACS requires both together, integrations only). SHOULD sethomeassistant(minimum HA version) andhide_default_branch: trueonce releases are the sole channel; MAY setrender_readme,hacs,country.- Version source is the release tag. HACS reads the installable version from the tag name of the latest published GitHub release, not
manifest.json:version. Themanifest.jsonversionis still required and MUST equal the release tag. Use the tag schemev<MAJOR>.<MINOR>.<PATCH>produced byrelease-drafter. - A real GitHub release, not a bare tag. State that HACS ignores a tag without a published release object; the generic
release-automationflow (reusable-release-publish) produces the release. - ZIP-release CD obligation. When
zip_release: true, the release CD must build and attach<domain>.zip(thecustom_components/<domain>/tree) as a release asset; point at thenolte/gh-plumbingreusable that does this rather than inlining it. - Do not redefine
release-automation. Reference the generic Draft → Published, version-bearing-files, andchore(release): <tag>alignment rules; add only the HACS-specific layer.brandsregistration is a pointer to thehome-assistant/brandsrepo, not generated here. - Verify HA/HACS internals against the official docs (see
ha/upstream-docs-verification; the HACS publish rules are anchored inha/hacs-release).
Inputs¶
| Field | Required | Default | Notes |
|---|---|---|---|
target_dir |
yes | — | repo root of the integration repository |
distribution |
no | zip |
zip (recommended) or default-branch |
min_ha_version |
no | asked when relevant | hacs.json:homeassistant floor |
min_hacs_version |
no | unset | hacs.json:hacs floor |
Pre-flight (in order — abort on first failure)¶
git -C <target_dir> rev-parse --is-inside-work-tree.custom_components/<domain>/manifest.jsonexists; readdomain,version,documentation,issue_tracker,codeowners.- Read
ha/hacs-release; detect an existinghacs.jsonand the release-automation wiring.
Workflow¶
1) Resolve and confirm¶
State domain, the distribution model, the min HA version, and the current manifest.json:version vs. the tag scheme in one paragraph. Wait for confirmation.
2) Apply¶
hacs.json— create/verify (name,zip_release+filenamefor ZIP,homeassistant,hide_default_branch, optional keys)manifest.json— verifyversionaligns to thev<MAJOR>.<MINOR>.<PATCH>tag scheme and the required fields are present (delegating field detail toha/integration-manifest)- CI/CD — wire the ZIP-asset build via the
nolte/gh-plumbingreusable and the HACS/hassfest validation gate (delegating the validation workflow toha-integration-ci-scaffold); surface thebrandsregistration as a checklist item
3) Validate & report¶
Validate offline (hacs.json valid; zip_release paired with filename; manifest.json:version matches the tag scheme; the ZIP-CD obligation and validation gate are wired or named; brands surfaced) and emit a CONFORMANT / NEEDS-WORK report keyed to the ha/hacs-release acceptance criteria plus the changed file paths.
Boundaries¶
- Generic release publish flow →
release-automation - CI validation workflow (hassfest / HACS action / pytest) →
ha-integration-ci-scaffold manifest.jsonfield substance →ha/integration-manifest