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
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Initialize a new task folder and start the first discussion. Creates structure, asks initial questions, and writes technical requirements.
|
|
3
|
+
|
|
4
|
+
**Core flow:**
|
|
5
|
+
```
|
|
6
|
+
new → (discuss ↔ research)* → plan
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The user controls the rhythm after initialization. This command is just the entry point.
|
|
10
|
+
|
|
11
|
+
**Output:** `.specd/tasks/{task-name}/` folder with FEATURE.md, CONTEXT.md, DECISIONS.md, CHANGELOG.md, STATE.md, config.json
|
|
12
|
+
</purpose>
|
|
13
|
+
|
|
14
|
+
<philosophy>
|
|
15
|
+
|
|
16
|
+
## Collaborative, Not Interrogative
|
|
17
|
+
|
|
18
|
+
Follow the thread. Build understanding through natural dialogue. When the user says something interesting, explore it. Don't march through a checklist.
|
|
19
|
+
|
|
20
|
+
## Technical Focus
|
|
21
|
+
|
|
22
|
+
This is about technical requirements, not product specs. Focus on:
|
|
23
|
+
- What code needs to exist
|
|
24
|
+
- What existing code it integrates with
|
|
25
|
+
- Technical constraints
|
|
26
|
+
|
|
27
|
+
## Probe Until Initial Understanding
|
|
28
|
+
|
|
29
|
+
Keep asking until you understand:
|
|
30
|
+
1. What this creates (files, components, APIs)
|
|
31
|
+
2. What it integrates with (existing code)
|
|
32
|
+
3. Key constraints (technical, timeline, scope)
|
|
33
|
+
|
|
34
|
+
You don't need to resolve everything — that's what `/specd:discuss` is for.
|
|
35
|
+
|
|
36
|
+
## Decisions Get Recorded
|
|
37
|
+
|
|
38
|
+
Any decision made during this initial discussion goes into DECISIONS.md with date and rationale.
|
|
39
|
+
|
|
40
|
+
</philosophy>
|
|
41
|
+
|
|
42
|
+
<process>
|
|
43
|
+
|
|
44
|
+
<step name="validate">
|
|
45
|
+
Get task name and validate.
|
|
46
|
+
|
|
47
|
+
**If $ARGUMENTS provided:**
|
|
48
|
+
Use as task name. Normalize to kebab-case (lowercase, hyphens).
|
|
49
|
+
|
|
50
|
+
**If no arguments:**
|
|
51
|
+
Ask: "What's the name of this task?"
|
|
52
|
+
|
|
53
|
+
**Validate:**
|
|
54
|
+
- Task name should be kebab-case
|
|
55
|
+
- Check if `.specd/tasks/{name}/` already exists
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
[ -d ".specd/tasks/$TASK_NAME" ] && echo "exists"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**If task exists:**
|
|
62
|
+
Use AskUserQuestion:
|
|
63
|
+
- header: "Task Exists"
|
|
64
|
+
- question: "Task '{name}' already exists. What would you like to do?"
|
|
65
|
+
- options:
|
|
66
|
+
- "Resume" — Continue with existing task (suggest /specd:continue)
|
|
67
|
+
- "Reset" — Delete and start fresh
|
|
68
|
+
- "Different name" — Use a different name
|
|
69
|
+
|
|
70
|
+
**If new task:**
|
|
71
|
+
Continue to codebase_context.
|
|
72
|
+
</step>
|
|
73
|
+
|
|
74
|
+
<step name="codebase_context">
|
|
75
|
+
Look for codebase documentation and detect orchestrator mode.
|
|
76
|
+
|
|
77
|
+
**Check for existing config:**
|
|
78
|
+
```bash
|
|
79
|
+
cat .specd/config.json 2>/dev/null
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Check for orchestrator mode:**
|
|
83
|
+
If config exists with `"type": "orchestrator"`:
|
|
84
|
+
Hand off to orchestrator workflow:
|
|
85
|
+
@~/.claude/specdacular/workflows/orchestrator/new.md
|
|
86
|
+
|
|
87
|
+
End main workflow.
|
|
88
|
+
|
|
89
|
+
**If type = "project" or absent:**
|
|
90
|
+
|
|
91
|
+
**Check for codebase docs:**
|
|
92
|
+
```bash
|
|
93
|
+
ls .specd/codebase/*.md 2>/dev/null
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**If codebase docs found:**
|
|
97
|
+
```
|
|
98
|
+
Found codebase documentation. I'll reference these when defining requirements.
|
|
99
|
+
```
|
|
100
|
+
Read the available docs to understand project structure, code patterns, and architecture.
|
|
101
|
+
|
|
102
|
+
**If no codebase docs found:**
|
|
103
|
+
Use AskUserQuestion:
|
|
104
|
+
- header: "No Codebase Docs"
|
|
105
|
+
- question: "I didn't find codebase documentation. How should we proceed?"
|
|
106
|
+
- options:
|
|
107
|
+
- "Run map-codebase first" — Creates AI-optimized docs
|
|
108
|
+
- "Continue without" — Proceed without codebase context
|
|
109
|
+
- "Custom location" — Docs are elsewhere
|
|
110
|
+
|
|
111
|
+
Continue to first_discussion.
|
|
112
|
+
</step>
|
|
113
|
+
|
|
114
|
+
<step name="first_discussion">
|
|
115
|
+
Start the conversation.
|
|
116
|
+
|
|
117
|
+
**Opening:**
|
|
118
|
+
```
|
|
119
|
+
Let's talk about what you're building.
|
|
120
|
+
|
|
121
|
+
What's the {task-name} task? Give me the quick version — what problem does it solve and roughly how?
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Wait for response.
|
|
125
|
+
|
|
126
|
+
**Follow the thread:**
|
|
127
|
+
Based on their response, ask follow-up questions that:
|
|
128
|
+
- Clarify what they said ("When you say X, do you mean...?")
|
|
129
|
+
- Explore interesting aspects ("Tell me more about how that would work...")
|
|
130
|
+
- Identify technical implications ("So that would mean creating a...")
|
|
131
|
+
|
|
132
|
+
**Questions to answer (not in order — follow the conversation):**
|
|
133
|
+
1. What does this create? (new files, components, APIs, data)
|
|
134
|
+
2. What does it integrate with? (existing code, external services)
|
|
135
|
+
3. What are the key constraints? (technical, timeline, scope)
|
|
136
|
+
4. What's explicitly out of scope? (scope boundaries)
|
|
137
|
+
|
|
138
|
+
**Check understanding:**
|
|
139
|
+
After 4-6 exchanges, summarize:
|
|
140
|
+
```
|
|
141
|
+
So if I understand correctly:
|
|
142
|
+
- This task [does X]
|
|
143
|
+
- It needs to create [files/components]
|
|
144
|
+
- It integrates with [existing code]
|
|
145
|
+
- Key constraint: [constraint]
|
|
146
|
+
|
|
147
|
+
Does that capture it, or should we dig into anything more?
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**When to move on:**
|
|
151
|
+
- User confirms understanding is correct
|
|
152
|
+
- You have enough for initial FEATURE.md
|
|
153
|
+
- Further details can be discussed later with /specd:discuss
|
|
154
|
+
|
|
155
|
+
Continue to write_feature.
|
|
156
|
+
</step>
|
|
157
|
+
|
|
158
|
+
<step name="write_feature">
|
|
159
|
+
Create task directory and write all documents.
|
|
160
|
+
|
|
161
|
+
**Create task directory:**
|
|
162
|
+
```bash
|
|
163
|
+
mkdir -p .specd/tasks/{task-name}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Write FEATURE.md:**
|
|
167
|
+
Use template at `~/.claude/specdacular/templates/tasks/FEATURE.md`
|
|
168
|
+
Fill in based on conversation.
|
|
169
|
+
|
|
170
|
+
**Write CONTEXT.md:**
|
|
171
|
+
Use template at `~/.claude/specdacular/templates/tasks/CONTEXT.md`
|
|
172
|
+
Fill in discussion summary, resolved questions, deferred questions, gray areas.
|
|
173
|
+
|
|
174
|
+
**Write DECISIONS.md:**
|
|
175
|
+
Use template at `~/.claude/specdacular/templates/tasks/DECISIONS.md`
|
|
176
|
+
Record any decisions made during discussion using the format from:
|
|
177
|
+
@~/.claude/specdacular/references/record-decision.md
|
|
178
|
+
|
|
179
|
+
**Write CHANGELOG.md:**
|
|
180
|
+
Use template at `~/.claude/specdacular/templates/tasks/CHANGELOG.md`
|
|
181
|
+
Initialize empty.
|
|
182
|
+
|
|
183
|
+
**Write STATE.md:**
|
|
184
|
+
Use template at `~/.claude/specdacular/templates/tasks/STATE.md`
|
|
185
|
+
Initialize with stage: discussion, initial discussion complete: yes.
|
|
186
|
+
|
|
187
|
+
**Write config.json:**
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"task_name": "{name}",
|
|
191
|
+
"created": "{date}",
|
|
192
|
+
"stage": "discussion",
|
|
193
|
+
"discussion_sessions": 1,
|
|
194
|
+
"decisions_count": {N}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Continue to commit.
|
|
199
|
+
</step>
|
|
200
|
+
|
|
201
|
+
<step name="commit">
|
|
202
|
+
Commit the task initialization.
|
|
203
|
+
|
|
204
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
205
|
+
|
|
206
|
+
- **$FILES:** `.specd/tasks/{task-name}/`
|
|
207
|
+
- **$MESSAGE:** `docs({task-name}): initialize task` with list of created files
|
|
208
|
+
- **$LABEL:** `task initialization`
|
|
209
|
+
|
|
210
|
+
Continue to completion.
|
|
211
|
+
</step>
|
|
212
|
+
|
|
213
|
+
<step name="completion">
|
|
214
|
+
Present what was created and offer to continue.
|
|
215
|
+
|
|
216
|
+
**Output:**
|
|
217
|
+
```
|
|
218
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
219
|
+
TASK INITIALIZED
|
|
220
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
221
|
+
|
|
222
|
+
**Task:** {task-name}
|
|
223
|
+
|
|
224
|
+
## Created
|
|
225
|
+
|
|
226
|
+
- `.specd/tasks/{task-name}/FEATURE.md` — Technical requirements
|
|
227
|
+
- `.specd/tasks/{task-name}/CONTEXT.md` — Discussion context
|
|
228
|
+
- `.specd/tasks/{task-name}/DECISIONS.md` — {N} decisions recorded
|
|
229
|
+
- `.specd/tasks/{task-name}/CHANGELOG.md` — Implementation log (empty)
|
|
230
|
+
- `.specd/tasks/{task-name}/STATE.md` — Progress tracking
|
|
231
|
+
- `.specd/tasks/{task-name}/config.json` — Configuration
|
|
232
|
+
|
|
233
|
+
## Summary
|
|
234
|
+
|
|
235
|
+
{2-3 sentence summary of what this task does}
|
|
236
|
+
|
|
237
|
+
{If gray areas remain:}
|
|
238
|
+
**Open areas to discuss:**
|
|
239
|
+
- {Gray area 1}
|
|
240
|
+
- {Gray area 2}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Continue to continuation_offer.
|
|
244
|
+
</step>
|
|
245
|
+
|
|
246
|
+
<step name="continuation_offer">
|
|
247
|
+
Offer to continue discussing or stop.
|
|
248
|
+
|
|
249
|
+
**If gray areas remain:**
|
|
250
|
+
Use AskUserQuestion:
|
|
251
|
+
- header: "Continue?"
|
|
252
|
+
- question: "Want to keep discussing the open areas, or come back later?"
|
|
253
|
+
- options:
|
|
254
|
+
- "Keep discussing" — Dive into the gray areas now
|
|
255
|
+
- "Stop for now" — Come back with /specd:continue {task-name}
|
|
256
|
+
|
|
257
|
+
**If Keep discussing:**
|
|
258
|
+
Execute the discuss workflow logic:
|
|
259
|
+
@~/.claude/specdacular/workflows/discuss.md
|
|
260
|
+
|
|
261
|
+
After discussion completes, return to this step.
|
|
262
|
+
|
|
263
|
+
**If no gray areas remain:**
|
|
264
|
+
Use AskUserQuestion:
|
|
265
|
+
- header: "Continue?"
|
|
266
|
+
- question: "Discussion looks solid. Want to keep going or come back later?"
|
|
267
|
+
- options:
|
|
268
|
+
- "Continue" — Move to the next step (research or planning)
|
|
269
|
+
- "Stop for now" — Come back with /specd:continue {task-name}
|
|
270
|
+
|
|
271
|
+
**If Continue:**
|
|
272
|
+
Hand off to continue workflow:
|
|
273
|
+
@~/.claude/specdacular/workflows/continue.md
|
|
274
|
+
|
|
275
|
+
**If Stop for now:**
|
|
276
|
+
```
|
|
277
|
+
───────────────────────────────────────────────────────
|
|
278
|
+
|
|
279
|
+
Progress saved. Pick up where you left off anytime:
|
|
280
|
+
|
|
281
|
+
/specd:continue {task-name}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
End workflow.
|
|
285
|
+
</step>
|
|
286
|
+
|
|
287
|
+
</process>
|
|
288
|
+
|
|
289
|
+
<success_criteria>
|
|
290
|
+
- Task folder created at `.specd/tasks/{name}/`
|
|
291
|
+
- FEATURE.md has specific technical requirements
|
|
292
|
+
- CONTEXT.md captures the discussion state
|
|
293
|
+
- DECISIONS.md initialized (with any decisions made)
|
|
294
|
+
- CHANGELOG.md initialized (empty)
|
|
295
|
+
- STATE.md tracks current stage
|
|
296
|
+
- config.json created
|
|
297
|
+
- Committed to git
|
|
298
|
+
- User presented with clear next options
|
|
299
|
+
</success_criteria>
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Workflow: New Task (Orchestrator Mode)
|
|
2
|
+
|
|
3
|
+
This workflow handles task initialization when `.specd/config.json` has `"type": "orchestrator"`.
|
|
4
|
+
Called from the main `new.md` workflow after orchestrator mode detection.
|
|
5
|
+
|
|
6
|
+
## Input
|
|
7
|
+
|
|
8
|
+
- `$TASK_NAME` — Validated task name (kebab-case)
|
|
9
|
+
- Orchestrator config already loaded
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
<step name="load_system_docs">
|
|
14
|
+
Read system-level codebase docs:
|
|
15
|
+
|
|
16
|
+
- `.specd/codebase/PROJECTS.md` — Project registry
|
|
17
|
+
- `.specd/codebase/TOPOLOGY.md` — Communication patterns
|
|
18
|
+
- `.specd/codebase/CONTRACTS.md` — Shared interfaces
|
|
19
|
+
- `.specd/codebase/CONCERNS.md` — System-level concerns
|
|
20
|
+
|
|
21
|
+
Read project list from `.specd/config.json` `"projects"` array.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Orchestrator mode detected. {N} projects registered.
|
|
25
|
+
I'll use system-level docs to understand cross-project architecture.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Continue to orchestrator_discussion.
|
|
29
|
+
</step>
|
|
30
|
+
|
|
31
|
+
<step name="orchestrator_discussion">
|
|
32
|
+
System-level task discussion.
|
|
33
|
+
|
|
34
|
+
**Opening:**
|
|
35
|
+
```
|
|
36
|
+
Let's talk about what you're building across the system.
|
|
37
|
+
|
|
38
|
+
What's the {task-name} feature? What system-level behavior does it add?
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Wait for response.
|
|
42
|
+
|
|
43
|
+
**Follow the thread:**
|
|
44
|
+
Based on their response, ask follow-up questions that:
|
|
45
|
+
- Identify which projects are affected
|
|
46
|
+
- Explore cross-project behavior
|
|
47
|
+
- Identify contract implications
|
|
48
|
+
- Understand project responsibilities
|
|
49
|
+
|
|
50
|
+
**System-level probes (follow the conversation, don't march through):**
|
|
51
|
+
- "Which projects does this involve?"
|
|
52
|
+
- "What crosses project boundaries here?"
|
|
53
|
+
- "Does this change any existing communication patterns?"
|
|
54
|
+
- "What's each project's responsibility for this?"
|
|
55
|
+
- "Are there shared data structures or APIs that need to align?"
|
|
56
|
+
- "What's the simplest cross-project version that would work?"
|
|
57
|
+
|
|
58
|
+
**Use system-level context from codebase docs:**
|
|
59
|
+
- Reference PROJECTS.md for project responsibilities
|
|
60
|
+
- Reference TOPOLOGY.md for existing communication patterns
|
|
61
|
+
- Reference CONTRACTS.md for existing shared interfaces
|
|
62
|
+
- Reference CONCERNS.md for system-level gotchas
|
|
63
|
+
|
|
64
|
+
**Check understanding:**
|
|
65
|
+
After 4-6 exchanges, summarize with project involvement:
|
|
66
|
+
```
|
|
67
|
+
So if I understand correctly:
|
|
68
|
+
- This feature [system-level behavior]
|
|
69
|
+
- It involves these projects:
|
|
70
|
+
- {project-1}: [responsibility]
|
|
71
|
+
- {project-2}: [responsibility]
|
|
72
|
+
- Cross-project interaction: [how projects coordinate]
|
|
73
|
+
- Key constraint: [constraint]
|
|
74
|
+
|
|
75
|
+
Does that capture it, or should we dig into anything more?
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Continue to route_projects.
|
|
79
|
+
</step>
|
|
80
|
+
|
|
81
|
+
<step name="route_projects">
|
|
82
|
+
Confirm which projects are involved.
|
|
83
|
+
|
|
84
|
+
**Build project suggestion** from discussion. Cross-reference with CONTRACTS.md and PROJECTS.md.
|
|
85
|
+
|
|
86
|
+
**Present suggestion:**
|
|
87
|
+
```
|
|
88
|
+
Based on our discussion, these projects are involved:
|
|
89
|
+
|
|
90
|
+
{For each project:}
|
|
91
|
+
- **{project-name}** ({project-path}) — {responsibility}
|
|
92
|
+
|
|
93
|
+
{If any projects from config NOT included:}
|
|
94
|
+
Not involved: {project-name} — {brief reason}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Use AskUserQuestion:
|
|
98
|
+
- header: "Projects"
|
|
99
|
+
- question: "Are these the right projects for this task?"
|
|
100
|
+
- options:
|
|
101
|
+
- "Yes, looks right"
|
|
102
|
+
- "I need to adjust"
|
|
103
|
+
|
|
104
|
+
Continue to create_orchestrator_task.
|
|
105
|
+
</step>
|
|
106
|
+
|
|
107
|
+
<step name="create_orchestrator_task">
|
|
108
|
+
Create orchestrator-level task folder with system-view documents.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
mkdir -p .specd/tasks/{task-name}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Write files using templates from `~/.claude/specdacular/templates/tasks/`:**
|
|
115
|
+
|
|
116
|
+
**FEATURE.md** — System-level view:
|
|
117
|
+
- What This Is: System-level description
|
|
118
|
+
- Must Create: Involved projects and what each creates (high-level)
|
|
119
|
+
- Must Integrate With: Cross-project interactions, contracts affected
|
|
120
|
+
- Constraints: System-level constraints
|
|
121
|
+
- Success Criteria: System-level observable behaviors
|
|
122
|
+
|
|
123
|
+
**CONTEXT.md** — Cross-project discussion summary
|
|
124
|
+
|
|
125
|
+
**DECISIONS.md** — Any decisions from discussion
|
|
126
|
+
|
|
127
|
+
**STATE.md** — Stage: discussion, with Sub-Project Tasks table:
|
|
128
|
+
```markdown
|
|
129
|
+
## Sub-Project Tasks
|
|
130
|
+
|
|
131
|
+
| Project | Path | Task Path | Status |
|
|
132
|
+
|---------|------|-----------|--------|
|
|
133
|
+
| {project-name} | {project-path} | {project-path}/.specd/tasks/{task-name}/ | initialized |
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**config.json:**
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"task_name": "{name}",
|
|
140
|
+
"created": "{date}",
|
|
141
|
+
"stage": "discussion",
|
|
142
|
+
"discussion_sessions": 1,
|
|
143
|
+
"decisions_count": {N},
|
|
144
|
+
"orchestrator": true,
|
|
145
|
+
"projects": [
|
|
146
|
+
{"name": "{project-name}", "path": "{project-path}", "responsibility": "{responsibility}"}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Continue to delegate_to_projects.
|
|
152
|
+
</step>
|
|
153
|
+
|
|
154
|
+
<step name="delegate_to_projects">
|
|
155
|
+
Create task folders in each involved sub-project with translated requirements.
|
|
156
|
+
|
|
157
|
+
For each project in the routing data:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
mkdir -p {project-path}/.specd/tasks/{task-name}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Write FEATURE.md (project-specific):**
|
|
164
|
+
Translate system-level requirements into project-specific requirements.
|
|
165
|
+
|
|
166
|
+
**IMPORTANT:** Sub-project FEATURE.md must read like a normal, self-contained requirement. No references to "orchestrator," "multi-project," or other projects by name. Cross-project requirements phrased as external interface requirements:
|
|
167
|
+
- BAD: "API project must expose /auth/login for the UI project"
|
|
168
|
+
- GOOD: "Must expose /auth/login endpoint that returns JWT tokens"
|
|
169
|
+
|
|
170
|
+
**Write CONTEXT.md, DECISIONS.md, STATE.md, config.json** using templates.
|
|
171
|
+
|
|
172
|
+
Note: `discussion_sessions: 0` because no per-project discussion happened.
|
|
173
|
+
|
|
174
|
+
Verify all projects:
|
|
175
|
+
```bash
|
|
176
|
+
for project in {project-paths}; do
|
|
177
|
+
echo "Checking $project..."
|
|
178
|
+
ls "$project/.specd/tasks/{task-name}/"
|
|
179
|
+
done
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Continue to commit.
|
|
183
|
+
</step>
|
|
184
|
+
|
|
185
|
+
<step name="commit">
|
|
186
|
+
Commit orchestrator and all sub-project task files.
|
|
187
|
+
|
|
188
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
189
|
+
|
|
190
|
+
- **$FILES:** `.specd/tasks/{task-name}/` and `{project-path}/.specd/tasks/{task-name}/` for each project
|
|
191
|
+
- **$MESSAGE:** `docs({task-name}): initialize multi-project task`
|
|
192
|
+
- **$LABEL:** `multi-project task initialization`
|
|
193
|
+
|
|
194
|
+
Continue to completion.
|
|
195
|
+
</step>
|
|
196
|
+
|
|
197
|
+
<step name="completion">
|
|
198
|
+
Present multi-project task creation summary.
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
202
|
+
MULTI-PROJECT TASK INITIALIZED
|
|
203
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
204
|
+
|
|
205
|
+
**Task:** {task-name}
|
|
206
|
+
|
|
207
|
+
## Orchestrator (.specd/tasks/{task-name}/)
|
|
208
|
+
|
|
209
|
+
- FEATURE.md — System-level requirements
|
|
210
|
+
- CONTEXT.md — Cross-project discussion
|
|
211
|
+
- DECISIONS.md — {N} decisions recorded
|
|
212
|
+
- STATE.md — Sub-project tracking
|
|
213
|
+
|
|
214
|
+
## Projects
|
|
215
|
+
|
|
216
|
+
{For each project:}
|
|
217
|
+
**{project-name}** ({project-path}/.specd/tasks/{task-name}/)
|
|
218
|
+
- FEATURE.md — {brief responsibility summary}
|
|
219
|
+
|
|
220
|
+
## Summary
|
|
221
|
+
|
|
222
|
+
{2-3 sentence system-level summary}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Continue to continuation_offer.
|
|
226
|
+
</step>
|
|
227
|
+
|
|
228
|
+
<step name="continuation_offer">
|
|
229
|
+
Offer to continue or stop.
|
|
230
|
+
|
|
231
|
+
**If gray areas remain:**
|
|
232
|
+
Use AskUserQuestion:
|
|
233
|
+
- header: "Continue?"
|
|
234
|
+
- question: "Want to keep discussing the open areas, or come back later?"
|
|
235
|
+
- options:
|
|
236
|
+
- "Keep discussing" — Dive into the gray areas now
|
|
237
|
+
- "Stop for now" — Come back with `/specd:continue {task-name}`
|
|
238
|
+
|
|
239
|
+
**If Keep discussing:**
|
|
240
|
+
Execute the discuss workflow:
|
|
241
|
+
@~/.claude/specdacular/workflows/discuss.md
|
|
242
|
+
|
|
243
|
+
After discussion completes, return to this step.
|
|
244
|
+
|
|
245
|
+
**If no gray areas remain:**
|
|
246
|
+
Use AskUserQuestion:
|
|
247
|
+
- header: "Continue?"
|
|
248
|
+
- question: "Discussion looks solid. Want to keep going or come back later?"
|
|
249
|
+
- options:
|
|
250
|
+
- "Continue" — Move to next step
|
|
251
|
+
- "Stop for now" — Come back with `/specd:continue {task-name}`
|
|
252
|
+
|
|
253
|
+
**If Continue:**
|
|
254
|
+
Hand off to continue workflow:
|
|
255
|
+
@~/.claude/specdacular/workflows/continue.md
|
|
256
|
+
|
|
257
|
+
**If Stop for now:**
|
|
258
|
+
```
|
|
259
|
+
Progress saved. Pick up where you left off anytime:
|
|
260
|
+
|
|
261
|
+
/specd:continue {task-name}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
End workflow.
|
|
265
|
+
</step>
|