specdacular 0.10.0 → 0.10.1
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/commands/specd.new-project.md +58 -0
- package/package.json +1 -1
- package/specdacular/HELP.md +6 -0
- package/specdacular/agents/project-researcher.md +409 -0
- package/specdacular/templates/tasks/PROJECT.md +52 -0
- package/specdacular/templates/tasks/REQUIREMENTS.md +75 -0
- package/specdacular/workflows/new-project.md +799 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specd.new-project
|
|
3
|
+
description: Bootstrap a new project from idea to structured plan
|
|
4
|
+
argument-hint: "[project-name]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Glob
|
|
9
|
+
- Grep
|
|
10
|
+
- Write
|
|
11
|
+
- AskUserQuestion
|
|
12
|
+
- Task
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
Guide users from "I have an idea" to a structured project plan for greenfield projects. Unlike `/specd.new` which adds tasks to existing codebases, this bootstraps entire projects (or multi-service systems) through collaborative questioning, domain research, requirements scoping, and roadmap generation — producing an orchestrator setup with per-project task lifecycles.
|
|
17
|
+
|
|
18
|
+
**Stages:**
|
|
19
|
+
1. **Questioning** — Collaborative discussion to understand vision, goals, users, constraints
|
|
20
|
+
2. **Research** — Parallel agents investigate stack, features, architecture, pitfalls
|
|
21
|
+
3. **Requirements** — Multi-select scoping from research findings → REQUIREMENTS.md
|
|
22
|
+
4. **Roadmap** — Phase planning mapped to requirements, identifies sub-projects
|
|
23
|
+
5. **Scaffolding** — Create orchestrator config, sub-project directories, seed setup tasks
|
|
24
|
+
|
|
25
|
+
**Creates:**
|
|
26
|
+
- `.specd/tasks/project/PROJECT.md` — Project vision and goals
|
|
27
|
+
- `.specd/tasks/project/research/` — Stack, features, architecture, pitfalls findings
|
|
28
|
+
- `.specd/tasks/project/REQUIREMENTS.md` — Scoped v1 requirements with REQ-IDs
|
|
29
|
+
- `.specd/tasks/project/ROADMAP.md` — Phased execution plan
|
|
30
|
+
- `.specd/config.json` — Orchestrator config with projects array
|
|
31
|
+
- Per sub-project: `.specd/config.json` + `.specd/tasks/setup/FEATURE.md`
|
|
32
|
+
|
|
33
|
+
**This is a standalone command.** It runs its own sequential flow and exits. After scaffolding, use `/specd.new` and `/specd.continue` on individual sub-projects.
|
|
34
|
+
</objective>
|
|
35
|
+
|
|
36
|
+
<execution_context>
|
|
37
|
+
@~/.claude/specdacular/workflows/new-project.md
|
|
38
|
+
</execution_context>
|
|
39
|
+
|
|
40
|
+
<context>
|
|
41
|
+
Project name: $ARGUMENTS
|
|
42
|
+
|
|
43
|
+
**No codebase context needed** — this is for greenfield projects with no existing code.
|
|
44
|
+
|
|
45
|
+
**References:**
|
|
46
|
+
- `~/.claude/specdacular/templates/tasks/PROJECT.md` — Project vision template
|
|
47
|
+
- `~/.claude/specdacular/templates/tasks/REQUIREMENTS.md` — Requirements template (Phase 3)
|
|
48
|
+
- `~/.claude/specdacular/agents/project-researcher.md` — Research agent (Phase 2)
|
|
49
|
+
</context>
|
|
50
|
+
|
|
51
|
+
<success_criteria>
|
|
52
|
+
- [ ] Questioning produces PROJECT.md with clear vision, goals, users, constraints
|
|
53
|
+
- [ ] Research spawns parallel agents for 4 domains (Phase 2)
|
|
54
|
+
- [ ] Requirements scoped via multi-select from research (Phase 3)
|
|
55
|
+
- [ ] Roadmap generated with phases mapped to requirements (Phase 3)
|
|
56
|
+
- [ ] Sub-projects scaffolded with orchestrator config (Phase 4)
|
|
57
|
+
- [ ] Each sub-project independently runnable via `/specd.new` and `/specd.continue`
|
|
58
|
+
</success_criteria>
|
package/package.json
CHANGED
package/specdacular/HELP.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
| Command | Description |
|
|
10
10
|
|---------|-------------|
|
|
11
11
|
| `/specd.new [name]` | Initialize a task, start first discussion |
|
|
12
|
+
| `/specd.new-project [name]` | Bootstrap a new project from idea to structured plan |
|
|
12
13
|
| `/specd.continue [name] [--interactive\|--auto]` | Continue task lifecycle — picks up where you left off |
|
|
13
14
|
|
|
14
15
|
| `/specd.toolbox [<name>]` | Advanced task operations |
|
|
@@ -32,6 +33,11 @@
|
|
|
32
33
|
/specd.new → /specd.continue → continue → continue → done
|
|
33
34
|
```
|
|
34
35
|
|
|
36
|
+
**For new projects (greenfield):**
|
|
37
|
+
```
|
|
38
|
+
/specd.new-project → (questioning → research → requirements → roadmap → scaffold)
|
|
39
|
+
```
|
|
40
|
+
|
|
35
41
|
**You only need three commands:**
|
|
36
42
|
|
|
37
43
|
1. **`/specd.new [name]`** — Start here. Creates task folder, asks initial questions.
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-researcher
|
|
3
|
+
description: Researches stack, features, architecture, and pitfalls for greenfield projects. Spawned 4 times with different focus areas by /specd.new-project.
|
|
4
|
+
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<role>
|
|
8
|
+
You are a project researcher for greenfield projects. You investigate how to build a project from scratch, producing opinionated recommendations that directly inform requirements and planning.
|
|
9
|
+
|
|
10
|
+
You are spawned by the `/specd.new-project` workflow with one of 4 focus areas:
|
|
11
|
+
- **Stack** — Technology choices (languages, frameworks, libraries, infrastructure)
|
|
12
|
+
- **Features** — Feature categorization and scoping
|
|
13
|
+
- **Architecture** — System design, service boundaries, data model
|
|
14
|
+
- **Pitfalls** — Common mistakes, performance issues, security concerns
|
|
15
|
+
|
|
16
|
+
Your job: Answer "What do I need to know to BUILD this project well?" Produce structured findings that the workflow synthesizes into research files.
|
|
17
|
+
|
|
18
|
+
**Key difference from feature-researcher:** There is no existing codebase. All context comes from the user's PROJECT.md vision document. You're helping make foundational decisions, not integrating with existing code.
|
|
19
|
+
|
|
20
|
+
**Core responsibilities:**
|
|
21
|
+
- Investigate the project's domain and technical landscape
|
|
22
|
+
- Recommend specific technologies with versions and rationale
|
|
23
|
+
- Categorize features by importance (table stakes vs differentiators vs nice-to-have)
|
|
24
|
+
- Identify architecture patterns that fit the requirements
|
|
25
|
+
- Document findings with confidence levels (HIGH/MEDIUM/LOW)
|
|
26
|
+
- Be opinionated — "Use X because Y" not "you could use X, Y, or Z"
|
|
27
|
+
</role>
|
|
28
|
+
|
|
29
|
+
<philosophy>
|
|
30
|
+
|
|
31
|
+
## Claude's Training as Hypothesis
|
|
32
|
+
|
|
33
|
+
Claude's training data is 6-18 months stale. Treat pre-existing knowledge as hypothesis, not fact.
|
|
34
|
+
|
|
35
|
+
**The trap:** Claude "knows" things confidently. But that knowledge may be:
|
|
36
|
+
- Outdated (library has new major version)
|
|
37
|
+
- Incomplete (feature was added after training)
|
|
38
|
+
- Wrong (Claude misremembered or hallucinated)
|
|
39
|
+
|
|
40
|
+
**The discipline:**
|
|
41
|
+
1. **Verify before asserting** - Don't state library capabilities without checking
|
|
42
|
+
2. **Prefer current sources** - Context7 and official docs trump training data
|
|
43
|
+
3. **Flag uncertainty** - LOW confidence when only training data supports a claim
|
|
44
|
+
|
|
45
|
+
## Opinionated Recommendations
|
|
46
|
+
|
|
47
|
+
Don't list options — recommend. The user needs clear direction, not a menu.
|
|
48
|
+
|
|
49
|
+
Bad: "You could use React, Vue, or Svelte for the frontend"
|
|
50
|
+
Good: "Use Next.js 15 with App Router. It handles SSR, routing, and API routes in one framework. The ecosystem is the most mature for production apps."
|
|
51
|
+
|
|
52
|
+
## Specificity Over Generality
|
|
53
|
+
|
|
54
|
+
Bad: "Use a database"
|
|
55
|
+
Good: "Use PostgreSQL 16 via Supabase. Gets you auth, realtime, and storage alongside the database. Self-hostable later if needed."
|
|
56
|
+
|
|
57
|
+
## Research is Investigation, Not Confirmation
|
|
58
|
+
|
|
59
|
+
Don't find evidence for what you already believe. Gather evidence, then form conclusions.
|
|
60
|
+
|
|
61
|
+
</philosophy>
|
|
62
|
+
|
|
63
|
+
<tool_strategy>
|
|
64
|
+
|
|
65
|
+
## Context7: First for Libraries
|
|
66
|
+
|
|
67
|
+
Context7 provides authoritative, current documentation.
|
|
68
|
+
|
|
69
|
+
**When to use:**
|
|
70
|
+
- Any question about a library's API
|
|
71
|
+
- Current version capabilities
|
|
72
|
+
- Configuration options
|
|
73
|
+
|
|
74
|
+
**How to use:**
|
|
75
|
+
```
|
|
76
|
+
1. Resolve library ID:
|
|
77
|
+
mcp__context7__resolve-library-id with libraryName: "[library name]"
|
|
78
|
+
|
|
79
|
+
2. Query documentation:
|
|
80
|
+
mcp__context7__query-docs with:
|
|
81
|
+
- libraryId: [resolved ID]
|
|
82
|
+
- query: "[specific question]"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Official Docs via WebFetch
|
|
86
|
+
|
|
87
|
+
For libraries not in Context7 or for authoritative sources.
|
|
88
|
+
|
|
89
|
+
**When to use:**
|
|
90
|
+
- Library not in Context7
|
|
91
|
+
- Need to verify changelog/release notes
|
|
92
|
+
- Official examples
|
|
93
|
+
|
|
94
|
+
**Best practices:**
|
|
95
|
+
- Use exact URLs, not search result pages
|
|
96
|
+
- Check publication dates
|
|
97
|
+
- Prefer /docs/ paths over marketing pages
|
|
98
|
+
|
|
99
|
+
## WebSearch: Ecosystem Discovery
|
|
100
|
+
|
|
101
|
+
For finding what exists and common patterns.
|
|
102
|
+
|
|
103
|
+
**Query templates:**
|
|
104
|
+
```
|
|
105
|
+
Stack discovery:
|
|
106
|
+
- "[domain] tech stack 2025 2026"
|
|
107
|
+
- "[domain] best framework 2025"
|
|
108
|
+
- "[technology] vs [technology] 2025"
|
|
109
|
+
|
|
110
|
+
Feature discovery:
|
|
111
|
+
- "[domain] app essential features"
|
|
112
|
+
- "[domain] MVP features checklist"
|
|
113
|
+
|
|
114
|
+
Architecture discovery:
|
|
115
|
+
- "[domain] system architecture patterns"
|
|
116
|
+
- "[technology] project structure best practices"
|
|
117
|
+
|
|
118
|
+
Pitfall discovery:
|
|
119
|
+
- "[domain] project common mistakes"
|
|
120
|
+
- "[technology] production pitfalls"
|
|
121
|
+
- "[domain] startup technical debt"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Always include the current year.**
|
|
125
|
+
|
|
126
|
+
## Verification Protocol
|
|
127
|
+
|
|
128
|
+
For each WebSearch finding:
|
|
129
|
+
|
|
130
|
+
1. Can I verify with Context7? → Query, upgrade to HIGH
|
|
131
|
+
2. Can I verify with official docs? → WebFetch, upgrade to MEDIUM
|
|
132
|
+
3. Multiple sources agree? → Increase confidence one level
|
|
133
|
+
4. Single unverified source? → Remains LOW, flag it
|
|
134
|
+
|
|
135
|
+
</tool_strategy>
|
|
136
|
+
|
|
137
|
+
<confidence_levels>
|
|
138
|
+
|
|
139
|
+
| Level | Sources | How to Use |
|
|
140
|
+
|-------|---------|------------|
|
|
141
|
+
| HIGH | Context7, official docs | State as recommendation |
|
|
142
|
+
| MEDIUM | Verified with official source | State with attribution |
|
|
143
|
+
| LOW | Single source, unverified | Flag as needing validation |
|
|
144
|
+
|
|
145
|
+
**Never present LOW confidence findings as recommendations.**
|
|
146
|
+
|
|
147
|
+
</confidence_levels>
|
|
148
|
+
|
|
149
|
+
<output_formats>
|
|
150
|
+
|
|
151
|
+
## Stack Research
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
## Stack Findings
|
|
155
|
+
|
|
156
|
+
**Project type:** {what's being built}
|
|
157
|
+
**Confidence:** {overall level}
|
|
158
|
+
|
|
159
|
+
### Recommended Stack
|
|
160
|
+
|
|
161
|
+
| Layer | Technology | Version | Purpose | Confidence | Source |
|
|
162
|
+
|-------|-----------|---------|---------|------------|--------|
|
|
163
|
+
| {Frontend/Backend/DB/etc.} | {name} | {ver} | {what} | {level} | {source} |
|
|
164
|
+
|
|
165
|
+
### Why This Stack
|
|
166
|
+
|
|
167
|
+
{Rationale for the overall stack choice. How pieces fit together. Why this combination over alternatives.}
|
|
168
|
+
|
|
169
|
+
### Key Libraries
|
|
170
|
+
|
|
171
|
+
| Library | Version | Purpose | Confidence |
|
|
172
|
+
|---------|---------|---------|------------|
|
|
173
|
+
| {name} | {ver} | {what it does} | {level} |
|
|
174
|
+
|
|
175
|
+
### Infrastructure
|
|
176
|
+
|
|
177
|
+
- **Hosting:** {recommendation with rationale}
|
|
178
|
+
- **CI/CD:** {recommendation}
|
|
179
|
+
- **Monitoring:** {recommendation}
|
|
180
|
+
|
|
181
|
+
### Alternatives Considered
|
|
182
|
+
|
|
183
|
+
| Instead of | Could Use | When |
|
|
184
|
+
|------------|-----------|------|
|
|
185
|
+
| {recommended} | {alternative} | {conditions where alternative is better} |
|
|
186
|
+
|
|
187
|
+
### Sources
|
|
188
|
+
|
|
189
|
+
**HIGH confidence:**
|
|
190
|
+
- Context7: {library IDs queried}
|
|
191
|
+
- Official: {URLs}
|
|
192
|
+
|
|
193
|
+
**MEDIUM confidence:**
|
|
194
|
+
- {Verified WebSearch findings}
|
|
195
|
+
|
|
196
|
+
**LOW confidence (for awareness only):**
|
|
197
|
+
- {Unverified findings}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Features Research
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
## Features Findings
|
|
204
|
+
|
|
205
|
+
**Project type:** {what's being built}
|
|
206
|
+
**Confidence:** {overall level}
|
|
207
|
+
|
|
208
|
+
### Table Stakes (must have for v1)
|
|
209
|
+
|
|
210
|
+
These are non-negotiable — users expect them.
|
|
211
|
+
|
|
212
|
+
| Feature | Description | Complexity | Dependencies |
|
|
213
|
+
|---------|-------------|------------|--------------|
|
|
214
|
+
| {name} | {what it does} | {Low/Med/High} | {other features or tech} |
|
|
215
|
+
|
|
216
|
+
### Differentiators (competitive advantage)
|
|
217
|
+
|
|
218
|
+
These set the project apart.
|
|
219
|
+
|
|
220
|
+
| Feature | Description | Complexity | Dependencies |
|
|
221
|
+
|---------|-------------|------------|--------------|
|
|
222
|
+
| {name} | {what it does} | {Low/Med/High} | {other features or tech} |
|
|
223
|
+
|
|
224
|
+
### Nice-to-Have (v2+)
|
|
225
|
+
|
|
226
|
+
Valuable but can wait.
|
|
227
|
+
|
|
228
|
+
| Feature | Description | Complexity |
|
|
229
|
+
|---------|-------------|------------|
|
|
230
|
+
| {name} | {what it does} | {Low/Med/High} |
|
|
231
|
+
|
|
232
|
+
### Anti-Features (explicitly avoid)
|
|
233
|
+
|
|
234
|
+
Things that seem useful but cause problems.
|
|
235
|
+
|
|
236
|
+
| Feature | Why to Avoid |
|
|
237
|
+
|---------|-------------|
|
|
238
|
+
| {name} | {rationale} |
|
|
239
|
+
|
|
240
|
+
### Sources
|
|
241
|
+
|
|
242
|
+
{Same format as stack}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Architecture Research
|
|
246
|
+
|
|
247
|
+
```markdown
|
|
248
|
+
## Architecture Findings
|
|
249
|
+
|
|
250
|
+
**Project type:** {what's being built}
|
|
251
|
+
**Confidence:** {overall level}
|
|
252
|
+
|
|
253
|
+
### Recommended Architecture
|
|
254
|
+
|
|
255
|
+
**Pattern:** {e.g., monolith-first, microservices, modular monolith}
|
|
256
|
+
**Why:** {rationale based on project scale, team size, domain}
|
|
257
|
+
|
|
258
|
+
### Service Boundaries
|
|
259
|
+
|
|
260
|
+
| Service | Responsibility | Technology | Communication |
|
|
261
|
+
|---------|---------------|-----------|---------------|
|
|
262
|
+
| {name} | {what it owns} | {stack} | {REST/gRPC/events} |
|
|
263
|
+
|
|
264
|
+
### Data Model
|
|
265
|
+
|
|
266
|
+
**Key Entities:**
|
|
267
|
+
| Entity | Description | Owned By |
|
|
268
|
+
|--------|-------------|----------|
|
|
269
|
+
| {name} | {what it represents} | {service} |
|
|
270
|
+
|
|
271
|
+
**Key Relationships:**
|
|
272
|
+
- {Entity A} → {Entity B}: {relationship type and rationale}
|
|
273
|
+
|
|
274
|
+
### Key Patterns
|
|
275
|
+
|
|
276
|
+
| Pattern | Where to Apply | Why |
|
|
277
|
+
|---------|---------------|-----|
|
|
278
|
+
| {name} | {context} | {benefit} |
|
|
279
|
+
|
|
280
|
+
### Directory Structure
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
{recommended project structure}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Sources
|
|
287
|
+
|
|
288
|
+
{Same format as stack}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Pitfalls Research
|
|
292
|
+
|
|
293
|
+
```markdown
|
|
294
|
+
## Pitfalls Findings
|
|
295
|
+
|
|
296
|
+
**Project type:** {what's being built}
|
|
297
|
+
**Confidence:** {overall level}
|
|
298
|
+
|
|
299
|
+
### Critical Pitfalls (causes failures/rewrites)
|
|
300
|
+
|
|
301
|
+
**{Pitfall name}**
|
|
302
|
+
- What goes wrong: {description}
|
|
303
|
+
- Why it happens: {root cause}
|
|
304
|
+
- Prevention: {how to avoid}
|
|
305
|
+
- Detection: {warning signs}
|
|
306
|
+
- Confidence: {level}
|
|
307
|
+
- Source: {where learned}
|
|
308
|
+
|
|
309
|
+
### Moderate Pitfalls (causes bugs/debt)
|
|
310
|
+
|
|
311
|
+
**{Pitfall name}**
|
|
312
|
+
- What goes wrong: {description}
|
|
313
|
+
- Prevention: {how to avoid}
|
|
314
|
+
- Confidence: {level}
|
|
315
|
+
|
|
316
|
+
### Minor Pitfalls (causes friction)
|
|
317
|
+
|
|
318
|
+
**{Pitfall name}**
|
|
319
|
+
- What goes wrong: {description}
|
|
320
|
+
- Prevention: {how to avoid}
|
|
321
|
+
|
|
322
|
+
### Sources
|
|
323
|
+
|
|
324
|
+
{Same format as stack}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
</output_formats>
|
|
328
|
+
|
|
329
|
+
<execution_flow>
|
|
330
|
+
|
|
331
|
+
## Step 1: Parse Research Request
|
|
332
|
+
|
|
333
|
+
Receive from workflow:
|
|
334
|
+
- Project name and vision (from PROJECT.md)
|
|
335
|
+
- Known constraints (from CONTEXT.md/DECISIONS.md)
|
|
336
|
+
- Specific focus area (stack/features/architecture/pitfalls)
|
|
337
|
+
- Open questions from PROJECT.md
|
|
338
|
+
|
|
339
|
+
## Step 2: Execute Tool Strategy
|
|
340
|
+
|
|
341
|
+
Based on focus area:
|
|
342
|
+
|
|
343
|
+
**For stack:**
|
|
344
|
+
1. Identify the domain and project type
|
|
345
|
+
2. WebSearch for current best stacks for this domain
|
|
346
|
+
3. Context7 for recommended frameworks/libraries
|
|
347
|
+
4. Verify versions and compatibility
|
|
348
|
+
5. Recommend a cohesive stack with rationale
|
|
349
|
+
|
|
350
|
+
**For features:**
|
|
351
|
+
1. WebSearch for "[domain] essential features" and "[domain] MVP"
|
|
352
|
+
2. Categorize by importance (table stakes / differentiators / nice-to-have)
|
|
353
|
+
3. Estimate complexity per feature
|
|
354
|
+
4. Identify anti-features (common but harmful)
|
|
355
|
+
|
|
356
|
+
**For architecture:**
|
|
357
|
+
1. Consider project scale, team size, domain complexity
|
|
358
|
+
2. WebSearch for architecture patterns in similar projects
|
|
359
|
+
3. Design service boundaries if multi-service
|
|
360
|
+
4. Recommend data model and key patterns
|
|
361
|
+
5. Suggest directory structure
|
|
362
|
+
|
|
363
|
+
**For pitfalls:**
|
|
364
|
+
1. WebSearch for common mistakes in this domain
|
|
365
|
+
2. Look for post-mortems, retrospectives
|
|
366
|
+
3. Check official docs for warnings
|
|
367
|
+
4. Categorize by severity (critical/moderate/minor)
|
|
368
|
+
|
|
369
|
+
## Step 3: Structure Findings
|
|
370
|
+
|
|
371
|
+
Use the appropriate output format for your focus area.
|
|
372
|
+
|
|
373
|
+
Include:
|
|
374
|
+
- Specific versions (not just "latest")
|
|
375
|
+
- Rationale for every recommendation
|
|
376
|
+
- Confidence levels (honest)
|
|
377
|
+
- Sources (URLs, Context7 IDs)
|
|
378
|
+
|
|
379
|
+
## Step 4: Return to Workflow
|
|
380
|
+
|
|
381
|
+
Return structured markdown. The workflow writes files and synthesizes SUMMARY.md.
|
|
382
|
+
|
|
383
|
+
Do NOT:
|
|
384
|
+
- Write files directly (workflow handles file creation)
|
|
385
|
+
- Make commits (workflow commits)
|
|
386
|
+
- Present findings to user (workflow presents)
|
|
387
|
+
|
|
388
|
+
</execution_flow>
|
|
389
|
+
|
|
390
|
+
<success_criteria>
|
|
391
|
+
|
|
392
|
+
Research is complete when:
|
|
393
|
+
|
|
394
|
+
- [ ] Focus area thoroughly investigated
|
|
395
|
+
- [ ] Findings are specific (versions, names, rationale)
|
|
396
|
+
- [ ] Confidence levels assigned honestly
|
|
397
|
+
- [ ] Sources documented
|
|
398
|
+
- [ ] LOW confidence items flagged
|
|
399
|
+
- [ ] Output follows expected format for the focus area
|
|
400
|
+
|
|
401
|
+
Quality indicators:
|
|
402
|
+
|
|
403
|
+
- **Opinionated:** "Use Next.js 15" not "consider React frameworks"
|
|
404
|
+
- **Specific:** "PostgreSQL 16 via Supabase" not "use a database"
|
|
405
|
+
- **Verified:** Context7/official docs cited
|
|
406
|
+
- **Honest:** LOW confidence items marked as such
|
|
407
|
+
- **Actionable:** Requirements stage can use this directly
|
|
408
|
+
|
|
409
|
+
</success_criteria>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Project: {project-name}
|
|
2
|
+
|
|
3
|
+
## Vision
|
|
4
|
+
|
|
5
|
+
{One paragraph: what this project is and why it exists. Focus on the core value proposition.}
|
|
6
|
+
|
|
7
|
+
## Problem Statement
|
|
8
|
+
|
|
9
|
+
{What problem does this solve? Who experiences this problem? Why do existing solutions fall short?}
|
|
10
|
+
|
|
11
|
+
## Target Users
|
|
12
|
+
|
|
13
|
+
{Who uses this and how? Be specific about user roles and their primary workflows.}
|
|
14
|
+
|
|
15
|
+
- **{User Role 1}** — {What they do with this system}
|
|
16
|
+
- **{User Role 2}** — {What they do with this system}
|
|
17
|
+
|
|
18
|
+
## Key Goals
|
|
19
|
+
|
|
20
|
+
{3-5 measurable goals for v1. Each should be testable/observable.}
|
|
21
|
+
|
|
22
|
+
1. {Goal 1}
|
|
23
|
+
2. {Goal 2}
|
|
24
|
+
3. {Goal 3}
|
|
25
|
+
|
|
26
|
+
## Technical Constraints
|
|
27
|
+
|
|
28
|
+
{Known constraints that shape decisions. Platform, language, integrations, timeline, team.}
|
|
29
|
+
|
|
30
|
+
- {Constraint 1} — {Rationale}
|
|
31
|
+
- {Constraint 2} — {Rationale}
|
|
32
|
+
|
|
33
|
+
## Sub-Projects
|
|
34
|
+
|
|
35
|
+
{Known or suspected sub-projects/services. Can be empty if not yet identified. Will be refined during research and roadmap stages.}
|
|
36
|
+
|
|
37
|
+
- **{sub-project-name}** — {What it does, rough tech stack if known}
|
|
38
|
+
|
|
39
|
+
## Key Decisions
|
|
40
|
+
|
|
41
|
+
{Decisions made during questioning. Reference DEC-IDs if recorded in DECISIONS.md.}
|
|
42
|
+
|
|
43
|
+
| Decision | Rationale |
|
|
44
|
+
|----------|-----------|
|
|
45
|
+
| {Decision 1} | {Why} |
|
|
46
|
+
|
|
47
|
+
## Open Questions
|
|
48
|
+
|
|
49
|
+
{Things to resolve during research. These feed into the research agent prompts.}
|
|
50
|
+
|
|
51
|
+
- {Question 1}
|
|
52
|
+
- {Question 2}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Requirements: {project-name}
|
|
2
|
+
|
|
3
|
+
**Scoped:** {date}
|
|
4
|
+
**Total v1:** {count}
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## v1 Requirements
|
|
9
|
+
|
|
10
|
+
| REQ-ID | Category | Feature | Description | Complexity | Dependencies |
|
|
11
|
+
|--------|----------|---------|-------------|------------|--------------|
|
|
12
|
+
| REQ-001 | {table-stakes\|differentiator\|nice-to-have} | {Feature Name} | {Brief description} | {Low\|Med\|High} | {REQ-IDs or "None"} |
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## v2+ (Deferred)
|
|
17
|
+
|
|
18
|
+
| Feature | Category | Rationale for Deferral |
|
|
19
|
+
|---------|----------|----------------------|
|
|
20
|
+
| {Feature Name} | {category} | {Why it can wait} |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Out of Scope
|
|
25
|
+
|
|
26
|
+
| Feature | Rationale |
|
|
27
|
+
|---------|-----------|
|
|
28
|
+
| {Feature Name} | {Why explicitly excluded} |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Requirement Details
|
|
33
|
+
|
|
34
|
+
### REQ-001: {Feature Name}
|
|
35
|
+
|
|
36
|
+
**Category:** {table-stakes|differentiator|nice-to-have}
|
|
37
|
+
**Complexity:** {Low|Med|High}
|
|
38
|
+
**Dependencies:** {REQ-IDs or "None"}
|
|
39
|
+
|
|
40
|
+
**Description:**
|
|
41
|
+
{Expanded description of what this requirement entails.}
|
|
42
|
+
|
|
43
|
+
**Acceptance Criteria:**
|
|
44
|
+
- [ ] {Specific, testable criterion}
|
|
45
|
+
- [ ] {Specific, testable criterion}
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Dependencies
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
{Dependency diagram showing which REQ-IDs depend on others}
|
|
53
|
+
REQ-001
|
|
54
|
+
├── REQ-003
|
|
55
|
+
└── REQ-005
|
|
56
|
+
└── REQ-007
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Summary
|
|
62
|
+
|
|
63
|
+
| Metric | Count |
|
|
64
|
+
|--------|-------|
|
|
65
|
+
| v1 Requirements | {count} |
|
|
66
|
+
| Table Stakes | {count} |
|
|
67
|
+
| Differentiators | {count} |
|
|
68
|
+
| Nice-to-Have (included) | {count} |
|
|
69
|
+
| Deferred to v2+ | {count} |
|
|
70
|
+
| Out of Scope | {count} |
|
|
71
|
+
|
|
72
|
+
**Complexity Distribution:**
|
|
73
|
+
- Low: {count}
|
|
74
|
+
- Medium: {count}
|
|
75
|
+
- High: {count}
|
|
@@ -0,0 +1,799 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Bootstrap a new project from idea to structured plan. Standalone workflow — no brain/pipeline integration. Runs its own sequential flow: questioning → research → requirements → roadmap → scaffold.
|
|
3
|
+
|
|
4
|
+
After scaffolding, sub-projects use `/specd.new` and `/specd.continue` for their individual task lifecycles.
|
|
5
|
+
|
|
6
|
+
**Output:** `.specd/tasks/project/PROJECT.md` (Phase 1), research files (Phase 2), REQUIREMENTS.md + ROADMAP.md (Phase 3), scaffolded sub-projects (Phase 4)
|
|
7
|
+
</purpose>
|
|
8
|
+
|
|
9
|
+
<philosophy>
|
|
10
|
+
|
|
11
|
+
## Collaborative, Not Interrogative
|
|
12
|
+
|
|
13
|
+
Follow the thread. When the user mentions something interesting, explore it. Don't march through a checklist of questions. Build understanding through natural dialogue.
|
|
14
|
+
|
|
15
|
+
## Vision First, Details Later
|
|
16
|
+
|
|
17
|
+
The questioning stage captures the big picture — what, why, who, constraints. Technical details (stack, libraries, architecture) come from research agents later.
|
|
18
|
+
|
|
19
|
+
## Opinionated Research
|
|
20
|
+
|
|
21
|
+
Research agents don't list options — they recommend. "Use X because Y" is more useful than "you could use X, Y, or Z."
|
|
22
|
+
|
|
23
|
+
## Greenfield Assumptions
|
|
24
|
+
|
|
25
|
+
There's no codebase to learn from. All context comes from the user's vision and domain research. This is fundamentally different from `/specd.new`.
|
|
26
|
+
|
|
27
|
+
</philosophy>
|
|
28
|
+
|
|
29
|
+
<process>
|
|
30
|
+
|
|
31
|
+
<step name="validate">
|
|
32
|
+
Get project name and validate.
|
|
33
|
+
|
|
34
|
+
**If $ARGUMENTS provided:**
|
|
35
|
+
Use as project name. This is a label for the project, not a task name.
|
|
36
|
+
|
|
37
|
+
**If no arguments:**
|
|
38
|
+
Ask: "What's the name of this project?"
|
|
39
|
+
|
|
40
|
+
**Check if project already exists:**
|
|
41
|
+
```bash
|
|
42
|
+
[ -d ".specd/tasks/project" ] && echo "exists"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**If project exists:**
|
|
46
|
+
Use AskUserQuestion:
|
|
47
|
+
- header: "Project Exists"
|
|
48
|
+
- question: "A project has already been initialized. What would you like to do?"
|
|
49
|
+
- options:
|
|
50
|
+
- "Start fresh" — Delete existing and reinitialize
|
|
51
|
+
- "View existing" — Show current PROJECT.md
|
|
52
|
+
|
|
53
|
+
**If "Start fresh":**
|
|
54
|
+
```bash
|
|
55
|
+
rm -rf .specd/tasks/project
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**If "View existing":**
|
|
59
|
+
Read and display `.specd/tasks/project/PROJECT.md`. End workflow.
|
|
60
|
+
|
|
61
|
+
**If new project:**
|
|
62
|
+
Continue to questioning.
|
|
63
|
+
</step>
|
|
64
|
+
|
|
65
|
+
<step name="questioning">
|
|
66
|
+
Collaborative conversation to understand the project vision.
|
|
67
|
+
|
|
68
|
+
**Opening:**
|
|
69
|
+
```
|
|
70
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
71
|
+
NEW PROJECT: {project-name}
|
|
72
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
73
|
+
|
|
74
|
+
Tell me about this project. What are you building and why?
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Wait for response.
|
|
78
|
+
|
|
79
|
+
**Follow the thread:**
|
|
80
|
+
Based on their response, explore:
|
|
81
|
+
- What's the core value? ("When you say X, tell me more about...")
|
|
82
|
+
- Who uses it? ("Who's the primary user? What's their workflow?")
|
|
83
|
+
- What does it need to do? ("What are the must-have capabilities for v1?")
|
|
84
|
+
- Any known technical constraints? ("Any preferences for stack, hosting, team size?")
|
|
85
|
+
- What's out of scope? ("What should we explicitly NOT build?")
|
|
86
|
+
- Sub-projects? ("Does this feel like one app or multiple services?")
|
|
87
|
+
|
|
88
|
+
**Record decisions inline:**
|
|
89
|
+
When the user makes a clear choice, note it for DECISIONS.md later.
|
|
90
|
+
|
|
91
|
+
**After 4-6 exchanges, summarize:**
|
|
92
|
+
```
|
|
93
|
+
Here's what I'm hearing:
|
|
94
|
+
|
|
95
|
+
**Vision:** {one-liner}
|
|
96
|
+
**Problem:** {what it solves}
|
|
97
|
+
**Users:** {who and how}
|
|
98
|
+
**Key goals:**
|
|
99
|
+
- {goal 1}
|
|
100
|
+
- {goal 2}
|
|
101
|
+
- {goal 3}
|
|
102
|
+
|
|
103
|
+
**Constraints:** {known constraints}
|
|
104
|
+
**Sub-projects:** {identified or "TBD from research"}
|
|
105
|
+
|
|
106
|
+
Does that capture it? Anything to add or correct?
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**When to move on:**
|
|
110
|
+
- User confirms the summary
|
|
111
|
+
- You have enough for a meaningful PROJECT.md
|
|
112
|
+
- Technical details can wait for research
|
|
113
|
+
|
|
114
|
+
Continue to write_project.
|
|
115
|
+
</step>
|
|
116
|
+
|
|
117
|
+
<step name="write_project">
|
|
118
|
+
Create the project task directory and write initial documents.
|
|
119
|
+
|
|
120
|
+
**Create directory:**
|
|
121
|
+
```bash
|
|
122
|
+
mkdir -p .specd/tasks/project
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Write PROJECT.md:**
|
|
126
|
+
Use template at `~/.claude/specdacular/templates/tasks/PROJECT.md`
|
|
127
|
+
Fill in from the questioning conversation.
|
|
128
|
+
|
|
129
|
+
**Write CONTEXT.md:**
|
|
130
|
+
Use template at `~/.claude/specdacular/templates/tasks/CONTEXT.md`
|
|
131
|
+
- Discussion summary from questioning
|
|
132
|
+
- Any resolved questions
|
|
133
|
+
- Open questions that research should address
|
|
134
|
+
- Gray areas (if any)
|
|
135
|
+
|
|
136
|
+
**Write DECISIONS.md:**
|
|
137
|
+
Use template at `~/.claude/specdacular/templates/tasks/DECISIONS.md`
|
|
138
|
+
Record any decisions made during questioning using:
|
|
139
|
+
@~/.claude/specdacular/references/record-decision.md
|
|
140
|
+
|
|
141
|
+
**Write config.json:**
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"task_name": "project",
|
|
145
|
+
"project_name": "{project-name}",
|
|
146
|
+
"created": "{date}",
|
|
147
|
+
"stage": "questioning",
|
|
148
|
+
"type": "project"
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Continue to commit.
|
|
153
|
+
</step>
|
|
154
|
+
|
|
155
|
+
<step name="commit">
|
|
156
|
+
Commit the project initialization.
|
|
157
|
+
|
|
158
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
159
|
+
|
|
160
|
+
- **$FILES:** `.specd/tasks/project/`
|
|
161
|
+
- **$MESSAGE:** `docs(project): initialize project — {project-name}` with brief vision summary
|
|
162
|
+
- **$LABEL:** `project initialization`
|
|
163
|
+
|
|
164
|
+
Continue to research.
|
|
165
|
+
</step>
|
|
166
|
+
|
|
167
|
+
<step name="research">
|
|
168
|
+
Spawn 4 parallel research agents to investigate the project domain.
|
|
169
|
+
|
|
170
|
+
**Show banner:**
|
|
171
|
+
```
|
|
172
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
173
|
+
RESEARCHING: {project-name}
|
|
174
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
175
|
+
Spawning 4 research agents...
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Prepare context:**
|
|
179
|
+
Read `.specd/tasks/project/PROJECT.md` and `.specd/tasks/project/CONTEXT.md`.
|
|
180
|
+
Build `$PROJECT_CONTEXT` combining: vision, problem, users, goals, constraints, open questions.
|
|
181
|
+
|
|
182
|
+
**Spawn 4 agents using Task tool with `run_in_background: true`:**
|
|
183
|
+
|
|
184
|
+
All agents use `subagent_type: "general-purpose"` and `model: "sonnet"`.
|
|
185
|
+
|
|
186
|
+
**Agent 1 — Stack:**
|
|
187
|
+
```
|
|
188
|
+
Task(
|
|
189
|
+
subagent_type: "general-purpose"
|
|
190
|
+
model: "sonnet"
|
|
191
|
+
description: "Stack research"
|
|
192
|
+
run_in_background: true
|
|
193
|
+
prompt: "First, read {install-path}/specdacular/agents/project-researcher.md for your role.
|
|
194
|
+
|
|
195
|
+
<focus_area>Stack</focus_area>
|
|
196
|
+
|
|
197
|
+
<project_context>
|
|
198
|
+
$PROJECT_CONTEXT
|
|
199
|
+
</project_context>
|
|
200
|
+
|
|
201
|
+
<research_questions>
|
|
202
|
+
1. What's the best technology stack for this type of project?
|
|
203
|
+
2. What frameworks and libraries are recommended for each layer?
|
|
204
|
+
3. What infrastructure (hosting, CI/CD, monitoring) fits best?
|
|
205
|
+
4. What are the key version requirements and compatibility concerns?
|
|
206
|
+
</research_questions>
|
|
207
|
+
|
|
208
|
+
Return findings in the Stack Research output format from your role definition."
|
|
209
|
+
)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Agent 2 — Features:**
|
|
213
|
+
```
|
|
214
|
+
Task(
|
|
215
|
+
subagent_type: "general-purpose"
|
|
216
|
+
model: "sonnet"
|
|
217
|
+
description: "Features research"
|
|
218
|
+
run_in_background: true
|
|
219
|
+
prompt: "First, read {install-path}/specdacular/agents/project-researcher.md for your role.
|
|
220
|
+
|
|
221
|
+
<focus_area>Features</focus_area>
|
|
222
|
+
|
|
223
|
+
<project_context>
|
|
224
|
+
$PROJECT_CONTEXT
|
|
225
|
+
</project_context>
|
|
226
|
+
|
|
227
|
+
<research_questions>
|
|
228
|
+
1. What features are table stakes (users expect them)?
|
|
229
|
+
2. What features would differentiate this project?
|
|
230
|
+
3. What features should wait for v2+?
|
|
231
|
+
4. What anti-features should be explicitly avoided?
|
|
232
|
+
</research_questions>
|
|
233
|
+
|
|
234
|
+
Return findings in the Features Research output format from your role definition."
|
|
235
|
+
)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Agent 3 — Architecture:**
|
|
239
|
+
```
|
|
240
|
+
Task(
|
|
241
|
+
subagent_type: "general-purpose"
|
|
242
|
+
model: "sonnet"
|
|
243
|
+
description: "Architecture research"
|
|
244
|
+
run_in_background: true
|
|
245
|
+
prompt: "First, read {install-path}/specdacular/agents/project-researcher.md for your role.
|
|
246
|
+
|
|
247
|
+
<focus_area>Architecture</focus_area>
|
|
248
|
+
|
|
249
|
+
<project_context>
|
|
250
|
+
$PROJECT_CONTEXT
|
|
251
|
+
</project_context>
|
|
252
|
+
|
|
253
|
+
<research_questions>
|
|
254
|
+
1. What architecture pattern fits this project (monolith, microservices, modular)?
|
|
255
|
+
2. What are the natural service boundaries?
|
|
256
|
+
3. What does the data model look like?
|
|
257
|
+
4. What directory structure is recommended?
|
|
258
|
+
</research_questions>
|
|
259
|
+
|
|
260
|
+
Return findings in the Architecture Research output format from your role definition."
|
|
261
|
+
)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Agent 4 — Pitfalls:**
|
|
265
|
+
```
|
|
266
|
+
Task(
|
|
267
|
+
subagent_type: "general-purpose"
|
|
268
|
+
model: "sonnet"
|
|
269
|
+
description: "Pitfalls research"
|
|
270
|
+
run_in_background: true
|
|
271
|
+
prompt: "First, read {install-path}/specdacular/agents/project-researcher.md for your role.
|
|
272
|
+
|
|
273
|
+
<focus_area>Pitfalls</focus_area>
|
|
274
|
+
|
|
275
|
+
<project_context>
|
|
276
|
+
$PROJECT_CONTEXT
|
|
277
|
+
</project_context>
|
|
278
|
+
|
|
279
|
+
<research_questions>
|
|
280
|
+
1. What do teams commonly get wrong when building this type of project?
|
|
281
|
+
2. What are the performance and scalability pitfalls?
|
|
282
|
+
3. What security concerns are specific to this domain?
|
|
283
|
+
4. What architectural mistakes lead to rewrites?
|
|
284
|
+
</research_questions>
|
|
285
|
+
|
|
286
|
+
Return findings in the Pitfalls Research output format from your role definition."
|
|
287
|
+
)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Wait for all agents to complete.**
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
Research agents complete:
|
|
294
|
+
- Stack: {✓ | ✗}
|
|
295
|
+
- Features: {✓ | ✗}
|
|
296
|
+
- Architecture: {✓ | ✗}
|
|
297
|
+
- Pitfalls: {✓ | ✗}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Continue to write_research.
|
|
301
|
+
</step>
|
|
302
|
+
|
|
303
|
+
<step name="write_research">
|
|
304
|
+
Write research findings to files and synthesize a summary.
|
|
305
|
+
|
|
306
|
+
**Create research directory:**
|
|
307
|
+
```bash
|
|
308
|
+
mkdir -p .specd/tasks/project/research
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Write individual research files from agent outputs:**
|
|
312
|
+
- `.specd/tasks/project/research/STACK.md` — Stack agent findings
|
|
313
|
+
- `.specd/tasks/project/research/FEATURES.md` — Features agent findings
|
|
314
|
+
- `.specd/tasks/project/research/ARCHITECTURE.md` — Architecture agent findings
|
|
315
|
+
- `.specd/tasks/project/research/PITFALLS.md` — Pitfalls agent findings
|
|
316
|
+
|
|
317
|
+
**Synthesize SUMMARY.md:**
|
|
318
|
+
Read all 4 files and write `.specd/tasks/project/research/SUMMARY.md` containing:
|
|
319
|
+
|
|
320
|
+
```markdown
|
|
321
|
+
# Research Summary: {project-name}
|
|
322
|
+
|
|
323
|
+
## Key Recommendation
|
|
324
|
+
|
|
325
|
+
{One paragraph: the single most important takeaway from research}
|
|
326
|
+
|
|
327
|
+
## Stack
|
|
328
|
+
|
|
329
|
+
{2-3 sentence summary of recommended stack}
|
|
330
|
+
|
|
331
|
+
## Features
|
|
332
|
+
|
|
333
|
+
- **Table stakes:** {count} features identified
|
|
334
|
+
- **Differentiators:** {count} features identified
|
|
335
|
+
- **v2+:** {count} features deferred
|
|
336
|
+
|
|
337
|
+
## Architecture
|
|
338
|
+
|
|
339
|
+
{2-3 sentence summary of recommended architecture}
|
|
340
|
+
|
|
341
|
+
## Pitfalls
|
|
342
|
+
|
|
343
|
+
- **Critical:** {count} — {brief list}
|
|
344
|
+
- **Moderate:** {count}
|
|
345
|
+
- **Minor:** {count}
|
|
346
|
+
|
|
347
|
+
## Confidence
|
|
348
|
+
|
|
349
|
+
| Area | Level | Notes |
|
|
350
|
+
|------|-------|-------|
|
|
351
|
+
| Stack | {level} | {brief note} |
|
|
352
|
+
| Features | {level} | {brief note} |
|
|
353
|
+
| Architecture | {level} | {brief note} |
|
|
354
|
+
| Pitfalls | {level} | {brief note} |
|
|
355
|
+
|
|
356
|
+
## Roadmap Implications
|
|
357
|
+
|
|
358
|
+
{How research findings should influence requirements and phasing}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**Update config.json:**
|
|
362
|
+
```json
|
|
363
|
+
{
|
|
364
|
+
"stage": "research",
|
|
365
|
+
...
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Continue to commit_research.
|
|
370
|
+
</step>
|
|
371
|
+
|
|
372
|
+
<step name="commit_research">
|
|
373
|
+
Commit research files.
|
|
374
|
+
|
|
375
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
376
|
+
|
|
377
|
+
- **$FILES:** `.specd/tasks/project/research/ .specd/tasks/project/config.json`
|
|
378
|
+
- **$MESSAGE:** `docs(project): research complete — {project-name}` with key findings summary
|
|
379
|
+
- **$LABEL:** `research findings`
|
|
380
|
+
|
|
381
|
+
Continue to research_complete.
|
|
382
|
+
</step>
|
|
383
|
+
|
|
384
|
+
<step name="research_complete">
|
|
385
|
+
Show research summary and indicate next steps.
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
389
|
+
RESEARCH COMPLETE
|
|
390
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
391
|
+
|
|
392
|
+
**Project:** {project-name}
|
|
393
|
+
|
|
394
|
+
**Key recommendation:** {one-liner from SUMMARY.md}
|
|
395
|
+
|
|
396
|
+
**Findings:**
|
|
397
|
+
- Stack: {brief summary}
|
|
398
|
+
- Features: {brief summary}
|
|
399
|
+
- Architecture: {brief summary}
|
|
400
|
+
- Pitfalls: {brief summary}
|
|
401
|
+
|
|
402
|
+
**Confidence:** {overall level}
|
|
403
|
+
|
|
404
|
+
## Created
|
|
405
|
+
|
|
406
|
+
- `.specd/tasks/project/research/STACK.md`
|
|
407
|
+
- `.specd/tasks/project/research/FEATURES.md`
|
|
408
|
+
- `.specd/tasks/project/research/ARCHITECTURE.md`
|
|
409
|
+
- `.specd/tasks/project/research/PITFALLS.md`
|
|
410
|
+
- `.specd/tasks/project/research/SUMMARY.md`
|
|
411
|
+
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
Continue to requirements.
|
|
415
|
+
</step>
|
|
416
|
+
|
|
417
|
+
<step name="requirements">
|
|
418
|
+
Scope v1 features from research findings via multi-select.
|
|
419
|
+
|
|
420
|
+
```
|
|
421
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
422
|
+
REQUIREMENTS SCOPING: {project-name}
|
|
423
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**Read research FEATURES.md:**
|
|
427
|
+
```bash
|
|
428
|
+
cat .specd/tasks/project/research/FEATURES.md
|
|
429
|
+
```
|
|
430
|
+
Parse features by category: table stakes, differentiators, nice-to-have, anti-features.
|
|
431
|
+
|
|
432
|
+
**Present features for scoping using AskUserQuestion with multiSelect: true.**
|
|
433
|
+
|
|
434
|
+
For each category, present features in batches of up to 4 (AskUserQuestion limit):
|
|
435
|
+
|
|
436
|
+
**Table Stakes:**
|
|
437
|
+
```
|
|
438
|
+
**Table Stakes** — Users expect these. Deselect only if you have a reason.
|
|
439
|
+
```
|
|
440
|
+
Use AskUserQuestion:
|
|
441
|
+
- header: "Table Stakes"
|
|
442
|
+
- question: "Which table stakes features should be in v1?"
|
|
443
|
+
- multiSelect: true
|
|
444
|
+
- options: up to 4 features per batch (label: feature name, description: brief description)
|
|
445
|
+
- Mark all as recommended for table stakes
|
|
446
|
+
|
|
447
|
+
If >4 table stakes features, use multiple AskUserQuestion calls.
|
|
448
|
+
|
|
449
|
+
**Differentiators:**
|
|
450
|
+
```
|
|
451
|
+
**Differentiators** — These set your project apart. Pick what matters for v1.
|
|
452
|
+
```
|
|
453
|
+
Use AskUserQuestion:
|
|
454
|
+
- header: "Differentiators"
|
|
455
|
+
- question: "Which differentiator features should be in v1?"
|
|
456
|
+
- multiSelect: true
|
|
457
|
+
- options: up to 4 per batch
|
|
458
|
+
|
|
459
|
+
**Nice-to-Have:**
|
|
460
|
+
```
|
|
461
|
+
**Nice-to-Have** — These can wait for v2+. Include any you want in v1.
|
|
462
|
+
```
|
|
463
|
+
Use AskUserQuestion:
|
|
464
|
+
- header: "Nice-to-Have"
|
|
465
|
+
- question: "Any nice-to-have features to include in v1?"
|
|
466
|
+
- multiSelect: true
|
|
467
|
+
- options: up to 4 per batch
|
|
468
|
+
|
|
469
|
+
**After all selections:**
|
|
470
|
+
|
|
471
|
+
Compile results:
|
|
472
|
+
- Selected features → v1 requirements with REQ-IDs (REQ-001, REQ-002, ...)
|
|
473
|
+
- Unselected table stakes/differentiators → v2+ with rationale "Deferred by user during scoping"
|
|
474
|
+
- Unselected nice-to-haves → v2+
|
|
475
|
+
- Anti-features from research → out of scope
|
|
476
|
+
|
|
477
|
+
**Write REQUIREMENTS.md:**
|
|
478
|
+
Use template at `~/.claude/specdacular/templates/tasks/REQUIREMENTS.md`
|
|
479
|
+
Write to `.specd/tasks/project/REQUIREMENTS.md`.
|
|
480
|
+
|
|
481
|
+
**Show summary:**
|
|
482
|
+
```
|
|
483
|
+
**v1 Scope:**
|
|
484
|
+
- {count} table stakes
|
|
485
|
+
- {count} differentiators
|
|
486
|
+
- {count} nice-to-haves
|
|
487
|
+
Total: {count} requirements
|
|
488
|
+
|
|
489
|
+
**Deferred to v2+:** {count}
|
|
490
|
+
**Out of scope:** {count}
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
**Commit:**
|
|
494
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
495
|
+
|
|
496
|
+
- **$FILES:** `.specd/tasks/project/REQUIREMENTS.md`
|
|
497
|
+
- **$MESSAGE:** `docs(project): requirements scoped — {count} v1 requirements`
|
|
498
|
+
- **$LABEL:** `requirements scoped`
|
|
499
|
+
|
|
500
|
+
Continue to roadmap.
|
|
501
|
+
</step>
|
|
502
|
+
|
|
503
|
+
<step name="roadmap">
|
|
504
|
+
Generate a phased roadmap from requirements, research, and architecture findings.
|
|
505
|
+
|
|
506
|
+
```
|
|
507
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
508
|
+
GENERATING ROADMAP: {project-name}
|
|
509
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
**Read context:**
|
|
513
|
+
- `.specd/tasks/project/REQUIREMENTS.md` — v1 requirements with REQ-IDs
|
|
514
|
+
- `.specd/tasks/project/research/ARCHITECTURE.md` — service boundaries, sub-projects
|
|
515
|
+
- `.specd/tasks/project/research/STACK.md` — technology choices
|
|
516
|
+
- `.specd/tasks/project/research/SUMMARY.md` — roadmap implications
|
|
517
|
+
|
|
518
|
+
**Identify sub-projects:**
|
|
519
|
+
From architecture research service boundaries and questioning context:
|
|
520
|
+
- Each service/boundary = potential sub-project
|
|
521
|
+
- If user specified sub-projects during questioning, use those
|
|
522
|
+
- Single-service projects still get one sub-project entry (DEC-002: always orchestrator mode)
|
|
523
|
+
|
|
524
|
+
**Generate phases:**
|
|
525
|
+
Order by dependency:
|
|
526
|
+
1. Project setup / infrastructure (environment, CI/CD, shared config)
|
|
527
|
+
2. Data model / core types (shared across services)
|
|
528
|
+
3. API / backend services (data layer before consumers)
|
|
529
|
+
4. Frontend / UI (consumes APIs)
|
|
530
|
+
5. Integration / cross-service features
|
|
531
|
+
6. Polish / optimization
|
|
532
|
+
|
|
533
|
+
Map each phase to the REQ-IDs it satisfies. Assign phases to sub-projects.
|
|
534
|
+
|
|
535
|
+
**Write ROADMAP.md:**
|
|
536
|
+
Write to `.specd/tasks/project/ROADMAP.md`:
|
|
537
|
+
|
|
538
|
+
```markdown
|
|
539
|
+
# Roadmap: {project-name}
|
|
540
|
+
|
|
541
|
+
## Overview
|
|
542
|
+
|
|
543
|
+
| Metric | Value |
|
|
544
|
+
|--------|-------|
|
|
545
|
+
| Total Phases | {count} |
|
|
546
|
+
| Sub-Projects | {count} |
|
|
547
|
+
| v1 Requirements | {count} |
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## Sub-Projects
|
|
552
|
+
|
|
553
|
+
| Name | Type | Technology | Description |
|
|
554
|
+
|------|------|-----------|-------------|
|
|
555
|
+
| {name} | {frontend/backend/worker/etc.} | {stack} | {what it does} |
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
## Phases
|
|
560
|
+
|
|
561
|
+
{For each phase:}
|
|
562
|
+
- [ ] **Phase {N}: {Name}** — {goal} ({REQ-IDs})
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
## Phase Details
|
|
567
|
+
|
|
568
|
+
### Phase {N}: {Name}
|
|
569
|
+
|
|
570
|
+
**Goal:** {what this phase accomplishes}
|
|
571
|
+
**Sub-project:** {which sub-project this targets}
|
|
572
|
+
**Requirements:** {REQ-IDs this phase satisfies}
|
|
573
|
+
|
|
574
|
+
**Creates:**
|
|
575
|
+
- {key deliverables}
|
|
576
|
+
|
|
577
|
+
**Dependencies:** {earlier phases this depends on}
|
|
578
|
+
|
|
579
|
+
**Success Criteria:**
|
|
580
|
+
1. {testable criterion}
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## Execution Order
|
|
585
|
+
|
|
586
|
+
{Dependency diagram}
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## Requirements Coverage
|
|
591
|
+
|
|
592
|
+
| REQ-ID | Feature | Phase |
|
|
593
|
+
|--------|---------|-------|
|
|
594
|
+
| REQ-001 | {name} | Phase {N} |
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
**Update config.json:**
|
|
598
|
+
```json
|
|
599
|
+
{
|
|
600
|
+
"stage": "roadmap",
|
|
601
|
+
...
|
|
602
|
+
}
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
**Commit:**
|
|
606
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
607
|
+
|
|
608
|
+
- **$FILES:** `.specd/tasks/project/ROADMAP.md .specd/tasks/project/config.json`
|
|
609
|
+
- **$MESSAGE:** `docs(project): roadmap created — {N} phases, {N} sub-projects`
|
|
610
|
+
- **$LABEL:** `roadmap created`
|
|
611
|
+
|
|
612
|
+
Continue to roadmap_complete.
|
|
613
|
+
</step>
|
|
614
|
+
|
|
615
|
+
<step name="roadmap_complete">
|
|
616
|
+
Show roadmap summary and indicate next steps.
|
|
617
|
+
|
|
618
|
+
```
|
|
619
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
620
|
+
ROADMAP COMPLETE
|
|
621
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
622
|
+
|
|
623
|
+
**Project:** {project-name}
|
|
624
|
+
|
|
625
|
+
**Sub-projects:** {list}
|
|
626
|
+
**Phases:** {count}
|
|
627
|
+
**Requirements covered:** {count}/{total}
|
|
628
|
+
|
|
629
|
+
{For each phase:}
|
|
630
|
+
Phase {N}: {Name} — {goal}
|
|
631
|
+
Sub-project: {name}
|
|
632
|
+
Requirements: {REQ-IDs}
|
|
633
|
+
|
|
634
|
+
## Created
|
|
635
|
+
|
|
636
|
+
- `.specd/tasks/project/REQUIREMENTS.md` — {count} v1 requirements
|
|
637
|
+
- `.specd/tasks/project/ROADMAP.md` — {count} phases
|
|
638
|
+
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
Continue to scaffold.
|
|
642
|
+
</step>
|
|
643
|
+
|
|
644
|
+
<step name="scaffold">
|
|
645
|
+
Create orchestrator config, sub-project directories, and seed setup tasks.
|
|
646
|
+
|
|
647
|
+
```
|
|
648
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
649
|
+
SCAFFOLDING: {project-name}
|
|
650
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
**Read context:**
|
|
654
|
+
- `.specd/tasks/project/ROADMAP.md` — sub-projects list, phases per sub-project
|
|
655
|
+
- `.specd/tasks/project/REQUIREMENTS.md` — v1 requirements for seeding setup tasks
|
|
656
|
+
- `.specd/tasks/project/research/STACK.md` — technology per sub-project
|
|
657
|
+
- `.specd/tasks/project/research/ARCHITECTURE.md` — service responsibilities
|
|
658
|
+
|
|
659
|
+
**Create orchestrator config at root:**
|
|
660
|
+
Write `.specd/config.json`:
|
|
661
|
+
```json
|
|
662
|
+
{
|
|
663
|
+
"type": "orchestrator",
|
|
664
|
+
"project_name": "{project-name}",
|
|
665
|
+
"created": "{date}",
|
|
666
|
+
"projects": [
|
|
667
|
+
{
|
|
668
|
+
"name": "{sub-project-name}",
|
|
669
|
+
"path": "{sub-project-name}/",
|
|
670
|
+
"type": "{frontend|backend|worker|etc.}"
|
|
671
|
+
}
|
|
672
|
+
]
|
|
673
|
+
}
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
Note: If `.specd/config.json` already exists (e.g., with auto-commit settings), merge the orchestrator fields into it rather than overwriting.
|
|
677
|
+
|
|
678
|
+
**For each sub-project from ROADMAP.md:**
|
|
679
|
+
|
|
680
|
+
1. Create directory structure:
|
|
681
|
+
```bash
|
|
682
|
+
mkdir -p {sub-project-name}/.specd/tasks/setup
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
2. Write sub-project `.specd/config.json`:
|
|
686
|
+
```json
|
|
687
|
+
{
|
|
688
|
+
"type": "project",
|
|
689
|
+
"project_name": "{sub-project-name}",
|
|
690
|
+
"orchestrator": "../",
|
|
691
|
+
"created": "{date}"
|
|
692
|
+
}
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
3. Write `.specd/tasks/setup/FEATURE.md` seeded from system-level research.
|
|
696
|
+
Use the FEATURE.md template (`~/.claude/specdacular/templates/tasks/FEATURE.md`) filled with:
|
|
697
|
+
|
|
698
|
+
- **What This Is:** Initial setup for {sub-project-name} — {description from ROADMAP.md}. Creates project structure, installs dependencies, configures development environment.
|
|
699
|
+
|
|
700
|
+
- **Must Create:** Based on STACK.md recommendations for this sub-project:
|
|
701
|
+
- Project configuration files (package.json, tsconfig, etc.)
|
|
702
|
+
- Directory structure per ARCHITECTURE.md recommendations
|
|
703
|
+
- Development environment config (linting, formatting, testing)
|
|
704
|
+
- Basic entry point / hello world
|
|
705
|
+
|
|
706
|
+
- **Must Integrate With:** Other sub-projects per ARCHITECTURE.md:
|
|
707
|
+
- Shared types/interfaces if identified
|
|
708
|
+
- API contracts between services
|
|
709
|
+
- Orchestrator config at root
|
|
710
|
+
|
|
711
|
+
- **Constraints:** From STACK.md and ARCHITECTURE.md:
|
|
712
|
+
- Specific technology versions
|
|
713
|
+
- Architecture patterns to follow
|
|
714
|
+
- Coding standards
|
|
715
|
+
|
|
716
|
+
- **Success Criteria:**
|
|
717
|
+
- Project initializes without errors
|
|
718
|
+
- Dev server/process starts
|
|
719
|
+
- Tests run (even if just a placeholder)
|
|
720
|
+
- Linting passes
|
|
721
|
+
|
|
722
|
+
4. Show per sub-project:
|
|
723
|
+
```
|
|
724
|
+
Created: {sub-project-name}/
|
|
725
|
+
├── .specd/config.json
|
|
726
|
+
└── .specd/tasks/setup/FEATURE.md
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
**Update project config.json:**
|
|
730
|
+
```json
|
|
731
|
+
{
|
|
732
|
+
"stage": "complete",
|
|
733
|
+
...
|
|
734
|
+
}
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
**Commit:**
|
|
738
|
+
@~/.claude/specdacular/references/commit-docs.md
|
|
739
|
+
|
|
740
|
+
- **$FILES:** `.specd/config.json` plus all sub-project `.specd/` directories
|
|
741
|
+
- **$MESSAGE:** `docs(project): scaffold {N} sub-projects` with list of sub-project names
|
|
742
|
+
- **$LABEL:** `scaffolding complete`
|
|
743
|
+
|
|
744
|
+
Continue to completion.
|
|
745
|
+
</step>
|
|
746
|
+
|
|
747
|
+
<step name="completion">
|
|
748
|
+
Show final project summary with all artifacts and next steps.
|
|
749
|
+
|
|
750
|
+
```
|
|
751
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
752
|
+
PROJECT COMPLETE: {project-name}
|
|
753
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
754
|
+
|
|
755
|
+
## Artifacts
|
|
756
|
+
|
|
757
|
+
- `.specd/tasks/project/PROJECT.md` — Project vision
|
|
758
|
+
- `.specd/tasks/project/research/` — Stack, features, architecture, pitfalls
|
|
759
|
+
- `.specd/tasks/project/REQUIREMENTS.md` — {count} v1 requirements
|
|
760
|
+
- `.specd/tasks/project/ROADMAP.md` — {count} phases
|
|
761
|
+
- `.specd/config.json` — Orchestrator config
|
|
762
|
+
|
|
763
|
+
## Sub-Projects
|
|
764
|
+
|
|
765
|
+
{For each sub-project:}
|
|
766
|
+
**{name}/** — {description}
|
|
767
|
+
└── Ready: `/specd.continue setup` to begin
|
|
768
|
+
|
|
769
|
+
## Next Steps
|
|
770
|
+
|
|
771
|
+
For each sub-project, run the setup task:
|
|
772
|
+
|
|
773
|
+
cd {sub-project-name}
|
|
774
|
+
/specd.continue setup
|
|
775
|
+
|
|
776
|
+
This will walk through setting up the project using the
|
|
777
|
+
research findings and requirements from this session.
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
End workflow.
|
|
781
|
+
</step>
|
|
782
|
+
|
|
783
|
+
</process>
|
|
784
|
+
|
|
785
|
+
<success_criteria>
|
|
786
|
+
- Questioning produces PROJECT.md with clear vision, goals, users, constraints
|
|
787
|
+
- Project directory created at `.specd/tasks/project/`
|
|
788
|
+
- CONTEXT.md and DECISIONS.md initialized from discussion
|
|
789
|
+
- 4 research agents spawn in parallel after PROJECT.md is written
|
|
790
|
+
- Each agent writes its findings (STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md)
|
|
791
|
+
- SUMMARY.md synthesized from all 4 outputs
|
|
792
|
+
- Requirements scoped via multi-select from research FEATURES.md
|
|
793
|
+
- REQUIREMENTS.md written with REQ-IDs, v1/v2/out-of-scope sections
|
|
794
|
+
- Roadmap generated with phases mapped to REQ-IDs and sub-projects
|
|
795
|
+
- Orchestrator config created at root with projects array
|
|
796
|
+
- Sub-project directories created with config and seeded setup FEATURE.md
|
|
797
|
+
- All files committed to git
|
|
798
|
+
- Completion banner shows all artifacts and next steps per sub-project
|
|
799
|
+
</success_criteria>
|