---
name: release-notes
description: Router command for the Release Notes & Changelog Generator — reads current Git context, asks which audience and target, and invokes the right skill chain. Run with no arguments for guided mode; pass a subcommand for direct invocation.
allowed-tools:
  - Read
  - Glob
  - Bash(git tag *)
  - Bash(git log *)
  - Bash(git describe *)
---

# release-notes

Router entry point for the Release Notes & Changelog Generator plugin.

## Usage

```
/release-notes [subcommand] [args]
```

## Subcommands

| Subcommand | Skill invoked | Example |
|---|---|---|
| `harvest [range]` | `release-notes-harvest` | `/release-notes harvest v1.3.0..v1.4.0` |
| `developer [version]` | `release-notes-developer` | `/release-notes developer 1.4.0` |
| `client [label]` | `release-notes-client` | `/release-notes client "May release for ACME"` |
| `pm [sprint]` | `release-notes-pm` | `/release-notes pm sprint=42` |
| `publish [target]` | `release-notes-publish` | `/release-notes publish target=confluence space=PROJ` |
| `review` | `release-notes-reviewer` agent | `/release-notes review` |

## Guided mode (no subcommand)

When invoked with no arguments or just `/release-notes`:

1. Detect the current Git context:
   - Run `git tag --sort=-version:refname | head -2` to identify the likely version range
   - Check for an existing `.release-notes/harvest.json` (already harvested?)
   - Check for existing draft files in `.release-notes/`

2. Present a status summary:
   ```
   Release Notes — current state
   ─────────────────────────────
   Version range: v1.3.0..HEAD (inferred)
   Harvest:       Not run — no .release-notes/harvest.json found
   Drafts ready:  None

   Recommended next step: harvest
   ```

3. Ask: "Which workflow do you want to run?"
   - `[1] Full pipeline` — harvest → developer + client + PM in parallel → review → publish
   - `[2] Harvest only` — pull and categorise changes; review in .release-notes/harvest-summary.md
   - `[3] Developer changelog only` — CHANGELOG.md update (assumes harvest is done)
   - `[4] Client announcement only` — client-facing draft
   - `[5] PM summary only` — sprint/release PM summary
   - `[6] Publish` — push an existing draft to Confluence / Slack / email
   - `[7] Review` — proofread all drafts before publishing

4. After user selects, invoke the appropriate skill(s) with the detected context.

## Full pipeline sequence

When `[1] Full pipeline` is selected:

```
Step 1: release-notes-harvest    — produce .release-notes/harvest.json
Step 2: release-notes-developer  — produce CHANGELOG.md + developer-draft.md
Step 3: release-notes-client     — produce client-draft.md + client-email.md
Step 4: release-notes-pm         — produce pm-summary.md
Step 5: release-notes-reviewer   — produce review-findings.md
Step 6: [prompt] Review findings, then /release-notes publish
```

Steps 2–4 can run after Step 1 completes; Step 5 runs after 2–4; Step 6 is manual.

## Context detection helpers

```bash
# Identify version range
git tag --sort=-version:refname | head -5

# Check for open unreleased commits
git log $(git describe --tags --abbrev=0)..HEAD --oneline | wc -l

# Check for existing harvest
ls .release-notes/ 2>/dev/null || echo "No .release-notes/ directory"
```

## Quick examples

```bash
# End-of-sprint full pipeline
/release-notes harvest sprint=42
/release-notes developer
/release-notes client "Sprint 42 for ACME Corp"
/release-notes pm sprint=42
/release-notes review
/release-notes publish target=confluence space=ACME page="Sprint 42 Release Notes"
/release-notes publish target=slack channel=#project-releases

# Hotfix changelog only
/release-notes harvest v1.4.0..v1.4.1
/release-notes developer 1.4.1

# Client announcement only (harvest already done)
/release-notes client "v1.4.0 milestone delivery"
```
