--- name: create-milestones description: > Analyze existing Gitea issues and group into value-based milestones. Creates milestones, assigns issues, applies value/risk labels. Use when organizing backlog by capability, or when user says /create-milestones. model: claude-haiku-4-5 argument-hint: user-invocable: true --- # Create Milestones @~/.claude/skills/milestone-planning/SKILL.md @~/.claude/skills/gitea/SKILL.md Analyze existing issues and organize into value-based milestones (shippable capabilities). ## Process ### 1. Fetch Existing Issues ```bash tea issues --state open -o json ``` Get all open issues from current repository. Verify issues exist. If none: ``` No open issues found. Create issues first using /vision-to-backlog or /ddd-breakdown. ``` ### 2. Analyze Issues Read issue details for each: ```bash tea issues ``` **Look for:** - Issue titles and descriptions - Bounded context labels (if present) - Capability labels (if present) - User stories - Acceptance criteria - DDD guidance (aggregates, commands, events) ### 3. Spawn Milestone Planner Use Task tool to spawn `milestone-planner` agent: ``` Analyze these issues and group into value-based milestones. Issues: [list of issue numbers with titles] For each issue, you have access to: - Full issue description - Labels - DDD context Group issues into milestones that represent shippable business capabilities. Follow milestone-planning skill principles: - Milestone = capability user can demo - 5-25 issues per milestone - Cross-cutting (commands + events + reads + UI) - Vertical slice test Output: - Milestone definitions - Issue assignments - Value/risk labels per issue Follow milestone-planner agent instructions. ``` Agent returns grouped milestones. ### 4. Review Grouped Milestones Present agent output to user: ``` ## Proposed Milestones ### Milestone: Customer can register and authenticate **Description:** User registration, login, and session management **Issues:** 8 **Value:** high **Issues:** - #42: Implement User aggregate - #43: Add RegisterUser command - #44: Publish UserRegistered event - #45: Add LoginUser command - #46: Create UserSession read model - #47: Build registration form - #48: Build login form - #49: Add session middleware ### Milestone: Order can be placed and paid **Description:** Complete order placement with payment processing **Issues:** 12 **Value:** high **Issues:** - #50: Implement Order aggregate - #51: Add PlaceOrder command ... [... more milestones] ``` **Ask user:** - Approve these milestones? - Modify any groupings? - Change value/risk labels? ### 5. Ensure Labels Exist Before creating milestones, ensure labels exist in Gitea: **Check for labels:** ```bash tea labels list ``` **Create missing labels:** ```bash # Value labels tea labels create "value/high" --color "#d73a4a" --description "Highest business value" tea labels create "value/medium" --color "#fbca04" --description "Moderate business value" tea labels create "value/low" --color "#0075ca" --description "Nice to have" # Risk label tea labels create "risk/high" --color "#e99695" --description "Technical risk or uncertainty" ``` ### 6. Create Milestones in Gitea For each approved milestone: ```bash tea milestones create \ --title "" \ --description "" ``` Capture milestone ID/title for issue assignment. ### 7. Assign Issues and Apply Labels **For each milestone, process all its issues:** ```bash # For each milestone: for milestone in milestones: # For each issue in this milestone: for issue in milestone.issues: # Combine milestone assignment + labels in single command tea issues edit \ --milestone "" \ --labels ",," ``` **Example:** ```bash # Issue #42 in "Customer can register and authenticate" milestone tea issues edit 42 \ --milestone "Customer can register and authenticate" \ --labels "bounded-context/auth,value/high" # Issue #43 with risk tea issues edit 43 \ --milestone "Customer can register and authenticate" \ --labels "bounded-context/auth,value/high,risk/high" ``` **Important:** - Process one milestone at a time, all issues in that milestone - Preserve existing labels (bounded-context, capability, etc.) - Add value label for all issues - Add risk/high only if issue has technical risk - Combine milestone + labels in single `tea issues edit` command (efficient) ### 8. Report Results Show created milestones with links: ``` ## Milestones Created ### Customer can register and authenticate (8 issues) - Value: high - Issues: #42, #43, #44, #45, #46, #47, #48, #49 - Link: [view milestone](https://git.flowmade.one/owner/repo/milestone/1) ### Order can be placed and paid (12 issues) - Value: high - Issues: #50-#61 - Link: [view milestone](https://git.flowmade.one/owner/repo/milestone/2) [... more milestones] ## Next Steps 1. **Review milestones** in Gitea 2. **Activate ONE milestone** (the current value focus) 3. **Close milestone** when capability is demoable 4. **Pick next milestone** to activate Remember: Only one open/active milestone at a time! ``` ## Guidelines **Value slices:** - Each milestone is a shippable capability - Can be demoed independently - User sees observable value **One active milestone:** - User manually activates ONE - This workflow doesn't activate automatically - Forces focus and completion **Label strategy:** - Every issue gets value label - High-risk issues get risk/high label - Preserves existing labels (context, capability) **Sizing:** - 5-25 issues per milestone - If larger, agent should split - If smaller, might not need milestone **No dates:** - Milestones are capability-based - Not time-based - Ship when done, not by deadline ## Tips - Run after creating issues from /vision-to-backlog - Re-run if backlog grows and needs reorganization - Agent groups by capability boundaries (aggregates, contexts) - Review groupings - agent might miss domain nuance - Adjust value/risk labels based on business context - Keep one milestone open at all times