You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/fast-forward-changelog-generator/SKILL.md
+76-76Lines changed: 76 additions & 76 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,106 +10,106 @@ Maintain changelog files for humans first while keeping them deterministic enoug
10
10
## Workflow
11
11
12
12
1. Establish current state.
13
-
- Resolve the target file path first. Default to `CHANGELOG.md`, but respect any caller-provided `--file` path.
14
-
- Check whether the changelog file exists.
15
-
- Record whether `Unreleased` already has entries and whether any published releases already exist.
16
-
- If the file does not exist yet, or if Git tags exist that are not documented yet, treat the task as a historical backfill before switching to incremental maintenance.
13
+
- Resolve the target file path first. Default to `CHANGELOG.md`, but respect any caller-provided `--file` path.
14
+
- Check whether the changelog file exists.
15
+
- Record whether `Unreleased` already has entries and whether any published releases already exist.
16
+
- If the file does not exist yet, or if Git tags exist that are not documented yet, treat the task as a historical backfill before switching to incremental maintenance.
17
17
18
18
2. Backfill missing release history when needed.
19
-
- If the repository has no changelog, or if some Git tags are still undocumented, walk the Git tags until the changelog is complete.
20
-
- Inspect tags in chronological order so each documented version can be derived from the diff against the previous tag.
21
-
- Treat version ordering as semantic version ordering, never plain string ordering. For example, `1.11.0` MUST sort after `1.10.0`, and `1.10.0` MUST sort after `1.9.0`.
22
-
- Capture the creation date for each tag and use it as the release date recorded in the changelog.
23
-
- For each missing released version:
24
-
1. compare the previous tag to the current tag;
25
-
2. record the current tag date;
26
-
3. extract the notable user-facing, maintainer-facing, or automation-facing changes from that diff;
27
-
4. resolve any associated pull request numbers from merge commits, squash commit titles, or release history;
28
-
5. classify them with the standard Keep a Changelog categories;
29
-
6. add them to the matching released section with `changelog:entry --release=<version> --date=<YYYY-MM-DD>`.
30
-
- Only after all historical tags are represented should new work continue in `Unreleased`.
31
-
- If a tag exists but the diff does not justify a notable entry, keep the release section minimal rather than inventing noise.
19
+
- If the repository has no changelog, or if some Git tags are still undocumented, walk the Git tags until the changelog is complete.
20
+
- Inspect tags in chronological order so each documented version can be derived from the diff against the previous tag.
21
+
- Treat version ordering as semantic version ordering, never plain string ordering. For example, `1.11.0` MUST sort after `1.10.0`, and `1.10.0` MUST sort after `1.9.0`.
22
+
- Capture the creation date for each tag and use it as the release date recorded in the changelog.
23
+
- For each missing released version:
24
+
1. compare the previous tag to the current tag;
25
+
2. record the current tag date;
26
+
3. extract the notable user-facing, maintainer-facing, or automation-facing changes from that diff;
27
+
4. resolve any associated pull request numbers from merge commits, squash commit titles, or release history;
28
+
5. classify them with the standard Keep a Changelog categories;
29
+
6. add them to the matching released section with `changelog:entry --release=<version> --date=<YYYY-MM-DD>`.
30
+
- Only after all historical tags are represented should new work continue in `Unreleased`.
31
+
- If a tag exists but the diff does not justify a notable entry, keep the release section minimal rather than inventing noise.
32
32
33
33
3. Choose the right local command.
34
-
- To add one new entry to `Unreleased`:
34
+
- To add one new entry to `Unreleased`:
35
35
36
-
```bash
37
-
composer dev-tools changelog:entry -- --type=added "Add example workflow"
- Prefer the user-visible effect over the implementation detail.
80
-
- Name the concrete surface when that helps: command, option, workflow, configuration, integration, or output.
81
-
- Avoid vague filler such as `misc improvements`, `cleanup`, or `refactorings`.
82
-
- When a change can be tied to a specific pull request, append that PR reference like `(#123)` to the entry.
83
-
- During tag backfill, actively look for PR numbers in merge commits, squash merge titles, or related release metadata before writing the final message.
78
+
- Keep each entry to one line.
79
+
- Prefer the user-visible effect over the implementation detail.
80
+
- Name the concrete surface when that helps: command, option, workflow, configuration, integration, or output.
81
+
- Avoid vague filler such as `misc improvements`, `cleanup`, or `refactorings`.
82
+
- When a change can be tied to a specific pull request, append that PR reference like `(#123)` to the entry.
83
+
- During tag backfill, actively look forPR numbersin merge commits, squash merge titles, or related release metadata before writing the final message.
84
84
85
85
5. Respect the managed format.
86
-
- Keep `Unreleased` first.
87
-
- Keep released versions in reverse semantic version order unless the repository has an explicit non-semver release policy.
88
-
- Do not use lexical ordering for versions. `1.10.0` and `1.11.0` MUST remain above `1.9.0`, `1.8.0`, and `1.1.0`.
89
-
- Keep section order as:
90
-
1.`Added`
91
-
2.`Changed`
92
-
3.`Deprecated`
93
-
4.`Removed`
94
-
5.`Fixed`
95
-
6.`Security`
96
-
- Omit empty sections.
97
-
- Preserve the official introduction and footer-reference style from Keep a Changelog 1.1.0.
98
-
- Build compare links from the semantically previous published version, not from the previous string-sorted heading.
86
+
- Keep `Unreleased` first.
87
+
- Keep released versions in reverse semantic version order unless the repository has an explicit non-semver release policy.
88
+
- Do not use lexical ordering for versions. `1.10.0` and `1.11.0` MUST remain above `1.9.0`, `1.8.0`, and `1.1.0`.
89
+
- Keep section order as:
90
+
1. `Added`
91
+
2. `Changed`
92
+
3. `Deprecated`
93
+
4. `Removed`
94
+
5. `Fixed`
95
+
6. `Security`
96
+
- Omit empty sections.
97
+
- Preserve the official introduction and footer-reference style from Keep a Changelog 1.1.0.
98
+
- Build compare links from the semantically previous published version, not from the previous string-sorted heading.
0 commit comments