@leeovery/claude-technical-workflows 2.1.38 → 2.1.39
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/package.json +1 -1
- package/skills/start-feature/SKILL.md +4 -1
- package/skills/technical-implementation/SKILL.md +0 -16
- package/skills/technical-specification/SKILL.md +82 -50
- package/skills/technical-specification/references/dependencies.md +77 -0
- package/skills/technical-specification/references/exhaustive-extraction.md +29 -0
- package/skills/technical-specification/references/process-review-findings.md +170 -0
- package/skills/technical-specification/references/review-gap-analysis.md +84 -0
- package/skills/technical-specification/references/review-input.md +57 -0
- package/skills/technical-specification/references/review-tracking-format.md +66 -0
- package/skills/technical-specification/references/spec-completion.md +114 -0
- package/skills/technical-specification/references/spec-construction.md +109 -0
- package/skills/technical-specification/references/spec-review.md +154 -0
- package/skills/technical-specification/references/specification-format.md +166 -0
- package/skills/technical-specification/references/specification-principles.md +101 -0
- package/skills/technical-specification/references/verify-source-material.md +20 -0
- package/skills/.gitkeep +0 -0
- package/skills/technical-specification/references/specification-guide.md +0 -954
package/package.json
CHANGED
|
@@ -80,7 +80,10 @@ This will create: docs/workflow/discussion/{suggested-topic}.md
|
|
|
80
80
|
|
|
81
81
|
```
|
|
82
82
|
· · · · · · · · · · · ·
|
|
83
|
-
Is this name okay
|
|
83
|
+
Is this name okay?
|
|
84
|
+
|
|
85
|
+
- **`y`/`yes`** — Use this name
|
|
86
|
+
- **`s`/`something else`** — Suggest a different name
|
|
84
87
|
· · · · · · · · · · · ·
|
|
85
88
|
```
|
|
86
89
|
|
|
@@ -332,20 +332,4 @@ Update the tracking file (`docs/workflow/implementation/{topic}/tracking.md`):
|
|
|
332
332
|
|
|
333
333
|
Commit: `impl({topic}): complete implementation`
|
|
334
334
|
|
|
335
|
-
---
|
|
336
|
-
|
|
337
|
-
## References
|
|
338
|
-
|
|
339
|
-
- **[environment-setup.md](references/environment-setup.md)** — Environment setup before implementation
|
|
340
|
-
- **[linter-setup.md](references/linter-setup.md)** — Linter discovery and configuration
|
|
341
|
-
- **[task-loop.md](references/task-loop.md)** — Task execution loop, task gates, tracking, commits
|
|
342
|
-
- **[analysis-loop.md](references/analysis-loop.md)** — Analysis and refinement cycle
|
|
343
|
-
- **[invoke-executor.md](references/invoke-executor.md)** — How to invoke the executor agent
|
|
344
|
-
- **[invoke-reviewer.md](references/invoke-reviewer.md)** — How to invoke the reviewer agent
|
|
345
|
-
- **[invoke-analysis.md](references/invoke-analysis.md)** — How to invoke analysis agents
|
|
346
|
-
- **[invoke-synthesizer.md](references/invoke-synthesizer.md)** — How to invoke the synthesis agent
|
|
347
|
-
- **[invoke-task-writer.md](references/invoke-task-writer.md)** — How to invoke the task writer agent
|
|
348
|
-
- **[task-normalisation.md](references/task-normalisation.md)** — Normalised task shape for agent invocation
|
|
349
|
-
- **[tdd-workflow.md](references/tdd-workflow.md)** — TDD cycle (passed to executor agent)
|
|
350
|
-
- **[code-quality.md](references/code-quality.md)** — Quality standards (passed to executor agent)
|
|
351
335
|
|
|
@@ -72,7 +72,7 @@ additional material I should review?
|
|
|
72
72
|
Context refresh (compaction) summarizes the conversation, losing procedural detail. When you detect a context refresh has occurred — the conversation feels abruptly shorter, you lack memory of recent steps, or a summary precedes this message — follow this recovery protocol:
|
|
73
73
|
|
|
74
74
|
1. **Re-read this skill file completely.** Do not rely on your summary of it. The full process, steps, and rules must be reloaded.
|
|
75
|
-
2. **Read all tracking and state files** for the current topic —
|
|
75
|
+
2. **Read all tracking and state files** for the current topic — the specification file, review tracking files, or any working documents this skill creates. These are your source of truth for progress.
|
|
76
76
|
3. **Check git state.** Run `git status` and `git log --oneline -10` to see recent commits. Commit messages follow a conventional pattern that reveals what was completed.
|
|
77
77
|
4. **Announce your position** to the user before continuing: what step you believe you're at, what's been completed, and what comes next. Wait for confirmation.
|
|
78
78
|
5. **Check `finding_gate_mode`** in the specification frontmatter — if `auto`, the user previously opted in during this session. Preserve this value.
|
|
@@ -81,88 +81,120 @@ Do not guess at progress or continue from memory. The files on disk and git hist
|
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
84
|
-
##
|
|
84
|
+
## Hard Rules
|
|
85
85
|
|
|
86
|
-
**
|
|
86
|
+
1. **STOP AND WAIT** for explicit approval before any write to the specification. Present content, wait for the user to explicitly approve (`y`/`yes` or equivalent), then log. No exceptions.
|
|
87
|
+
2. **Log verbatim** — when approved, write exactly what was presented. No silent modifications.
|
|
88
|
+
3. **Commit frequently** — commit at natural breaks and before any context refresh. Context refresh = lost work.
|
|
87
89
|
|
|
88
|
-
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Output Formatting
|
|
93
|
+
|
|
94
|
+
When announcing a new step, output `── ── ── ── ──` on its own line before the step heading.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Step 0: Resume Detection
|
|
99
|
+
|
|
100
|
+
Check if `docs/workflow/specification/{topic}/specification.md` exists.
|
|
101
|
+
|
|
102
|
+
#### If no file exists
|
|
103
|
+
|
|
104
|
+
→ Proceed to **Step 1**.
|
|
105
|
+
|
|
106
|
+
#### If file exists
|
|
107
|
+
|
|
108
|
+
Read the specification frontmatter.
|
|
109
|
+
|
|
110
|
+
> *Output the next fenced block as markdown (not a code block):*
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Found existing specification for **{topic}**.
|
|
89
114
|
|
|
90
|
-
|
|
115
|
+
· · · · · · · · · · · ·
|
|
116
|
+
- **`c`/`continue`** — Walk through the specification from its current state. You can review, amend, or navigate at any point.
|
|
117
|
+
- **`r`/`restart`** — Delete the specification and all review tracking files. Start fresh.
|
|
118
|
+
· · · · · · · · · · · ·
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**STOP.** Wait for user response.
|
|
91
122
|
|
|
92
|
-
|
|
123
|
+
#### If `continue`
|
|
93
124
|
|
|
94
|
-
|
|
125
|
+
Reset `finding_gate_mode` to `gated` in the specification frontmatter (fresh invocation = fresh gates).
|
|
95
126
|
|
|
96
|
-
|
|
97
|
-
1. Mark each source specification as superseded by updating its frontmatter:
|
|
98
|
-
```yaml
|
|
99
|
-
status: superseded
|
|
100
|
-
superseded_by: {new-specification-name}
|
|
101
|
-
```
|
|
102
|
-
2. Inform the user which files were updated
|
|
127
|
+
→ Skip Steps 1–2, proceed to **Step 3**.
|
|
103
128
|
|
|
104
|
-
|
|
129
|
+
#### If `restart`
|
|
105
130
|
|
|
106
|
-
|
|
131
|
+
1. Delete the specification file and all review tracking files (`review-*-tracking-c*.md`) in the topic directory
|
|
132
|
+
2. Commit: `spec({topic}): restart specification`
|
|
107
133
|
|
|
108
|
-
|
|
109
|
-
- Create the specification document and then ask the user to review it
|
|
110
|
-
- Write multiple sections and present them for review afterward
|
|
111
|
-
- Assume silence or moving on means approval
|
|
112
|
-
- Make "minor" amendments without explicit approval
|
|
113
|
-
- Batch up content and log it all at once
|
|
134
|
+
→ Proceed to **Step 1**.
|
|
114
135
|
|
|
115
|
-
|
|
116
|
-
- Present ONE topic at a time
|
|
117
|
-
- **STOP and WAIT** for the user to explicitly approve before writing
|
|
118
|
-
- Treat each write operation as requiring its own explicit approval
|
|
136
|
+
---
|
|
119
137
|
|
|
120
|
-
|
|
138
|
+
## Step 1: Verify Source Material
|
|
121
139
|
|
|
122
|
-
**
|
|
140
|
+
Load **[verify-source-material.md](references/verify-source-material.md)** and follow its instructions as written.
|
|
123
141
|
|
|
124
|
-
|
|
142
|
+
→ Proceed to **Step 2**.
|
|
125
143
|
|
|
126
144
|
---
|
|
127
145
|
|
|
128
|
-
##
|
|
146
|
+
## Step 2: Initialize Specification
|
|
147
|
+
|
|
148
|
+
Load **[specification-format.md](references/specification-format.md)** for the template.
|
|
149
|
+
|
|
150
|
+
Create the specification file at `docs/workflow/specification/{topic}/specification.md`:
|
|
151
|
+
|
|
152
|
+
1. Use the frontmatter template from specification-format.md
|
|
153
|
+
2. Set `topic` to the kebab-case topic name
|
|
154
|
+
3. Set `status: in-progress`, `type: feature`, `review_cycle: 0`, `finding_gate_mode: gated`
|
|
155
|
+
4. Set `date` to today's actual date
|
|
156
|
+
5. Add all sources with `status: pending`
|
|
157
|
+
6. Add the body template (title + specification section + working notes section)
|
|
129
158
|
|
|
130
|
-
|
|
159
|
+
Commit: `spec({topic}): initialize specification`
|
|
131
160
|
|
|
132
|
-
|
|
161
|
+
→ Proceed to **Step 3**.
|
|
133
162
|
|
|
134
|
-
|
|
163
|
+
---
|
|
135
164
|
|
|
136
|
-
|
|
165
|
+
## Step 3: Load Specification Principles
|
|
137
166
|
|
|
138
|
-
|
|
167
|
+
Load **[specification-principles.md](references/specification-principles.md)** and internalize the rules. These principles govern every subsequent step.
|
|
139
168
|
|
|
140
|
-
|
|
169
|
+
→ Proceed to **Step 4**.
|
|
141
170
|
|
|
142
|
-
|
|
171
|
+
---
|
|
143
172
|
|
|
144
|
-
|
|
173
|
+
## Step 4: Spec Construction
|
|
145
174
|
|
|
146
|
-
|
|
175
|
+
Load **[spec-construction.md](references/spec-construction.md)** and follow its instructions as written.
|
|
147
176
|
|
|
148
|
-
|
|
177
|
+
→ Proceed to **Step 5**.
|
|
149
178
|
|
|
150
|
-
|
|
179
|
+
---
|
|
151
180
|
|
|
152
|
-
|
|
181
|
+
## Step 5: Document Dependencies
|
|
153
182
|
|
|
154
|
-
**
|
|
183
|
+
Load **[dependencies.md](references/dependencies.md)** and follow its instructions as written.
|
|
155
184
|
|
|
156
|
-
|
|
185
|
+
→ Proceed to **Step 6**.
|
|
157
186
|
|
|
158
187
|
---
|
|
159
188
|
|
|
160
|
-
##
|
|
189
|
+
## Step 6: Specification Review
|
|
190
|
+
|
|
191
|
+
Load **[spec-review.md](references/spec-review.md)** and follow its instructions as written.
|
|
192
|
+
|
|
193
|
+
→ Proceed to **Step 7**.
|
|
194
|
+
|
|
195
|
+
---
|
|
161
196
|
|
|
162
|
-
|
|
197
|
+
## Step 7: Conclude Specification
|
|
163
198
|
|
|
164
|
-
|
|
165
|
-
2. **Did the user explicitly approve it?** (Not "did I ask if it's good" - did THEY say yes?) If no → STOP. Wait for approval.
|
|
166
|
-
3. **Am I writing exactly what was approved?** If adding/changing anything → STOP. Present the changes first.
|
|
199
|
+
Load **[spec-completion.md](references/spec-completion.md)** and follow its instructions as written.
|
|
167
200
|
|
|
168
|
-
> **If you have written to the specification file without going through steps 1-2-3 above, you have violated the workflow.** The user must approve every piece of content before it's logged. There are no exceptions.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
|
|
3
|
+
*Reference for **[technical-specification](../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
At the end of every specification, add a **Dependencies** section that identifies **prerequisites** — systems that must exist before this feature can be built.
|
|
8
|
+
|
|
9
|
+
The same workflow applies: present the dependencies section for approval, then log verbatim when approved.
|
|
10
|
+
|
|
11
|
+
## What Dependencies Are
|
|
12
|
+
|
|
13
|
+
Dependencies are **blockers** — things that must exist before implementation can begin.
|
|
14
|
+
|
|
15
|
+
Think of it like building a house: if you're specifying the roof, the walls are a dependency. You cannot build a roof without walls to support it. The walls must exist first.
|
|
16
|
+
|
|
17
|
+
**The test**: "If system X doesn't exist, can we still build this feature?"
|
|
18
|
+
- If **no** → X is a dependency
|
|
19
|
+
- If **yes** → X is not a dependency (even if the systems work together)
|
|
20
|
+
|
|
21
|
+
## What Dependencies Are NOT
|
|
22
|
+
|
|
23
|
+
**Do not list systems just because they:**
|
|
24
|
+
- Work together with this feature
|
|
25
|
+
- Share data or communicate with this feature
|
|
26
|
+
- Are related or in the same domain
|
|
27
|
+
- Would be nice to have alongside this feature
|
|
28
|
+
|
|
29
|
+
Two systems that cooperate are not necessarily dependent. A notification system and a user preferences system might work together (preferences control notification settings), but if you can build the notification system with hardcoded defaults and add preference integration later, then preferences are not a dependency.
|
|
30
|
+
|
|
31
|
+
## How to Identify Dependencies
|
|
32
|
+
|
|
33
|
+
Review the specification for cases where implementation is **literally blocked** without another system:
|
|
34
|
+
|
|
35
|
+
- **Data that must exist first** (e.g., "FK to users" → User model must exist, you can't create the FK otherwise)
|
|
36
|
+
- **Events you consume** (e.g., "listens for payment.completed" → Payment system must emit this event)
|
|
37
|
+
- **APIs you call** (e.g., "fetches inventory levels" → Inventory API must exist)
|
|
38
|
+
- **Infrastructure requirements** (e.g., "stores files in S3" → S3 bucket configuration must exist)
|
|
39
|
+
|
|
40
|
+
**Do not include** systems where you merely reference their concepts or where integration could be deferred.
|
|
41
|
+
|
|
42
|
+
## Categorization
|
|
43
|
+
|
|
44
|
+
**Required**: Implementation cannot start without this. The code literally cannot be written.
|
|
45
|
+
|
|
46
|
+
**Partial Requirement**: Only specific elements are needed, not the full system. Note the minimum scope that unblocks implementation.
|
|
47
|
+
|
|
48
|
+
## Format
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## Dependencies
|
|
52
|
+
|
|
53
|
+
Prerequisites that must exist before implementation can begin:
|
|
54
|
+
|
|
55
|
+
### Required
|
|
56
|
+
|
|
57
|
+
| Dependency | Why Blocked | What's Unblocked When It Exists |
|
|
58
|
+
|------------|-------------|--------------------------------|
|
|
59
|
+
| **[System Name]** | [Why implementation literally cannot proceed] | [What parts of this spec can then be built] |
|
|
60
|
+
|
|
61
|
+
### Partial Requirement
|
|
62
|
+
|
|
63
|
+
| Dependency | Why Blocked | Minimum Scope Needed |
|
|
64
|
+
|------------|-------------|---------------------|
|
|
65
|
+
| **[System Name]** | [Why implementation cannot proceed] | [Specific subset that unblocks us] |
|
|
66
|
+
|
|
67
|
+
### Notes
|
|
68
|
+
|
|
69
|
+
- [What can be built independently, without waiting]
|
|
70
|
+
- [Workarounds if dependencies don't exist yet]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Purpose
|
|
74
|
+
|
|
75
|
+
This section feeds into the planning phase, where dependencies become blocking relationships between epics/phases. It helps sequence implementation correctly.
|
|
76
|
+
|
|
77
|
+
**Key distinction**: This is about sequencing what must come first, not mapping out what works together. A feature may integrate with many systems — only list the ones that block you from starting.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Exhaustive Extraction
|
|
2
|
+
|
|
3
|
+
*Reference for **[spec-construction](spec-construction.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**This step is critical. The specification is the golden document — if information doesn't make it here, it won't be built.**
|
|
8
|
+
|
|
9
|
+
For each topic or subtopic, perform exhaustive extraction:
|
|
10
|
+
|
|
11
|
+
1. **Re-scan ALL source material** — Don't rely on memory. Go back to the source material and systematically review it for the current topic.
|
|
12
|
+
|
|
13
|
+
2. **Search for keywords** — Topics are rarely contained in one section. Search for:
|
|
14
|
+
- The topic name and synonyms
|
|
15
|
+
- Related concepts and terms
|
|
16
|
+
- Names of systems, fields, or behaviors mentioned in context
|
|
17
|
+
|
|
18
|
+
3. **Collect scattered information** — Source material is often non-linear. Information about a single topic may be scattered across:
|
|
19
|
+
- Multiple sections of the same document
|
|
20
|
+
- Different documents entirely
|
|
21
|
+
- Tangential discussions that revealed important details
|
|
22
|
+
|
|
23
|
+
4. **Filter for what we're building** — Include only validated decisions:
|
|
24
|
+
- Exclude discarded alternatives
|
|
25
|
+
- Exclude ideas that were explored but rejected
|
|
26
|
+
- Exclude "maybes" that weren't confirmed
|
|
27
|
+
- Include only what the user has decided to build
|
|
28
|
+
|
|
29
|
+
**Why this matters:** The specification is the single source of truth for planning. Planning will not reference prior source material — only this document. Missing a detail here means that detail doesn't get implemented.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Process Review Findings
|
|
2
|
+
|
|
3
|
+
*Reference for **[spec-review](spec-review.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Process findings from a review phase interactively with the user. The analysis phase writes findings to a tracking file. Read the tracking file and present each finding for approval.
|
|
8
|
+
|
|
9
|
+
**Review type**: `{review_type:[Input Review|Gap Analysis]}` — set by the calling context (B or C in spec-review.md).
|
|
10
|
+
|
|
11
|
+
Check if the tracking file exists at the expected path.
|
|
12
|
+
|
|
13
|
+
#### If no tracking file exists (no findings)
|
|
14
|
+
|
|
15
|
+
> *Output the next fenced block as a code block:*
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
{review_type} complete — no findings.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
→ Return to **[spec-review.md](spec-review.md)** for the next phase.
|
|
22
|
+
|
|
23
|
+
#### If tracking file exists
|
|
24
|
+
|
|
25
|
+
Read the tracking file and count pending findings.
|
|
26
|
+
|
|
27
|
+
→ Proceed to **A. Summary**.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## A. Summary
|
|
32
|
+
|
|
33
|
+
> *Output the next fenced block as a code block:*
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
{review_type} — {N} items found
|
|
37
|
+
|
|
38
|
+
1. {title} ({category})
|
|
39
|
+
{1-2 line summary from the Details field}
|
|
40
|
+
|
|
41
|
+
2. ...
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
> *Output the next fenced block as a code block:*
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Let's work through these one at a time, starting with #1.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
→ Proceed to **B. Process One Item at a Time**.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## B. Process One Item at a Time
|
|
55
|
+
|
|
56
|
+
Work through each finding **sequentially**. For each finding: present it, show the proposed content, then route through the gate.
|
|
57
|
+
|
|
58
|
+
### Present Finding
|
|
59
|
+
|
|
60
|
+
Show the finding with its proposed content, read directly from the tracking file.
|
|
61
|
+
|
|
62
|
+
> *Output the next fenced block as markdown (not a code block):*
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
**Finding {N} of {total}: {brief_title:(titlecase)}**
|
|
66
|
+
|
|
67
|
+
- **Source**: {from tracking file}
|
|
68
|
+
- **Category**: {from tracking file}
|
|
69
|
+
@if(review_type = Gap Analysis)
|
|
70
|
+
- **Priority**: Critical | Important | Minor
|
|
71
|
+
@endif
|
|
72
|
+
- **Affects**: {from tracking file}
|
|
73
|
+
|
|
74
|
+
**Details**: {from tracking file}
|
|
75
|
+
|
|
76
|
+
**Proposed Addition**:
|
|
77
|
+
{from tracking file — the content to add to the specification}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**For potential gaps** (items not directly from source material): you're asking questions rather than proposing content. If the user wants to address a gap, discuss it, then present what you'd add for approval.
|
|
81
|
+
|
|
82
|
+
### Check Gate Mode
|
|
83
|
+
|
|
84
|
+
Check `finding_gate_mode` in the specification frontmatter.
|
|
85
|
+
|
|
86
|
+
#### If `finding_gate_mode: auto`
|
|
87
|
+
|
|
88
|
+
1. Log the proposed content to the specification verbatim
|
|
89
|
+
2. Update the tracking file: set resolution to "Approved"
|
|
90
|
+
3. Commit
|
|
91
|
+
|
|
92
|
+
> *Output the next fenced block as a code block:*
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Finding {N} of {total}: {brief_title:(titlecase)} — approved. Added to specification.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
→ Present the next pending finding, or proceed to **C. After All Findings Processed**.
|
|
99
|
+
|
|
100
|
+
#### If `finding_gate_mode: gated`
|
|
101
|
+
|
|
102
|
+
> *Output the next fenced block as markdown (not a code block):*
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
· · · · · · · · · · · ·
|
|
106
|
+
**Finding {N} of {total}: {brief_title:(titlecase)}**
|
|
107
|
+
- **`y`/`yes`** — Approved. Add to the specification verbatim.
|
|
108
|
+
- **`a`/`auto`** — Approve this and all remaining findings automatically
|
|
109
|
+
- **`s`/`skip`** — Leave as-is, move to next finding.
|
|
110
|
+
- **Or provide feedback** to adjust.
|
|
111
|
+
· · · · · · · · · · · ·
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**STOP.** Wait for user response.
|
|
115
|
+
|
|
116
|
+
#### If the user provides feedback
|
|
117
|
+
|
|
118
|
+
Incorporate feedback and re-present the proposed content **in full**. Update the tracking file with the revised content. Then ask the same choice again. Repeat until approved or skipped.
|
|
119
|
+
|
|
120
|
+
#### If approved
|
|
121
|
+
|
|
122
|
+
1. Log the content to the specification verbatim
|
|
123
|
+
2. Update the tracking file: set resolution to "Approved", add any discussion notes
|
|
124
|
+
3. Commit — ensures progress survives context refresh
|
|
125
|
+
|
|
126
|
+
> *Output the next fenced block as a code block:*
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Finding {N} of {total}: {brief_title:(titlecase)} — added.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
→ Present the next pending finding, or proceed to **C. After All Findings Processed**.
|
|
133
|
+
|
|
134
|
+
#### If `auto`
|
|
135
|
+
|
|
136
|
+
1. Log the content (same as "If approved" above)
|
|
137
|
+
2. Update the tracking file: set resolution to "Approved"
|
|
138
|
+
3. Update `finding_gate_mode: auto` in the specification frontmatter
|
|
139
|
+
4. Commit
|
|
140
|
+
5. Process all remaining findings using the auto-mode flow above
|
|
141
|
+
|
|
142
|
+
→ After all processed, proceed to **C. After All Findings Processed**.
|
|
143
|
+
|
|
144
|
+
#### If skipped
|
|
145
|
+
|
|
146
|
+
1. Update the tracking file: set resolution to "Skipped", note the reason
|
|
147
|
+
2. Commit — ensures progress survives context refresh
|
|
148
|
+
|
|
149
|
+
> *Output the next fenced block as a code block:*
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Finding {N} of {total}: {brief_title:(titlecase)} — skipped.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
→ Present the next pending finding, or proceed to **C. After All Findings Processed**.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## C. After All Findings Processed
|
|
160
|
+
|
|
161
|
+
1. **Mark the tracking file as complete** — Set `status: complete`.
|
|
162
|
+
2. **Commit** the tracking file and any specification changes.
|
|
163
|
+
|
|
164
|
+
> *Output the next fenced block as a code block:*
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
{review_type} complete — {N} findings processed.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
→ Return to **[spec-review.md](spec-review.md)** for the next phase.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Gap Analysis
|
|
2
|
+
|
|
3
|
+
*Reference for **[spec-review](spec-review.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Phase 2 reviews the **specification as a standalone document** — looking *inward* at what's been specified, not outward at what else the product might need.
|
|
8
|
+
|
|
9
|
+
**Purpose**: Ensure that *within the defined scope*, the specification flows correctly, has sufficient detail, and leaves nothing open to interpretation or assumption. This might be a full product spec or a single feature — the scope is whatever the inputs defined. Your job is to verify that within those boundaries, an agent or human could create plans, break them into tasks, and write code without having to guess.
|
|
10
|
+
|
|
11
|
+
**Key distinction**: You're not asking "what features are missing from this product?" You're asking "within what we've decided to build, is everything clear and complete?"
|
|
12
|
+
|
|
13
|
+
## What to Look For
|
|
14
|
+
|
|
15
|
+
Review the specification systematically for gaps *within what's specified*:
|
|
16
|
+
|
|
17
|
+
1. **Internal Completeness**
|
|
18
|
+
- Workflows that start but don't show how they end
|
|
19
|
+
- States or transitions mentioned but not fully defined
|
|
20
|
+
- Behaviors referenced elsewhere but never specified
|
|
21
|
+
- Default values or fallback behaviors left unstated
|
|
22
|
+
|
|
23
|
+
2. **Insufficient Detail**
|
|
24
|
+
- Areas where an implementer would have to guess
|
|
25
|
+
- Sections that are too high-level to act on
|
|
26
|
+
- Missing error handling for scenarios the spec introduces
|
|
27
|
+
- Validation rules implied but not defined
|
|
28
|
+
- Boundary conditions for limits the spec mentions
|
|
29
|
+
|
|
30
|
+
3. **Ambiguity**
|
|
31
|
+
- Vague language that could be interpreted multiple ways
|
|
32
|
+
- Terms used inconsistently across sections
|
|
33
|
+
- "It should" without defining what "it" is
|
|
34
|
+
- Implicit assumptions that aren't stated
|
|
35
|
+
|
|
36
|
+
4. **Contradictions**
|
|
37
|
+
- Requirements that conflict with each other
|
|
38
|
+
- Behaviors defined differently in different sections
|
|
39
|
+
- Constraints that make other requirements impossible
|
|
40
|
+
|
|
41
|
+
5. **Edge Cases Within Scope**
|
|
42
|
+
- For the behaviors specified, what happens at boundaries?
|
|
43
|
+
- For the inputs defined, what happens when they're empty or malformed?
|
|
44
|
+
- For the integrations described, what happens when they're unavailable?
|
|
45
|
+
|
|
46
|
+
6. **Planning Readiness**
|
|
47
|
+
- Could you break this into clear tasks?
|
|
48
|
+
- Would an implementer know what to build?
|
|
49
|
+
- Are acceptance criteria implicit or explicit?
|
|
50
|
+
- Are there sections that would force an implementer to make design decisions?
|
|
51
|
+
|
|
52
|
+
## The Review Process
|
|
53
|
+
|
|
54
|
+
1. **Read the specification end-to-end** — Not scanning, but carefully reading as if you were about to implement it
|
|
55
|
+
|
|
56
|
+
2. **For each section, ask**:
|
|
57
|
+
- Is this internally complete? Does it define everything it references?
|
|
58
|
+
- Is this clear? Would an implementer know exactly what to build?
|
|
59
|
+
- Is this consistent? Does it contradict anything else in the spec?
|
|
60
|
+
- Are there areas left open to interpretation or assumption?
|
|
61
|
+
|
|
62
|
+
3. **Collect findings** — Note each gap, ambiguity, or area needing clarification
|
|
63
|
+
|
|
64
|
+
4. **Prioritize** — Focus on issues that would block or confuse implementation:
|
|
65
|
+
- **Critical**: Would prevent implementation or cause incorrect behavior
|
|
66
|
+
- **Important**: Would require implementer to guess or make design decisions
|
|
67
|
+
- **Minor**: Polish or clarification that improves understanding
|
|
68
|
+
|
|
69
|
+
5. **Create the tracking file** — If findings exist, write them to `review-gap-analysis-tracking-c{N}.md` using the format from **[review-tracking-format.md](review-tracking-format.md)**. Commit the tracking file.
|
|
70
|
+
|
|
71
|
+
## What You're NOT Doing in Phase 2
|
|
72
|
+
|
|
73
|
+
- **Not expanding scope** — Looking for gaps *within* what's specified, not suggesting features the product should have. A feature spec for "user login" doesn't need you to ask about password reset if it wasn't in scope.
|
|
74
|
+
- **Not gold-plating** — Only flag gaps that would actually impact implementation of what's specified
|
|
75
|
+
- **Not second-guessing decisions** — The spec reflects validated decisions; you're checking for clarity and completeness, not re-opening debates
|
|
76
|
+
- **Not being exhaustive for its own sake** — Focus on what matters for implementing *this* specification
|
|
77
|
+
|
|
78
|
+
## Completing Phase 2
|
|
79
|
+
|
|
80
|
+
When you've:
|
|
81
|
+
- Reviewed the specification for completeness, clarity, and implementation readiness
|
|
82
|
+
- Created the tracking file (if findings exist) and committed it
|
|
83
|
+
|
|
84
|
+
→ Return to **[spec-review.md](spec-review.md)** for finding processing.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Input Review
|
|
2
|
+
|
|
3
|
+
*Reference for **[spec-review](spec-review.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Phase 1 compares the specification against all source material to catch anything missed.
|
|
8
|
+
|
|
9
|
+
## The Review Process
|
|
10
|
+
|
|
11
|
+
1. **Re-read ALL source material** — Go back to every source document, discussion, research note, and reference. Don't rely on memory.
|
|
12
|
+
|
|
13
|
+
2. **Compare systematically** — For each piece of source material:
|
|
14
|
+
- What topics does it cover?
|
|
15
|
+
- Are those topics fully captured in the specification?
|
|
16
|
+
- Are there details, edge cases, or decisions that didn't make it?
|
|
17
|
+
|
|
18
|
+
3. **Search for the forgotten** — Look specifically for:
|
|
19
|
+
- Edge cases mentioned in passing
|
|
20
|
+
- Constraints or requirements buried in tangential discussions
|
|
21
|
+
- Technical details that seemed minor at the time
|
|
22
|
+
- Decisions made early that may have been overshadowed
|
|
23
|
+
- Error handling, validation rules, or boundary conditions
|
|
24
|
+
- Integration points or data flows mentioned but not elaborated
|
|
25
|
+
|
|
26
|
+
4. **Collect what you find** — Note each finding for your summary. Categorize:
|
|
27
|
+
- **Enhancing an existing topic** — Details that belong in an already-documented section. Note which section it would enhance.
|
|
28
|
+
- **An entirely missed topic** — Something that warrants its own section but was glossed over. New topics get added at the end.
|
|
29
|
+
|
|
30
|
+
5. **Never fabricate** — Every item you flag must trace back to specific source material. If you can't point to where it came from, don't suggest it. The goal is to catch missed content, not invent new requirements.
|
|
31
|
+
|
|
32
|
+
6. **User confirms before inclusion** — Standard workflow applies: present proposed additions, get approval, then log verbatim.
|
|
33
|
+
|
|
34
|
+
7. **Surface potential gaps** — After reviewing source material, consider whether the specification has gaps that the sources simply didn't address:
|
|
35
|
+
- Edge cases that weren't discussed
|
|
36
|
+
- Error scenarios not covered
|
|
37
|
+
- Integration points that seem implicit but aren't specified
|
|
38
|
+
- Behaviors that are ambiguous without clarification
|
|
39
|
+
|
|
40
|
+
Collect these alongside the missed content. This should be infrequent — most gaps will be caught from source material. But occasionally the sources themselves have blind spots worth surfacing.
|
|
41
|
+
|
|
42
|
+
8. **Create the tracking file** — If findings exist, write them to `review-input-tracking-c{N}.md` using the format from **[review-tracking-format.md](review-tracking-format.md)**. Commit the tracking file.
|
|
43
|
+
|
|
44
|
+
## What You're NOT Doing in Phase 1
|
|
45
|
+
|
|
46
|
+
- **Not inventing requirements** — When surfacing gaps not in sources, you're asking questions, not proposing answers
|
|
47
|
+
- **Not assuming gaps need filling** — If something isn't in the sources, it may have been intentionally omitted
|
|
48
|
+
- **Not padding the spec** — Only add what's genuinely missing and relevant
|
|
49
|
+
- **Not re-litigating decisions** — If something was discussed and rejected, it stays rejected
|
|
50
|
+
|
|
51
|
+
## Completing Phase 1
|
|
52
|
+
|
|
53
|
+
When you've:
|
|
54
|
+
- Systematically reviewed all source material for missed content
|
|
55
|
+
- Created the tracking file (if findings exist) and committed it
|
|
56
|
+
|
|
57
|
+
→ Return to **[spec-review.md](spec-review.md)** for finding processing.
|