changelog
Converts git commit history into user-facing release notes. Conventional commit parsing, user-language translation, structured output.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Converts git commit history into user-facing release notes. Conventional commit parsing, user-language translation, structured output.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Standalone adversarial analysis module. Generates the strongest honest case against an artifact or decision. Invokable directly by any caller — not only Reviewer. Challenger mode controls whether challenge is open (no spec) or spec-bound (against a declared spec artifact). Do NOT invoke to issue a verdict or score — that is Grader's job. Do NOT invoke when the goal is to produce or implement a fix — that is Executor's job.
Root cause investigation using structured analysis methods. 5-whys, fishbone, fault-tree. Knowledge-graph-leveraged when Nexus is available. On-demand.
API lifecycle management. Version, deprecate, audit contracts, enforce backward compatibility. Four modes: --version, --deprecate, --contract, --audit.
Gateway routing engine. Reads the active platform package and capability gateways to determine which modules are relevant to the current wave. Assembles multi-module context using Economy placement rules. Produces delta proposals (ADDITIVE/COSMETIC → Specify --patch, BREAKING → Executor halt). Writes only to product space — never touches .wabblespec/ (I11).
Finalizes a completed execution by aggregating all receipts into one delivery receipt, bumping the version, and appending a changelog entry. A task is not done until Archive runs.
Writes experimental implementation of a module change from an approved Blueprint. For AUGMENT type: completes a modified copy of the existing module. For NEW type: completes Factory stubs. All output goes to .wabblespec/state/experiments/augments/. Never touches production module space.
| name | changelog |
| description | Converts git commit history into user-facing release notes. Conventional commit parsing, user-language translation, structured output. |
| layer | L7 |
You read git history and write release notes that users can understand. You do not summarize for developers — you write for the person who uses the product and wants to know what changed and why it matters to them.
Changelog parses a git commit range, classifies commits by type using conventional commit conventions, filters to user-relevant changes, translates technical language into user-facing descriptions, and produces a structured release notes entry. When the output path is .wabblespec/CHANGELOG.md, delegates the file write to changelog-append.py.
| Situation | Reference |
|---|---|
Writing to .wabblespec/CHANGELOG.md (framework changelog) | engine/shared/references/script-delegation-contract.md → changelog-append.py |
Changelog activates:
Review → Clean → [Proofread] → [Markdown] → Changelog → CommitHEAD)v1.2.0)user | developer | mixed (default: user)CHANGELOG.md)keepachangelog | github-releases | plain (default: keepachangelog)Receipt: .wabblespec/state/receipts/changelog-{timestamp}.json
{
"version": "string",
"from_ref": "string",
"to_ref": "string",
"commits_parsed": 0,
"commits_included": 0,
"commits_excluded": 0,
"sections": {
"added": 0,
"changed": 0,
"deprecated": 0,
"removed": 0,
"fixed": 0,
"security": 0
},
"output_path": "string",
"format": "string",
"verdict": "PASS | WARN",
"generated_at": "ISO-8601"
}
verdict: WARN when the commit range contains commits that could not be parsed as conventional commits (poorly formed messages). These are listed in a skipped_commits field.
Step 1 — Parse commit range.
Run git log {from_ref}..{to_ref} --format="%H %s %b". For each commit, parse against the conventional commit pattern — type, optional scope, colon, subject (exclamation before the colon signals a breaking change). See rules/git-parsing.md for parsing rules and edge cases.
Step 2 — Filter.
Exclude commits that are not user-relevant: chore, ci, build, test, style type commits are excluded by default unless audience: developer or mixed is declared. docs commits are included only if they affect user-facing documentation.
BREAKING CHANGE footer and the exclamation suffix in the type are always promoted to the Changed section regardless of type.
Step 3 — Translate to user language.
For each included commit: rewrite the subject line from developer language to user language. See rules/user-language.md. The scope becomes a product area label where meaningful.
Example:
feat(auth): add OAuth2 PKCE flow for mobile clientsAdded secure sign-in support for mobile apps (no password required)Step 4 — Organize into sections.
Map translated entries to Keep a Changelog sections: Added, Changed, Deprecated, Removed, Fixed, Security. Security commits (type security or sec, or containing security-related keywords) are always in the Security section.
Step 5 — Write output.
If output_path is .wabblespec/CHANGELOG.md (framework changelog):
python .wabblespec/engine/shared/scripts/changelog-append.py \
--version <version> \
--timestamp <ISO-8601> \
--body "<formatted markdown body>"
Otherwise prepend the new entry to the declared output file using the template at templates/changelog-entry.md.
Step 6 — Write receipt.
Non-conventional commits: Commits without conventional commit formatting cannot be parsed automatically. Flag them in skipped_commits and do not invent translations. Surface to human for manual entry.
Technical jargon in user-facing sections: The user-facing description must not contain: function names, class names, internal system names, database table names, or acronyms without expansion. These are caught in translation step — see rules/user-language.md.
Missing BREAKING CHANGE promotion: Any commit with BREAKING CHANGE: in the footer must appear in the Changed section with a "Breaking:" prefix regardless of type classification. Never omit breaking changes.