Add release to end of current milestone in roadmap
Appends a new sequential release to the end of the current milestone in the roadmap.
/plugin marketplace add cowwoc/claude-code-cat/plugin install cat@claude-code-cat<description>This command appends sequential releases to the current milestone's release list, automatically calculating the next release number based on existing releases.
Purpose: Add planned work discovered during execution that belongs at the end of current milestone. </objective>
<execution_context> @.planning/ROADMAP.md @.planning/STATE.md </execution_context>
<process> <step name="parse_arguments"> Parse the command arguments: - All arguments become the release description - Example: `/cat:add-release Add authentication` → description = "Add authentication" - Example: `/cat:add-release Fix critical performance issues` → description = "Fix critical performance issues"If no arguments provided:
ERROR: Release description required
Usage: /cat:add-release <description>
Example: /cat:add-release Add authentication system
Exit. </step>
<step name="load_roadmap"> Load the roadmap file:if [ -f .planning/ROADMAP.md ]; then
ROADMAP=".planning/ROADMAP.md"
else
echo "ERROR: No roadmap found (.planning/ROADMAP.md)"
exit 1
fi
Read roadmap content for parsing. </step>
<step name="find_current_milestone"> Parse the roadmap to find the current milestone section:Example structure:
## Current Milestone: v1.0 Foundation
### Release 4: Focused Command System
### Release 5: Path Routing & Validation
### Release 6: Documentation & Distribution
</step>
<step name="calculate_next_phase">
Find the highest integer release number in the current milestone:
Example: If releases are 4, 5, 5.1, 6 → next is 7
Format as two-digit: printf "%02d" $next_phase
</step>
# Example transformation:
# "Add authentication" → "add-authentication"
# "Fix critical performance issues" → "fix-critical-performance-issues"
slug=$(echo "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
Release directory name: {two-digit-release}-{slug}
Example: 07-add-authentication
</step>
phase_dir=".planning/releases/${phase_num}-${slug}"
mkdir -p "$phase_dir"
Confirm: "Created directory: $phase_dir" </step>
<step name="update_roadmap"> Add the new release entry to the roadmap:Find the insertion point (after last release in current milestone, before "---" separator)
Insert new release heading:
### Release {N}: {Description}
**Goal:** [To be planned]
**Depends on:** Release {N-1}
**Changes:** 0 changes
Changes:
- [ ] TBD (run /cat:change-release {N} to break down)
**Details:**
[To be added during planning]
Write updated roadmap back to file
Preserve all other content exactly (formatting, spacing, other releases). </step>
<step name="update_project_state"> Update STATE.md to reflect the new release:.planning/STATE.md- Release {N} added: {description}
If "Roadmap Evolution" section doesn't exist, create it. </step>
<step name="completion"> Present completion summary:Release {N} added to current milestone:
- Description: {description}
- Directory: .planning/releases/{release-num}-{slug}/
- Status: Not planned yet
Roadmap updated: {roadmap-path}
Project state updated: .planning/STATE.md
---
## ▶ Next Up
**Release {N}: {description}**
`/cat:change-release {N}`
<sub>`/clear` first → fresh context window</sub>
---
**Also available:**
- `/cat:add-release <description>` — add another release
- Review roadmap
---
</step>
</process>
<anti_patterns>
<success_criteria> Release addition is complete when:
.planning/releases/{NN}-{slug}/