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,83 @@
|
|
|
1
|
+
<shared name="load_context">
|
|
2
|
+
|
|
3
|
+
## Load Task Context
|
|
4
|
+
|
|
5
|
+
Load all context files for a task. Use after validation.
|
|
6
|
+
|
|
7
|
+
**Before using this reference, you must have ready:**
|
|
8
|
+
- `$TASK_NAME` — the task name
|
|
9
|
+
- `$PHASE` (optional) — phase number, if loading phase-specific context
|
|
10
|
+
|
|
11
|
+
### Always Load
|
|
12
|
+
|
|
13
|
+
| File | Provides |
|
|
14
|
+
|------|----------|
|
|
15
|
+
| `FEATURE.md` | Technical requirements, files to create, integration points, constraints |
|
|
16
|
+
| `CONTEXT.md` | Discussion history, resolved questions, gray areas remaining |
|
|
17
|
+
| `DECISIONS.md` | Active decisions that constrain implementation |
|
|
18
|
+
| `STATE.md` | Current stage, progress, completed phases |
|
|
19
|
+
| `config.json` | Task settings, stage, decision count |
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Read all required files
|
|
23
|
+
cat .specd/tasks/$TASK_NAME/FEATURE.md
|
|
24
|
+
cat .specd/tasks/$TASK_NAME/CONTEXT.md
|
|
25
|
+
cat .specd/tasks/$TASK_NAME/DECISIONS.md
|
|
26
|
+
cat .specd/tasks/$TASK_NAME/STATE.md
|
|
27
|
+
cat .specd/tasks/$TASK_NAME/config.json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Load If Exists
|
|
31
|
+
|
|
32
|
+
| File | Provides | When Useful |
|
|
33
|
+
|------|----------|-------------|
|
|
34
|
+
| `RESEARCH.md` | Implementation patterns, library decisions, pitfalls | Planning, execution |
|
|
35
|
+
| `ROADMAP.md` | Phase overview, success criteria, dependencies | Planning, execution, review |
|
|
36
|
+
| `CHANGELOG.md` | Implementation deviations, execution-time decisions | Review, continued execution |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Check and read optional files
|
|
40
|
+
[ -f ".specd/tasks/$TASK_NAME/RESEARCH.md" ] && cat .specd/tasks/$TASK_NAME/RESEARCH.md
|
|
41
|
+
[ -f ".specd/tasks/$TASK_NAME/ROADMAP.md" ] && cat .specd/tasks/$TASK_NAME/ROADMAP.md
|
|
42
|
+
[ -f ".specd/tasks/$TASK_NAME/CHANGELOG.md" ] && cat .specd/tasks/$TASK_NAME/CHANGELOG.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Phase-Specific Context (when $PHASE is set)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
PHASE_DIR=".specd/tasks/$TASK_NAME/phases/phase-$(printf '%02d' $PHASE)"
|
|
49
|
+
|
|
50
|
+
# Read phase plan
|
|
51
|
+
[ -f "$PHASE_DIR/PLAN.md" ] && cat "$PHASE_DIR/PLAN.md"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Codebase Context (if available)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Check for codebase docs
|
|
58
|
+
[ -d ".specd/codebase" ] && {
|
|
59
|
+
[ -f ".specd/codebase/MAP.md" ] && cat .specd/codebase/MAP.md
|
|
60
|
+
[ -f ".specd/codebase/PATTERNS.md" ] && cat .specd/codebase/PATTERNS.md
|
|
61
|
+
[ -f ".specd/codebase/STRUCTURE.md" ] && cat .specd/codebase/STRUCTURE.md
|
|
62
|
+
[ -f ".specd/codebase/CONCERNS.md" ] && cat .specd/codebase/CONCERNS.md
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Global Config
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Check for global specd config (auto-commit settings)
|
|
70
|
+
cat .specd/config.json 2>/dev/null || echo '{}'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### What to Extract After Loading
|
|
74
|
+
|
|
75
|
+
- **From FEATURE.md:** Files to create, integration points, constraints, success criteria
|
|
76
|
+
- **From CONTEXT.md:** Resolved questions, gray areas, discussion history
|
|
77
|
+
- **From DECISIONS.md:** Active decisions (filter out superseded/revoked)
|
|
78
|
+
- **From RESEARCH.md:** Patterns to follow, libraries to use, pitfalls to avoid
|
|
79
|
+
- **From ROADMAP.md:** Phase order, current phase, success criteria per phase
|
|
80
|
+
- **From STATE.md:** Current stage, completed phases, discussion session count
|
|
81
|
+
- **From codebase docs:** Code patterns, file locations, system architecture
|
|
82
|
+
|
|
83
|
+
</shared>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<shared name="record_decision">
|
|
2
|
+
|
|
3
|
+
## Record Decision
|
|
4
|
+
|
|
5
|
+
Add a new decision to DECISIONS.md with proper numbering and format.
|
|
6
|
+
|
|
7
|
+
**Before using this reference, you must have ready:**
|
|
8
|
+
- `$TASK_NAME` — the task name
|
|
9
|
+
- The decision details (from discussion, research, or review)
|
|
10
|
+
|
|
11
|
+
### When to Record
|
|
12
|
+
|
|
13
|
+
Record a decision when:
|
|
14
|
+
- Technology or library choice is made
|
|
15
|
+
- Architecture pattern is chosen
|
|
16
|
+
- Scope inclusion/exclusion is decided
|
|
17
|
+
- Multiple valid approaches exist and one is picked
|
|
18
|
+
- A constraint is discovered during discussion/research/review
|
|
19
|
+
|
|
20
|
+
### Determine Next Decision Number
|
|
21
|
+
|
|
22
|
+
Read `.specd/tasks/$TASK_NAME/DECISIONS.md` and find the highest existing DEC-{NNN} number. Increment by 1. Zero-pad to 3 digits.
|
|
23
|
+
|
|
24
|
+
### Add Decision Entry
|
|
25
|
+
|
|
26
|
+
Append to the **Active Decisions** section of DECISIONS.md:
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
### DEC-{NNN}: {Decision Title}
|
|
30
|
+
|
|
31
|
+
**Date:** {YYYY-MM-DD}
|
|
32
|
+
**Status:** Active
|
|
33
|
+
**Context:** {What situation required this decision}
|
|
34
|
+
**Decision:** {What was decided}
|
|
35
|
+
**Rationale:**
|
|
36
|
+
- {Why this choice was made}
|
|
37
|
+
- {Additional reasoning}
|
|
38
|
+
**Implications:**
|
|
39
|
+
- {What this means for implementation}
|
|
40
|
+
- {Files or patterns affected}
|
|
41
|
+
**References:**
|
|
42
|
+
- `@{path/to/relevant/code}` (if applicable)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Update Decision Log Table
|
|
46
|
+
|
|
47
|
+
Add a row to the Decision Log table at the bottom of DECISIONS.md:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
| DEC-{NNN} | {YYYY-MM-DD} | {Decision Title} | Active |
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Update Config
|
|
54
|
+
|
|
55
|
+
Increment `decisions_count` in `.specd/tasks/$TASK_NAME/config.json`.
|
|
56
|
+
|
|
57
|
+
### Multiple Decisions
|
|
58
|
+
|
|
59
|
+
When recording multiple decisions in one session, number them sequentially and add all to the log table.
|
|
60
|
+
|
|
61
|
+
</shared>
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<shared name="
|
|
1
|
+
<shared name="select_task">
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Task Selection
|
|
4
4
|
|
|
5
|
-
Determine which
|
|
5
|
+
Determine which task to work on.
|
|
6
6
|
|
|
7
7
|
**If $ARGUMENTS provided:**
|
|
8
|
-
Use as
|
|
8
|
+
Use as task name. Normalize to kebab-case (lowercase, hyphens).
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
[ -d ".specd/
|
|
11
|
+
[ -d ".specd/tasks/$ARGUMENTS" ] || { echo "not found"; exit 1; }
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
**If
|
|
14
|
+
**If task not found:**
|
|
15
15
|
```
|
|
16
|
-
|
|
16
|
+
Task '{name}' not found.
|
|
17
17
|
|
|
18
|
-
Available
|
|
18
|
+
Available tasks:
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
ls -d .specd/
|
|
22
|
+
ls -d .specd/tasks/*/ 2>/dev/null | while read dir; do
|
|
23
23
|
basename "$dir"
|
|
24
24
|
done
|
|
25
25
|
```
|
|
@@ -27,31 +27,31 @@ done
|
|
|
27
27
|
End workflow.
|
|
28
28
|
|
|
29
29
|
**If no arguments:**
|
|
30
|
-
Scan for in-progress
|
|
30
|
+
Scan for in-progress tasks:
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
# List
|
|
34
|
-
for dir in .specd/
|
|
33
|
+
# List task directories with config.json
|
|
34
|
+
for dir in .specd/tasks/*/config.json; do
|
|
35
35
|
[ -f "$dir" ] && echo "$dir"
|
|
36
36
|
done
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Read each `config.json` and filter where `stage != "complete"`.
|
|
40
40
|
|
|
41
|
-
**If no
|
|
41
|
+
**If no tasks found:**
|
|
42
42
|
```
|
|
43
|
-
No
|
|
43
|
+
No tasks in progress.
|
|
44
44
|
|
|
45
|
-
Start one with /specd:
|
|
45
|
+
Start one with /specd:new
|
|
46
46
|
```
|
|
47
47
|
End workflow.
|
|
48
48
|
|
|
49
|
-
**If
|
|
49
|
+
**If tasks found:**
|
|
50
50
|
Use AskUserQuestion:
|
|
51
|
-
- header: "
|
|
52
|
-
- question: "Which
|
|
53
|
-
- options: List each
|
|
51
|
+
- header: "Task"
|
|
52
|
+
- question: "Which task would you like to work on?"
|
|
53
|
+
- options: List each task with its current stage (e.g., "my-task (discussion)", "other-task (execution)")
|
|
54
54
|
|
|
55
|
-
Use the selected
|
|
55
|
+
Use the selected task name.
|
|
56
56
|
|
|
57
57
|
</shared>
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## Phase Selection
|
|
4
4
|
|
|
5
|
-
Determine which phase to work on. Requires a
|
|
5
|
+
Determine which phase to work on. Requires a task name to be already selected.
|
|
6
6
|
|
|
7
7
|
**Read available phases:**
|
|
8
|
-
Read `.specd/
|
|
8
|
+
Read `.specd/tasks/{task-name}/ROADMAP.md` and extract the phase list with status.
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
[ -f ".specd/
|
|
11
|
+
[ -f ".specd/tasks/{task-name}/ROADMAP.md" ] || { echo "No roadmap found. Run /specd:continue to create one."; exit 1; }
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Parse the ROADMAP.md "Phases" section to get:
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<shared name="spawn_research_agents">
|
|
2
|
+
|
|
3
|
+
## Spawn Research Agents
|
|
4
|
+
|
|
5
|
+
Spawn three parallel research agents. Use `run_in_background: true` for all.
|
|
6
|
+
|
|
7
|
+
**Before using this reference, you must have ready:**
|
|
8
|
+
- `$TASK_NAME` — the task name
|
|
9
|
+
- `$TASK_CONTEXT` — summary of what's being built (from FEATURE.md)
|
|
10
|
+
- `$CONSTRAINTS` — active decisions and constraints (from DECISIONS.md)
|
|
11
|
+
- `$TECH_STACK` — technology stack (from codebase docs if available)
|
|
12
|
+
- `$FILES_TO_CREATE` — list of files to create (from FEATURE.md or PLAN.md)
|
|
13
|
+
- `$FILES_TO_MODIFY` — list of files to modify (from FEATURE.md or PLAN.md)
|
|
14
|
+
|
|
15
|
+
### Agent 1: Codebase Integration
|
|
16
|
+
|
|
17
|
+
Uses the Explore agent to analyze how the task integrates with existing code.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Task(
|
|
21
|
+
subagent_type: "Explore"
|
|
22
|
+
description: "Codebase integration research"
|
|
23
|
+
run_in_background: true
|
|
24
|
+
prompt: "Research how {task-name} should integrate with the existing codebase.
|
|
25
|
+
|
|
26
|
+
<task_context>
|
|
27
|
+
$TASK_CONTEXT
|
|
28
|
+
</task_context>
|
|
29
|
+
|
|
30
|
+
<constraints>
|
|
31
|
+
$CONSTRAINTS
|
|
32
|
+
</constraints>
|
|
33
|
+
|
|
34
|
+
<files_to_create>
|
|
35
|
+
$FILES_TO_CREATE
|
|
36
|
+
</files_to_create>
|
|
37
|
+
|
|
38
|
+
<files_to_modify>
|
|
39
|
+
$FILES_TO_MODIFY
|
|
40
|
+
</files_to_modify>
|
|
41
|
+
|
|
42
|
+
<research_questions>
|
|
43
|
+
1. What existing files/modules will new files need to import from?
|
|
44
|
+
2. What patterns do similar files in this codebase follow?
|
|
45
|
+
3. Where exactly should new files be created?
|
|
46
|
+
4. What types/interfaces already exist that should be reused?
|
|
47
|
+
5. What utility functions or hooks can be leveraged?
|
|
48
|
+
</research_questions>
|
|
49
|
+
|
|
50
|
+
<output_format>
|
|
51
|
+
## Codebase Integration
|
|
52
|
+
|
|
53
|
+
### Import Dependencies
|
|
54
|
+
- `path/to/file` — what it provides, why needed
|
|
55
|
+
|
|
56
|
+
### Patterns to Follow
|
|
57
|
+
- Pattern name: description, example file reference
|
|
58
|
+
|
|
59
|
+
### File Locations
|
|
60
|
+
- Where each new file should go
|
|
61
|
+
|
|
62
|
+
### Reusable Code
|
|
63
|
+
- Types: list with paths
|
|
64
|
+
- Utilities: list with paths
|
|
65
|
+
|
|
66
|
+
### Integration Points
|
|
67
|
+
- Where new code connects to existing code
|
|
68
|
+
</output_format>"
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Agent 2: Implementation Patterns
|
|
73
|
+
|
|
74
|
+
Uses a general-purpose agent with the feature-researcher role.
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Task(
|
|
78
|
+
subagent_type: "general-purpose"
|
|
79
|
+
model: "sonnet"
|
|
80
|
+
description: "Implementation patterns research"
|
|
81
|
+
run_in_background: true
|
|
82
|
+
prompt: "First, read ~/.claude/specdacular/agents/feature-researcher.md for your role.
|
|
83
|
+
|
|
84
|
+
<research_type>
|
|
85
|
+
Implementation patterns for {task-name}.
|
|
86
|
+
</research_type>
|
|
87
|
+
|
|
88
|
+
<task_context>
|
|
89
|
+
$TASK_CONTEXT
|
|
90
|
+
</task_context>
|
|
91
|
+
|
|
92
|
+
<tech_stack>
|
|
93
|
+
$TECH_STACK
|
|
94
|
+
</tech_stack>
|
|
95
|
+
|
|
96
|
+
<research_questions>
|
|
97
|
+
1. What's the standard approach for this type of work in this stack?
|
|
98
|
+
2. What libraries are commonly used?
|
|
99
|
+
3. What code patterns work well?
|
|
100
|
+
4. What should NOT be hand-rolled?
|
|
101
|
+
</research_questions>
|
|
102
|
+
|
|
103
|
+
<tool_strategy>
|
|
104
|
+
1. Context7 first for any library questions
|
|
105
|
+
2. Official docs via WebFetch for gaps
|
|
106
|
+
3. WebSearch for patterns (include current year)
|
|
107
|
+
4. Verify all findings
|
|
108
|
+
</tool_strategy>
|
|
109
|
+
|
|
110
|
+
<output_format>
|
|
111
|
+
## Implementation Patterns
|
|
112
|
+
|
|
113
|
+
### Standard Approach
|
|
114
|
+
{Recommended approach with rationale}
|
|
115
|
+
|
|
116
|
+
### Libraries
|
|
117
|
+
| Library | Version | Purpose | Confidence |
|
|
118
|
+
|
|
119
|
+
### Code Patterns
|
|
120
|
+
{Code examples with sources}
|
|
121
|
+
|
|
122
|
+
### Don't Hand-Roll
|
|
123
|
+
| Problem | Use Instead | Why |
|
|
124
|
+
</output_format>"
|
|
125
|
+
)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Agent 3: Pitfalls
|
|
129
|
+
|
|
130
|
+
Uses a general-purpose agent with the feature-researcher role.
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Task(
|
|
134
|
+
subagent_type: "general-purpose"
|
|
135
|
+
model: "sonnet"
|
|
136
|
+
description: "Pitfalls research"
|
|
137
|
+
run_in_background: true
|
|
138
|
+
prompt: "First, read ~/.claude/specdacular/agents/feature-researcher.md for your role.
|
|
139
|
+
|
|
140
|
+
<research_type>
|
|
141
|
+
Pitfalls research for {task-name}.
|
|
142
|
+
</research_type>
|
|
143
|
+
|
|
144
|
+
<task_context>
|
|
145
|
+
$TASK_CONTEXT
|
|
146
|
+
</task_context>
|
|
147
|
+
|
|
148
|
+
<research_questions>
|
|
149
|
+
1. What do developers commonly get wrong with this type of work?
|
|
150
|
+
2. What are the performance pitfalls?
|
|
151
|
+
3. What security issues should be avoided?
|
|
152
|
+
4. What integration mistakes happen?
|
|
153
|
+
</research_questions>
|
|
154
|
+
|
|
155
|
+
<tool_strategy>
|
|
156
|
+
1. WebSearch for common mistakes (include current year)
|
|
157
|
+
2. Look for post-mortems, issue discussions
|
|
158
|
+
3. Check official docs for warnings/caveats
|
|
159
|
+
</tool_strategy>
|
|
160
|
+
|
|
161
|
+
<output_format>
|
|
162
|
+
## Pitfalls
|
|
163
|
+
|
|
164
|
+
### Critical (causes failures/rewrites)
|
|
165
|
+
- Pitfall: description, prevention, detection
|
|
166
|
+
|
|
167
|
+
### Moderate (causes bugs/debt)
|
|
168
|
+
- Pitfall: description, prevention
|
|
169
|
+
|
|
170
|
+
### Minor (causes friction)
|
|
171
|
+
- Pitfall: description, prevention
|
|
172
|
+
</output_format>"
|
|
173
|
+
)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### After Spawning
|
|
177
|
+
|
|
178
|
+
Wait for all three agents to complete. Read their output files. Continue to synthesis using `@synthesize-research.md`.
|
|
179
|
+
|
|
180
|
+
</shared>
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<shared name="synthesize_research">
|
|
2
|
+
|
|
3
|
+
## Synthesize Research
|
|
4
|
+
|
|
5
|
+
Combine findings from three research agents into a single RESEARCH.md.
|
|
6
|
+
|
|
7
|
+
**Before using this reference, you must have ready:**
|
|
8
|
+
- `$TASK_NAME` — the task name
|
|
9
|
+
- Agent 1 output (Codebase Integration findings)
|
|
10
|
+
- Agent 2 output (Implementation Patterns findings)
|
|
11
|
+
- Agent 3 output (Pitfalls findings)
|
|
12
|
+
|
|
13
|
+
### Collect Agent Outputs
|
|
14
|
+
|
|
15
|
+
Read the output from each background agent. If an agent failed or returned empty results, note it in the confidence assessment but continue with available data.
|
|
16
|
+
|
|
17
|
+
### Write RESEARCH.md
|
|
18
|
+
|
|
19
|
+
Write to `.specd/tasks/$TASK_NAME/RESEARCH.md`:
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
# Research: {task-name}
|
|
23
|
+
|
|
24
|
+
**Researched:** {YYYY-MM-DD}
|
|
25
|
+
|
|
26
|
+
## Summary
|
|
27
|
+
|
|
28
|
+
{2-3 paragraphs synthesizing all findings}
|
|
29
|
+
|
|
30
|
+
**Key recommendation:** {One-liner actionable guidance}
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Codebase Integration
|
|
35
|
+
|
|
36
|
+
{From Agent 1 — Explore findings}
|
|
37
|
+
|
|
38
|
+
### Import From
|
|
39
|
+
| Module | Provides | Path |
|
|
40
|
+
|--------|----------|------|
|
|
41
|
+
|
|
42
|
+
### Patterns to Follow
|
|
43
|
+
{Patterns with file references}
|
|
44
|
+
|
|
45
|
+
### File Locations
|
|
46
|
+
{Exact paths for new files}
|
|
47
|
+
|
|
48
|
+
### Reusable Code
|
|
49
|
+
- **Types:** {list with @paths}
|
|
50
|
+
- **Utilities:** {list with @paths}
|
|
51
|
+
|
|
52
|
+
### Integration Points
|
|
53
|
+
{Where new code connects to existing code}
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Implementation Patterns
|
|
58
|
+
|
|
59
|
+
{From Agent 2 — Pattern findings}
|
|
60
|
+
|
|
61
|
+
### Standard Approach
|
|
62
|
+
{Recommended approach with rationale}
|
|
63
|
+
|
|
64
|
+
### Libraries
|
|
65
|
+
| Library | Version | Purpose | Confidence |
|
|
66
|
+
|---------|---------|---------|------------|
|
|
67
|
+
|
|
68
|
+
### Code Patterns
|
|
69
|
+
{Code examples with sources}
|
|
70
|
+
|
|
71
|
+
### Don't Hand-Roll
|
|
72
|
+
| Problem | Use Instead | Why |
|
|
73
|
+
|---------|-------------|-----|
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Pitfalls
|
|
78
|
+
|
|
79
|
+
{From Agent 3 — Pitfalls findings}
|
|
80
|
+
|
|
81
|
+
### Critical
|
|
82
|
+
{List with prevention strategies}
|
|
83
|
+
|
|
84
|
+
### Moderate
|
|
85
|
+
{List with prevention strategies}
|
|
86
|
+
|
|
87
|
+
### Warnings
|
|
88
|
+
| When Implementing | Watch Out For | Prevention |
|
|
89
|
+
|-------------------|---------------|------------|
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Confidence Assessment
|
|
94
|
+
|
|
95
|
+
| Area | Level | Reason |
|
|
96
|
+
|------|-------|--------|
|
|
97
|
+
| Codebase integration | {HIGH/MEDIUM/LOW} | {reason} |
|
|
98
|
+
| Implementation patterns | {HIGH/MEDIUM/LOW} | {reason} |
|
|
99
|
+
| Pitfalls | {HIGH/MEDIUM/LOW} | {reason} |
|
|
100
|
+
|
|
101
|
+
## Open Questions
|
|
102
|
+
|
|
103
|
+
{Anything that couldn't be resolved — may need discussion}
|
|
104
|
+
|
|
105
|
+
## Sources
|
|
106
|
+
|
|
107
|
+
### Codebase
|
|
108
|
+
- {file references explored}
|
|
109
|
+
|
|
110
|
+
### External
|
|
111
|
+
- {Context7 queries, docs URLs}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Confidence Levels
|
|
115
|
+
|
|
116
|
+
- **HIGH** — From Context7, official docs, or verified against codebase
|
|
117
|
+
- **MEDIUM** — From reputable sources, verified but not tested
|
|
118
|
+
- **LOW** — From general search, unverified, or conflicting sources
|
|
119
|
+
|
|
120
|
+
### Extract Decisions
|
|
121
|
+
|
|
122
|
+
If research reveals clear technology/library/pattern choices, record them using `@record-decision.md`. Common research-driven decisions:
|
|
123
|
+
- Library selections (with version)
|
|
124
|
+
- Pattern choices (e.g., "use X pattern, not Y")
|
|
125
|
+
- Scope constraints discovered from pitfalls
|
|
126
|
+
|
|
127
|
+
</shared>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<shared name="validate_task">
|
|
2
|
+
|
|
3
|
+
## Validate Task Exists
|
|
4
|
+
|
|
5
|
+
Check that a task directory exists with required files.
|
|
6
|
+
|
|
7
|
+
**Before using this reference, you must have ready:**
|
|
8
|
+
- `$TASK_NAME` — the task name (from `$ARGUMENTS` or parsed)
|
|
9
|
+
|
|
10
|
+
**Basic validation (all workflows):**
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Check task directory exists
|
|
14
|
+
[ -d ".specd/tasks/$TASK_NAME" ] || { echo "not found"; exit 1; }
|
|
15
|
+
|
|
16
|
+
# Check required files
|
|
17
|
+
[ -f ".specd/tasks/$TASK_NAME/FEATURE.md" ] || { echo "missing FEATURE.md"; exit 1; }
|
|
18
|
+
[ -f ".specd/tasks/$TASK_NAME/CONTEXT.md" ] || { echo "missing CONTEXT.md"; exit 1; }
|
|
19
|
+
[ -f ".specd/tasks/$TASK_NAME/DECISIONS.md" ] || { echo "missing DECISIONS.md"; exit 1; }
|
|
20
|
+
[ -f ".specd/tasks/$TASK_NAME/STATE.md" ] || { echo "missing STATE.md"; exit 1; }
|
|
21
|
+
[ -f ".specd/tasks/$TASK_NAME/config.json" ] || { echo "missing config.json"; exit 1; }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**If task not found:**
|
|
25
|
+
```
|
|
26
|
+
Task '{name}' not found.
|
|
27
|
+
|
|
28
|
+
Run /specd:new {name} to create it.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**If required files missing:**
|
|
32
|
+
```
|
|
33
|
+
Task '{name}' is missing required files:
|
|
34
|
+
- {missing file}
|
|
35
|
+
|
|
36
|
+
Run /specd:discuss {name} to rebuild context.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Extended validation (for plan/execute/review):**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Check phases exist (for execute/review)
|
|
43
|
+
[ -d ".specd/tasks/$TASK_NAME/phases" ] || { echo "no phases"; exit 1; }
|
|
44
|
+
|
|
45
|
+
# Check ROADMAP exists (for execute/review)
|
|
46
|
+
[ -f ".specd/tasks/$TASK_NAME/ROADMAP.md" ] || { echo "no roadmap"; exit 1; }
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**If no phases:**
|
|
50
|
+
```
|
|
51
|
+
Task '{name}' has no phases yet.
|
|
52
|
+
|
|
53
|
+
Run /specd:plan {name} to create phases.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Optional file checks (note existence, don't fail):**
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Check optional files
|
|
60
|
+
[ -f ".specd/tasks/$TASK_NAME/RESEARCH.md" ] && echo "has_research"
|
|
61
|
+
[ -f ".specd/tasks/$TASK_NAME/ROADMAP.md" ] && echo "has_roadmap"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
</shared>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Changelog: {
|
|
1
|
+
# Changelog: {task-name}
|
|
2
2
|
|
|
3
3
|
Implementation log - auto-captured decisions and deviations during execution.
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ Implementation log - auto-captured decisions and deviations during execution.
|
|
|
6
6
|
|
|
7
7
|
## Phase 1: {Phase Name}
|
|
8
8
|
|
|
9
|
-
### {YYYY-MM-DD} -
|
|
9
|
+
### {YYYY-MM-DD} - PLAN.md
|
|
10
10
|
|
|
11
11
|
**{Brief title}**
|
|
12
12
|
- **What:** {What was decided/changed}
|
|
@@ -15,12 +15,6 @@ Implementation log - auto-captured decisions and deviations during execution.
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
**{Another decision}**
|
|
19
|
-
- **What:** {Description}
|
|
20
|
-
- **Why:** {Reason}
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
18
|
## Compacted Summary
|
|
25
19
|
|
|
26
20
|
{Space for human review - summarize key decisions after implementation}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Context: {
|
|
1
|
+
# Context: {task-name}
|
|
2
2
|
|
|
3
3
|
**Last Updated:** {YYYY-MM-DD}
|
|
4
4
|
**Sessions:** {N}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
## Resolved Questions
|
|
13
13
|
|
|
14
|
-
{Questions that came up during discussion and were resolved.
|
|
14
|
+
{Questions that came up during discussion and were resolved.}
|
|
15
15
|
|
|
16
16
|
### {Question title}
|
|
17
17
|
|
|
@@ -34,20 +34,9 @@
|
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
### {Question title}
|
|
38
|
-
|
|
39
|
-
**Question:** {What was unclear}
|
|
40
|
-
|
|
41
|
-
**Resolution:** {The answer}
|
|
42
|
-
|
|
43
|
-
**Details:**
|
|
44
|
-
- {Details}
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
37
|
## Deferred Questions
|
|
49
38
|
|
|
50
|
-
{Questions identified but intentionally deferred.
|
|
39
|
+
{Questions identified but intentionally deferred.}
|
|
51
40
|
|
|
52
41
|
### {Deferred question}
|
|
53
42
|
|
|
@@ -76,6 +65,6 @@
|
|
|
76
65
|
|
|
77
66
|
## Quick Reference
|
|
78
67
|
|
|
79
|
-
- **
|
|
80
|
-
- **Decisions:** `.specd/
|
|
81
|
-
- **Research:** `.specd/
|
|
68
|
+
- **Task:** `.specd/tasks/{task-name}/FEATURE.md`
|
|
69
|
+
- **Decisions:** `.specd/tasks/{task-name}/DECISIONS.md`
|
|
70
|
+
- **Research:** `.specd/tasks/{task-name}/RESEARCH.md` (if exists)
|