specdacular 0.7.2 → 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 +71 -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 +17 -15
- 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,246 +0,0 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Insert a new phase after an existing one using decimal numbering (e.g., Phase 03.1).
|
|
3
|
-
|
|
4
|
-
**Key principles:**
|
|
5
|
-
- Decimal numbering preserves existing phase sequence
|
|
6
|
-
- Never renumber existing phases — decimal numbering eliminates renumbering
|
|
7
|
-
- Create directory structure but don't create plans — user decides how to plan
|
|
8
|
-
- Mark inserted phases with `(INSERTED)` in ROADMAP.md
|
|
9
|
-
|
|
10
|
-
**Output:** New phase directory, updated ROADMAP.md, STATE.md, config.json
|
|
11
|
-
</purpose>
|
|
12
|
-
|
|
13
|
-
<process>
|
|
14
|
-
|
|
15
|
-
<step name="select_feature">
|
|
16
|
-
@~/.claude/specdacular/references/select-feature.md
|
|
17
|
-
|
|
18
|
-
Continue to select_target.
|
|
19
|
-
</step>
|
|
20
|
-
|
|
21
|
-
<step name="select_target">
|
|
22
|
-
Determine where to insert and what the phase is about.
|
|
23
|
-
|
|
24
|
-
**If arguments include phase number and description (e.g., direct invocation):**
|
|
25
|
-
Parse from arguments:
|
|
26
|
-
- Second token: integer phase number to insert after
|
|
27
|
-
- Remaining tokens: phase description
|
|
28
|
-
|
|
29
|
-
Continue to validate.
|
|
30
|
-
|
|
31
|
-
**If arguments are just feature name (e.g., from toolbox dispatch):**
|
|
32
|
-
|
|
33
|
-
Read ROADMAP.md and show current phases:
|
|
34
|
-
```
|
|
35
|
-
Current phases:
|
|
36
|
-
{List each phase with number and name from ROADMAP.md}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Use AskUserQuestion:
|
|
40
|
-
- header: "Insert After"
|
|
41
|
-
- question: "Insert new phase after which existing phase?"
|
|
42
|
-
- options: List each phase as an option (e.g., "Phase 1: Rename + Toolbox", "Phase 2: Review + State Machine", etc.)
|
|
43
|
-
|
|
44
|
-
After selection, ask:
|
|
45
|
-
```
|
|
46
|
-
What's this new phase about? Give a brief name and goal.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Wait for response.
|
|
50
|
-
|
|
51
|
-
**Validation:**
|
|
52
|
-
- Phase number must be a positive integer (or existing decimal phase)
|
|
53
|
-
- Cannot insert before Phase 1 (no Phase 0.x)
|
|
54
|
-
|
|
55
|
-
Continue to validate.
|
|
56
|
-
</step>
|
|
57
|
-
|
|
58
|
-
<step name="validate">
|
|
59
|
-
Validate the feature and target phase exist.
|
|
60
|
-
|
|
61
|
-
1. Check feature directory exists:
|
|
62
|
-
```bash
|
|
63
|
-
[ -d ".specd/features/$feature" ] || { echo "Feature not found"; exit 1; }
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
2. Check ROADMAP.md exists:
|
|
67
|
-
```bash
|
|
68
|
-
[ -f ".specd/features/$feature/ROADMAP.md" ] || { echo "No ROADMAP.md"; exit 1; }
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
3. Check target phase exists in ROADMAP.md:
|
|
72
|
-
- Search for phase heading matching the target number (e.g., `## Phase 3:` or `### Phase 3:`)
|
|
73
|
-
- If not found, list available phases and exit
|
|
74
|
-
|
|
75
|
-
4. Check config.json exists:
|
|
76
|
-
```bash
|
|
77
|
-
[ -f ".specd/features/$feature/config.json" ] || { echo "No config.json"; exit 1; }
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**If feature not found:**
|
|
81
|
-
```
|
|
82
|
-
Feature '{name}' not found.
|
|
83
|
-
|
|
84
|
-
Available features:
|
|
85
|
-
{list .specd/features/*/}
|
|
86
|
-
|
|
87
|
-
Run /specd:feature:new {name} to create it.
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**If target phase not found:**
|
|
91
|
-
```
|
|
92
|
-
Phase {N} not found in ROADMAP.md.
|
|
93
|
-
|
|
94
|
-
Available phases: {list phase numbers from ROADMAP.md}
|
|
95
|
-
```
|
|
96
|
-
</step>
|
|
97
|
-
|
|
98
|
-
<step name="find_next_decimal">
|
|
99
|
-
Scan for existing decimal phases after the target phase.
|
|
100
|
-
|
|
101
|
-
1. List all `phase-*` directories under `plans/`:
|
|
102
|
-
```bash
|
|
103
|
-
ls -d .specd/features/$feature/plans/phase-* 2>/dev/null
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
2. Filter for directories matching `phase-{NN}.{M}` where NN matches the target phase (zero-padded to 2 digits):
|
|
107
|
-
- Format target phase as two digits: `printf "%02d" $after_phase`
|
|
108
|
-
- Look for `phase-{NN}.1/`, `phase-{NN}.2/`, etc.
|
|
109
|
-
|
|
110
|
-
3. Find the highest existing decimal suffix M
|
|
111
|
-
|
|
112
|
-
4. Calculate next decimal: M + 1 (or 1 if no decimals exist)
|
|
113
|
-
|
|
114
|
-
Examples:
|
|
115
|
-
- Phase 03 with no decimals → next is 03.1
|
|
116
|
-
- Phase 03 with 03.1 → next is 03.2
|
|
117
|
-
- Phase 03 with 03.1, 03.2 → next is 03.3
|
|
118
|
-
|
|
119
|
-
Store the new phase number as: `new_phase = "{NN}.{next_decimal}"`
|
|
120
|
-
(e.g., "03.1")
|
|
121
|
-
</step>
|
|
122
|
-
|
|
123
|
-
<step name="create_phase_directory">
|
|
124
|
-
Create the phase directory under the feature's plans folder.
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
mkdir -p ".specd/features/$feature/plans/phase-${new_phase}"
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Confirm: "Created directory: plans/phase-{new_phase}/"
|
|
131
|
-
</step>
|
|
132
|
-
|
|
133
|
-
<step name="update_roadmap">
|
|
134
|
-
Insert the new phase into ROADMAP.md immediately after the target phase's section.
|
|
135
|
-
|
|
136
|
-
1. Read ROADMAP.md
|
|
137
|
-
2. Find the target phase section (heading and all content until the next phase heading)
|
|
138
|
-
3. Insert new phase section after the target phase's content:
|
|
139
|
-
|
|
140
|
-
```markdown
|
|
141
|
-
## Phase {new_phase}: {Description} (INSERTED)
|
|
142
|
-
|
|
143
|
-
**Goal:** {Description}
|
|
144
|
-
**Plans:** TBD — discuss and plan this phase
|
|
145
|
-
|
|
146
|
-
- [ ] Phase {new_phase} plans created
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
4. Write updated ROADMAP.md
|
|
150
|
-
|
|
151
|
-
**Important:**
|
|
152
|
-
- Preserve all existing content exactly (formatting, spacing, other phases)
|
|
153
|
-
- The `(INSERTED)` marker identifies decimal phases as mid-flight insertions
|
|
154
|
-
- Don't modify the target phase content
|
|
155
|
-
- Insert before the next integer phase heading
|
|
156
|
-
</step>
|
|
157
|
-
|
|
158
|
-
<step name="update_state">
|
|
159
|
-
Update STATE.md with the insertion.
|
|
160
|
-
|
|
161
|
-
1. Read STATE.md
|
|
162
|
-
|
|
163
|
-
2. Add roadmap evolution note. Find or create "### Roadmap Evolution" section under accumulated context:
|
|
164
|
-
```markdown
|
|
165
|
-
- Phase {new_phase} inserted after Phase {after_phase}: {description}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
3. Add the new phase to the execution tracking section. Find the phase completion checkboxes and insert the new phase after the target phase:
|
|
169
|
-
```markdown
|
|
170
|
-
- [ ] Phase {new_phase} complete
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Insert this line after `Phase {after_phase}` checkbox and before `Phase {after_phase + 1}` checkbox.
|
|
174
|
-
|
|
175
|
-
4. Write updated STATE.md
|
|
176
|
-
</step>
|
|
177
|
-
|
|
178
|
-
<step name="update_config">
|
|
179
|
-
Update config.json to reflect the new phase count.
|
|
180
|
-
|
|
181
|
-
1. Read config.json
|
|
182
|
-
2. Increment `phases.total` by 1
|
|
183
|
-
3. Write updated config.json
|
|
184
|
-
</step>
|
|
185
|
-
|
|
186
|
-
<step name="completion">
|
|
187
|
-
Present completion summary:
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
191
|
-
PHASE INSERTED
|
|
192
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
193
|
-
|
|
194
|
-
**Phase {new_phase}: {description}**
|
|
195
|
-
- Directory: plans/phase-{new_phase}/
|
|
196
|
-
- Inserted after: Phase {after_phase}
|
|
197
|
-
- Marker: (INSERTED)
|
|
198
|
-
|
|
199
|
-
**Updated:**
|
|
200
|
-
- ROADMAP.md — New phase section added
|
|
201
|
-
- STATE.md — Evolution note + unchecked checkbox
|
|
202
|
-
- config.json — phases.total incremented
|
|
203
|
-
|
|
204
|
-
───────────────────────────────────────────────────────
|
|
205
|
-
|
|
206
|
-
## Next Steps
|
|
207
|
-
|
|
208
|
-
`/specd:feature:continue {feature}` — Picks up the new phase automatically
|
|
209
|
-
`/specd:feature:toolbox {feature}` — Prepare, plan, or discuss the new phase
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
**Commit changes:**
|
|
213
|
-
|
|
214
|
-
@~/.claude/specdacular/references/commit-docs.md
|
|
215
|
-
|
|
216
|
-
- **$FILES:** `.specd/features/{feature}/ROADMAP.md .specd/features/{feature}/STATE.md .specd/features/{feature}/config.json .specd/features/{feature}/plans/phase-{new_phase}/`
|
|
217
|
-
- **$MESSAGE:** `docs({feature}): insert phase {new_phase} — {description}`
|
|
218
|
-
- **$LABEL:** `phase insertion`
|
|
219
|
-
|
|
220
|
-
End workflow.
|
|
221
|
-
</step>
|
|
222
|
-
|
|
223
|
-
</process>
|
|
224
|
-
|
|
225
|
-
<anti_patterns>
|
|
226
|
-
- Don't insert before Phase 1 (Phase 0.x makes no sense)
|
|
227
|
-
- Don't renumber existing phases — decimal numbering eliminates renumbering
|
|
228
|
-
- Don't modify the target phase content
|
|
229
|
-
- Don't create plans yet — user decides how to plan (discuss, research, or manual)
|
|
230
|
-
- Don't commit changes — user decides when to commit
|
|
231
|
-
</anti_patterns>
|
|
232
|
-
|
|
233
|
-
<success_criteria>
|
|
234
|
-
Phase insertion is complete when:
|
|
235
|
-
|
|
236
|
-
- [ ] Arguments parsed: feature name, after-phase number, description
|
|
237
|
-
- [ ] Feature validated: exists with ROADMAP.md
|
|
238
|
-
- [ ] Target phase validated: exists in ROADMAP.md
|
|
239
|
-
- [ ] Decimal number calculated correctly (based on existing decimals)
|
|
240
|
-
- [ ] Phase directory created: `plans/phase-{NN.M}/`
|
|
241
|
-
- [ ] ROADMAP.md updated with new phase entry (includes `(INSERTED)` marker)
|
|
242
|
-
- [ ] Phase inserted in correct position (after target phase, before next integer phase)
|
|
243
|
-
- [ ] STATE.md updated with roadmap evolution note and unchecked checkbox
|
|
244
|
-
- [ ] config.json `phases.total` incremented
|
|
245
|
-
- [ ] User informed of next steps
|
|
246
|
-
</success_criteria>
|