Files
2026-01-15 17:28:06 +01:00

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 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