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.