Restructure steps 7-8 to be clearer and more efficient: - Merged "Assign Issues" and "Apply Labels" into single step - Explicit nested loop structure: milestone → issues in that milestone - Process one milestone at a time - Combine milestone assignment + labels in single tea command - Added clear examples - Prevents confusion about looping and when to move on Before: Separate loops for milestone assignment and label application After: Single pass through milestones, process all issues per milestone Co-Authored-By: Claude Code <noreply@anthropic.com>
6.0 KiB
6.0 KiB
name, description, model, argument-hint, user-invocable
| name | description | model | argument-hint | user-invocable |
|---|---|---|---|---|
| create-milestones | 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. | claude-haiku-4-5 | 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
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:
tea issues <number>
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:
tea labels list
Create missing labels:
# 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:
tea milestones create \
--title "<milestone title>" \
--description "<milestone description>"
Capture milestone ID/title for issue assignment.
7. Assign Issues and Apply Labels
For each milestone, process all its issues:
# 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 <issue-number> \
--milestone "<milestone-title>" \
--labels "<existing-labels>,<value-label>,<risk-label-if-applicable>"
Example:
# 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 editcommand (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