|
1 | | ---- |
2 | | -name: changelog-workflow |
3 | | -description: >- |
4 | | - Create and update a canonical developer changelog. Use when adding |
5 | | - developer-facing release history, maintaining Keep a Changelog sections, or |
6 | | - preparing canonical version entries. |
7 | | ---- |
8 | | - |
9 | | -# Changelog Workflow |
10 | | - |
11 | | -## When to Use |
12 | | - |
13 | | -- Use this skill when updating the canonical developer changelog. |
14 | | -- Use this skill when preparing canonical versioned release history before a |
15 | | - release. |
16 | | -- Use this skill when preserving developer-facing prerelease, compatibility, |
17 | | - migration, CI/build/package, or implementation context. |
18 | | - |
19 | | -## Goals |
20 | | - |
21 | | -- Keep the confirmed canonical changelog, often `CHANGELOG.md`, as the |
22 | | - Keep a Changelog-style release history. |
23 | | -- Record notable changes for maintainers in a human-readable, newest-first |
24 | | - format. |
25 | | -- Preserve prerelease and internal context in the canonical changelog even when |
26 | | - it will not appear in user-facing release notes. |
27 | | -- Preserve enough rationale and history for user-facing release notes to explain |
28 | | - why each user-visible change matters. |
29 | | -- Keep user-facing release-note rewriting and release-readiness checks in the |
30 | | - dedicated release-note workflow. |
31 | | - |
32 | | -Reference: |
33 | | - |
34 | | -- Keep a Changelog 1.1.0: http://keepachangelog.com/en/1.1.0/ |
35 | | - |
36 | | -## Workflow |
37 | | - |
38 | | -1. Update the canonical changelog first when a release-history change is |
39 | | - needed. If the file is not clearly `CHANGELOG.md`, locate or confirm the |
40 | | - canonical changelog before editing. |
41 | | -2. Keep `Unreleased` at the top. |
42 | | -3. Move `Unreleased` entries into a versioned section only when the maintainer |
43 | | - has selected the release version and UTC release date. |
44 | | - - Do not create placeholder version headings with `TBD`, |
45 | | - `<maintainer-selected date>`, or similar unfinished release metadata. |
46 | | - Keep draft material under `Unreleased` until the version and date are |
47 | | - known. |
48 | | -4. Use Keep a Changelog categories when applicable: `Added`, `Changed`, |
49 | | - `Deprecated`, `Removed`, `Fixed`, and `Security`. |
50 | | - - Put supplemental release metadata that is not itself a change type, such as |
51 | | - compatibility notes and test environments, under `Notes` instead of making |
52 | | - separate top-level change-category headings. |
53 | | - - Put `Notes` after all change-category sections within each release entry. |
54 | | -5. Keep versioned sections newest first, with headings such as |
55 | | - `## v1.2.3 - 2026-05-03 UTC`. |
56 | | -6. Record developer-facing details that help future maintainers, including: |
57 | | - - Internal migrations or architecture changes. |
58 | | - - CI, build, packaging, or dependency context. |
59 | | - - Security-sensitive or supply-chain-sensitive context from `security-check`, such as |
60 | | - maintainer-approved exceptions, residual risk, or blockers that matter for future releases. |
61 | | - - Prerelease entries and why they matter. |
62 | | - - User-impact rationale or history for each user-visible change, such as |
63 | | - the problem it solves, why behavior changed, compatibility constraints, or |
64 | | - migration reason. |
65 | | - - A sourced user impact statement may be enough when it explains why users |
66 | | - should care. Generic bullets such as documentation updates, dependency |
67 | | - updates, crash fixes, or save-format changes still need source material |
68 | | - describing the user-facing benefit, risk, security impact, compatibility |
69 | | - impact, or migration reason. |
70 | | - - Compatibility notes, test environments, known limitations, yanked |
71 | | - releases, and migration constraints. |
72 | | - - Record compatibility, support, environment, and migration claims only when |
73 | | - they are maintainer-confirmed or clearly sourced. Otherwise list them as |
74 | | - missing inputs or draft source material needing confirmation, not as final |
75 | | - compatibility facts. |
76 | | - - When compatibility notes cover several platform, runtime, dependency, or |
77 | | - companion-product versions, preserve confidence differences instead of |
78 | | - flattening them into one generic compatibility statement. For example, |
79 | | - distinguish confirmed compatibility, "appears to work" best-effort |
80 | | - compatibility, lower-confidence limited checks, and known issues. |
81 | | - - Keep related compatibility claims grouped by relationship. Put companion |
82 | | - tools, required plugins, or paired dependencies under the product/version |
83 | | - they were tested with when that relationship matters, instead of listing |
84 | | - them as another peer product version. |
85 | | - - When historical entries are backfilled with metadata such as |
86 | | - compatibility information, state that the metadata was backfilled, when it |
87 | | - was backfilled, and whether it is reference information rather than an |
88 | | - original release claim. |
89 | | - - For yanked releases, explicitly say when historical metadata was not |
90 | | - backfilled because the release was yanked, if nearby releases did receive |
91 | | - backfilled metadata. |
92 | | -7. When prerelease entries are later superseded, keep enough canonical history |
93 | | - to explain what changed and what reached the stable release. If the stable |
94 | | - release is still only planned, leave the stable roll-up material under |
95 | | - `Unreleased` instead of creating an unfinished stable heading. |
96 | | - - Attach withdrawn or superseded notes to the specific entry they affect, |
97 | | - rather than only adding a broad later correction. Name the later version |
98 | | - or release timing that withdrew or superseded the earlier wording. |
99 | | - - Avoid shorthand prerelease references such as `alpha.1` or `beta.2` when |
100 | | - the base version matters. Use the full prerelease version, such as |
101 | | - `v1.2.0-alpha.1`, in durable changelog text. |
102 | | - - Split long bullets into concise parent items with indented subitems when a |
103 | | - change contains several facts, reasons, affected versions, or follow-up |
104 | | - notes. |
105 | | - - Use `document-quality-check` when splitting or rewording changelog prose. |
106 | | - Preserve changelog-specific nuance such as compatibility confidence, |
107 | | - dependency relationships, and whether a statement is original, backfilled, |
108 | | - inferred, superseded, or withdrawn. |
109 | | -8. If the user asks for user-facing release notes, verify or prepare only the |
110 | | - canonical source material here, then use the appropriate release-note |
111 | | - workflow for the user-facing rewrite and release-readiness checks. |
112 | | - - Update the canonical changelog only when the source material is missing, |
113 | | - stale, or needs maintainer-facing correction. |
114 | | - - Treat missing rationale or history for a user-visible change as missing |
115 | | - canonical source material; add or request it before user-facing rewriting. |
116 | | - - If the canonical changelog already contains enough source material, stop |
117 | | - there and hand off user-facing rewriting and readiness checks. |
118 | | - - Identify the release-note workflow by name when it exists; otherwise |
119 | | - discover the relevant release-note guidance before producing user-facing |
120 | | - notes. |
121 | | - - If confirmed version, UTC release date, target audience, publication |
122 | | - channel, or release-note workflow are missing, state those as input gaps |
123 | | - and stop after canonical source preparation. |
124 | | - |
125 | | -## Boundaries |
126 | | - |
127 | | -- This skill owns the canonical developer changelog; it does not own generated |
128 | | - or user-facing release-note files. |
129 | | -- Do not publish, tag, create releases, upload artifacts, or edit release |
130 | | - metadata unless another workflow and explicit user request call for those |
131 | | - side effects. |
132 | | -- Keep private workspace paths, temporary worktree names, command transcripts, |
133 | | - and authentication details out of public changelog text. |
| 1 | +--- |
| 2 | +name: changelog-workflow |
| 3 | +description: |
| 4 | + Maintain a canonical developer changelog and versioned release history. Use when adding or correcting Keep a Changelog |
| 5 | + entries, prerelease history, compatibility context, or release-source material; not for user-facing release notes or |
| 6 | + publishing. |
| 7 | +--- |
| 8 | + |
| 9 | +# Changelog Workflow |
| 10 | + |
| 11 | +Maintain the repository's canonical developer changelog, usually `CHANGELOG.md`. Keep it human-readable, newest first, |
| 12 | +and distinct from user-facing release notes. |
| 13 | + |
| 14 | +## Update a release entry |
| 15 | + |
| 16 | +1. Locate the canonical changelog and confirm its role before editing. |
| 17 | +2. Keep `Unreleased` first. Move entries to a versioned section only after the maintainer confirms the stable version |
| 18 | + and UTC release date; never add placeholder release headings. At that promotion, move every remaining final, |
| 19 | + release-ready bullet into the new versioned section and leave `Unreleased` empty. Do not duplicate promoted bullets |
| 20 | + or retain implementation history that does not describe the final release state. |
| 21 | +3. Use Keep a Changelog categories where applicable: `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and |
| 22 | + `Security`. Put supplemental compatibility, test, limitation, or migration context under `Notes`, after change |
| 23 | + categories. |
| 24 | +4. Use newest-first headings such as `## v1.2.3 - 2026-05-03 UTC`. |
| 25 | +5. Record durable maintainer context: migrations, architecture, CI/build/package changes, prerelease history, security |
| 26 | + exceptions or residual risk, compatibility confidence, limitations, and the reason a user-visible change matters. |
| 27 | +6. Source compatibility, support, environment, and migration claims. Mark unsourced claims as missing input or draft |
| 28 | + material; distinguish confirmed, best-effort, limited-check, and known-issue evidence. Group paired tools and |
| 29 | + dependencies with the product/version they qualify. |
| 30 | + When compatibility appears in multiple artifacts or peer repositories, |
| 31 | + inspect same-role entries before choosing wording. Preserve their hierarchy, |
| 32 | + dates, and reference links, but keep each destination in its established |
| 33 | + role: a README may show a target and test environment, while a changelog |
| 34 | + `Notes` entry records the compatibility fact. Do not copy test environments |
| 35 | + or evidence-status prose into a user-facing changelog unless it changes the |
| 36 | + release's user-facing compatibility meaning. Do not infer that an incomplete |
| 37 | + runtime result belongs in a package changelog or README merely because it is |
| 38 | + recorded in developer evidence; add it only when the same-role convention or |
| 39 | + maintainer selects it. |
| 40 | +7. Preserve historical accuracy. Mark backfilled metadata as backfilled, retain meaningful prerelease history, and use |
| 41 | + complete prerelease versions when they matter. Treat `Unreleased` as the prospective final release state: remove |
| 42 | + proposals, implementation iterations, and settings-category moves that were withdrawn or superseded within the same |
| 43 | + pull request. Record only the final user- or maintainer-visible change, such as the settings that exist after the |
| 44 | + change. Retain a withdrawn or superseded note only when a published artifact or a prior versioned entry makes that |
| 45 | + history durable. |
| 46 | +8. Describe public package metadata from actual publication-channel history, not local or GitHub-only artifacts. Treat a |
| 47 | + newly public compatibility label as `Changed`; use `Fixed` only for a correction already exposed publicly. |
| 48 | +9. Put a compatibility fact under `Notes` as `Compatibility: <product and |
| 49 | + version>` when that is the repository or peer-family convention. Do not add |
| 50 | + a `Changed` bullet that merely says compatibility documentation was |
| 51 | + "clarified"; record the final compatibility state instead. For backfilled |
| 52 | + historical entries, retain the backfill status and the historical hierarchy. |
| 53 | +10. Write concise factual bullets. Avoid issue or PR identifiers unless the maintainer needs the durable link. Use |
| 54 | + `prose-quality-check` for prose changes that risk losing confidence, relationship, or historical-status nuance. |
| 55 | + |
| 56 | +## Handoff and boundaries |
| 57 | + |
| 58 | +Prepare or correct canonical source material before user-facing release notes. If source material is complete, hand off |
| 59 | +to `release-note-workflow`; if version, UTC date, target channel, or needed rationale is missing, report the gap. Do not |
| 60 | +publish, tag, create releases, upload artifacts, or expose private paths, transcripts, or credentials. |
0 commit comments