diff --git a/.claude/skills/hassio-addon-workflow/SKILL.md b/.claude/skills/hassio-addon-workflow/SKILL.md index dfa21bb078..8b7b44fb38 100644 --- a/.claude/skills/hassio-addon-workflow/SKILL.md +++ b/.claude/skills/hassio-addon-workflow/SKILL.md @@ -169,7 +169,9 @@ CI gates on a PR: **`CHANGELOG.md` updated** (hard fail), the **HA add-on linter (`frenck/action-addon-linter`, blocking — not the weekly Super-Linter, which is non-blocking), and the **add-on image build**. Bump `version` anyway (`X.Y.Z.N`, never `X.Y.Z-N`, see `references/traps.md#versioning`) — Supervisor won't offer a rebuild without it. Update -`README.md` if you added options; match the CHANGELOG heading format `## X.Y (DD-MM-YYYY)`. +`README.md` if you added options; write the CHANGELOG heading as `## ()`, +matching the date format already in that file — almost always ISO `YYYY-MM-DD`, see +`references/traps.md#ci-and-review-bots`. Write the body to a file, `gh pr create --body-file`: state what was measured, what changed, **what is not verified**, and how to roll back the riskiest hunk alone. diff --git a/.claude/skills/hassio-addon-workflow/references/traps.md b/.claude/skills/hassio-addon-workflow/references/traps.md index 6273d4b96d..17f494d5e1 100644 --- a/.claude/skills/hassio-addon-workflow/references/traps.md +++ b/.claude/skills/hassio-addon-workflow/references/traps.md @@ -241,6 +241,16 @@ account. Note it and move on rather than guessing. **Resolving a review thread requires GraphQL** (`resolveReviewThread`); the REST API cannot do it. `scripts/pr_review.sh` wraps fetch / reply / resolve. +**CHANGELOG heading dates are ISO, whatever the bots' defaults say.** Match the format already in +the add-on's file. Repo-wide that is `## (YYYY-MM-DD)`: 7705 dated headings against 363 +in `DD-MM-YYYY`, and the newest entry is ISO in 125 of 135 add-ons. Copilot flags an ISO file that +gets a `DD-MM-YYYY` entry (#3019). `DD-MM-YYYY` is not invented — it is what `onpush_builder.yaml` +writes with `date '+%d-%m-%Y'` when it has to insert a heading you forgot, and what the +addons_updater bot writes when its `date_iso8601` option is off (`99-run.sh`; it is on in +production here) — but neither is a reason to write it yourself. The builder's duplicate check is +`grep -q "^## ${version} ("`, keyed on the exact `config.yaml` version and blind to the date, so +an ISO heading you wrote yourself still suppresses the bot's insertion. + **The repo's `.markdownlint.yaml` does not disable MD022/MD032**, so a CHANGELOG will show dozens of pre-existing heading/list findings. They are noise because lint is `continue-on-error`, not because the config exempts them — don't cite the config as a reason to ignore a finding.