From f307fdc462e9254f4bb625432d001dec104d81f4 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 25 Aug 2026 15:52:22 +0200 Subject: [PATCH] docs(skill): correct the CHANGELOG heading date format (#3020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SKILL.md's step 7 said to match `## X.Y (DD-MM-YYYY)`. The repo does not use that: 7705 dated CHANGELOG headings are ISO `YYYY-MM-DD` against 363 in `DD-MM-YYYY`, and the newest entry is ISO in 125 of 135 add-ons. Following the instruction cost a Copilot review round on #3019. `DD-MM-YYYY` is not invented, which is presumably how it got written down. It is what `onpush_builder.yaml` inserts with `date '+%d-%m-%Y'` when a push arrives with no heading for the config.yaml version, and it is the addons_updater bot's default in `99-run.sh` — but that bot runs here with `date_iso8601: true` (confirmed against the running add-on's options), which is why almost everything on master is ISO. Neither is a reason to write `DD-MM-YYYY` by hand. The traps.md entry also records that 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. Co-authored-by: Claude Opus 5 --- .claude/skills/hassio-addon-workflow/SKILL.md | 4 +++- .../skills/hassio-addon-workflow/references/traps.md | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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.