changelog
Create or update CHANGELOG entries with tone guardrails, thematic grouping, and implementation-detail leak detection.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create or update CHANGELOG entries with tone guardrails, thematic grouping, and implementation-detail leak detection.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Add a dependency relationship between GitHub issues using the native addBlockedBy mutation
Reusable file sequence numbering with prefix (NNNN-name) and suffix (name-NNNN) modes. Returns the next available zero-padded sequence number for a given directory.
Drop a timestamped note for the current issue - collected by /finish-issue for PR descriptions
Delete an issue's working directory (.claude-work/issues/<ID>/) after confirming with the user via interactive prompt
Create a commit message file in .claude-work/commit-msgs/ with auto-numbered filenames. Focuses on WHY not WHAT. The diff already shows what changed. User reviews and commits manually.
Create a GitHub issue from a file draft or inline description, with smart label discovery and sub-issue linking
| name | changelog |
| version | 2026.07.27@6dc7d1d |
| description | Create or update CHANGELOG entries with tone guardrails, thematic grouping, and implementation-detail leak detection. |
| argument-hint | <description> |
| allowed-tools | Read, Edit, Bash(git log *), Bash(git diff *), Bash(git branch --show-current), AskUserQuestion |
Create a CHANGELOG entry with built-in guardrails for tone, placement, and detail-leak detection. Writes directly to CHANGELOG.md. The user reviews via git diff before committing.
Input: $ARGUMENTS (a short description of the change, e.g. "binding survives language-mode changes")
Find the target CHANGELOG.md using git diff to determine which part of the project has changes:
git diff --name-only to see changed filespackages/foo/), look for a CHANGELOG.md in that directory firstAskUserQuestion which one to targetIf no CHANGELOG.md exists anywhere, STOP: "No CHANGELOG.md found. Create one first."
Read the target CHANGELOG.md and the project's CLAUDE.md (if it exists) to understand:
## [1.2.3] or ## [Unreleased], often with a preamble referencing semver.org or Keep a Changelog## 2026.03.19, often with a preamble referencing calver.org### Added, ### Changed, ### Fixed, ### Removed (Keep a Changelog style). Some projects use different categories. Match what exists.Also check the project's CLAUDE.md for any explicit CHANGELOG conventions (heading format, link style, category rules). CLAUDE.md overrides inferred conventions.
Auto-detect the most likely category from context:
| Signal | Category |
|---|---|
New files added (git diff --name-status shows A) | Added |
| Bug fix (issue labels, commit messages mentioning "fix") | Fixed |
| Deleted files or removed features | Removed |
| Everything else | Changed |
If the detection is confident (clear signal from the table above), proceed without prompting.
If ambiguous (e.g., a file was both added and modified, or the change could be "Added" or "Changed"), confirm with AskUserQuestion:
AskUserQuestion(
question: "Which CHANGELOG category for this entry?",
header: "Category",
options: [
{ label: "Changed (Recommended)", description: "Modifications to existing behavior" },
{ label: "Added", description: "New features or files" },
{ label: "Fixed", description: "Bug fixes" },
{ label: "Removed", description: "Deleted features" }
]
)
Reorder options so the auto-detected category appears first with "(Recommended)".
Determine where to place the entry based on the versioning scheme detected in Step 2:
SemVer projects (with [Unreleased] section):
## [Unreleased] section exists, place the entry there. This is the standard SemVer workflow for in-progress changes.[Unreleased] section exists, create one above the most recent versioned heading.CalVer projects (date-based headings):
2026.03.19 exists → 2026.03.19.1; 2026.03.19.1 exists → 2026.03.19.2).Other schemes:
AskUserQuestion.Newest entries go at the top. Version headings must appear in strict descending order — the most recent release at the top of the file, the oldest at the bottom. For CalVer: within the same calendar date, higher micro suffixes are newer and come first (e.g., 2026.07.14.2 above 2026.07.14.1 above 2026.07.14). For SemVer: within the same minor version, higher patch versions are newer and come first (e.g., [1.2.3] above [1.2.2] above [1.2.1]). When adding a new heading, insert it above all older headings — never append to the bottom. After writing, verify with grep '^## ' CHANGELOG.md | head -20. The output must print headings in descending order. If they are out of order, re-sort before presenting to the user.
Write the entry following the tone rules (see Tone Rules section below). The entry should:
Each bullet covers a single distinct change. When a PR or issue includes multiple unrelated changes, write separate bullets. Do not chain them together with periods or semicolons into a single entry. The "one sentence" rule is per change, not per category subsection.
Before drafting, read 3-5 recent entries in the CHANGELOG to match the project's voice and formatting conventions.
Scan the draft entry against the blocklist patterns (see Implementation-Detail Blocklist section). For each match:
Possible implementation detail: "<matched text>" Consider rephrasing in user-facing termsIf no matches, proceed silently.
Scan the entries in the target section's category subsection for thematic proximity:
When creating a new version heading, placement is straightforward. The entry is the first in its subsection.
Show the user what will be written and where:
File: packages/foo/CHANGELOG.md
Category: ### Changed
Heading: ## [Unreleased]
Placement: after "existing related entry text..." (thematic match)
Entry:
- Search results now highlight matched terms ([#42](https://github.com/org/repo/issues/42))
Then write the entry to CHANGELOG.md using the Edit tool.
These rules ensure entries describe what users experience, not how the code works internally.
Good (SemVer project, a task management app):
- Search results now highlight matched terms in the preview pane ([#42](https://github.com/acme/taskflow/issues/42))
Bad (same change, leaking implementation):
- Added ElasticSearch highlight fragments to SearchResultDTO and mapped them through the PreviewRenderer pipeline with dangerouslySetInnerHTML for term emphasis ([#42](https://github.com/acme/taskflow/issues/42))
Good (CalVer project, a CLI tool):
- `deploy` command now retries on transient network errors instead of failing immediately ([issues/87](https://github.com/acme/shipit/issues/87))
Bad (same change, leaking implementation):
- Wrapped the HTTP client's POST call in a retry loop with exponential backoff using the got library's retry option with a maxRetryAfter of 30000ms and calculateDelay hook ([issues/87](https://github.com/acme/shipit/issues/87))
Flag entries containing these patterns. Emit a warning and allow the entry. Rare edge cases may legitimately include a technical name.
| Pattern | Why it's flagged |
|---|---|
onDid, onWill | Event handler names (VS Code, etc.) |
setTimeout, setInterval, requestAnimationFrame | Timer/scheduling implementation details |
mock, stub, spy | Test infrastructure, not user-facing |
listener, handler, callback, middleware | Internal architecture |
PascalCase words that aren't feature names | Likely class/type names (e.g., SearchResultDTO, PreviewRenderer) |
flag, isFoo, hasFoo | Internal boolean state |
Event name patterns (Event, Emitter, dispatch) | Internal pub/sub details |
Library-internal APIs (dangerouslySetInnerHTML, useEffect, __dirname) | Framework internals |
Before placing an entry, scan the target subsection for thematic proximity:
Place the new entry after the last thematic match in the subsection. If no match exists, append at the end.
See /prose-style for hard-wrap and GitHub-reference rules.
Before writing the entry, skim the text for AI-writing tells: em dashes, filler phrases (in order to, due to the fact that), vague attributions, generic positive conclusions. Rewrite any you find.