feat: add value-based milestone planning capability
Add capability for organizing backlog into shippable business capabilities using value-based milestones (not time-based phases). Components: - milestone-planning skill: Value-based framework, vertical slice test, one active milestone - create-milestones skill: Orchestrator (Haiku) for analyzing and grouping issues - milestone-planner agent: Groups issues into capabilities autonomously (Haiku) Core Principles: - Milestone = shippable business capability (not phase) - One active milestone at a time (preserves focus) - 5-25 issues per milestone (right-sized) - Value labels: value/high, value/medium, value/low - Risk labels: risk/high (optional) - Vertical slice test (can be demoed independently) - No dates (capability-based, not time-based) Workflow: /create-milestones reads existing Gitea issues → analyzes capability boundaries → groups into milestones → creates in Gitea → assigns issues → applies labels → user manually activates ONE milestone Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
235
skills/create-milestones/SKILL.md
Normal file
235
skills/create-milestones/SKILL.md
Normal file
@@ -0,0 +1,235 @@
|
||||
---
|
||||
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 <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:**
|
||||
```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 "<milestone title>" \
|
||||
--description "<milestone description>"
|
||||
```
|
||||
|
||||
Capture milestone ID/title for issue assignment.
|
||||
|
||||
### 7. Assign Issues to Milestones
|
||||
|
||||
For each issue in each milestone:
|
||||
|
||||
```bash
|
||||
tea issues edit <issue-number> --milestone "<milestone-title>"
|
||||
```
|
||||
|
||||
### 8. Apply Value/Risk Labels
|
||||
|
||||
For each issue:
|
||||
|
||||
```bash
|
||||
tea issues edit <issue-number> --labels "<existing-labels>,<value-label>"
|
||||
|
||||
# If has risk
|
||||
tea issues edit <issue-number> --labels "<existing-labels>,<value-label>,risk/high"
|
||||
```
|
||||
|
||||
**Preserve existing labels** (bounded-context, capability, etc.)
|
||||
|
||||
### 9. 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
|
||||
Reference in New Issue
Block a user