Use when creating new projects requiring structured phased development, bootstrapping epic/stage hierarchy, creating new epics, or creating new stages.
This skill handles the CREATION of epic/stage/phase workflow structure. For WORKING ON existing epics and stages, see the epic-stage-workflow skill.
epic-stage-workflow skill insteadEpic (Feature)
āāā Stage (Component/Interaction)
āāā Phase: Design ā Build ā Refinement ā Finalize
When invoked for a new project:
epics/ directory for epic/stage tracking documentsregression.md files for responsive testing checklistschangelog/ directory with consolidation scriptepics/
āāā EPIC-001-feature-name/
ā āāā EPIC-001.md
ā āāā STAGE-001-001.md
ā āāā STAGE-001-002.md
ā āāā regression.md # Per-epic regression checklist
āāā EPIC-002-another-feature/
ā āāā EPIC-002.md
ā āāā regression.md
āāā ...
changelog/
āāā create_changelog.sh # Script to consolidate entries
āāā .gitkeep # Keeps directory in git
Tell user:
/next_task to check current work/epic-stats to see overall progressepics/EPIC-001-name/EPIC-001.mdAll templates are embedded below in this skill file.
epics/EPIC-XXX-kebab-case-name/Core Rule: Dependencies flow upward numerically. If work X depends on work Y, then Y must have a lower number than X.
STAGE-001 ā STAGE-002 ā STAGE-003
ā ā
ā āāā Can depend on 001
āāā No dependencies (first)
EPIC-001 ā EPIC-002 ā EPIC-003
ā ā
ā āāā Can depend on EPIC-001 work
āāā No cross-epic dependencies
Before creating ANY stage, verify:
Dependency check: Does this stage depend on work that doesn't exist yet?
Cross-epic check: Does this stage depend on work in a LATER epic?
Insertion check: Are you inserting a stage mid-sequence (e.g., STAGE-005-003A)?
Red Flags - STOP Before Creating Stage:
| Symptom | Problem | Solution |
|---|---|---|
| "This stage needs EPIC-018's backend work" but you're in EPIC-016 | Cross-epic forward dependency | Move stage to EPIC-018 or later |
| "This stage needs STAGE-005" but you're creating STAGE-003 | Backward dependency | Renumber or reorder stages |
| "Let's add STAGE-004A to keep the feature together" but 004A needs EPIC-020 work | Feature grouping overriding dependencies | Dependency ordering > feature grouping |
| User wants feature "done first" but it needs later API work | User priority ā technical feasibility | Explain dependency reality, adjust epic order |
Common Rationalizations (REJECT ALL):
| Excuse | Reality |
|---|---|
| "Keep frontend features together in one epic" | Architectural layers > feature grouping when dependencies conflict |
| "We'll just mark it blocked until the dependency is ready" | Blocked stages within an epic halt sequential progress |
| "The dependency is small, we can inline it" | If it's a real dependency, it needs proper sequencing |
| "User wants this epic number, so keep it" | Epic numbers reflect execution order, not user preference |
| "User insists on this ordering" | Explain dependency reality, document objection, still fix ordering |
| "We can do them in parallel" | Parallel execution doesn't fix dependency ordering - dependency must be numbered lower |
| "Just this once for the deadline" | Deadline pressure doesn't change technical dependencies |
Edge Cases:
Circular Dependencies: If EPIC-A needs EPIC-B work AND EPIC-B needs EPIC-A work:
STAGE-XXX-XXXA Notation: Inserting stages mid-sequence (e.g., 002A between 002 and 003) is ONLY valid when:
When User Insists After Explanation:
# EPIC-XXX: [Name]
## Status: Not Started
## Overview
[Description of the feature/capability this epic delivers]
## Stages
| Stage | Name | Status |
| ------------- | ------------------- | ----------- |
| STAGE-XXX-001 | [First stage name] | Not Started |
| STAGE-XXX-002 | [Second stage name] | Not Started |
## Current Stage: STAGE-XXX-001
## Notes
- [Any relevant notes]
# STAGE-XXX-YYY: [Name]
## Status: Not Started
## Overview
[What this stage implements]
## Stage Flags
- Has Input Forms: [ ] Yes
## Design Phase
- **UI Options Presented**:
- **User Choice**:
- **Seed Data Agreed**:
- **Session Notes**:
**Status**: [ ] Complete
## Build Phase
- **Components Created**:
- **API Endpoints Added**:
- **Placeholders Added**:
- **Session Notes**:
**Status**: [ ] Complete
## Refinement Phase
- [ ] Desktop Approved
- [ ] Mobile Approved
- [ ] Regression Items Added
- **Feedback Round 1**:
- **Feedback Round 2**:
**Status**: [ ] Complete
## Finalize Phase
- [ ] Code Review (pre-tests)
- [ ] Tests Written (unit, integration, e2e)
- [ ] Code Review (post-tests)
- [ ] Documentation Updated
- [ ] Committed
**Commit Hash**:
**CHANGELOG Entry**: [ ] Added
**Status**: [ ] Complete
Add these sections to a project's CLAUDE.md when bootstrapping:
## Development Workflow
### Hierarchy
- **Epic** = Feature (Dashboard, Map, Timeline, etc.)
- **Stage** = Single component or interaction within that feature
- **Phase** = Design | Build | Refinement | Finalize
### Phase Cycle Per Stage
Each stage goes through 4 phases, typically each in a separate session:
1. DESIGN PHASE - Present options, user picks, confirm seed data
2. BUILD PHASE - Implement, add seed data, add placeholders
3. REFINEMENT PHASE - Dual sign-off (Desktop AND Mobile approval)
4. FINALIZE PHASE - Tests, review, docs, commit (all via subagents)
## Commands
| Command | Purpose |
| ------------- | ----------------------------------------------- |
| `/next_task` | Find next work by scanning epic/stage hierarchy |
| `/epic-stats` | Calculate progress across epics |
## Stage Tracking Documents
### Location
epics/EPIC-XXX-name/STAGE-XXX-YYY.md
### Status Values
- `Not Started` - Work not yet begun
- `Design` - In design phase
- `Build` - In build phase
- `Refinement` - In refinement phase
- `Finalize` - In finalize phase
- `Complete` - All phases done
- `Skipped` - Intentionally skipped
Create per-epic regression files at epics/EPIC-XXX-name/regression.md:
# Regression Checklist - EPIC-XXX: [Name]
Items to verify after each deployment. Format: `[D]` = desktop, `[M]` = mobile, `[D][M]` = both.
## STAGE-XXX-001: [Stage Name]
- [ ] [D][M] Description of item to check
## STAGE-XXX-002: [Stage Name]
- [ ] [D][M] Description of item to check
Agents write entries to date-based files in changelog/ directory:
CRITICAL: Getting the date - NEVER estimate or hardcode dates:
# Get today's date for the changelog filename
TODAY=$(date +%Y-%m-%d)
# Example output: 2026-01-14
File pattern: changelog/$TODAY.changelog.md
Entry format:
## [STAGE-XXX-YYY] Stage Name
- Description of what was done
- Commit: `<hash>`
Rules:
./changelog/create_changelog.sh to consolidate into CHANGELOG.md#!/bin/bash
# Consolidates changelog entries into CHANGELOG.md
# Run from project root: ./changelog/create_changelog.sh
set -e
CHANGELOG_DIR="changelog"
OUTPUT_FILE="CHANGELOG.md"
# Create or clear the output file with header
cat > "$OUTPUT_FILE" << 'EOF'
# Changelog
All notable changes to this project are documented here.
EOF
# Process changelog files in reverse chronological order
for file in $(ls -r "$CHANGELOG_DIR"/*.changelog.md 2>/dev/null); do
if [ -f "$file" ]; then
date=$(basename "$file" .changelog.md)
echo "## $date" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
cat "$file" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
fi
done
echo "CHANGELOG.md updated from $CHANGELOG_DIR entries"