specdacular 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/README.md +72 -74
- package/commands/specd/continue.md +59 -0
- package/commands/specd/new.md +65 -0
- package/commands/specd/status.md +1 -1
- package/commands/specd/toolbox.md +59 -0
- package/package.json +1 -1
- package/specdacular/HELP.md +19 -16
- package/specdacular/agents/feature-researcher.md +4 -4
- package/specdacular/references/load-context.md +83 -0
- package/specdacular/references/record-decision.md +61 -0
- package/specdacular/references/select-feature.md +20 -20
- package/specdacular/references/select-phase.md +3 -3
- package/specdacular/references/spawn-research-agents.md +180 -0
- package/specdacular/references/synthesize-research.md +127 -0
- package/specdacular/references/validate-task.md +64 -0
- package/specdacular/templates/{features → tasks}/CHANGELOG.md +2 -8
- package/specdacular/templates/{features → tasks}/CONTEXT.md +6 -17
- package/specdacular/templates/tasks/DECISIONS.md +46 -0
- package/specdacular/templates/{features → tasks}/FEATURE.md +3 -3
- package/specdacular/templates/tasks/PLAN.md +91 -0
- package/specdacular/templates/tasks/RESEARCH.md +121 -0
- package/specdacular/templates/{features → tasks}/ROADMAP.md +6 -43
- package/specdacular/templates/tasks/STATE.md +93 -0
- package/specdacular/templates/tasks/config.json +15 -0
- package/specdacular/workflows/continue.md +275 -0
- package/specdacular/workflows/discuss.md +184 -0
- package/specdacular/workflows/execute.md +174 -0
- package/specdacular/workflows/new.md +299 -0
- package/specdacular/workflows/orchestrator/new.md +265 -0
- package/specdacular/workflows/orchestrator/plan.md +169 -0
- package/specdacular/workflows/plan.md +201 -0
- package/specdacular/workflows/research.md +166 -0
- package/specdacular/workflows/review.md +289 -0
- package/specdacular/workflows/status.md +17 -17
- package/commands/specd/blueprint.md +0 -64
- package/commands/specd/feature/continue.md +0 -84
- package/commands/specd/feature/new.md +0 -67
- package/commands/specd/feature/toolbox.md +0 -49
- package/specdacular/templates/blueprint/index.html +0 -110
- package/specdacular/templates/blueprint/scripts.js +0 -71
- package/specdacular/templates/blueprint/styles.css +0 -429
- package/specdacular/templates/features/DECISIONS.md +0 -109
- package/specdacular/templates/features/DEPENDENCIES.md +0 -47
- package/specdacular/templates/features/PLAN.md +0 -180
- package/specdacular/templates/features/RESEARCH.md +0 -183
- package/specdacular/templates/features/STATE.md +0 -110
- package/specdacular/templates/features/config.json +0 -20
- package/specdacular/workflows/blueprint-diagrams.md +0 -273
- package/specdacular/workflows/blueprint-wireframes.md +0 -312
- package/specdacular/workflows/blueprint.md +0 -372
- package/specdacular/workflows/continue-feature.md +0 -621
- package/specdacular/workflows/discuss-feature.md +0 -382
- package/specdacular/workflows/execute-plan.md +0 -636
- package/specdacular/workflows/insert-phase.md +0 -246
- package/specdacular/workflows/new-feature.md +0 -760
- package/specdacular/workflows/plan-feature.md +0 -691
- package/specdacular/workflows/plan-phase.md +0 -355
- package/specdacular/workflows/prepare-phase.md +0 -745
- package/specdacular/workflows/renumber-phases.md +0 -273
- package/specdacular/workflows/research-feature.md +0 -252
- package/specdacular/workflows/research-phase.md +0 -576
- package/specdacular/workflows/review-feature.md +0 -316
- package/specdacular/workflows/review-phase.md +0 -545
|
@@ -1,621 +0,0 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Smart state machine that reads current feature state and drives the entire lifecycle. After each action, loops back and offers the next step. User can stop at any natural boundary.
|
|
3
|
-
|
|
4
|
-
**One command for the entire lifecycle:** discussion, research, planning, phase preparation, phase planning, phase execution, phase review.
|
|
5
|
-
|
|
6
|
-
**Multi-project:** In orchestrator mode, aggregates state across all sub-projects and uses the dependency graph to schedule work. Users can also work directly in sub-projects for single-project changes (DEC-001).
|
|
7
|
-
|
|
8
|
-
**Core loop:**
|
|
9
|
-
```
|
|
10
|
-
read state → show status → determine next action → execute → loop
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
The user only needs to remember `/specd:feature:continue`. The state machine figures out what to do next.
|
|
14
|
-
</purpose>
|
|
15
|
-
|
|
16
|
-
<philosophy>
|
|
17
|
-
|
|
18
|
-
## Guide, Don't Force
|
|
19
|
-
|
|
20
|
-
Show the user where they are and what the natural next step is. Always offer alternatives and a "stop for now" option. The user controls the rhythm.
|
|
21
|
-
|
|
22
|
-
## DRY — Delegate to Existing Workflows
|
|
23
|
-
|
|
24
|
-
This workflow is a dispatcher. It reads state, determines the next action, then delegates to existing workflow files for the actual work. It does NOT duplicate logic from other workflows.
|
|
25
|
-
|
|
26
|
-
## Natural Boundaries
|
|
27
|
-
|
|
28
|
-
After each significant action (discussion session, research, planning, phase completion), offer the user a chance to stop. These are natural context-window boundaries too.
|
|
29
|
-
|
|
30
|
-
## Feature Selection
|
|
31
|
-
|
|
32
|
-
When no argument is given, scan for in-progress features and let the user pick. Always show the picker, even for a single feature — it confirms intent.
|
|
33
|
-
|
|
34
|
-
</philosophy>
|
|
35
|
-
|
|
36
|
-
<process>
|
|
37
|
-
|
|
38
|
-
<step name="select_feature">
|
|
39
|
-
@~/.claude/specdacular/references/select-feature.md
|
|
40
|
-
|
|
41
|
-
Continue to read_state.
|
|
42
|
-
</step>
|
|
43
|
-
|
|
44
|
-
<step name="read_state">
|
|
45
|
-
Load all feature context to determine current position.
|
|
46
|
-
|
|
47
|
-
**Read:**
|
|
48
|
-
- `.specd/features/{name}/config.json` — Stage, phases info
|
|
49
|
-
- `.specd/features/{name}/STATE.md` — Detailed progress
|
|
50
|
-
- `.specd/features/{name}/CONTEXT.md` — Discussion context, gray areas
|
|
51
|
-
- `.specd/features/{name}/ROADMAP.md` — If exists, phase overview
|
|
52
|
-
- `.specd/features/{name}/FEATURE.md` — Requirements summary
|
|
53
|
-
|
|
54
|
-
**Parse from config.json:**
|
|
55
|
-
- `stage` — discussion | research | planned | execution | complete
|
|
56
|
-
- `phases.total` — Number of phases (if planned)
|
|
57
|
-
- `phases.current` — Current phase number (if in execution)
|
|
58
|
-
- `phases.completed` — Number of completed phases
|
|
59
|
-
|
|
60
|
-
**Parse from CONTEXT.md:**
|
|
61
|
-
- Gray areas remaining (from "Gray Areas Remaining" section)
|
|
62
|
-
|
|
63
|
-
**Parse from ROADMAP.md (if exists):**
|
|
64
|
-
- Phase list with status
|
|
65
|
-
|
|
66
|
-
**Parse from STATE.md:**
|
|
67
|
-
- Execution progress (which plans are complete)
|
|
68
|
-
- Review cycles
|
|
69
|
-
|
|
70
|
-
**Determine phase status (if in planned/execution stage):**
|
|
71
|
-
For the current/next phase, check:
|
|
72
|
-
```bash
|
|
73
|
-
# Check if phase directory has CONTEXT.md (prepared)
|
|
74
|
-
[ -f ".specd/features/{name}/plans/phase-{NN}/CONTEXT.md" ] && echo "prepared"
|
|
75
|
-
|
|
76
|
-
# Check if phase has PLAN.md files (planned)
|
|
77
|
-
ls .specd/features/{name}/plans/phase-{NN}/*-PLAN.md 2>/dev/null | head -1
|
|
78
|
-
|
|
79
|
-
# Check STATE.md for completed plans in this phase
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Check for orchestrator mode:**
|
|
83
|
-
|
|
84
|
-
Read feature's `config.json`. If `"orchestrator": true`:
|
|
85
|
-
|
|
86
|
-
Set mode = "orchestrator".
|
|
87
|
-
|
|
88
|
-
**Aggregate cross-project state:**
|
|
89
|
-
1. Read orchestrator DEPENDENCIES.md — cross-project phase dependency graph
|
|
90
|
-
2. For each project in feature config.json `"projects"` array:
|
|
91
|
-
- Read `{project-path}/.specd/features/{feature-name}/config.json` — stage, phases
|
|
92
|
-
- Read `{project-path}/.specd/features/{feature-name}/STATE.md` — detailed progress
|
|
93
|
-
|
|
94
|
-
**Build combined state:**
|
|
95
|
-
For each project phase, determine status:
|
|
96
|
-
- **complete** — All plans executed for this phase
|
|
97
|
-
- **in_progress** — Some plans executed
|
|
98
|
-
- **ready** — All cross-project dependencies satisfied, phase can start
|
|
99
|
-
- **blocked** — Waiting on another project's phase to complete
|
|
100
|
-
- **not_started** — Phase exists but not yet prepared/planned
|
|
101
|
-
|
|
102
|
-
**Check for optional project argument:**
|
|
103
|
-
If arguments contain a second token after feature name (e.g., `/specd:feature:continue feature-name project-name`):
|
|
104
|
-
|
|
105
|
-
- Set target_project = project name
|
|
106
|
-
- Validate project exists in feature config.json
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
Orchestrator mode: aggregating state across {N} projects.
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Continue to show_status (orchestrator variant).
|
|
113
|
-
|
|
114
|
-
**If not orchestrator:**
|
|
115
|
-
Set mode = "project".
|
|
116
|
-
|
|
117
|
-
Continue to show_status.
|
|
118
|
-
</step>
|
|
119
|
-
|
|
120
|
-
<step name="show_status">
|
|
121
|
-
Present a concise status summary.
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
## {feature-name}
|
|
125
|
-
|
|
126
|
-
**Stage:** {stage}
|
|
127
|
-
**Last updated:** {date}
|
|
128
|
-
|
|
129
|
-
{Stage-specific summary — see below}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
**If stage=discussion:**
|
|
133
|
-
```
|
|
134
|
-
**Discussion sessions:** {N}
|
|
135
|
-
**Decisions made:** {N}
|
|
136
|
-
**Gray areas remaining:** {count}
|
|
137
|
-
{If count > 0: list them}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**If stage=research:**
|
|
141
|
-
```
|
|
142
|
-
**Research:** Complete
|
|
143
|
-
**Key findings:** {2-3 bullet points from RESEARCH.md}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**If stage=planned:**
|
|
147
|
-
```
|
|
148
|
-
**Phases:** {total}
|
|
149
|
-
{List phases with one-liner goals}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
**If stage=execution:**
|
|
153
|
-
```
|
|
154
|
-
**Phases:** {completed}/{total}
|
|
155
|
-
**Current phase:** {N} — {name}
|
|
156
|
-
**Phase status:** {from config.json phases.current_status: pending | executing | executed}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
**If mode = "project":**
|
|
160
|
-
Continue to determine_action.
|
|
161
|
-
|
|
162
|
-
**If mode = "orchestrator":**
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
## {feature-name} (Multi-Project)
|
|
166
|
-
|
|
167
|
-
**Stage:** {stage}
|
|
168
|
-
**Overall progress:** {total completed phases}/{total phases} across {N} projects
|
|
169
|
-
|
|
170
|
-
### Per-Project Status
|
|
171
|
-
|
|
172
|
-
{For each project:}
|
|
173
|
-
**{project-name}** — {completed}/{total} phases
|
|
174
|
-
{For each phase: status indicator + name}
|
|
175
|
-
✓ Phase 1: {name} — complete
|
|
176
|
-
▶ Phase 2: {name} — ready
|
|
177
|
-
○ Phase 3: {name} — blocked by {dep}
|
|
178
|
-
|
|
179
|
-
### Cross-Project Dependencies
|
|
180
|
-
|
|
181
|
-
{Summary of key dependencies and their status}
|
|
182
|
-
|
|
183
|
-
**Note:** One orchestrator session at a time (DEC-011). State re-read fresh each time.
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Continue to orchestrator_schedule.
|
|
187
|
-
</step>
|
|
188
|
-
|
|
189
|
-
<step name="orchestrator_schedule">
|
|
190
|
-
Determine next work based on cross-project dependencies.
|
|
191
|
-
|
|
192
|
-
**Compute unblocked work:**
|
|
193
|
-
From the combined state and dependency graph:
|
|
194
|
-
1. Find all phases with status "ready" (dependencies satisfied, not started/in-progress)
|
|
195
|
-
2. Among "ready" phases, prioritize by:
|
|
196
|
-
- Phases that unblock the most downstream work
|
|
197
|
-
- Earlier phases within a project
|
|
198
|
-
- Projects with less progress (balance workload)
|
|
199
|
-
|
|
200
|
-
**If target_project specified (from argument):**
|
|
201
|
-
Filter to only that project's unblocked work.
|
|
202
|
-
|
|
203
|
-
**If no unblocked work:**
|
|
204
|
-
```
|
|
205
|
-
All available phases are blocked or complete.
|
|
206
|
-
|
|
207
|
-
{If all complete:}
|
|
208
|
-
All phases across all projects are complete! Feature is implemented.
|
|
209
|
-
|
|
210
|
-
{If blocked:}
|
|
211
|
-
Waiting on:
|
|
212
|
-
{List blocked phases and what they're waiting on}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
→ Go to action_complete (if all done) or action_stop (if blocked).
|
|
216
|
-
|
|
217
|
-
**If one phase unblocked:**
|
|
218
|
-
Auto-suggest:
|
|
219
|
-
```
|
|
220
|
-
Next: {project-name}/Phase {N} — {phase-name}
|
|
221
|
-
{Brief description of what this phase does}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
Use AskUserQuestion:
|
|
225
|
-
- header: "Next Step"
|
|
226
|
-
- question: "Execute {project-name} Phase {N}?"
|
|
227
|
-
- options:
|
|
228
|
-
- "Execute (Recommended)" — Run this phase
|
|
229
|
-
- "Stop for now" — Come back later
|
|
230
|
-
|
|
231
|
-
**If multiple phases unblocked:**
|
|
232
|
-
```
|
|
233
|
-
Multiple phases are ready:
|
|
234
|
-
|
|
235
|
-
{For each ready phase:}
|
|
236
|
-
- **{project-name}/Phase {N}** — {phase-name} ({brief description})
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Use AskUserQuestion:
|
|
240
|
-
- header: "Next Step"
|
|
241
|
-
- question: "Which phase should we work on next?"
|
|
242
|
-
- options: List each ready phase as an option + "Stop for now"
|
|
243
|
-
|
|
244
|
-
**After selection:**
|
|
245
|
-
Set the target project and phase.
|
|
246
|
-
|
|
247
|
-
**Determine phase readiness:**
|
|
248
|
-
Check if the target phase is prepared and planned:
|
|
249
|
-
- If not prepared: → delegate to prepare-phase workflow
|
|
250
|
-
- If prepared but not planned: → delegate to plan-phase workflow
|
|
251
|
-
- If planned: → delegate to execute-plan workflow
|
|
252
|
-
|
|
253
|
-
Pass feature name and project context to the delegated workflow.
|
|
254
|
-
|
|
255
|
-
After delegated workflow completes, loop back to read_state.
|
|
256
|
-
</step>
|
|
257
|
-
|
|
258
|
-
<step name="determine_action">
|
|
259
|
-
Based on current state, determine and offer the next action.
|
|
260
|
-
|
|
261
|
-
Route to the appropriate sub-step based on state:
|
|
262
|
-
|
|
263
|
-
**stage=discussion, gray areas remain:**
|
|
264
|
-
→ Go to action_discuss
|
|
265
|
-
|
|
266
|
-
**stage=discussion, no gray areas (or user wants to skip):**
|
|
267
|
-
→ Go to action_research_offer
|
|
268
|
-
|
|
269
|
-
**stage=research (RESEARCH.md exists):**
|
|
270
|
-
→ Go to action_plan_offer
|
|
271
|
-
|
|
272
|
-
**stage=planned or stage=execution, current_status == "pending", phase not prepared:**
|
|
273
|
-
→ Go to action_phase_prepare
|
|
274
|
-
|
|
275
|
-
**stage=planned or stage=execution, current_status == "pending", phase prepared but not planned:**
|
|
276
|
-
→ Go to action_phase_plan
|
|
277
|
-
|
|
278
|
-
**stage=execution, current_status == "executing":**
|
|
279
|
-
→ Go to action_phase_execute
|
|
280
|
-
|
|
281
|
-
**stage=execution, current_status == "executed":**
|
|
282
|
-
→ Go to action_phase_review
|
|
283
|
-
|
|
284
|
-
**stage=execution, phases.completed == phases.total:**
|
|
285
|
-
→ Go to action_complete
|
|
286
|
-
|
|
287
|
-
**Note:** `current_status` is read from `config.json` → `phases.current_status` (DEC-013).
|
|
288
|
-
When `current_status` is missing, treat as `"pending"`.
|
|
289
|
-
|
|
290
|
-
</step>
|
|
291
|
-
|
|
292
|
-
<step name="action_discuss">
|
|
293
|
-
Offer discussion when gray areas remain.
|
|
294
|
-
|
|
295
|
-
```
|
|
296
|
-
### Open Areas
|
|
297
|
-
|
|
298
|
-
These areas could use more clarity:
|
|
299
|
-
|
|
300
|
-
{List gray areas from CONTEXT.md}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
Use AskUserQuestion:
|
|
304
|
-
- header: "Next Step"
|
|
305
|
-
- question: "Want to discuss these areas, or skip ahead?"
|
|
306
|
-
- options:
|
|
307
|
-
- "Discuss" — Probe open areas (recommended if gray areas exist)
|
|
308
|
-
- "Skip to research" — Move to researching implementation patterns
|
|
309
|
-
- "Skip to planning" — Jump to creating the roadmap (only if enough context)
|
|
310
|
-
- "Stop for now" — Save progress, come back with /specd:feature:continue
|
|
311
|
-
|
|
312
|
-
**If Discuss:**
|
|
313
|
-
Execute the discuss-feature workflow logic:
|
|
314
|
-
@~/.claude/specdacular/workflows/discuss-feature.md
|
|
315
|
-
|
|
316
|
-
After discussion completes (commit done), loop back to read_state.
|
|
317
|
-
|
|
318
|
-
**If Skip to research:**
|
|
319
|
-
→ Go to action_research_offer
|
|
320
|
-
|
|
321
|
-
**If Skip to planning:**
|
|
322
|
-
→ Go to action_plan_execute
|
|
323
|
-
|
|
324
|
-
**If Stop for now:**
|
|
325
|
-
→ Go to action_stop
|
|
326
|
-
</step>
|
|
327
|
-
|
|
328
|
-
<step name="action_research_offer">
|
|
329
|
-
Offer research when discussion is sufficient.
|
|
330
|
-
|
|
331
|
-
**If RESEARCH.md already exists:**
|
|
332
|
-
```
|
|
333
|
-
Research has already been conducted.
|
|
334
|
-
```
|
|
335
|
-
→ Go to action_plan_offer
|
|
336
|
-
|
|
337
|
-
**If no RESEARCH.md:**
|
|
338
|
-
```
|
|
339
|
-
### Discussion Looks Solid
|
|
340
|
-
|
|
341
|
-
You've resolved the key gray areas. Next step is usually research — investigating implementation patterns, libraries, and pitfalls.
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
Use AskUserQuestion:
|
|
345
|
-
- header: "Next Step"
|
|
346
|
-
- question: "Research implementation patterns?"
|
|
347
|
-
- options:
|
|
348
|
-
- "Research" — Spawn parallel agents to investigate patterns (recommended)
|
|
349
|
-
- "Skip to planning" — Jump straight to roadmap creation
|
|
350
|
-
- "Discuss more" — Go back to discussion
|
|
351
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
352
|
-
|
|
353
|
-
**If Research:**
|
|
354
|
-
Execute the research-feature workflow logic:
|
|
355
|
-
@~/.claude/specdacular/workflows/research-feature.md
|
|
356
|
-
|
|
357
|
-
After research completes (commit done), loop back to read_state.
|
|
358
|
-
|
|
359
|
-
**If Skip to planning:**
|
|
360
|
-
→ Go to action_plan_offer
|
|
361
|
-
|
|
362
|
-
**If Discuss more:**
|
|
363
|
-
→ Go to action_discuss
|
|
364
|
-
|
|
365
|
-
**If Stop for now:**
|
|
366
|
-
→ Go to action_stop
|
|
367
|
-
</step>
|
|
368
|
-
|
|
369
|
-
<step name="action_plan_offer">
|
|
370
|
-
Offer roadmap creation.
|
|
371
|
-
|
|
372
|
-
```
|
|
373
|
-
### Ready to Plan
|
|
374
|
-
|
|
375
|
-
{If RESEARCH.md exists: "Research is complete. "}Time to create the roadmap — breaking the feature into ordered phases.
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
Use AskUserQuestion:
|
|
379
|
-
- header: "Next Step"
|
|
380
|
-
- question: "Create the roadmap?"
|
|
381
|
-
- options:
|
|
382
|
-
- "Create roadmap" — Derive phases and write ROADMAP.md (recommended)
|
|
383
|
-
- "Discuss more" — Go back to discussion
|
|
384
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
385
|
-
|
|
386
|
-
**If Create roadmap:**
|
|
387
|
-
→ Go to action_plan_execute
|
|
388
|
-
|
|
389
|
-
**If Discuss more:**
|
|
390
|
-
→ Go to action_discuss
|
|
391
|
-
|
|
392
|
-
**If Stop for now:**
|
|
393
|
-
→ Go to action_stop
|
|
394
|
-
</step>
|
|
395
|
-
|
|
396
|
-
<step name="action_plan_execute">
|
|
397
|
-
Execute the plan-feature workflow.
|
|
398
|
-
|
|
399
|
-
Execute the plan-feature workflow logic:
|
|
400
|
-
@~/.claude/specdacular/workflows/plan-feature.md
|
|
401
|
-
|
|
402
|
-
After planning completes (commit done), loop back to read_state.
|
|
403
|
-
</step>
|
|
404
|
-
|
|
405
|
-
<step name="action_phase_prepare">
|
|
406
|
-
Offer to prepare the next phase.
|
|
407
|
-
|
|
408
|
-
**Determine next phase:** First phase without a CONTEXT.md in its directory (not yet prepared), or phase 1 if none started.
|
|
409
|
-
|
|
410
|
-
```
|
|
411
|
-
### Roadmap Ready
|
|
412
|
-
|
|
413
|
-
{total} phases planned. Time to prepare Phase {N}: {phase-name}.
|
|
414
|
-
|
|
415
|
-
Phase preparation involves discussing phase-specific gray areas and optionally researching implementation patterns.
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
Use AskUserQuestion:
|
|
419
|
-
- header: "Next Step"
|
|
420
|
-
- question: "Prepare Phase {N}?"
|
|
421
|
-
- options:
|
|
422
|
-
- "Prepare phase" — Discuss gray areas + optional research (recommended)
|
|
423
|
-
- "Skip to planning" — Jump to creating detailed plans
|
|
424
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
425
|
-
|
|
426
|
-
**If Prepare phase:**
|
|
427
|
-
Execute the prepare-phase workflow logic:
|
|
428
|
-
@~/.claude/specdacular/workflows/prepare-phase.md
|
|
429
|
-
|
|
430
|
-
Pass feature name and phase number as arguments.
|
|
431
|
-
|
|
432
|
-
After preparation completes (commit done), loop back to read_state.
|
|
433
|
-
|
|
434
|
-
**If Skip to planning:**
|
|
435
|
-
→ Go to action_phase_plan
|
|
436
|
-
|
|
437
|
-
**If Stop for now:**
|
|
438
|
-
→ Go to action_stop
|
|
439
|
-
</step>
|
|
440
|
-
|
|
441
|
-
<step name="action_phase_plan">
|
|
442
|
-
Offer to create detailed plans for the current phase.
|
|
443
|
-
|
|
444
|
-
**Determine phase:** Current phase that has been prepared (or not) but doesn't have PLAN.md files yet.
|
|
445
|
-
|
|
446
|
-
```
|
|
447
|
-
### Phase {N} Ready for Planning
|
|
448
|
-
|
|
449
|
-
Time to create detailed, executable plans for Phase {N}: {phase-name}.
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
Use AskUserQuestion:
|
|
453
|
-
- header: "Next Step"
|
|
454
|
-
- question: "Create detailed plans for Phase {N}?"
|
|
455
|
-
- options:
|
|
456
|
-
- "Create plans" — Write executable PLAN.md files (recommended)
|
|
457
|
-
- "Prepare first" — Go back to phase preparation
|
|
458
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
459
|
-
|
|
460
|
-
**If Create plans:**
|
|
461
|
-
Execute the plan-phase workflow logic:
|
|
462
|
-
@~/.claude/specdacular/workflows/plan-phase.md
|
|
463
|
-
|
|
464
|
-
Pass feature name and phase number as arguments.
|
|
465
|
-
|
|
466
|
-
After planning completes (commit done), loop back to read_state.
|
|
467
|
-
|
|
468
|
-
**If Prepare first:**
|
|
469
|
-
→ Go to action_phase_prepare
|
|
470
|
-
|
|
471
|
-
**If Stop for now:**
|
|
472
|
-
→ Go to action_stop
|
|
473
|
-
</step>
|
|
474
|
-
|
|
475
|
-
<step name="action_phase_execute">
|
|
476
|
-
Offer to execute plans for the current phase.
|
|
477
|
-
|
|
478
|
-
**Determine:** Which plans exist and which are not yet executed.
|
|
479
|
-
|
|
480
|
-
```
|
|
481
|
-
### Phase {N} Has Plans Ready
|
|
482
|
-
|
|
483
|
-
{count} plan(s) ready to execute for Phase {N}: {phase-name}.
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
Use AskUserQuestion:
|
|
487
|
-
- header: "Next Step"
|
|
488
|
-
- question: "Execute Phase {N} plans?"
|
|
489
|
-
- options:
|
|
490
|
-
- "Execute" — Run the next plan with progress tracking (recommended)
|
|
491
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
492
|
-
|
|
493
|
-
**If Execute:**
|
|
494
|
-
Execute the execute-plan workflow logic:
|
|
495
|
-
@~/.claude/specdacular/workflows/execute-plan.md
|
|
496
|
-
|
|
497
|
-
Pass feature name as argument (it finds the next incomplete plan).
|
|
498
|
-
|
|
499
|
-
After execution completes (commit done), loop back to read_state.
|
|
500
|
-
|
|
501
|
-
**If Stop for now:**
|
|
502
|
-
→ Go to action_stop
|
|
503
|
-
</step>
|
|
504
|
-
|
|
505
|
-
<step name="action_phase_review">
|
|
506
|
-
Offer user-guided review for the executed phase (DEC-003, DEC-009).
|
|
507
|
-
|
|
508
|
-
```
|
|
509
|
-
### Phase {N} Executed — Pending Review
|
|
510
|
-
|
|
511
|
-
All plans for Phase {N}: {phase-name} have been executed.
|
|
512
|
-
Review shows what was built and lets you approve or request revisions.
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
Use AskUserQuestion:
|
|
516
|
-
- header: "Next Step"
|
|
517
|
-
- question: "Review Phase {N}?"
|
|
518
|
-
- options:
|
|
519
|
-
- "Review" — See what changed, approve or request fixes (recommended)
|
|
520
|
-
- "Approve without review" — Mark phase complete and move on
|
|
521
|
-
- "Stop for now" — Come back with /specd:feature:continue
|
|
522
|
-
|
|
523
|
-
**If Review:**
|
|
524
|
-
Execute the review-feature workflow logic:
|
|
525
|
-
@~/.claude/specdacular/workflows/review-feature.md
|
|
526
|
-
|
|
527
|
-
Pass feature name as argument.
|
|
528
|
-
|
|
529
|
-
After review completes (phase approved and marked completed), loop back to read_state.
|
|
530
|
-
|
|
531
|
-
**If Approve without review:**
|
|
532
|
-
Update config.json:
|
|
533
|
-
- Set `phases.current_status` to `"pending"`
|
|
534
|
-
- Increment `phases.completed`
|
|
535
|
-
- Advance `phases.current` to next phase
|
|
536
|
-
- Remove `phases.phase_start_commit`
|
|
537
|
-
|
|
538
|
-
Update STATE.md: mark phase as complete.
|
|
539
|
-
|
|
540
|
-
Commit state changes:
|
|
541
|
-
```bash
|
|
542
|
-
git add .specd/features/{feature}/config.json .specd/features/{feature}/STATE.md
|
|
543
|
-
git commit -m "docs({feature}): phase {N} approved (without review)"
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
Loop back to read_state.
|
|
547
|
-
|
|
548
|
-
**If Stop for now:**
|
|
549
|
-
→ Go to action_stop
|
|
550
|
-
</step>
|
|
551
|
-
|
|
552
|
-
<step name="action_complete">
|
|
553
|
-
Feature is complete.
|
|
554
|
-
|
|
555
|
-
```
|
|
556
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
557
|
-
FEATURE COMPLETE
|
|
558
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
559
|
-
|
|
560
|
-
**Feature:** {feature-name}
|
|
561
|
-
**Phases completed:** {total}
|
|
562
|
-
**Decisions made:** {count}
|
|
563
|
-
|
|
564
|
-
All phases have been executed{and reviewed, if applicable}.
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
**Update config.json:**
|
|
568
|
-
Set `stage` to `"complete"`.
|
|
569
|
-
|
|
570
|
-
**Update STATE.md:**
|
|
571
|
-
Set stage to `complete`.
|
|
572
|
-
|
|
573
|
-
@~/.claude/specdacular/references/commit-docs.md
|
|
574
|
-
|
|
575
|
-
- **$FILES:** `.specd/features/{name}/config.json .specd/features/{name}/STATE.md`
|
|
576
|
-
- **$MESSAGE:** `docs({feature-name}): feature complete` with phase count
|
|
577
|
-
- **$LABEL:** `feature completion`
|
|
578
|
-
|
|
579
|
-
End workflow.
|
|
580
|
-
</step>
|
|
581
|
-
|
|
582
|
-
<step name="action_stop">
|
|
583
|
-
Clean exit with resume instructions.
|
|
584
|
-
|
|
585
|
-
```
|
|
586
|
-
───────────────────────────────────────────────────────
|
|
587
|
-
|
|
588
|
-
Progress saved. Resume anytime with:
|
|
589
|
-
|
|
590
|
-
/specd:feature:continue {feature-name}
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
End workflow.
|
|
594
|
-
</step>
|
|
595
|
-
|
|
596
|
-
</process>
|
|
597
|
-
|
|
598
|
-
<success_criteria>
|
|
599
|
-
|
|
600
|
-
## Single-Project Mode
|
|
601
|
-
- Feature selected (from argument or picker)
|
|
602
|
-
- Current state accurately read and displayed
|
|
603
|
-
- Correct next action determined from state
|
|
604
|
-
- Delegated to appropriate workflow for execution
|
|
605
|
-
- Looped back after action completion
|
|
606
|
-
- User could stop at any natural boundary
|
|
607
|
-
- Clean exit with resume instructions
|
|
608
|
-
|
|
609
|
-
## Multi-Project Mode (Orchestrator)
|
|
610
|
-
- Orchestrator mode detected from feature config.json
|
|
611
|
-
- Cross-project state aggregated from all sub-projects
|
|
612
|
-
- Dependency graph read from DEPENDENCIES.md
|
|
613
|
-
- Per-project progress dashboard displayed
|
|
614
|
-
- Unblocked work computed from dependency graph
|
|
615
|
-
- Auto-suggests when one phase ready, asks when multiple
|
|
616
|
-
- Optional project argument: `/specd:feature:continue feature project`
|
|
617
|
-
- Delegates to prepare/plan/execute based on phase readiness
|
|
618
|
-
- One-session-at-a-time constraint documented (DEC-011)
|
|
619
|
-
- Direct sub-project access always works (DEC-001)
|
|
620
|
-
|
|
621
|
-
</success_criteria>
|