flow-cc 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +20 -20
- package/VERSION +1 -1
- package/package.json +1 -1
- package/skills/flow-done.md +79 -45
- package/skills/flow-go.md +53 -40
- package/skills/flow-intro.md +23 -23
- package/skills/flow-setup.md +35 -35
- package/skills/flow-spec.md +58 -54
- package/skills/flow-status.md +30 -30
- package/skills/flow-task.md +2 -2
- package/skills/flow-triage.md +12 -12
- package/templates/CLAUDE.md.template +34 -34
- package/templates/ROADMAP.md.template +4 -4
- package/templates/STATE.md.template +6 -6
package/skills/flow-intro.md
CHANGED
|
@@ -23,9 +23,9 @@ Flow is a structured workflow for Claude Code. Four core commands that turn your
|
|
|
23
23
|
(intake) (plan) (build) (wrap)
|
|
24
24
|
↑ |
|
|
25
25
|
| auto-transitions to |
|
|
26
|
-
+---- next planned
|
|
26
|
+
+---- next planned project --------+
|
|
27
27
|
|
|
28
|
-
/flow:spec ← can pre-spec future
|
|
28
|
+
/flow:spec ← can pre-spec future projects (each gets its own PRD in .planning/prds/)
|
|
29
29
|
|
|
30
30
|
/flow:task ← standalone path for bug fixes, cleanup, small features (no PRD needed)
|
|
31
31
|
```
|
|
@@ -33,48 +33,48 @@ Flow is a structured workflow for Claude Code. Four core commands that turn your
|
|
|
33
33
|
### Command by Command
|
|
34
34
|
|
|
35
35
|
**`/flow:setup`** — Run once per project
|
|
36
|
-
- Asks you 4-5 questions (what is it, tech stack, verify commands, roadmap/
|
|
37
|
-
- Captures your full roadmap upfront (paste a list or build one
|
|
36
|
+
- Asks you 4-5 questions (what is it, tech stack, verify commands, roadmap/projects)
|
|
37
|
+
- Captures your full roadmap upfront (paste a list or build one project at a time)
|
|
38
38
|
- Creates the scaffolding: `CLAUDE.md`, `.planning/STATE.md`, `.planning/ROADMAP.md`, `tasks/lessons.md`
|
|
39
39
|
- If project already set up, tells you to use `/flow:triage` or `/flow:spec` instead
|
|
40
40
|
|
|
41
41
|
**`/flow:triage`** — Sort a brain dump into action
|
|
42
42
|
- Takes unstructured text (bullets, stream of consciousness, whatever)
|
|
43
|
-
- Categorizes each item: Linear Issue, ROADMAP Entry,
|
|
44
|
-
-
|
|
43
|
+
- Categorizes each item: Linear Issue, ROADMAP Entry, Project, Lesson, or Discard
|
|
44
|
+
- Projects get added to ROADMAP.md with status "Planned"
|
|
45
45
|
- Linear issues created automatically (if Linear MCP available)
|
|
46
|
-
- This is the single intake command — use it to add
|
|
46
|
+
- This is the single intake command — use it to add projects, capture ideas, or file bugs
|
|
47
47
|
|
|
48
48
|
**`/flow:task`** — Run anytime for small work
|
|
49
49
|
- Bug fixes, cleanup, one-off features — anything that doesn't need a full PRD
|
|
50
50
|
- Works standalone without `/flow:setup` — lowest friction entry to Flow
|
|
51
51
|
- Executes, verifies, commits, and logs to STATE.md (if it exists)
|
|
52
|
-
- Scope guard recommends `/flow:spec` if the task grows beyond 5 files or 3 layers
|
|
52
|
+
- Scope guard recommends `/flow:spec` if the task grows beyond 5 files or 3 layers (promotes to a project)
|
|
53
53
|
|
|
54
|
-
**`/flow:spec`** — Run once per
|
|
55
|
-
- Interviews you about scope, user stories, technical design, trade-offs, and
|
|
54
|
+
**`/flow:spec`** — Run once per project
|
|
55
|
+
- Interviews you about scope, user stories, technical design, trade-offs, and milestoning
|
|
56
56
|
- You can say "done" or "that's enough" anytime to cut the interview short
|
|
57
|
-
- Produces `.planning/prds/{
|
|
58
|
-
- Can pre-spec future
|
|
59
|
-
- Updates ROADMAP and STATE to reflect the plan (for the current
|
|
57
|
+
- Produces `.planning/prds/{project}.md` — the execution contract with wave-based milestones, file lists, and acceptance criteria
|
|
58
|
+
- Can pre-spec future projects in parallel terminal windows (each project gets its own PRD file)
|
|
59
|
+
- Updates ROADMAP and STATE to reflect the plan (for the current project; future project specs skip STATE updates)
|
|
60
60
|
|
|
61
|
-
**`/flow:go`** — Run once per
|
|
62
|
-
- Reads the PRD, finds the next pending
|
|
63
|
-
- Checks for staleness (did prior
|
|
61
|
+
**`/flow:go`** — Run once per milestone (this is where the work happens)
|
|
62
|
+
- Reads the PRD, finds the next pending milestone
|
|
63
|
+
- Checks for staleness (did prior milestones change things this milestone references?)
|
|
64
64
|
- Spawns agent teams per the wave structure in the PRD
|
|
65
65
|
- Verifies after each wave, commits when done
|
|
66
|
-
- Updates docs and prints "run `/flow:go` again for the next
|
|
66
|
+
- Updates docs and prints "run `/flow:go` again for the next milestone"
|
|
67
67
|
|
|
68
68
|
**`/flow:done`** — Run at end of every session
|
|
69
69
|
- Replaces STATE.md with current status
|
|
70
|
-
- Updates ROADMAP.md with
|
|
71
|
-
- Auto-transitions to the next planned
|
|
70
|
+
- Updates ROADMAP.md with milestone completions
|
|
71
|
+
- Auto-transitions to the next planned project when the current one completes
|
|
72
72
|
- Captures lessons as one-liners, enforces 10-item cap (promotes to CLAUDE.md when full)
|
|
73
73
|
- Commits doc updates
|
|
74
74
|
- Generates a handoff prompt you copy-paste to start the next session
|
|
75
75
|
|
|
76
76
|
**`/flow:status`** — Run anytime, read-only
|
|
77
|
-
- Quick "where am I?" —
|
|
77
|
+
- Quick "where am I?" — project, milestone progress, next step, lesson count
|
|
78
78
|
|
|
79
79
|
**`/flow:update`** — Run anytime to update Flow
|
|
80
80
|
- Pulls latest changes from the flow-plugin repo and re-installs all skills
|
|
@@ -84,8 +84,8 @@ Flow is a structured workflow for Claude Code. Four core commands that turn your
|
|
|
84
84
|
|
|
85
85
|
```
|
|
86
86
|
1. Paste the handoff prompt from last session (or /flow:status to orient)
|
|
87
|
-
2. /flow:go ← executes the next
|
|
88
|
-
3. /flow:go ← executes the
|
|
87
|
+
2. /flow:go ← executes the next milestone
|
|
88
|
+
3. /flow:go ← executes the milestone after that (if time permits)
|
|
89
89
|
4. /flow:done ← wraps up, gives you the handoff prompt for tomorrow
|
|
90
90
|
```
|
|
91
91
|
|
|
@@ -96,7 +96,7 @@ Flow is a structured workflow for Claude Code. Four core commands that turn your
|
|
|
96
96
|
```
|
|
97
97
|
1. /flow:setup ← scaffolds everything
|
|
98
98
|
2. /flow:spec ← interview → PRD
|
|
99
|
-
3. /flow:go ←
|
|
99
|
+
3. /flow:go ← milestone 1
|
|
100
100
|
4. /flow:done ← wrap up
|
|
101
101
|
```
|
|
102
102
|
|
package/skills/flow-setup.md
CHANGED
|
@@ -11,7 +11,7 @@ You are executing the `/flow:setup` skill. This sets up the planning scaffolding
|
|
|
11
11
|
## Guard: Already Initialized
|
|
12
12
|
|
|
13
13
|
Check if `.planning/STATE.md` already exists:
|
|
14
|
-
- **If it exists** → Print: "This project is already set up. Run `/flow:triage` to add
|
|
14
|
+
- **If it exists** → Print: "This project is already set up. Run `/flow:triage` to add projects, or `/flow:spec` to spec the current one." and **STOP. Do not overwrite.**
|
|
15
15
|
- **If it does NOT exist** → Continue with setup below.
|
|
16
16
|
|
|
17
17
|
---
|
|
@@ -38,22 +38,22 @@ Use AskUserQuestion to gather project info. Ask these questions (you may combine
|
|
|
38
38
|
- (Other — user types custom)
|
|
39
39
|
|
|
40
40
|
**Question 4 — Roadmap:**
|
|
41
|
-
- "Do you already have a roadmap or list of
|
|
41
|
+
- "Do you already have a roadmap or list of projects?" with options:
|
|
42
42
|
- "Yes — I'll paste or describe them"
|
|
43
43
|
- "No — let's figure it out together"
|
|
44
44
|
|
|
45
45
|
**If user selects "Yes":**
|
|
46
46
|
- Accept free text (bullet list, paragraph, pasted doc — any format)
|
|
47
|
-
- Parse into
|
|
47
|
+
- Parse into projects, each with a name + brief goal
|
|
48
48
|
- Print back: "Here's what I got:" followed by the parsed list (e.g., "Auth — user registration and login", "Dashboard — analytics and settings")
|
|
49
49
|
- Use AskUserQuestion to confirm: "Does this look right?" with options:
|
|
50
50
|
- "Yes — looks good"
|
|
51
51
|
- "Let me adjust" (user re-enters)
|
|
52
52
|
|
|
53
53
|
**If user selects "No" (guided):**
|
|
54
|
-
- Ask: "What's the first
|
|
55
|
-
- Then: "Any more
|
|
56
|
-
- "I have more to add" (user enters additional
|
|
54
|
+
- Ask: "What's the first project?" (name + one-sentence goal)
|
|
55
|
+
- Then: "Any more projects you can see right now? List them, or skip to add them later with `/flow:triage`." with options:
|
|
56
|
+
- "I have more to add" (user enters additional projects)
|
|
57
57
|
- "That's it for now"
|
|
58
58
|
|
|
59
59
|
**Question 5 — Brownfield scan:**
|
|
@@ -78,17 +78,17 @@ Create these 5 files (create directories as needed):
|
|
|
78
78
|
# [Project Name] — Project State
|
|
79
79
|
|
|
80
80
|
## Current Position
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
81
|
+
- **Project:** [first project name]
|
|
82
|
+
- **Milestone:** Not started — run `/flow:spec` to build PRD
|
|
83
83
|
- **Branch:** main
|
|
84
84
|
- **Active PRD:** None — run `/flow:spec` to create
|
|
85
85
|
- **Last Session:** [today's date]
|
|
86
86
|
|
|
87
87
|
## Milestone Progress
|
|
88
88
|
|
|
89
|
-
|
|
|
90
|
-
|
|
91
|
-
| — | Run `/flow:spec` to define
|
|
89
|
+
| Milestone | Name | Status |
|
|
90
|
+
|-----------|------|--------|
|
|
91
|
+
| — | Run `/flow:spec` to define milestones | — |
|
|
92
92
|
|
|
93
93
|
## What Was Built (This Session)
|
|
94
94
|
- Project initialized with `/flow:setup`
|
|
@@ -98,39 +98,39 @@ Create these 5 files (create directories as needed):
|
|
|
98
98
|
- (none yet)
|
|
99
99
|
|
|
100
100
|
## Next Actions
|
|
101
|
-
1. Run `/flow:spec` to interview and generate PRD for [first
|
|
101
|
+
1. Run `/flow:spec` to interview and generate PRD for [first project]
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
**`.planning/ROADMAP.md`:**
|
|
105
105
|
```
|
|
106
106
|
# [Project Name] — Roadmap
|
|
107
107
|
|
|
108
|
-
##
|
|
108
|
+
## Projects
|
|
109
109
|
|
|
110
|
-
|
|
|
111
|
-
|
|
112
|
-
| [first
|
|
113
|
-
[For each additional
|
|
114
|
-
| [
|
|
110
|
+
| Project | Status | Milestones |
|
|
111
|
+
|---------|--------|------------|
|
|
112
|
+
| [first project] | Pending — needs `/flow:spec` | TBD |
|
|
113
|
+
[For each additional project:]
|
|
114
|
+
| [project name] | Planned | TBD |
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
## [first
|
|
118
|
+
## [first project]
|
|
119
119
|
|
|
120
|
-
**Goal:** [
|
|
120
|
+
**Goal:** [project goal from user]
|
|
121
121
|
|
|
122
|
-
**
|
|
122
|
+
**Milestones:** Run `/flow:spec` to define implementation milestones.
|
|
123
123
|
|
|
124
|
-
[For each additional
|
|
124
|
+
[For each additional project:]
|
|
125
125
|
|
|
126
|
-
## [
|
|
126
|
+
## [project name]
|
|
127
127
|
|
|
128
|
-
**Goal:** [
|
|
128
|
+
**Goal:** [project goal]
|
|
129
129
|
|
|
130
|
-
**
|
|
130
|
+
**Milestones:** Run `/flow:spec` when this project is active.
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
Note: The first
|
|
133
|
+
Note: The first project gets status "Pending — needs `/flow:spec`". All subsequent projects get status "Planned". Each project gets its own section with its goal.
|
|
134
134
|
|
|
135
135
|
**`CLAUDE.md`:**
|
|
136
136
|
```
|
|
@@ -145,11 +145,11 @@ Note: The first milestone gets status "Pending — needs `/flow:spec`". All subs
|
|
|
145
145
|
### START (Every Session)
|
|
146
146
|
1. Read this file (CLAUDE.md)
|
|
147
147
|
2. Read `.planning/STATE.md` for current status
|
|
148
|
-
3. Read `.planning/ROADMAP.md` for
|
|
149
|
-
4. Read active PRD from `.planning/prds/` for current
|
|
148
|
+
3. Read `.planning/ROADMAP.md` for project progress
|
|
149
|
+
4. Read active PRD from `.planning/prds/` for current project (if one exists)
|
|
150
150
|
|
|
151
151
|
## Execution Rules
|
|
152
|
-
- **Plan before building.** For non-trivial work, read the
|
|
152
|
+
- **Plan before building.** For non-trivial work, read the project's PRD in `.planning/prds/` before touching anything.
|
|
153
153
|
- **Delegate immediately.** If a task touches 3+ files, spawn an agent team within your first 2 tool calls.
|
|
154
154
|
- **Verify everything.** Run [verification commands from user] after agent work lands. Nothing is done until proven.
|
|
155
155
|
|
|
@@ -159,7 +159,7 @@ Note: The first milestone gets status "Pending — needs `/flow:spec`". All subs
|
|
|
159
159
|
|
|
160
160
|
## Session-End Docs (MANDATORY)
|
|
161
161
|
1. `.planning/STATE.md` — replace session notes (don't append), keep <80 lines
|
|
162
|
-
2. `.planning/ROADMAP.md` — update
|
|
162
|
+
2. `.planning/ROADMAP.md` — update milestone progress
|
|
163
163
|
3. `tasks/lessons.md` — add new lessons, refine existing ones
|
|
164
164
|
4. Commit doc updates to feature branch
|
|
165
165
|
|
|
@@ -177,7 +177,7 @@ One-liner format: `- **[topic]** The rule`
|
|
|
177
177
|
<!-- EXAMPLE: - **[agent context]** Always tell agents exactly which functions/lines to read — never "read file.ts", say "read file.ts lines 50-120" -->
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
**`.planning/prds/`** — Create this empty directory (use `mkdir -p` via Bash). PRDs are stored here per-
|
|
180
|
+
**`.planning/prds/`** — Create this empty directory (use `mkdir -p` via Bash). PRDs are stored here per-project.
|
|
181
181
|
|
|
182
182
|
**`.planning/archive/`** — Create this empty directory (use `mkdir -p` via Bash).
|
|
183
183
|
|
|
@@ -187,10 +187,10 @@ One-liner format: `- **[topic]** The rule`
|
|
|
187
187
|
Project initialized:
|
|
188
188
|
- CLAUDE.md — project execution rules
|
|
189
189
|
- .planning/STATE.md — session GPS
|
|
190
|
-
- .planning/ROADMAP.md —
|
|
190
|
+
- .planning/ROADMAP.md — project tracker
|
|
191
191
|
- tasks/lessons.md — active lessons (max 10)
|
|
192
|
-
- .planning/prds/ — per-
|
|
193
|
-
- .planning/archive/ — for completed
|
|
192
|
+
- .planning/prds/ — per-project PRD specs
|
|
193
|
+
- .planning/archive/ — for completed projects
|
|
194
194
|
|
|
195
|
-
Run `/flow:spec` to plan your first
|
|
195
|
+
Run `/flow:spec` to plan your first project.
|
|
196
196
|
```
|
package/skills/flow-spec.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow:spec
|
|
3
|
-
description: Spec interview that produces an executable PRD with wave-based
|
|
3
|
+
description: Spec interview that produces an executable PRD with wave-based milestones and testable acceptance criteria
|
|
4
4
|
user_invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# /flow:spec — Spec Interview → Executable PRD
|
|
8
8
|
|
|
9
|
-
You are executing the `/flow:spec` skill. This is the KEYSTONE skill of the flow system. You will interview the user about their
|
|
9
|
+
You are executing the `/flow:spec` skill. This is the KEYSTONE skill of the flow system. You will interview the user about their project, then produce a detailed PRD that agents can execute without ambiguity.
|
|
10
10
|
|
|
11
11
|
**Interview mode:** Always thorough by default. The user can say "done", "finalize", "that's enough", or "move on" at ANY time to wrap up early. Respect their signal and finalize with whatever depth has been achieved.
|
|
12
12
|
|
|
@@ -16,28 +16,28 @@ You are executing the `/flow:spec` skill. This is the KEYSTONE skill of the flow
|
|
|
16
16
|
|
|
17
17
|
## Phase 1 — Context Gathering
|
|
18
18
|
|
|
19
|
-
1. Read `.planning/STATE.md` and `.planning/ROADMAP.md` — understand current
|
|
19
|
+
1. Read `.planning/STATE.md` and `.planning/ROADMAP.md` — understand current project and what's done
|
|
20
20
|
2. Read `CLAUDE.md` — understand project rules and tech stack
|
|
21
21
|
3. Check for existing PRD:
|
|
22
22
|
- List `.planning/prds/` directory (if it exists) for existing PRD files
|
|
23
23
|
- Also check for legacy `PRD.md` at project root (backward compat)
|
|
24
|
-
- If a PRD exists for the target
|
|
25
|
-
4. **
|
|
24
|
+
- If a PRD exists for the target project, note it for resume/extend flow
|
|
25
|
+
4. **Project Targeting** — determine which project this PRD targets before scanning the codebase:
|
|
26
26
|
|
|
27
|
-
1. **If the user passed an argument** (e.g., `/flow:spec v3: Payments`) — match against ROADMAP.md
|
|
27
|
+
1. **If the user passed an argument** (e.g., `/flow:spec v3: Payments`) — match against ROADMAP.md projects. If no match, print available projects and ask which one.
|
|
28
28
|
|
|
29
|
-
2. **If no argument** — read ROADMAP.md and list all incomplete
|
|
29
|
+
2. **If no argument** — read ROADMAP.md and list all incomplete projects. Use AskUserQuestion to let the user pick which project to spec. Pre-select the next unspecced project as the first option. Always show the picker, even if only one project is listed — the user may want to confirm or choose "Other" to define a new project first.
|
|
30
30
|
|
|
31
|
-
3. **Derive the PRD slug:** Take the
|
|
31
|
+
3. **Derive the PRD slug:** Take the project name (e.g., "Dashboard Analytics"), lowercase it, replace spaces and special characters with hyphens, collapse consecutive hyphens. Result: `dashboard-analytics`. The PRD path is `.planning/prds/{slug}.md`.
|
|
32
32
|
|
|
33
33
|
4. **Check for existing PRD at that path:**
|
|
34
|
-
- **If PRD exists** → Use AskUserQuestion: "A PRD already exists for this
|
|
34
|
+
- **If PRD exists** → Use AskUserQuestion: "A PRD already exists for this project at `.planning/prds/{slug}.md`. What would you like to do?"
|
|
35
35
|
- "Resume editing" — load the existing PRD and continue the interview from where it left off
|
|
36
36
|
- "Start fresh" — delete the existing PRD and start a new interview
|
|
37
|
-
- "Pick a different
|
|
37
|
+
- "Pick a different project" — show available projects
|
|
38
38
|
- **If no PRD exists** → Proceed with a fresh interview
|
|
39
39
|
|
|
40
|
-
5. **Future
|
|
40
|
+
5. **Future project detection:** If the target project is NOT the current project in STATE.md, note this — the PRD will be written but STATE.md's "Active PRD" field will NOT be updated (it stays pointing at the current project's PRD). Print: "Speccing future project [name]. STATE.md will not be updated — this PRD will be available when you reach this project."
|
|
41
41
|
|
|
42
42
|
5. **Codebase scan** (brownfield projects) — spawn **3 parallel Explore subagents** via the Task tool to scan the codebase without consuming main context:
|
|
43
43
|
|
|
@@ -92,8 +92,8 @@ Then proceed to the coverage areas below.
|
|
|
92
92
|
Cover these areas thoroughly. There are no "rounds" — move fluidly between areas based on the conversation. Circle back to earlier areas when later answers reveal new information.
|
|
93
93
|
|
|
94
94
|
**1. Scope Definition**
|
|
95
|
-
- What features are IN scope for this
|
|
96
|
-
- What is explicitly OUT of scope / deferred to a future
|
|
95
|
+
- What features are IN scope for this project? What's the MVP vs. the full vision?
|
|
96
|
+
- What is explicitly OUT of scope / deferred to a future project?
|
|
97
97
|
- Is there any code that is sacred (must NOT be touched)? Why?
|
|
98
98
|
- What existing code/features should we ignore entirely (not break, not improve, not touch)?
|
|
99
99
|
|
|
@@ -130,22 +130,22 @@ Cover these areas thoroughly. There are no "rounds" — move fluidly between are
|
|
|
130
130
|
- What technical debt is acceptable for now vs. must be done right?
|
|
131
131
|
- Any browser/device support requirements?
|
|
132
132
|
|
|
133
|
-
**6. Implementation
|
|
134
|
-
- How should this break into sequential
|
|
135
|
-
- What can be parallelized within each
|
|
133
|
+
**6. Implementation Milestones**
|
|
134
|
+
- How should this break into sequential milestones?
|
|
135
|
+
- What can be parallelized within each milestone? (wave-based agent structure)
|
|
136
136
|
- What's the critical path — what must be built first?
|
|
137
|
-
- What's the minimum viable first
|
|
138
|
-
- Any
|
|
139
|
-
- **Assignability check:** After defining
|
|
140
|
-
- "Which of these
|
|
141
|
-
- Evaluate each
|
|
142
|
-
- Add assignability notes to each
|
|
137
|
+
- What's the minimum viable first milestone? (what gives us something testable fastest?)
|
|
138
|
+
- Any milestones that could be cut if time runs short?
|
|
139
|
+
- **Assignability check:** After defining milestones, probe which are independent enough for a different developer:
|
|
140
|
+
- "Which of these milestones could a second developer work on independently?"
|
|
141
|
+
- Evaluate each milestone for: dependency chains (does it need output from another milestone?), domain independence (is it a separate concern?), context requirements (does it need deep codebase familiarity?), onboarding suitability (could a newer dev handle it?)
|
|
142
|
+
- Add assignability notes to each milestone, e.g., "Milestone 3 is independent — good for either dev" or "Milestone 2 depends on Milestone 1 — same dev"
|
|
143
143
|
|
|
144
144
|
**7. Verification & Feedback Loops**
|
|
145
145
|
- What commands verify the build works? (`tsc`, `biome`, test suite)
|
|
146
|
-
- What does "done" look like for each
|
|
146
|
+
- What does "done" look like for each milestone? How do we know it worked?
|
|
147
147
|
- Are there integration points that need end-to-end testing?
|
|
148
|
-
- What should we check after each
|
|
148
|
+
- What should we check after each milestone before moving to the next?
|
|
149
149
|
- Any monitoring or logging needed to confirm production behavior?
|
|
150
150
|
|
|
151
151
|
**User signals done:** If the user says "done", "finalize", "that's enough", "ship it", or similar — immediately stop interviewing and go to Phase 3. Finalize the PRD with whatever depth has been achieved.
|
|
@@ -156,7 +156,7 @@ Cover these areas thoroughly. There are no "rounds" — move fluidly between are
|
|
|
156
156
|
|
|
157
157
|
Before generating the final PRD, validate:
|
|
158
158
|
- At least **3 user stories** with acceptance criteria have been discussed
|
|
159
|
-
- At least **1 implementation
|
|
159
|
+
- At least **1 implementation milestone** has been defined
|
|
160
160
|
- At least **1 verification command** has been specified
|
|
161
161
|
|
|
162
162
|
If any check fails, print what's missing and use AskUserQuestion:
|
|
@@ -169,16 +169,16 @@ If any check fails, print what's missing and use AskUserQuestion:
|
|
|
169
169
|
Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory first if it doesn't exist) with this EXACT structure:
|
|
170
170
|
|
|
171
171
|
```markdown
|
|
172
|
-
# [
|
|
172
|
+
# [Project Name] — Specification
|
|
173
173
|
|
|
174
|
-
**
|
|
174
|
+
**Project:** [full project name, e.g., "Dashboard Analytics"]
|
|
175
175
|
**Status:** Ready for execution
|
|
176
|
-
**Branch:** feat/{
|
|
176
|
+
**Branch:** feat/{project-slug}
|
|
177
177
|
**Created:** [today's date]
|
|
178
178
|
**Assigned To:** [developer name or "unassigned"]
|
|
179
179
|
|
|
180
180
|
## Overview
|
|
181
|
-
[One paragraph summary of the
|
|
181
|
+
[One paragraph summary of the project]
|
|
182
182
|
|
|
183
183
|
## Problem Statement
|
|
184
184
|
[Why this work exists — what problem does it solve?]
|
|
@@ -186,7 +186,7 @@ Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory
|
|
|
186
186
|
## Scope
|
|
187
187
|
|
|
188
188
|
### In Scope
|
|
189
|
-
- [Bullet list of what ships in this
|
|
189
|
+
- [Bullet list of what ships in this project]
|
|
190
190
|
|
|
191
191
|
### Out of Scope
|
|
192
192
|
- [Explicitly deferred items]
|
|
@@ -215,7 +215,7 @@ Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory
|
|
|
215
215
|
[Method + path + request/response shape for each]
|
|
216
216
|
|
|
217
217
|
### New Files to Create
|
|
218
|
-
[Grouped by
|
|
218
|
+
[Grouped by milestone. Absolute paths with one-line descriptions]
|
|
219
219
|
|
|
220
220
|
### Existing Files to Modify
|
|
221
221
|
[Paths + what changes in each]
|
|
@@ -223,9 +223,9 @@ Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory
|
|
|
223
223
|
### Key Existing Code (DO NOT recreate — use as-is)
|
|
224
224
|
[Functions, utilities, DAL queries, components that agents should import/reuse]
|
|
225
225
|
|
|
226
|
-
## Implementation
|
|
226
|
+
## Implementation Milestones
|
|
227
227
|
|
|
228
|
-
###
|
|
228
|
+
### Milestone 1: [Name]
|
|
229
229
|
**Assigned To:** [developer name or "unassigned"]
|
|
230
230
|
**Goal:** [One sentence]
|
|
231
231
|
|
|
@@ -243,20 +243,20 @@ Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory
|
|
|
243
243
|
**Verification:** [Exact commands to run]
|
|
244
244
|
**Acceptance:** US-1 criteria [list which], US-2 criteria [list which]
|
|
245
245
|
|
|
246
|
-
###
|
|
246
|
+
### Milestone 2: [Name]
|
|
247
247
|
**Assigned To:** [developer name or "unassigned"]
|
|
248
248
|
...
|
|
249
249
|
|
|
250
250
|
## Execution Rules
|
|
251
251
|
1. DELEGATE EVERYTHING. Lead context is sacred — do not read implementation files into it.
|
|
252
|
-
2. Verify after every
|
|
252
|
+
2. Verify after every milestone: [verification commands from CLAUDE.md]
|
|
253
253
|
3. Atomic commits after each agent's work lands
|
|
254
254
|
4. Never `git add .` — stage specific files only
|
|
255
255
|
5. Read `tasks/lessons.md` before spawning agents — inject relevant lessons into agent prompts
|
|
256
256
|
|
|
257
257
|
## Definition of Done
|
|
258
258
|
- [ ] All user story acceptance criteria pass
|
|
259
|
-
- [ ] All
|
|
259
|
+
- [ ] All milestones verified with [verification commands]
|
|
260
260
|
- [ ] Branch pushed and PR opened
|
|
261
261
|
- [ ] STATE.md and ROADMAP.md updated
|
|
262
262
|
```
|
|
@@ -265,41 +265,45 @@ Write the PRD to `.planning/prds/{slug}.md` (create `.planning/prds/` directory
|
|
|
265
265
|
|
|
266
266
|
After writing the PRD to `.planning/prds/{slug}.md`:
|
|
267
267
|
|
|
268
|
-
1. **Update ROADMAP.md:** Add
|
|
268
|
+
1. **Update ROADMAP.md:** Add milestone breakdown under the current project section. Each milestone gets a row in the progress table with status "Pending".
|
|
269
269
|
|
|
270
|
-
2. **Update STATE.md** (current
|
|
271
|
-
- Set current
|
|
270
|
+
2. **Update STATE.md** (current project only):
|
|
271
|
+
- Set current milestone to "Milestone 1 — ready for `/flow:go`"
|
|
272
272
|
- Set "Active PRD" to `.planning/prds/{slug}.md`
|
|
273
|
-
- Update "Next Actions" to reference the first
|
|
274
|
-
- **Skip this step if speccing a future
|
|
273
|
+
- Update "Next Actions" to reference the first milestone
|
|
274
|
+
- **Skip this step if speccing a future project** — STATE.md stays pointing at the current project. Print: "PRD written to `.planning/prds/{slug}.md`. STATE.md not updated (future project)."
|
|
275
275
|
|
|
276
|
-
3. **Generate
|
|
276
|
+
3. **Generate Milestone 1 handoff prompt:**
|
|
277
277
|
```
|
|
278
|
-
|
|
279
|
-
[One sentence of context about what
|
|
278
|
+
Milestone 1: [Name] — [short description]. Read STATE.md, ROADMAP.md, and .planning/prds/{slug}.md.
|
|
279
|
+
[One sentence of context about what Milestone 1 builds].
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
4. **Linear
|
|
282
|
+
4. **Linear Integration (optional):**
|
|
283
283
|
- Check if Linear MCP tools are available (try `mcp__linear__list_teams`)
|
|
284
|
-
- If available: search for a Linear project matching the
|
|
285
|
-
- If found:
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
284
|
+
- If available: search for a Linear project matching the project name (`mcp__linear__list_projects` with query)
|
|
285
|
+
- If found:
|
|
286
|
+
- Create one **Linear milestone** per implementation milestone:
|
|
287
|
+
`mcp__linear__create_milestone` with project, name "Milestone N: [Name]"
|
|
288
|
+
- Create one **Linear issue** per user story or task (NOT per milestone):
|
|
289
|
+
`mcp__linear__create_issue` assigned to the appropriate milestone
|
|
290
|
+
- If not found: use AskUserQuestion to ask user to pick a project or skip
|
|
291
|
+
- If Linear MCP not available: skip silently
|
|
292
|
+
- Print: "[N] milestones + [M] issues created under project [name]"
|
|
289
293
|
|
|
290
294
|
5. Print the handoff prompt in a fenced code block.
|
|
291
295
|
|
|
292
|
-
6. Print: "PRD ready at `.planning/prds/{slug}.md`. Run `/flow:go` to execute
|
|
296
|
+
6. Print: "PRD ready at `.planning/prds/{slug}.md`. Run `/flow:go` to execute Milestone 1, or review the PRD first."
|
|
293
297
|
|
|
294
298
|
## Quality Gates
|
|
295
299
|
|
|
296
300
|
Before finalizing, self-check the PRD:
|
|
297
|
-
- [ ] Every
|
|
301
|
+
- [ ] Every milestone has wave-based agent assignments with explicit file lists
|
|
298
302
|
- [ ] Every user story has checkbox acceptance criteria that are testable
|
|
299
|
-
- [ ] Every
|
|
303
|
+
- [ ] Every milestone has verification commands
|
|
300
304
|
- [ ] "Key Existing Code" section references actual files/functions found in the codebase scan
|
|
301
305
|
- [ ] PRD is written to `.planning/prds/{slug}.md`, NOT to root `PRD.md`
|
|
302
|
-
- [ ] No
|
|
306
|
+
- [ ] No milestone has more than 5 agents in a single wave (too many = coordination overhead)
|
|
303
307
|
- [ ] Sacred code section is populated (even if empty with "None identified")
|
|
304
308
|
|
|
305
309
|
If any gate fails, fix the PRD before presenting it.
|
package/skills/flow-status.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flow:status
|
|
3
|
-
description: Quick orientation — shows current
|
|
3
|
+
description: Quick orientation — shows current project, milestone progress, and next actions
|
|
4
4
|
user_invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -17,7 +17,7 @@ Read ALL of the following in parallel:
|
|
|
17
17
|
- `.planning/ROADMAP.md`
|
|
18
18
|
- List `.planning/prds/` directory for all PRD files (if directory exists)
|
|
19
19
|
- Also check for legacy `PRD.md` at project root (backward compat)
|
|
20
|
-
- Read the active PRD (from STATE.md "Active PRD" field) to get
|
|
20
|
+
- Read the active PRD (from STATE.md "Active PRD" field) to get milestone details
|
|
21
21
|
- Count lessons in `tasks/lessons.md` (if exists)
|
|
22
22
|
- `.claude/memory/session.md` (if exists) — personal session state
|
|
23
23
|
- Run `git config user.name` to get developer identity
|
|
@@ -28,76 +28,76 @@ IF both STATE.md AND ROADMAP.md are missing:
|
|
|
28
28
|
|
|
29
29
|
IF only one file exists, continue with what's available.
|
|
30
30
|
|
|
31
|
-
## Step 2 — Analyze
|
|
31
|
+
## Step 2 — Analyze Milestone Status
|
|
32
32
|
|
|
33
|
-
Parse ROADMAP.md to determine
|
|
34
|
-
- Count total
|
|
35
|
-
- Count
|
|
36
|
-
- Count
|
|
37
|
-
- Identify the FIRST
|
|
33
|
+
Parse ROADMAP.md to determine milestone progress:
|
|
34
|
+
- Count total milestones
|
|
35
|
+
- Count milestones marked "Complete", "Done", or containing a completion date (e.g., `✓`, `[x]`, `completed`)
|
|
36
|
+
- Count milestones marked "Pending", "In Progress", or not yet started
|
|
37
|
+
- Identify the FIRST milestone that is NOT complete — this is the **next milestone**
|
|
38
38
|
|
|
39
|
-
RULE: Determine the next action from ROADMAP.md
|
|
39
|
+
RULE: Determine the next action from ROADMAP.md milestone statuses, NOT from STATE.md "Next Actions" text. STATE.md may be stale from a previous session. ROADMAP.md is the source of truth for milestone progress.
|
|
40
40
|
|
|
41
41
|
## Step 3 — Determine Routing
|
|
42
42
|
|
|
43
43
|
Use this explicit decision tree:
|
|
44
44
|
|
|
45
|
-
**IF pending
|
|
46
|
-
→ Primary: `/flow:go` to execute
|
|
45
|
+
**IF pending milestones exist in ROADMAP AND a PRD exists for the current project (in `.planning/prds/` or legacy root):**
|
|
46
|
+
→ Primary: `/flow:go` to execute Milestone [N]: [name]
|
|
47
47
|
→ Alt: `/flow:done` if wrapping up the session
|
|
48
48
|
→ Alt: `/flow:task` for quick fixes or cleanup (no PRD needed)
|
|
49
49
|
|
|
50
|
-
**IF pending
|
|
51
|
-
→ `/flow:spec` — select a
|
|
50
|
+
**IF pending milestones exist in ROADMAP BUT no PRD exists for the current project:**
|
|
51
|
+
→ `/flow:spec` — select a project and build its execution plan
|
|
52
52
|
→ `/flow:task` — for quick fixes or cleanup (no PRD needed)
|
|
53
53
|
|
|
54
|
-
**IF all
|
|
55
|
-
→ Primary: `/flow:done` to finalize this
|
|
54
|
+
**IF all milestones are complete AND a next project with status "Planned" exists in ROADMAP.md:**
|
|
55
|
+
→ Primary: `/flow:done` to finalize this project (will auto-transition to next project)
|
|
56
56
|
→ Alt: `/flow:task` for quick fixes or cleanup (no PRD needed)
|
|
57
57
|
|
|
58
|
-
**IF all
|
|
59
|
-
→ Primary: `/flow:done` to finalize this
|
|
60
|
-
→ Then: `/flow:triage` to add the next
|
|
58
|
+
**IF all milestones are complete AND no next project exists:**
|
|
59
|
+
→ Primary: `/flow:done` to finalize this project
|
|
60
|
+
→ Then: `/flow:triage` to add the next project
|
|
61
61
|
→ Alt: `/flow:task` for quick fixes or cleanup (no PRD needed)
|
|
62
62
|
|
|
63
|
-
**IF no
|
|
64
|
-
→ `/flow:spec` — select a
|
|
63
|
+
**IF no milestones exist in ROADMAP (project defined but not planned):**
|
|
64
|
+
→ `/flow:spec` — select a project and build its execution plan
|
|
65
65
|
→ `/flow:task` — for quick fixes or cleanup (no PRD needed)
|
|
66
66
|
|
|
67
67
|
**CRITICAL — `/flow:spec` suggestion format:** When printing routing recommendations, output EXACTLY this text for /flow:spec suggestions:
|
|
68
68
|
```
|
|
69
|
-
→ /flow:spec — select a
|
|
69
|
+
→ /flow:spec — select a project and build its execution plan
|
|
70
70
|
```
|
|
71
|
-
Do NOT append a
|
|
71
|
+
Do NOT append a project name, do NOT say "for v16" or "to plan v16" or any variation. The project picker inside /flow:spec handles selection. Adding a name here confuses users who may have multiple projects in flight across terminals. Print the line EXACTLY as shown above — no modifications.
|
|
72
72
|
|
|
73
73
|
## Step 4 — Print Status Block
|
|
74
74
|
|
|
75
75
|
```
|
|
76
|
-
|
|
76
|
+
Project: [name] ([X/Y] milestones complete)
|
|
77
77
|
Developer: [git config user.name]
|
|
78
78
|
Session: [session.md "Working On" field if session.md exists, or "No active session"]
|
|
79
79
|
Last session: [date] — [what was built]
|
|
80
|
-
Next:
|
|
80
|
+
Next: Milestone [N] — [name] ([short description])
|
|
81
81
|
Lessons: [N]/10 active
|
|
82
82
|
|
|
83
83
|
PRDs:
|
|
84
|
-
* {slug}.md (active — current
|
|
84
|
+
* {slug}.md (active — current project)
|
|
85
85
|
[For each additional PRD in .planning/prds/:]
|
|
86
|
-
* {slug}.md (ready — future
|
|
86
|
+
* {slug}.md (ready — future project)
|
|
87
87
|
[If legacy PRD.md at root:]
|
|
88
88
|
* PRD.md (legacy — at project root)
|
|
89
89
|
|
|
90
90
|
[routing recommendations from Step 3]
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
The PRDs section shows all PRD files found. Mark the one matching STATE.md's "Active PRD" as "(active — current
|
|
93
|
+
The PRDs section shows all PRD files found. Mark the one matching STATE.md's "Active PRD" as "(active — current project)". Mark others as "(ready — future project)". If a legacy root `PRD.md` exists, show it as "(legacy — at project root)". Omit the PRDs section entirely if no PRD files exist anywhere.
|
|
94
94
|
|
|
95
|
-
When listing PRDs, if a PRD has `**Assigned To:**` fields in its
|
|
95
|
+
When listing PRDs, if a PRD has `**Assigned To:**` fields in its milestone sections, show assignment status in the PRD listing, e.g.:
|
|
96
96
|
```
|
|
97
|
-
* {slug}.md (active —
|
|
97
|
+
* {slug}.md (active — Milestone 3 assigned to Matt, Milestone 4 unassigned)
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
Adapt the block based on available information. If STATE.md is missing, omit "Last session". If ROADMAP.md is missing, omit
|
|
100
|
+
Adapt the block based on available information. If STATE.md is missing, omit "Last session". If ROADMAP.md is missing, omit milestone counts and say "Run /flow:setup to set up tracking."
|
|
101
101
|
|
|
102
102
|
## Step 5 — No File Writes
|
|
103
103
|
|