Automated changelog and release note generator that scopes changes, classifies entries, composes draft notes, validates formatting, and gates human approval.
npx skills add Reactive-Skills/skills --skill release-notesnpx -y @reactive-skills/axi invoke release-notes9
Hierarchical nodes
INTAKE
Bootstrap entrypoint
4
Whitelisted for safety
2
Automated projections
Visual state machine topology parsed directly from the official STATECHART.md in Reactive-Skills/skills:
Each state is an isolated operational slice. Transitions occur only when typed signals satisfy programmatic guard conditions.
Collect repository, release version, scope refs, and format policy
Outgoing Transitions
event.payload.repository != null && event.payload.release_version != null && Array.isArray(event.payload.scope_refs) && event.payload.scope_refs.length > 0event.payload.repository == null || event.payload.release_version == null || !Array.isArray(event.payload.scope_refs) || event.payload.scope_refs.length === 0Collect commits, artifacts, and source changes within the release scope
Outgoing Transitions
Array.isArray(event.payload.commits) && event.payload.commits.length > 0!Array.isArray(event.payload.commits) || event.payload.commits.length === 0Classify changes into changelog categories using conventional rules
Outgoing Transitions
Array.isArray(event.payload.changelog_entries) && event.payload.changelog_entries.length > 0!Array.isArray(event.payload.changelog_entries) || event.payload.changelog_entries.length === 0Compose human-readable release notes from classified entries
Outgoing Transitions
event.payload.release_notes != null && event.payload.release_notes.length > 0event.payload.release_notes == null || event.payload.release_notes.length === 0Validate formatting, link integrity, and scope coverage
Outgoing Transitions
event.payload.exit_code === 0event.payload.exit_code !== 0Human gate to approve, revise, or reject release notes
Outgoing Transitions
event.payload.approved === trueevent.payload.revisions_requested === trueevent.payload.rejected === trueTerminal state: release notes approved
Terminal state: release notes rejected
Terminal state: release note workflow failed
Inspect or drive this state machine directly via the token-efficient AXI CLI:
Check state:
Inspect hierarchy:
Tail events:
Runtime variables persisted across state transitions:
repositoryrelease_versionscope_refscommitschangelog_entriesrelease_notesreviewed_notesreview_decisiondeliverable_pathRead models automatically rendered upon transition:
Add to your Claude Desktop, Cursor, or VS Code settings:
{
"mcpServers": {
"reactive-skills": {
"command": "npx",
"args": [
"-y",
"@reactive-skills/axi",
"mcp"
]
}
}
}