PM Changelog Curator (Dispatch Skill)
Try it: /pm-skills:utility-pm-changelog-curator "Your context here"
Cross-client dispatch wrapper for the pm-changelog-curator sub-agent. Detects runtime; dispatches to the native sub-agent on Claude Code; reads agents/pm-changelog-curator.md and executes inline on non-Claude clients.
When to Use
Section titled “When to Use”- You are preparing a release and want a CHANGELOG draft from git log between two tags
- You are running on a non-Claude AI client without native pm-changelog-curator sub-agent support
- You want a draft that respects pm-skills CHANGELOG hygiene rules (no internal-notes references, no em-dashes, public paths only) without manually applying them
When NOT to Use
Section titled “When NOT to Use”- You want to commit CHANGELOG entries directly (this skill produces a draft for review, not a commit)
- You want to review a PM artifact -> use
utility-pm-criticinstead - You want a repo-wide governance audit -> use
utility-pm-skill-auditor - You want a full guided release flow -> use
utility-pm-release-conductor(which chains to this skill at gate G2)
How to Use
Section titled “How to Use”Invoke the skill by name (/pm-skills:utility-pm-changelog-curator on Claude Code, $utility-pm-changelog-curator on Codex):
/pm-skills:utility-pm-changelog-curator "Your context here"Or reference the skill file directly: skills/utility-pm-changelog-curator/SKILL.md
Instructions
Section titled “Instructions”Runtime detection step. Determine which AI client is invoking this skill.
If you are running in Claude Code with the pm-skills plugin installed
Section titled “If you are running in Claude Code with the pm-skills plugin installed”Invoke @agent-pm-skills:pm-changelog-curator with the user’s arguments. Pass --since-tag, --target-version, --committed-only from $ARGUMENTS if present. Return the sub-agent’s draft to the user.
If you are running in any other AI client
Section titled “If you are running in any other AI client”Codex CLI, Cursor, Windsurf, Copilot, Gemini CLI, or any other client without native pm-skills plugin sub-agent support:
- Read the canonical sub-agent definition at
agents/pm-changelog-curator.md - Execute the system prompt body in that file as your operating instructions
- Run the 8-step drafting flow documented in the sub-agent definition (establish range -> read hygiene rules -> check working tree -> enumerate commits -> classify -> group -> rewrite -> determine target version -> emit draft)
- Apply
--since-tag,--target-version, and--committed-onlyarguments from$ARGUMENTS - Return the layered output per master plan D26 (full CHANGELOG draft + Status Summary + Status YAML)
Cross-Client Notes
Section titled “Cross-Client Notes”The dispatch skill requires the AI client to:
- Execute Bash for
git log,git describe, andgit statusinvocations - Read CLAUDE.md hygiene rules and existing CHANGELOG.md format reference
- Read the canonical sub-agent definition file
- Treat the agent body as operating instructions
See Sub-Agent Compatibility Matrix for the canonical cross-client status. Summary for this skill as of v2.16.0: PRODUCTION on Claude Code + Codex CLI (Codex CLI successfully ran git log + read CLAUDE.md hygiene rules + drafted clean CHANGELOG entries + correct dirty-tree refusal); EXPERIMENTAL on Cursor / Windsurf / Copilot CLI / Gemini CLI. If a client is unreliable, fall back to manual git log + manual drafting using CLAUDE.md as the hygiene reference.
Reference Files
Section titled “Reference Files”- Canonical sub-agent definition:
agents/pm-changelog-curator.md - Behavioral spec:
docs/internal/release-plans/v2.16.0/spec_pm-changelog-curator.md - CHANGELOG hygiene rules source:
CLAUDE.md(repo root) - Existing CHANGELOG.md format:
CHANGELOG.md(root); v2.15.1 + v2.15.2 entries are canonical exemplars - Runtime components catalog:
docs/reference/runtime-components.md - Output template:
references/TEMPLATE.md - Worked example:
references/EXAMPLE.md
Output Template
Section titled “Output Template”Output Template
Section titled “Output Template”utility-pm-changelog-curator produces a three-section layered output per master plan D26.
Section 1: Full CHANGELOG Draft
Section titled “Section 1: Full CHANGELOG Draft”## [v{X.Y.Z}] - {YYYY-MM-DD}
### Added- **{Item title}** description in plain English per hygiene rule 1 (what changed, not where it lives). References per hygiene rule 2 (public paths only). <!-- justification: {commit refs and classification reasoning} -->
### Changed- **{Item title}** description. <!-- justification: ... -->
### Deprecated- (omit section if empty)
### Removed- (omit section if empty)
### Fixed- **{Item title}** description. <!-- justification: ... -->
### Security- **{Item title}** description with CVE / Dependabot alert reference. <!-- justification: ... -->
### Known Limitations- (release-state caveats; e.g., GATE B pending status, deferred items)Section ordering follows Keep-a-Changelog convention. Empty sections are omitted from the draft.
Section 2: Status Summary (Prose, for Human Readers)
Section titled “Section 2: Status Summary (Prose, for Human Readers)”## Status Summary
Drafted v{X.Y.Z} entries from {N} commits since v{prev}. {A} Added, {B} Changed, {C} Fixed, {S} Security{, {D} Deprecated, {R} Removed if non-zero}.
Highlights:- {Top 2-3 user-facing items by impact}
Hidden justification comments are included after each entry for maintainer audit. Strip these comments before final commit per pm-release-conductor G2 sub-check 8 (the conductor does this automatically when chained).
**Recommended next action:** {explicit recommendation - review and edit; strip comments and commit; refuse and address; etc.}
**Refusal triggered:** {yes/no with reason if yes}.Section 3: Status YAML (Machine-Parseable, for Parent Sub-Agent or Tooling)
Section titled “Section 3: Status YAML (Machine-Parseable, for Parent Sub-Agent or Tooling)”## Status
```yamlstatus: draft | refusedtarget_version: v{X.Y.Z}since_tag: v{prev}commits_processed: {integer}entries_added: {integer}entries_changed: {integer}entries_fixed: {integer}entries_removed: {integer}entries_security: {integer}entries_deprecated: {integer}dirty_tree_warning: true | falserefusal_reason: null | "non-existent tag" | "empty range" | "CLAUDE.md unreadable" | "dirty working tree"
dispatch: mode: native-subagent | inline-execution client: claude-code | codex-cli | cursor | windsurf | copilot | gemini-cli | other```Hygiene Rule Checklist (Applied by Sub-Agent / Dispatch Skill)
Section titled “Hygiene Rule Checklist (Applied by Sub-Agent / Dispatch Skill)”Every drafted entry MUST comply with CLAUDE.md hygiene rules:
- No em-dashes. Use ” - ”, ”:”, ”,”, or sentence break
- No Claude attribution trailers. No “Generated with Claude” or “Co-Authored-By: Claude” footers
- No internal-notes references. No
_NOTES/, noAGENTS/SESSION-LOG/, nodocs/internal/efforts/, nodocs/internal/release-plans/ - Public-path framing. Describe what changed; do not reference internal-only file paths
- Keep-a-Changelog section headers. Added / Changed / Deprecated / Removed / Fixed / Security
- ISO date format. YYYY-MM-DD in release header
- Hidden justification comments for maintainer audit; stripped before final commit
Chained Handoff Notes
Section titled “Chained Handoff Notes”When invoked from pm-release-conductor at gate G2 (Version bump + CHANGELOG prep):
- All three sections MUST be present
- The conductor parses Section 3 YAML for advancement decisions
- The maintainer reads Sections 1 + 2 to review the draft
- If
status: refused, conductor surfaces Section 2 refusal narrative - If
dirty_tree_warning: true, conductor surfaces a warning to the maintainer (not necessarily blocking, but the maintainer should know)
Related Files
Section titled “Related Files”- Canonical sub-agent:
agents/pm-changelog-curator.md - Worked example:
EXAMPLE.md - Behavioral spec:
docs/internal/release-plans/v2.16.0/spec_pm-changelog-curator.md
Example Output
Section titled “Example Output”Example: pm-changelog-curator Dispatch on Windsurf
Example: pm-changelog-curator Dispatch on Windsurf
Section titled “Example: pm-changelog-curator Dispatch on Windsurf”This example shows utility-pm-changelog-curator execution on a non-Claude client (Windsurf). The dispatch skill reads agents/pm-changelog-curator.md and executes the 8-step drafting flow inline.
Invocation
Section titled “Invocation”windsurf> /utility-pm-changelog-curator --since-tag v2.15.2 --target-version v2.16.0Skill behavior
Section titled “Skill behavior”- Runtime detection. Detects Windsurf (not Claude Code with pm-skills plugin); takes non-Claude branch.
- Reads canonical sub-agent definition. Loads
agents/pm-changelog-curator.mdas operating instructions. - Step 1 of agent flow: establish range. Honors
--since-tag v2.15.2and--target-version v2.16.0from arguments. - Step 2: read hygiene rules. Reads CLAUDE.md “CHANGELOG Best Practices” section.
- Step 3: check working tree. Working tree clean (no uncommitted changes); proceeds.
- Step 4: enumerate commits. Runs
git log v2.15.2..HEAD --pretty=format:'%h %s' --name-only. - Step 5-7: classify, group, rewrite. Applies classification rules per CLAUDE.md hygiene.
- Step 8: emit draft. Returns the three-section layered output below.
Output (verbatim from dispatch skill execution)
Section titled “Output (verbatim from dispatch skill execution)”pm-changelog-curator draft
Section titled “pm-changelog-curator draft”[v2.16.0] - 2026-MM-DD
Section titled “[v2.16.0] - 2026-MM-DD”-
Sub-agents (new component class): four Claude Code plugin sub-agents at
agents/plus matching dispatch skills atskills/utility-pm-{role}/for cross-client access.pm-criticruns adversarial review proactively after PM-artifact-producing skills;pm-skill-auditorruns repo-wide cross-cutting governance audits;pm-changelog-curatordrafts CHANGELOG entries from git log applying hygiene rules;pm-release-conductorwalks a 6-gate guided release runbook with chain composition. Seedocs/reference/runtime-components.md. -
Adversarial review user guide at
docs/guides/adversarial-review.mdwith severity grammar examples and skill-revise-recheck loop documentation. -
Release runbook contributor guide at
docs/contributing/release-runbook.mddocumenting the 6-gate flow (G0, G1, G2, G2.5, G3, G4). -
Runtime components catalog at
docs/reference/runtime-components.mdcataloging sub-agents (4 entries), hooks (empty placeholder), output styles (empty placeholder). -
12 sub-agent library samples across 3 narrative threads (brainshelf, storevine, workbench).
Changed
Section titled “Changed”-
Astro 5.13.x to 6.x doc-stack upgrade. Requires Node 22.12+. Closes 2 Dependabot alerts deferred from v2.14.x.
-
CI workflows bumped to Node 22.12+ across 5 workflows.
- Design Sprint family validator metadata-shape checks promoted from advisory to strict. Family contract enforcement now fails CI on metadata-shape issues.
Security
Section titled “Security”-
Astro define:vars XSS patched via 6.1.6 upgrade.
-
Astro server-island replay patched via 6.1.10 upgrade.
Known Limitations
Section titled “Known Limitations”- Cross-client dispatch skills (4 in v2.16.0) ship PENDING maintainer verification on non-Claude clients (Codex CLI, Cursor, Windsurf, Copilot, Gemini CLI). If GATE B from Phase 2 of subagents-integration-plan fails on a specific client, manual fallback applies.
Status Summary
Section titled “Status Summary”Drafted v2.16.0 entries from 50 commits since v2.15.2. 5 Added, 2 Changed, 1 Fixed, 2 Security, 1 Known Limitations.
Highlights:
- 4 sub-agents shipped as the new component class (strategic milestone of v2.16.0)
- Astro 6 upgrade closes 2 Dependabot alerts deferred from v2.14.x
- DS family validator metadata-shape promoted to strict
Hidden justification comments are included after each entry for maintainer audit. Strip these comments before final commit per pm-release-conductor G2 sub-check 8.
Recommended next action: Maintainer reviews the draft, edits framing as needed (especially “Known Limitations” wording around GATE B status), strips justification comments, then commits.
Refusal triggered: no.
Status
Section titled “Status”status: drafttarget_version: v2.16.0since_tag: v2.15.2commits_processed: 50entries_added: 5entries_changed: 2entries_fixed: 1entries_removed: 0entries_security: 2entries_deprecated: 0dirty_tree_warning: falserefusal_reason: null
dispatch: mode: inline-execution client: windsurfNotes on This Example
Section titled “Notes on This Example”The dispatch skill on Windsurf produces output structurally identical to the Claude Code native sub-agent on the same commit range. Cross-client consistency is the validation criterion for Phase 2 GATE B.
For the example’s role: this is the canonical worked example for the dispatch skill. Other examples may live in library/skill-output-samples/utility-pm-changelog-curator/ once that directory is populated (deferred to v2.17 per audit finding F-02 from the pm-skill-auditor sample).
Related Files
Section titled “Related Files”- Canonical sub-agent:
agents/pm-changelog-curator.md - Skill manifest:
SKILL.md - Output template:
TEMPLATE.md - v2.15.1 + v2.15.2 CHANGELOG entries:
CHANGELOG.md(root, canonical exemplars)