@leeovery/claude-technical-workflows 2.1.16 → 2.1.18
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/agents/implementation-analysis-architecture.md +2 -0
- package/agents/implementation-task-reviewer.md +4 -1
- package/package.json +1 -1
- package/skills/link-dependencies/SKILL.md +2 -2
- package/skills/start-discussion/SKILL.md +6 -6
- package/skills/start-implementation/SKILL.md +3 -4
- package/skills/start-planning/SKILL.md +3 -4
- package/skills/start-research/SKILL.md +13 -88
- package/skills/start-research/references/gather-context.md +68 -0
- package/skills/start-research/references/invoke-skill.md +23 -0
- package/skills/start-review/SKILL.md +3 -4
- package/skills/start-specification/SKILL.md +20 -20
- package/skills/technical-implementation/SKILL.md +15 -7
- package/skills/technical-implementation/references/code-quality.md +9 -1
- package/skills/technical-implementation/references/steps/analysis-loop.md +6 -6
- package/skills/technical-implementation/references/steps/task-loop.md +6 -6
- package/skills/technical-implementation/references/tdd-workflow.md +3 -1
- package/skills/technical-planning/SKILL.md +12 -8
- package/skills/technical-planning/references/steps/analyze-task-graph.md +4 -4
- package/skills/technical-planning/references/steps/author-tasks.md +2 -2
- package/skills/technical-planning/references/steps/define-phases.md +2 -2
- package/skills/technical-planning/references/steps/define-tasks.md +2 -2
- package/skills/technical-planning/references/steps/plan-construction.md +2 -2
- package/skills/technical-planning/references/steps/resolve-dependencies.md +2 -2
- package/skills/technical-planning/references/steps/review-integrity.md +2 -2
- package/skills/technical-planning/references/steps/review-traceability.md +2 -2
- package/skills/technical-research/SKILL.md +2 -2
- package/skills/technical-specification/references/specification-guide.md +6 -6
|
@@ -27,6 +27,8 @@ You receive via the orchestrator's prompt:
|
|
|
27
27
|
- Integration test gaps — are cross-task workflows tested end-to-end?
|
|
28
28
|
- Seam quality between task boundaries — do the pieces fit together cleanly?
|
|
29
29
|
- Over/under-engineering — are abstractions justified by usage? Is raw code crying out for structure?
|
|
30
|
+
- Missed composition opportunities — are new abstractions independently implemented when they could be derived from existing ones? If two queries are logical inverses, one should be defined in terms of the other.
|
|
31
|
+
- Type safety at boundaries — are interfaces or function signatures using untyped parameters when the concrete types are known? Runtime type checks inside implementations signal the signature should be more specific.
|
|
30
32
|
|
|
31
33
|
## Your Process
|
|
32
34
|
|
|
@@ -42,10 +42,12 @@ Are all criteria genuinely met — not just self-reported?
|
|
|
42
42
|
- Check for criteria that are technically met but miss the intent
|
|
43
43
|
|
|
44
44
|
### 3. Test Adequacy
|
|
45
|
-
Do tests actually verify the criteria? Are edge cases covered?
|
|
45
|
+
Do tests actually verify the criteria? Are assertions precise? Are edge cases covered?
|
|
46
46
|
- Is there a test for each acceptance criterion?
|
|
47
47
|
- Would the tests fail if the feature broke?
|
|
48
48
|
- Are edge cases from the task's test cases covered?
|
|
49
|
+
- **Assertion depth**: For mutation operations, do tests verify observable side effects — not just that the operation returned success? State changes should be asserted independently.
|
|
50
|
+
- **Assertion precision**: When expected output is deterministic, do tests use exact comparison? Substring or partial matching masks formatting regressions and missing/extra content.
|
|
49
51
|
- Flag both under-testing AND over-testing
|
|
50
52
|
|
|
51
53
|
### 4. Convention Adherence
|
|
@@ -61,6 +63,7 @@ Is this a sound design decision? Will it compose well with future tasks?
|
|
|
61
63
|
- Are there coupling or abstraction concerns?
|
|
62
64
|
- Will this cause problems for subsequent tasks in the phase?
|
|
63
65
|
- Are there structural concerns that should be raised now rather than compounding?
|
|
66
|
+
- Are concrete types used where data structures are known? Flag untyped escape hatches used where concrete types would be clearer and safer.
|
|
64
67
|
|
|
65
68
|
## Fix Recommendations (needs-changes only)
|
|
66
69
|
|
package/package.json
CHANGED
|
@@ -161,11 +161,11 @@ UPDATED FILES:
|
|
|
161
161
|
If any files were updated:
|
|
162
162
|
|
|
163
163
|
```
|
|
164
|
-
· · ·
|
|
165
|
-
|
|
164
|
+
· · · · · · · · · · · ·
|
|
166
165
|
Shall I commit these dependency updates?
|
|
167
166
|
- **`y`/`yes`** — Commit the changes
|
|
168
167
|
- **`n`/`no`** — Skip
|
|
168
|
+
· · · · · · · · · · · ·
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
If yes, commit with message:
|
|
@@ -228,35 +228,35 @@ Discussions:
|
|
|
228
228
|
|
|
229
229
|
**If research AND discussions exist:**
|
|
230
230
|
```
|
|
231
|
-
· · ·
|
|
232
|
-
|
|
231
|
+
· · · · · · · · · · · ·
|
|
233
232
|
How would you like to proceed?
|
|
234
233
|
|
|
235
234
|
- **`r`/`refresh`** — Force fresh research analysis
|
|
236
235
|
- From research — pick a topic number above (e.g., "1" or "research 1")
|
|
237
236
|
- Continue discussion — name one above (e.g., "continue {topic}")
|
|
238
237
|
- Fresh topic — describe what you want to discuss
|
|
238
|
+
· · · · · · · · · · · ·
|
|
239
239
|
```
|
|
240
240
|
|
|
241
241
|
**If ONLY research exists:**
|
|
242
242
|
```
|
|
243
|
-
· · ·
|
|
244
|
-
|
|
243
|
+
· · · · · · · · · · · ·
|
|
245
244
|
How would you like to proceed?
|
|
246
245
|
|
|
247
246
|
- **`r`/`refresh`** — Force fresh research analysis
|
|
248
247
|
- From research — pick a topic number above (e.g., "1" or "research 1")
|
|
249
248
|
- Fresh topic — describe what you want to discuss
|
|
249
|
+
· · · · · · · · · · · ·
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
**If ONLY discussions exist:**
|
|
253
253
|
```
|
|
254
|
-
· · ·
|
|
255
|
-
|
|
254
|
+
· · · · · · · · · · · ·
|
|
256
255
|
How would you like to proceed?
|
|
257
256
|
|
|
258
257
|
- Continue discussion — name one above (e.g., "continue {topic}")
|
|
259
258
|
- Fresh topic — describe what you want to discuss
|
|
259
|
+
· · · · · · · · · · · ·
|
|
260
260
|
```
|
|
261
261
|
|
|
262
262
|
**STOP.** Wait for user response before proceeding.
|
|
@@ -210,8 +210,7 @@ Then re-run /start-implementation.
|
|
|
210
210
|
|
|
211
211
|
**Otherwise (multiple selectable plans, or implemented plans exist):**
|
|
212
212
|
```
|
|
213
|
-
· · ·
|
|
214
|
-
|
|
213
|
+
· · · · · · · · · · · ·
|
|
215
214
|
Select a plan (enter number):
|
|
216
215
|
```
|
|
217
216
|
|
|
@@ -260,11 +259,11 @@ INCOMPLETE (planned but not implemented):
|
|
|
260
259
|
- {topic}: task {task_id} not yet completed
|
|
261
260
|
-> This task must be completed first.
|
|
262
261
|
|
|
263
|
-
· · ·
|
|
264
|
-
|
|
262
|
+
· · · · · · · · · · · ·
|
|
265
263
|
- **`i`/`implement`** — Implement the blocking dependencies first
|
|
266
264
|
- **`l`/`link`** — Run /link-dependencies to wire up recently completed plans
|
|
267
265
|
- Mark as "satisfied externally" — tell me which dependency was implemented outside this workflow
|
|
266
|
+
· · · · · · · · · · · ·
|
|
268
267
|
```
|
|
269
268
|
|
|
270
269
|
**STOP.** Wait for user response.
|
|
@@ -155,8 +155,7 @@ Omit either section entirely if it has no entries.
|
|
|
155
155
|
|
|
156
156
|
**If multiple actionable items:**
|
|
157
157
|
```
|
|
158
|
-
· · ·
|
|
159
|
-
|
|
158
|
+
· · · · · · · · · · · ·
|
|
160
159
|
Select a specification (enter number):
|
|
161
160
|
```
|
|
162
161
|
|
|
@@ -232,10 +231,10 @@ Note: The following cross-cutting specifications are still in-progress:
|
|
|
232
231
|
|
|
233
232
|
These may contain architectural decisions relevant to this plan.
|
|
234
233
|
|
|
235
|
-
· · ·
|
|
236
|
-
|
|
234
|
+
· · · · · · · · · · · ·
|
|
237
235
|
- **`c`/`continue`** — Plan without them
|
|
238
236
|
- **`s`/`stop`** — Complete them first (/start-specification)
|
|
237
|
+
· · · · · · · · · · · ·
|
|
239
238
|
```
|
|
240
239
|
|
|
241
240
|
**STOP.** Wait for user response.
|
|
@@ -10,14 +10,14 @@ Invoke the **technical-research** skill for this conversation.
|
|
|
10
10
|
|
|
11
11
|
This is **Phase 1** of the six-phase workflow:
|
|
12
12
|
|
|
13
|
-
| Phase
|
|
14
|
-
|
|
15
|
-
| **1. Research**
|
|
16
|
-
| 2. Discussion
|
|
17
|
-
| 3. Specification
|
|
18
|
-
| 4. Planning
|
|
19
|
-
| 5. Implementation | DOING - tests first, then code
|
|
20
|
-
| 6. Review
|
|
13
|
+
| Phase | Focus | You |
|
|
14
|
+
|-------------------|----------------------------------------------------|--------|
|
|
15
|
+
| **1. Research** | EXPLORE - ideas, feasibility, market, business | ◀ HERE |
|
|
16
|
+
| 2. Discussion | WHAT and WHY - decisions, architecture, edge cases | |
|
|
17
|
+
| 3. Specification | REFINE - validate into standalone spec | |
|
|
18
|
+
| 4. Planning | HOW - phases, tasks, acceptance criteria | |
|
|
19
|
+
| 5. Implementation | DOING - tests first, then code | |
|
|
20
|
+
| 6. Review | VALIDATING - check work against artifacts | |
|
|
21
21
|
|
|
22
22
|
**Stay in your lane**: Explore freely. This is the time for broad thinking, feasibility checks, and learning. Surface options and tradeoffs — don't make decisions. When a topic converges toward a conclusion, that's a signal it's ready for discussion phase, not a cue to start deciding. Park it and move on.
|
|
23
23
|
|
|
@@ -43,95 +43,20 @@ Follow these steps EXACTLY as written. Do not skip steps or combine them. Presen
|
|
|
43
43
|
|
|
44
44
|
Invoke the `/migrate` skill and assess its output.
|
|
45
45
|
|
|
46
|
-
**If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1.
|
|
46
|
+
**If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1.
|
|
47
47
|
|
|
48
48
|
**If no updates needed**: Proceed to Step 1.
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
52
|
-
## Step 1:
|
|
52
|
+
## Step 1: Gather Context
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
What's on your mind?
|
|
58
|
-
|
|
59
|
-
- What idea or topic do you want to explore?
|
|
60
|
-
- What prompted this - a problem, opportunity, curiosity?
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**STOP.** Wait for user response before proceeding.
|
|
54
|
+
Load **[gather-context.md](references/gather-context.md)** and follow its instructions as written.
|
|
64
55
|
|
|
65
56
|
→ Proceed to **Step 2**.
|
|
66
57
|
|
|
67
58
|
---
|
|
68
59
|
|
|
69
|
-
## Step 2:
|
|
70
|
-
|
|
71
|
-
Ask:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
What do you already know?
|
|
75
|
-
|
|
76
|
-
- Any initial thoughts or research you've done?
|
|
77
|
-
- Constraints or context I should be aware of?
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**STOP.** Wait for user response before proceeding.
|
|
81
|
-
|
|
82
|
-
→ Proceed to **Step 3**.
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Step 3: Determine Starting Point
|
|
87
|
-
|
|
88
|
-
Ask:
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
Where should we start?
|
|
92
|
-
|
|
93
|
-
- Technical feasibility? Market landscape? Business model?
|
|
94
|
-
- Or just talk it through and see where it goes?
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**STOP.** Wait for user response before proceeding.
|
|
98
|
-
|
|
99
|
-
→ Proceed to **Step 4**.
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## Step 4: Gather Final Context
|
|
104
|
-
|
|
105
|
-
Ask:
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
Any constraints or context I should know about upfront?
|
|
109
|
-
|
|
110
|
-
(Or "none" if we're starting fresh)
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**STOP.** Wait for user response before proceeding.
|
|
114
|
-
|
|
115
|
-
→ Proceed to **Step 5**.
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Step 5: Invoke the Skill
|
|
120
|
-
|
|
121
|
-
After completing the steps above, this skill's purpose is fulfilled.
|
|
122
|
-
|
|
123
|
-
Invoke the [technical-research](../technical-research/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded - it contains the instructions for how to proceed.
|
|
124
|
-
|
|
125
|
-
**Example handoff:**
|
|
126
|
-
```
|
|
127
|
-
Research session for: {topic}
|
|
128
|
-
Output: docs/workflow/research/exploration.md
|
|
129
|
-
|
|
130
|
-
Context:
|
|
131
|
-
- Prompted by: {problem, opportunity, or curiosity}
|
|
132
|
-
- Already knows: {any initial thoughts or research, or "starting fresh"}
|
|
133
|
-
- Starting point: {technical feasibility, market, business model, or "open exploration"}
|
|
134
|
-
- Constraints: {any constraints mentioned, or "none"}
|
|
60
|
+
## Step 2: Invoke the Skill
|
|
135
61
|
|
|
136
|
-
|
|
137
|
-
```
|
|
62
|
+
Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Gather Context
|
|
2
|
+
|
|
3
|
+
*Reference for **[start-research](../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Ask each question below **one at a time**. After each, **STOP** and wait for the user's response before proceeding.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Seed Idea
|
|
12
|
+
|
|
13
|
+
Ask:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
What's on your mind?
|
|
17
|
+
|
|
18
|
+
- What idea or topic do you want to explore?
|
|
19
|
+
- What prompted this - a problem, opportunity, curiosity?
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**STOP.** Wait for user response before proceeding.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Current Knowledge
|
|
27
|
+
|
|
28
|
+
Ask:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
What do you already know?
|
|
32
|
+
|
|
33
|
+
- Any initial thoughts or research you've done?
|
|
34
|
+
- Constraints or context I should be aware of?
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**STOP.** Wait for user response before proceeding.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Starting Point
|
|
42
|
+
|
|
43
|
+
Ask:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Where should we start?
|
|
47
|
+
|
|
48
|
+
- Technical feasibility? Market landscape? Business model?
|
|
49
|
+
- Or just talk it through and see where it goes?
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**STOP.** Wait for user response before proceeding.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Final Context
|
|
57
|
+
|
|
58
|
+
Ask:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Any constraints or context I should know about upfront?
|
|
62
|
+
|
|
63
|
+
(Or "none" if we're starting fresh)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**STOP.** Wait for user response before proceeding.
|
|
67
|
+
|
|
68
|
+
---
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Invoke the Skill
|
|
2
|
+
|
|
3
|
+
*Reference for **[start-research](../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
This skill's purpose is now fulfilled.
|
|
8
|
+
|
|
9
|
+
Invoke the [technical-research](../../technical-research/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded - it contains the instructions for how to proceed.
|
|
10
|
+
|
|
11
|
+
**Example handoff:**
|
|
12
|
+
```
|
|
13
|
+
Research session for: {topic}
|
|
14
|
+
Output: docs/workflow/research/exploration.md
|
|
15
|
+
|
|
16
|
+
Context:
|
|
17
|
+
- Prompted by: {problem, opportunity, or curiosity}
|
|
18
|
+
- Already knows: {any initial thoughts or research, or "starting fresh"}
|
|
19
|
+
- Starting point: {technical feasibility, market, business model, or "open exploration"}
|
|
20
|
+
- Constraints: {any constraints mentioned, or "none"}
|
|
21
|
+
|
|
22
|
+
Invoke the technical-research skill.
|
|
23
|
+
```
|
|
@@ -114,8 +114,7 @@ Available Plans:
|
|
|
114
114
|
1. {topic-1} ({status}) - format: {format}, spec: {exists|missing}
|
|
115
115
|
2. {topic-2} ({status}) - format: {format}, spec: {exists|missing}
|
|
116
116
|
|
|
117
|
-
· · ·
|
|
118
|
-
|
|
117
|
+
· · · · · · · · · · · ·
|
|
119
118
|
Which plan would you like to review the implementation for? (Enter a number or name)
|
|
120
119
|
```
|
|
121
120
|
|
|
@@ -138,13 +137,13 @@ Auto-selecting: {topic} (only available plan)
|
|
|
138
137
|
Ask the user what code to review:
|
|
139
138
|
|
|
140
139
|
```
|
|
141
|
-
· · ·
|
|
142
|
-
|
|
140
|
+
· · · · · · · · · · · ·
|
|
143
141
|
What code should I review?
|
|
144
142
|
|
|
145
143
|
- **`a`/`all`** — All changes since the plan was created
|
|
146
144
|
- **`g`/`git`** — Identify from git status
|
|
147
145
|
- Specific directories or files — tell me which
|
|
146
|
+
· · · · · · · · · · · ·
|
|
148
147
|
```
|
|
149
148
|
|
|
150
149
|
**STOP.** Wait for user response.
|
|
@@ -210,13 +210,13 @@ Check `cache.status` from discovery to determine which options to present.
|
|
|
210
210
|
##### If `cache.status: "valid"`
|
|
211
211
|
|
|
212
212
|
```
|
|
213
|
-
· · ·
|
|
214
|
-
|
|
213
|
+
· · · · · · · · · · · ·
|
|
215
214
|
What would you like to do?
|
|
216
215
|
|
|
217
216
|
- **`c`/`continue`** — Resume work on a spec in progress
|
|
218
217
|
- **`s`/`select`** — Choose from previously analyzed groupings ({cache.generated})
|
|
219
218
|
- **`r`/`refresh`** — Fresh analysis of discussion relationships
|
|
219
|
+
· · · · · · · · · · · ·
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
**STOP.** Wait for user response.
|
|
@@ -224,14 +224,14 @@ What would you like to do?
|
|
|
224
224
|
##### If `cache.status: "stale"`
|
|
225
225
|
|
|
226
226
|
```
|
|
227
|
-
· · ·
|
|
228
|
-
|
|
227
|
+
· · · · · · · · · · · ·
|
|
229
228
|
What would you like to do?
|
|
230
229
|
|
|
231
230
|
Note: A previous grouping analysis exists but is now outdated - discussion documents have changed since it was created. Re-analysis is required, but existing specification names will be preserved where groupings overlap.
|
|
232
231
|
|
|
233
232
|
- **`c`/`continue`** — Resume work on a spec in progress
|
|
234
233
|
- **`a`/`assess`** — Re-analyze discussions for combinations
|
|
234
|
+
· · · · · · · · · · · ·
|
|
235
235
|
```
|
|
236
236
|
|
|
237
237
|
**STOP.** Wait for user response.
|
|
@@ -239,12 +239,12 @@ Note: A previous grouping analysis exists but is now outdated - discussion docum
|
|
|
239
239
|
##### If `cache.status: "none"`
|
|
240
240
|
|
|
241
241
|
```
|
|
242
|
-
· · ·
|
|
243
|
-
|
|
242
|
+
· · · · · · · · · · · ·
|
|
244
243
|
What would you like to do?
|
|
245
244
|
|
|
246
245
|
- **`c`/`continue`** — Resume work on a spec in progress
|
|
247
246
|
- **`a`/`assess`** — Analyze discussions for combinations
|
|
247
|
+
· · · · · · · · · · · ·
|
|
248
248
|
```
|
|
249
249
|
|
|
250
250
|
**STOP.** Wait for user response.
|
|
@@ -474,8 +474,7 @@ Coupling: {explanation}
|
|
|
474
474
|
|
|
475
475
|
---
|
|
476
476
|
|
|
477
|
-
· · ·
|
|
478
|
-
|
|
477
|
+
· · · · · · · · · · · ·
|
|
479
478
|
How would you like to proceed?
|
|
480
479
|
|
|
481
480
|
- **`p`/`proceed`** — As recommended (I'll ask which to start with)
|
|
@@ -483,6 +482,7 @@ How would you like to proceed?
|
|
|
483
482
|
- **`i`/`individual`** — Create 1:1 specs (I'll ask which to start)
|
|
484
483
|
- **`r`/`refresh`** — Re-analyze discussions
|
|
485
484
|
- Combine differently — tell me your preferred groupings
|
|
485
|
+
· · · · · · · · · · · ·
|
|
486
486
|
```
|
|
487
487
|
|
|
488
488
|
**Status Legend:**
|
|
@@ -564,10 +564,10 @@ This reorganization affects multiple existing specifications:
|
|
|
564
564
|
|
|
565
565
|
Moving discussions between established specifications requires deleting the affected specs and re-processing. The source material in your discussions is preserved.
|
|
566
566
|
|
|
567
|
-
· · ·
|
|
568
|
-
|
|
567
|
+
· · · · · · · · · · · ·
|
|
569
568
|
- **`d`/`delete`** — Remove affected specs and create fresh ones for your new groupings
|
|
570
569
|
- **`r`/`reconsider`** — Adjust your groupings to affect fewer specs
|
|
570
|
+
· · · · · · · · · · · ·
|
|
571
571
|
```
|
|
572
572
|
|
|
573
573
|
**STOP.** Wait for user choice.
|
|
@@ -608,11 +608,11 @@ Check if `docs/workflow/specification/unified.md` already exists.
|
|
|
608
608
|
|
|
609
609
|
This will consolidate ALL {N} concluded discussions into a single specification.
|
|
610
610
|
|
|
611
|
-
· · ·
|
|
612
|
-
|
|
611
|
+
· · · · · · · · · · · ·
|
|
613
612
|
Proceed with unified specification?
|
|
614
613
|
- **`y`/`yes`** — Proceed
|
|
615
614
|
- **`n`/`no`** — Cancel
|
|
615
|
+
· · · · · · · · · · · ·
|
|
616
616
|
```
|
|
617
617
|
|
|
618
618
|
**STOP.** Wait for user to confirm, then proceed to **Step 9** with all discussions as sources.
|
|
@@ -665,11 +665,11 @@ Output: docs/workflow/specification/{grouping-name}.md
|
|
|
665
665
|
After completion:
|
|
666
666
|
- specification/{topic-c}.md will be marked as superseded
|
|
667
667
|
|
|
668
|
-
· · ·
|
|
669
|
-
|
|
668
|
+
· · · · · · · · · · · ·
|
|
670
669
|
Proceed?
|
|
671
670
|
- **`y`/`yes`** — Proceed
|
|
672
671
|
- **`n`/`no`** — Go back
|
|
672
|
+
· · · · · · · · · · · ·
|
|
673
673
|
```
|
|
674
674
|
|
|
675
675
|
#### If creating a NEW grouped specification (no existing specs)
|
|
@@ -684,11 +684,11 @@ Sources:
|
|
|
684
684
|
|
|
685
685
|
Output: docs/workflow/specification/{grouping-name}.md
|
|
686
686
|
|
|
687
|
-
· · ·
|
|
688
|
-
|
|
687
|
+
· · · · · · · · · · · ·
|
|
689
688
|
Proceed?
|
|
690
689
|
- **`y`/`yes`** — Proceed
|
|
691
690
|
- **`n`/`no`** — Go back
|
|
691
|
+
· · · · · · · · · · · ·
|
|
692
692
|
```
|
|
693
693
|
|
|
694
694
|
#### If CONTINUING an existing grouped specification
|
|
@@ -702,11 +702,11 @@ Sources:
|
|
|
702
702
|
- docs/workflow/discussion/{topic-a}.md
|
|
703
703
|
- docs/workflow/discussion/{topic-b}.md
|
|
704
704
|
|
|
705
|
-
· · ·
|
|
706
|
-
|
|
705
|
+
· · · · · · · · · · · ·
|
|
707
706
|
Proceed?
|
|
708
707
|
- **`y`/`yes`** — Proceed
|
|
709
708
|
- **`n`/`no`** — Go back
|
|
709
|
+
· · · · · · · · · · · ·
|
|
710
710
|
```
|
|
711
711
|
|
|
712
712
|
#### If creating/continuing an INDIVIDUAL specification
|
|
@@ -719,11 +719,11 @@ Sources:
|
|
|
719
719
|
|
|
720
720
|
Output: docs/workflow/specification/{topic}.md
|
|
721
721
|
|
|
722
|
-
· · ·
|
|
723
|
-
|
|
722
|
+
· · · · · · · · · · · ·
|
|
724
723
|
Proceed?
|
|
725
724
|
- **`y`/`yes`** — Proceed
|
|
726
725
|
- **`n`/`no`** — Go back
|
|
726
|
+
· · · · · · · · · · · ·
|
|
727
727
|
```
|
|
728
728
|
|
|
729
729
|
**STOP.** Wait for user confirmation.
|
|
@@ -62,6 +62,10 @@ Do not guess at progress or continue from memory. The files on disk and git hist
|
|
|
62
62
|
1. **No autonomous decisions on spec deviations** — when the executor reports a blocker or spec deviation, present to user and STOP. Never resolve on the user's behalf.
|
|
63
63
|
2. **All git operations are the orchestrator's responsibility** — agents never commit, stage, or interact with git.
|
|
64
64
|
|
|
65
|
+
## Output Formatting
|
|
66
|
+
|
|
67
|
+
When announcing a new step, output `── ── ── ── ──` on its own line before the step heading.
|
|
68
|
+
|
|
65
69
|
---
|
|
66
70
|
|
|
67
71
|
## Step 1: Environment Setup
|
|
@@ -162,14 +166,14 @@ Commit: `impl({topic}): start implementation`
|
|
|
162
166
|
|
|
163
167
|
Present the existing configuration for confirmation:
|
|
164
168
|
|
|
165
|
-
>
|
|
169
|
+
> Previous session used these project skills:
|
|
166
170
|
> - `{skill-name}` — {path}
|
|
167
171
|
> - ...
|
|
168
172
|
>
|
|
169
|
-
> · · ·
|
|
170
|
-
>
|
|
173
|
+
> · · · · · · · · · · · ·
|
|
171
174
|
> - **`y`/`yes`** — Keep these, proceed
|
|
172
|
-
> - **`c`/`change`** — Re-discover and choose skills
|
|
175
|
+
> - **`c`/`change`** — Re-discover and choose skills
|
|
176
|
+
> · · · · · · · · · · · ·
|
|
173
177
|
|
|
174
178
|
**STOP.** Wait for user choice.
|
|
175
179
|
|
|
@@ -193,7 +197,11 @@ Scan `.claude/skills/` for project-specific skill directories. Present findings:
|
|
|
193
197
|
> - `{skill-name}` — {brief description}
|
|
194
198
|
> - ...
|
|
195
199
|
>
|
|
196
|
-
>
|
|
200
|
+
> · · · · · · · · · · · ·
|
|
201
|
+
> - **`a`/`all`** — Use all listed skills
|
|
202
|
+
> - **`n`/`none`** — Skip project skills
|
|
203
|
+
> - **Or list the ones you want** — e.g. "golang-pro, react-patterns"
|
|
204
|
+
> · · · · · · · · · · · ·
|
|
197
205
|
|
|
198
206
|
**STOP.** Wait for user to confirm which skills are relevant.
|
|
199
207
|
|
|
@@ -217,11 +225,11 @@ Otherwise, present discovery findings to the user:
|
|
|
217
225
|
>
|
|
218
226
|
> Recommendations: {any suggested tools with install commands}
|
|
219
227
|
>
|
|
220
|
-
> · · ·
|
|
221
|
-
>
|
|
228
|
+
> · · · · · · · · · · · ·
|
|
222
229
|
> - **`y`/`yes`** — Approve these linter commands
|
|
223
230
|
> - **`c`/`change`** — Modify the linter list
|
|
224
231
|
> - **`s`/`skip`** — Skip linter setup (no linting during TDD)
|
|
232
|
+
> · · · · · · · · · · · ·
|
|
225
233
|
|
|
226
234
|
**STOP.** Wait for user choice.
|
|
227
235
|
|
|
@@ -12,8 +12,11 @@ Apply standard quality principles. Defer to project-specific skills for framewor
|
|
|
12
12
|
- Extract repeated logic after three instances (Rule of Three)
|
|
13
13
|
- Avoid premature abstraction for code used once or twice
|
|
14
14
|
|
|
15
|
+
### Compose, Don't Duplicate
|
|
16
|
+
When new behavior is the logical inverse or subset of existing behavior, derive it from the existing abstraction rather than implementing independently. If you have a query for "ready items," the query for "blocked items" should be "open AND NOT ready" — not an independently authored query that could drift. Prefer mathematical relationships (derived = total - computed) over parallel computations that must be kept in sync.
|
|
17
|
+
|
|
15
18
|
### SOLID
|
|
16
|
-
- **Single Responsibility**: Each class/function does one thing
|
|
19
|
+
- **Single Responsibility**: Each class/function does one thing. Multi-step logic should decompose into named helper functions — each step a function, each name documents intent.
|
|
17
20
|
- **Open/Closed**: Extend behavior without modifying existing code
|
|
18
21
|
- **Liskov Substitution**: Subtypes must be substitutable for base types
|
|
19
22
|
- **Interface Segregation**: Don't force classes to implement unused methods
|
|
@@ -25,6 +28,9 @@ Keep low. Fix with early returns and method extraction.
|
|
|
25
28
|
### YAGNI
|
|
26
29
|
Only implement what's in the plan. Ask: "Is this in the plan?"
|
|
27
30
|
|
|
31
|
+
### Concrete Over Abstract
|
|
32
|
+
Prefer concrete types over language-level escape hatches that bypass the type system. Use specific types for data passing between layers, not untyped containers. If you need polymorphism, define a named interface/protocol with specific methods — don't pass untyped values. If you find yourself writing runtime type checks or casts inside a function, the signature is too abstract.
|
|
33
|
+
|
|
28
34
|
## Testability
|
|
29
35
|
- Inject dependencies
|
|
30
36
|
- Prefer pure functions
|
|
@@ -36,6 +42,8 @@ Only implement what's in the plan. Ask: "Is this in the plan?"
|
|
|
36
42
|
- Deep nesting (3+)
|
|
37
43
|
- Long parameter lists (4+)
|
|
38
44
|
- Boolean parameters
|
|
45
|
+
- Untyped parameters when concrete types are known at design time
|
|
46
|
+
- Substring assertions in tests when exact output is deterministic
|
|
39
47
|
|
|
40
48
|
## Project Standards
|
|
41
49
|
Check `.claude/skills/` for project-specific patterns.
|
|
@@ -26,10 +26,10 @@ If `analysis_cycle > 3`:
|
|
|
26
26
|
|
|
27
27
|
> **Analysis cycle {N} — this is beyond the standard 3 cycles.**
|
|
28
28
|
>
|
|
29
|
-
> · · ·
|
|
30
|
-
>
|
|
29
|
+
> · · · · · · · · · · · ·
|
|
31
30
|
> - **`s`/`skip`** — Skip analysis, proceed to completion
|
|
32
31
|
> - **`p`/`proceed`** — Run analysis anyway
|
|
32
|
+
> · · · · · · · · · · · ·
|
|
33
33
|
|
|
34
34
|
**STOP.** Wait for user choice.
|
|
35
35
|
|
|
@@ -55,11 +55,11 @@ If there are unstaged changes or untracked files, categorize them:
|
|
|
55
55
|
> - `{file}` ({status: modified/untracked})
|
|
56
56
|
> - ...
|
|
57
57
|
>
|
|
58
|
-
> · · ·
|
|
59
|
-
>
|
|
58
|
+
> · · · · · · · · · · · ·
|
|
60
59
|
> - **`y`/`yes`** — Include all in the checkpoint commit
|
|
61
60
|
> - **`s`/`skip`** — Exclude unexpected files, commit only implementation files
|
|
62
61
|
> - **Comment** — Specify which to include
|
|
62
|
+
> · · · · · · · · · · · ·
|
|
63
63
|
|
|
64
64
|
**STOP.** Wait for user choice.
|
|
65
65
|
|
|
@@ -137,11 +137,11 @@ Then present each task with `status: pending` individually:
|
|
|
137
137
|
> **Tests**:
|
|
138
138
|
> {tests}
|
|
139
139
|
>
|
|
140
|
-
> · · ·
|
|
141
|
-
>
|
|
140
|
+
> · · · · · · · · · · · ·
|
|
142
141
|
> - **`a`/`approve`** — Approve this task
|
|
143
142
|
> - **`s`/`skip`** — Skip this task
|
|
144
143
|
> - **Comment** — Revise based on feedback
|
|
144
|
+
> · · · · · · · · · · · ·
|
|
145
145
|
|
|
146
146
|
**STOP.** Wait for user input.
|
|
147
147
|
|
|
@@ -44,11 +44,11 @@ Present the executor's ISSUES to the user:
|
|
|
44
44
|
>
|
|
45
45
|
> {executor's ISSUES content}
|
|
46
46
|
>
|
|
47
|
-
> · · ·
|
|
48
|
-
>
|
|
47
|
+
> · · · · · · · · · · · ·
|
|
49
48
|
> - **`r`/`retry`** — Re-invoke the executor with your comments (provide below)
|
|
50
49
|
> - **`s`/`skip`** — Skip this task and move to the next
|
|
51
50
|
> - **`t`/`stop`** — Stop implementation entirely
|
|
51
|
+
> · · · · · · · · · · · ·
|
|
52
52
|
|
|
53
53
|
**STOP.** Wait for user choice.
|
|
54
54
|
|
|
@@ -101,12 +101,12 @@ Present the reviewer's findings and fix analysis to the user:
|
|
|
101
101
|
> Notes (non-blocking):
|
|
102
102
|
> {NOTES from reviewer}
|
|
103
103
|
>
|
|
104
|
-
> · · ·
|
|
105
|
-
>
|
|
104
|
+
> · · · · · · · · · · · ·
|
|
106
105
|
> - **`y`/`yes`** — Accept the review and fix analysis, pass to executor
|
|
107
106
|
> - **`a`/`auto`** — Accept and auto-approve future fix analyses
|
|
108
107
|
> - **`s`/`skip`** — Override the reviewer and proceed as-is
|
|
109
108
|
> - **Comment** — Any commentary, adjustments, alternative approaches, or questions before passing to executor
|
|
109
|
+
> · · · · · · · · · · · ·
|
|
110
110
|
|
|
111
111
|
**STOP.** Wait for user choice.
|
|
112
112
|
|
|
@@ -130,12 +130,12 @@ Present a summary and wait for user input:
|
|
|
130
130
|
> Phase: {phase number} — {phase name}
|
|
131
131
|
> {executor's SUMMARY — brief commentary, decisions, implementation notes}
|
|
132
132
|
>
|
|
133
|
-
> · · ·
|
|
134
|
-
>
|
|
133
|
+
> · · · · · · · · · · · ·
|
|
135
134
|
> **Options:**
|
|
136
135
|
> - **`y`/`yes`** — Approve, commit, continue to next task
|
|
137
136
|
> - **`a`/`auto`** — Approve this and all future reviewer-approved tasks automatically
|
|
138
137
|
> - **Comment** — Feedback the reviewer missed (triggers a fix round)
|
|
138
|
+
> · · · · · · · · · · · ·
|
|
139
139
|
|
|
140
140
|
**STOP.** Wait for user input.
|
|
141
141
|
|
|
@@ -42,7 +42,9 @@ But write **complete, functional implementations** - don't artificially minimize
|
|
|
42
42
|
|
|
43
43
|
**Derive tests from plan**: Task's micro acceptance becomes your first test. Edge cases become additional tests.
|
|
44
44
|
|
|
45
|
-
**
|
|
45
|
+
**Assert precisely**: For mutation operations (create, update, delete, state transitions), don't just assert the return value — verify observable side effects independently. A test that checks "operation succeeded" but ignores whether timestamps updated, related records changed, or output structure is correct will miss regressions that only affect side effects. Assert structured output by parsing and checking fields/values, not by string matching the serialized form.
|
|
46
|
+
|
|
47
|
+
**Write test names first**: List all test names before writing bodies. Confirm coverage matches acceptance criteria. Then consider: invalid input types, boundary values, zero/nil/empty inputs, single vs multiple items, and success alongside failure paths — add tests for any that are relevant and non-trivial.
|
|
46
48
|
|
|
47
49
|
**No implementation code exists yet.** If you're tempted to "just sketch out the class first" - don't. The test comes first. Always.
|
|
48
50
|
|
|
@@ -58,6 +58,10 @@ This process constructs a plan from a specification. A plan consists of:
|
|
|
58
58
|
|
|
59
59
|
Follow every step in sequence. No steps are optional.
|
|
60
60
|
|
|
61
|
+
## Output Formatting
|
|
62
|
+
|
|
63
|
+
When announcing a new step, output `── ── ── ── ──` on its own line before the step heading.
|
|
64
|
+
|
|
61
65
|
---
|
|
62
66
|
|
|
63
67
|
## Step 0: Resume Detection
|
|
@@ -76,14 +80,14 @@ Note the current phase and task position from the `planning:` block.
|
|
|
76
80
|
|
|
77
81
|
Load **[spec-change-detection.md](references/spec-change-detection.md)** to check whether the specification has changed since planning started. Then present the user with an informed choice:
|
|
78
82
|
|
|
79
|
-
>
|
|
83
|
+
> Found existing plan for **{topic}** (previously reached phase {N}, task {M}).
|
|
80
84
|
>
|
|
81
85
|
> {spec change summary from spec-change-detection.md}
|
|
82
86
|
>
|
|
83
|
-
> · · ·
|
|
84
|
-
>
|
|
87
|
+
> · · · · · · · · · · · ·
|
|
85
88
|
> - **`c`/`continue`** — Walk through the plan from the start. You can review, amend, or navigate at any point — including straight to the leading edge.
|
|
86
|
-
> - **`r`/`restart`** — Erase all planning work for this topic and start fresh. This deletes the Plan Index File and any Authored Tasks. Other topics are unaffected.
|
|
89
|
+
> - **`r`/`restart`** — Erase all planning work for this topic and start fresh. This deletes the Plan Index File and any Authored Tasks. Other topics are unaffected.
|
|
90
|
+
> · · · · · · · · · · · ·
|
|
87
91
|
|
|
88
92
|
**STOP.** Wait for user response.
|
|
89
93
|
|
|
@@ -120,12 +124,12 @@ First, choose the Output Format.
|
|
|
120
124
|
|
|
121
125
|
Present the recommendation:
|
|
122
126
|
|
|
123
|
-
>
|
|
124
|
-
>
|
|
125
|
-
> · · ·
|
|
127
|
+
> Existing plans use **{format}**. Use the same format for consistency?
|
|
126
128
|
>
|
|
129
|
+
> · · · · · · · · · · · ·
|
|
127
130
|
> - **`y`/`yes`** — Use {format}
|
|
128
|
-
> - **`n`/`no`** — See all available formats
|
|
131
|
+
> - **`n`/`no`** — See all available formats
|
|
132
|
+
> · · · · · · · · · · · ·
|
|
129
133
|
|
|
130
134
|
**STOP.** Wait for user choice. If declined, fall through to the full list below.
|
|
131
135
|
|
|
@@ -38,11 +38,11 @@ The natural task order is already correct. Present this to the user:
|
|
|
38
38
|
>
|
|
39
39
|
> {notes from agent output}"
|
|
40
40
|
|
|
41
|
-
> · · ·
|
|
42
|
-
>
|
|
41
|
+
> · · · · · · · · · · · ·
|
|
43
42
|
> **To proceed:**
|
|
44
43
|
> - **`y`/`yes`** — Confirmed.
|
|
45
44
|
> - **Or tell me what to change.**
|
|
45
|
+
> · · · · · · · · · · · ·
|
|
46
46
|
|
|
47
47
|
**STOP.** Wait for the user's response.
|
|
48
48
|
|
|
@@ -72,11 +72,11 @@ Dependencies and priorities have already been written to the task files. Present
|
|
|
72
72
|
>
|
|
73
73
|
> {any notes from agent output}"
|
|
74
74
|
|
|
75
|
-
> · · ·
|
|
76
|
-
>
|
|
75
|
+
> · · · · · · · · · · · ·
|
|
77
76
|
> **To proceed:**
|
|
78
77
|
> - **`y`/`yes`** — Approved.
|
|
79
78
|
> - **Or tell me what to change.**
|
|
79
|
+
> · · · · · · · · · · · ·
|
|
80
80
|
|
|
81
81
|
**STOP.** Wait for the user's response.
|
|
82
82
|
|
|
@@ -31,12 +31,12 @@ After presenting, ask:
|
|
|
31
31
|
|
|
32
32
|
> **Task {M} of {total}: {Task Name}**
|
|
33
33
|
>
|
|
34
|
-
> · · ·
|
|
35
|
-
>
|
|
34
|
+
> · · · · · · · · · · · ·
|
|
36
35
|
> **To proceed:**
|
|
37
36
|
> - **`y`/`yes`** — Approved. I'll log it to the plan.
|
|
38
37
|
> - **Or tell me what to change.**
|
|
39
38
|
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
39
|
+
> · · · · · · · · · · · ·
|
|
40
40
|
|
|
41
41
|
**STOP.** Wait for the user's response.
|
|
42
42
|
|
|
@@ -59,12 +59,12 @@ Present the phase structure to the user.
|
|
|
59
59
|
|
|
60
60
|
> **Phase Structure**
|
|
61
61
|
>
|
|
62
|
-
> · · ·
|
|
63
|
-
>
|
|
62
|
+
> · · · · · · · · · · · ·
|
|
64
63
|
> **To proceed:**
|
|
65
64
|
> - **`y`/`yes`** — Approved. I'll proceed to task breakdown.
|
|
66
65
|
> - **Or tell me what to change** — reorder, split, merge, add, edit, or remove phases.
|
|
67
66
|
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
67
|
+
> · · · · · · · · · · · ·
|
|
68
68
|
|
|
69
69
|
#### If the user provides feedback
|
|
70
70
|
|
|
@@ -42,12 +42,12 @@ Present the task overview to the user.
|
|
|
42
42
|
|
|
43
43
|
**STOP.** Ask:
|
|
44
44
|
|
|
45
|
-
> · · ·
|
|
46
|
-
>
|
|
45
|
+
> · · · · · · · · · · · ·
|
|
47
46
|
> **To proceed:**
|
|
48
47
|
> - **`y`/`yes`** — Approved.
|
|
49
48
|
> - **Or tell me what to change** — reorder, split, merge, add, edit, or remove tasks.
|
|
50
49
|
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
50
|
+
> · · · · · · · · · · · ·
|
|
51
51
|
|
|
52
52
|
#### If the user provides feedback
|
|
53
53
|
|
|
@@ -71,12 +71,12 @@ Present the task list to the user for review.
|
|
|
71
71
|
|
|
72
72
|
> **Phase {N}: {Phase Name}** — {M} tasks.
|
|
73
73
|
>
|
|
74
|
-
> · · ·
|
|
75
|
-
>
|
|
74
|
+
> · · · · · · · · · · · ·
|
|
76
75
|
> **To proceed:**
|
|
77
76
|
> - **`y`/`yes`** — Confirmed.
|
|
78
77
|
> - **Or tell me what to change.**
|
|
79
78
|
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
79
|
+
> · · · · · · · · · · · ·
|
|
80
80
|
|
|
81
81
|
**STOP.** Wait for the user's response.
|
|
82
82
|
|
|
@@ -43,11 +43,11 @@ Skip the resolution and reverse check — there is nothing to resolve against. D
|
|
|
43
43
|
|
|
44
44
|
**STOP.** Present a summary of the dependency state: what was documented, what was resolved, what remains unresolved, and any reverse resolutions made.
|
|
45
45
|
|
|
46
|
-
> · · ·
|
|
47
|
-
>
|
|
46
|
+
> · · · · · · · · · · · ·
|
|
48
47
|
> **To proceed:**
|
|
49
48
|
> - **`y`/`yes`** — Approved. I'll proceed to plan review.
|
|
50
49
|
> - **Or tell me what to change.**
|
|
50
|
+
> · · · · · · · · · · · ·
|
|
51
51
|
|
|
52
52
|
#### If the user provides feedback
|
|
53
53
|
|
|
@@ -171,12 +171,12 @@ After presenting the finding and proposed fix, ask:
|
|
|
171
171
|
|
|
172
172
|
> **Finding {N} of {total}: {Brief Title}**
|
|
173
173
|
>
|
|
174
|
-
> · · ·
|
|
175
|
-
>
|
|
174
|
+
> · · · · · · · · · · · ·
|
|
176
175
|
> **To proceed:**
|
|
177
176
|
> - **`y`/`yes`** — Approved. I'll apply it to the plan verbatim.
|
|
178
177
|
> - **`s`/`skip`** — Leave this as-is and move to the next finding.
|
|
179
178
|
> - **Or tell me what to change.**
|
|
179
|
+
> · · · · · · · · · · · ·
|
|
180
180
|
|
|
181
181
|
**STOP.** Wait for the user's response.
|
|
182
182
|
|
|
@@ -149,12 +149,12 @@ After presenting the finding and proposed fix, ask:
|
|
|
149
149
|
|
|
150
150
|
> **Finding {N} of {total}: {Brief Title}**
|
|
151
151
|
>
|
|
152
|
-
> · · ·
|
|
153
|
-
>
|
|
152
|
+
> · · · · · · · · · · · ·
|
|
154
153
|
> **To proceed:**
|
|
155
154
|
> - **`y`/`yes`** — Approved. I'll apply it to the plan verbatim.
|
|
156
155
|
> - **`s`/`skip`** — Leave this as-is and move to the next finding.
|
|
157
156
|
> - **Or tell me what to change.**
|
|
157
|
+
> · · · · · · · · · · · ·
|
|
158
158
|
|
|
159
159
|
**STOP.** Wait for the user's response.
|
|
160
160
|
|
|
@@ -87,11 +87,11 @@ When you notice convergence, **flag it and give the user options**:
|
|
|
87
87
|
|
|
88
88
|
> This thread seems to be converging — we've explored {topic} enough that the tradeoffs are clear and it's approaching decision territory.
|
|
89
89
|
>
|
|
90
|
-
> · · ·
|
|
91
|
-
>
|
|
90
|
+
> · · · · · · · · · · · ·
|
|
92
91
|
> - **`p`/`park`** — Mark as discussion-ready and move to another topic
|
|
93
92
|
> - **`k`/`keep`** — Keep digging, there's more to understand
|
|
94
93
|
> - Comment — your call
|
|
94
|
+
> · · · · · · · · · · · ·
|
|
95
95
|
|
|
96
96
|
**Never decide for the user.** Even if the answer seems obvious, flag it and ask.
|
|
97
97
|
|
|
@@ -78,11 +78,11 @@ Present your understanding to the user **in the format it would appear in the sp
|
|
|
78
78
|
|
|
79
79
|
Then present two explicit choices:
|
|
80
80
|
|
|
81
|
-
> · · ·
|
|
82
|
-
>
|
|
81
|
+
> · · · · · · · · · · · ·
|
|
83
82
|
> **To proceed:**
|
|
84
83
|
> - **`y`/`yes`** — Approved. I'll add the above to the specification **verbatim** (exactly as shown, no modifications).
|
|
85
84
|
> - **Or tell me what to change.**
|
|
85
|
+
> · · · · · · · · · · · ·
|
|
86
86
|
|
|
87
87
|
**Do not paraphrase these choices.** Present them exactly as written so users always know what to expect.
|
|
88
88
|
|
|
@@ -518,11 +518,11 @@ For each item, follow the **same workflow as the main specification process**:
|
|
|
518
518
|
>
|
|
519
519
|
> [content exactly as it would appear]
|
|
520
520
|
>
|
|
521
|
-
> · · ·
|
|
522
|
-
>
|
|
521
|
+
> · · · · · · · · · · · ·
|
|
523
522
|
> **To proceed:**
|
|
524
523
|
> - **`y`/`yes`** — Approved. I'll add the above to the specification **verbatim**.
|
|
525
524
|
> - **Or tell me what to change.**
|
|
525
|
+
> · · · · · · · · · · · ·
|
|
526
526
|
|
|
527
527
|
4. **Wait for explicit approval** - same rules as always: `y`/`yes` or equivalent before writing
|
|
528
528
|
5. **Log verbatim** when approved
|
|
@@ -650,11 +650,11 @@ For each item:
|
|
|
650
650
|
>
|
|
651
651
|
> [content exactly as it would appear]
|
|
652
652
|
>
|
|
653
|
-
> · · ·
|
|
654
|
-
>
|
|
653
|
+
> · · · · · · · · · · · ·
|
|
655
654
|
> **To proceed:**
|
|
656
655
|
> - **`y`/`yes`** — Approved. I'll add the above to the specification **verbatim**.
|
|
657
656
|
> - **Or tell me what to change.**
|
|
657
|
+
> · · · · · · · · · · · ·
|
|
658
658
|
|
|
659
659
|
4. **Wait for explicit approval**
|
|
660
660
|
5. **Log verbatim** when approved
|