@leeovery/claude-technical-workflows 2.0.48 → 2.0.50
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/planning-phase-designer.md +1 -1
- package/agents/planning-task-author.md +1 -1
- package/agents/planning-task-designer.md +1 -1
- package/commands/workflow/start-planning.md +101 -49
- package/commands/workflow/start-specification.md +18 -12
- package/package.json +1 -1
- package/scripts/discovery-for-planning.sh +16 -6
- package/skills/technical-planning/SKILL.md +12 -16
- package/skills/technical-planning/references/steps/author-tasks.md +11 -41
- package/skills/technical-planning/references/steps/define-phases.md +21 -20
- package/skills/technical-planning/references/steps/define-tasks.md +11 -23
- package/skills/technical-planning/references/steps/plan-construction.md +142 -0
- package/skills/technical-planning/references/steps/plan-review.md +0 -2
- package/skills/technical-planning/references/steps/resolve-dependencies.md +0 -2
- package/skills/technical-planning/references/steps/verify-source-material.md +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: planning-phase-designer
|
|
3
|
-
description: Designs implementation phases from a specification. Invoked by technical-planning skill during
|
|
3
|
+
description: Designs implementation phases from a specification. Invoked by technical-planning skill during plan construction.
|
|
4
4
|
tools: Read, Glob, Grep
|
|
5
5
|
model: inherit
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: planning-task-author
|
|
3
|
-
description: Writes full detail for a single plan task. Invoked by technical-planning skill during
|
|
3
|
+
description: Writes full detail for a single plan task. Invoked by technical-planning skill during plan construction.
|
|
4
4
|
tools: Read, Glob, Grep
|
|
5
5
|
model: inherit
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: planning-task-designer
|
|
3
|
-
description: Breaks a single phase into a task list with edge cases. Invoked by technical-planning skill during
|
|
3
|
+
description: Breaks a single phase into a task list with edge cases. Invoked by technical-planning skill during plan construction.
|
|
4
4
|
tools: Read, Glob, Grep
|
|
5
5
|
model: inherit
|
|
6
6
|
---
|
|
@@ -60,10 +60,11 @@ This outputs structured YAML. Parse it to understand:
|
|
|
60
60
|
|
|
61
61
|
**From `specifications` section:**
|
|
62
62
|
- `exists` - whether any specifications exist
|
|
63
|
-
- `feature` - list of feature specs (name, status, has_plan)
|
|
63
|
+
- `feature` - list of feature specs (name, status, has_plan, plan_status)
|
|
64
64
|
- `crosscutting` - list of cross-cutting specs (name, status)
|
|
65
65
|
- `counts.feature` - total feature specifications
|
|
66
66
|
- `counts.feature_ready` - feature specs ready for planning (concluded + no plan)
|
|
67
|
+
- `counts.feature_with_plan` - feature specs that already have plans
|
|
67
68
|
- `counts.crosscutting` - total cross-cutting specifications
|
|
68
69
|
|
|
69
70
|
**From `plans` section:**
|
|
@@ -71,7 +72,7 @@ This outputs structured YAML. Parse it to understand:
|
|
|
71
72
|
- `files` - each plan's name, format, status, and plan_id (if present)
|
|
72
73
|
|
|
73
74
|
**From `state` section:**
|
|
74
|
-
- `scenario` - one of: `"no_specs"`, `"
|
|
75
|
+
- `scenario` - one of: `"no_specs"`, `"nothing_actionable"`, `"has_options"`
|
|
75
76
|
|
|
76
77
|
**IMPORTANT**: Use ONLY this script for discovery. Do NOT run additional bash commands (ls, head, cat, etc.) to gather state - the script provides everything needed.
|
|
77
78
|
|
|
@@ -95,18 +96,20 @@ The planning phase requires a concluded specification. Please run /start-specifi
|
|
|
95
96
|
|
|
96
97
|
**STOP.** Wait for user to acknowledge before ending.
|
|
97
98
|
|
|
98
|
-
#### If scenario is "
|
|
99
|
+
#### If scenario is "nothing_actionable"
|
|
99
100
|
|
|
100
|
-
Specifications exist but none are
|
|
101
|
+
Specifications exist but none are actionable — all are still in-progress and no plans exist to continue.
|
|
101
102
|
|
|
102
103
|
→ Proceed to **Step 3** to show the state.
|
|
103
104
|
|
|
104
|
-
#### If scenario is "
|
|
105
|
+
#### If scenario is "has_options"
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
At least one specification is ready for planning, or an existing plan can be continued or reviewed.
|
|
107
108
|
|
|
108
109
|
→ Proceed to **Step 3** to present options.
|
|
109
110
|
|
|
111
|
+
---
|
|
112
|
+
|
|
110
113
|
## Step 3: Present Workflow State and Options
|
|
111
114
|
|
|
112
115
|
Present everything discovered to help the user make an informed choice.
|
|
@@ -114,47 +117,55 @@ Present everything discovered to help the user make an informed choice.
|
|
|
114
117
|
**Present the full state:**
|
|
115
118
|
|
|
116
119
|
```
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Feature specifications:
|
|
120
|
-
1. · {topic-1} (in-progress) - not ready
|
|
121
|
-
2. ✓ {topic-2} (concluded) - ready for planning
|
|
122
|
-
3. - {topic-3} (concluded) → plan exists
|
|
120
|
+
Planning Phase
|
|
123
121
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
Available:
|
|
123
|
+
1. + {topic-2} - create new plan
|
|
124
|
+
2. ▶ {topic-3} - continue in-progress plan
|
|
125
|
+
3. > {topic-4} - review concluded plan
|
|
127
126
|
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
Not plannable specifications:
|
|
128
|
+
· {topic-1} [feature, in-progress]
|
|
129
|
+
· {caching-strategy} [cross-cutting, concluded]
|
|
130
|
+
· {rate-limiting} [cross-cutting, in-progress]
|
|
130
131
|
```
|
|
131
132
|
|
|
132
|
-
**
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
133
|
+
**Formatting rules:**
|
|
134
|
+
|
|
135
|
+
Available (numbered, selectable):
|
|
136
|
+
- **`+`** — concluded spec with no plan yet
|
|
137
|
+
- **`▶`** — has a plan with `plan_status: planning`
|
|
138
|
+
- **`>`** — has a plan with `plan_status: concluded`
|
|
139
|
+
|
|
140
|
+
Not plannable specifications (no number, not selectable — `[type, status]` format):
|
|
141
|
+
- **`·`** — feature specs still in-progress, or cross-cutting specifications
|
|
142
|
+
- Feature specs: `[feature, in-progress]`
|
|
143
|
+
- Cross-cutting specs: `[cross-cutting, {status}]`
|
|
136
144
|
|
|
137
|
-
|
|
145
|
+
Omit either section entirely if it has no entries.
|
|
138
146
|
|
|
139
|
-
**
|
|
147
|
+
**Then prompt based on what's actionable:**
|
|
148
|
+
|
|
149
|
+
**If multiple actionable items:**
|
|
140
150
|
```
|
|
141
|
-
|
|
151
|
+
Select a specification (enter number):
|
|
142
152
|
```
|
|
143
153
|
|
|
144
154
|
**STOP.** Wait for user response.
|
|
145
155
|
|
|
146
|
-
**If single
|
|
156
|
+
**If single actionable item (auto-select):**
|
|
147
157
|
```
|
|
148
|
-
Auto-selecting: {topic} (only
|
|
158
|
+
Auto-selecting: {topic} (only actionable specification)
|
|
149
159
|
```
|
|
160
|
+
|
|
150
161
|
→ Proceed directly to **Step 4**.
|
|
151
162
|
|
|
152
|
-
**If
|
|
163
|
+
**If nothing actionable:**
|
|
153
164
|
```
|
|
154
|
-
No specifications
|
|
165
|
+
No plannable specifications.
|
|
155
166
|
|
|
156
167
|
To proceed:
|
|
157
|
-
- Complete any
|
|
168
|
+
- Complete any in-progress specifications with /start-specification
|
|
158
169
|
- Or create a new specification first
|
|
159
170
|
```
|
|
160
171
|
|
|
@@ -164,7 +175,23 @@ To proceed:
|
|
|
164
175
|
|
|
165
176
|
---
|
|
166
177
|
|
|
167
|
-
## Step 4:
|
|
178
|
+
## Step 4: Route by Plan State
|
|
179
|
+
|
|
180
|
+
Check whether the selected specification already has a plan (from `has_plan` in discovery output).
|
|
181
|
+
|
|
182
|
+
#### If no existing plan (fresh start)
|
|
183
|
+
|
|
184
|
+
→ Proceed to **Step 5** to gather context before invoking the skill.
|
|
185
|
+
|
|
186
|
+
#### If existing plan (continue or review)
|
|
187
|
+
|
|
188
|
+
The plan already has its context from when it was created. Skip context gathering.
|
|
189
|
+
|
|
190
|
+
→ Go directly to **Step 7** to invoke the skill.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Step 5: Gather Additional Context
|
|
168
195
|
|
|
169
196
|
Ask:
|
|
170
197
|
- Any additional context or priorities to consider?
|
|
@@ -172,50 +199,75 @@ Ask:
|
|
|
172
199
|
|
|
173
200
|
**STOP.** Wait for user response.
|
|
174
201
|
|
|
175
|
-
→ Proceed to **Step
|
|
202
|
+
→ Proceed to **Step 6**.
|
|
176
203
|
|
|
177
204
|
---
|
|
178
205
|
|
|
179
|
-
## Step
|
|
206
|
+
## Step 6: Surface Cross-Cutting Context
|
|
180
207
|
|
|
181
|
-
If
|
|
208
|
+
**If no cross-cutting specifications exist**: Skip this step. → Proceed to **Step 7**.
|
|
182
209
|
|
|
183
|
-
|
|
184
|
-
- Read each cross-cutting specification
|
|
185
|
-
- Identify which ones are relevant to the feature being planned
|
|
186
|
-
- Relevance is determined by topic overlap (e.g., caching strategy applies if the feature involves data retrieval or API calls)
|
|
210
|
+
Read each cross-cutting specification from `specifications.crosscutting` in the discovery output.
|
|
187
211
|
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
Cross-cutting specifications to reference:
|
|
191
|
-
- caching-strategy.md: [brief summary of key decisions]
|
|
192
|
-
- rate-limiting.md: [brief summary of key decisions]
|
|
193
|
-
```
|
|
212
|
+
### 6a: Warn about in-progress cross-cutting specs
|
|
194
213
|
|
|
195
|
-
|
|
214
|
+
If any **in-progress** cross-cutting specifications exist, check whether they could be relevant to the feature being planned (by topic overlap — e.g., a caching strategy is relevant if the feature involves data retrieval or API calls).
|
|
196
215
|
|
|
197
|
-
|
|
216
|
+
If any are relevant:
|
|
198
217
|
|
|
199
|
-
|
|
218
|
+
```
|
|
219
|
+
Note: The following cross-cutting specifications are still in-progress:
|
|
220
|
+
· {rate-limiting} - in-progress
|
|
221
|
+
|
|
222
|
+
These may contain architectural decisions relevant to this plan. You can:
|
|
223
|
+
- Continue planning without them
|
|
224
|
+
- Stop and complete them first (/start-specification)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**STOP.** Wait for user response.
|
|
228
|
+
|
|
229
|
+
If the user chooses to stop, end here. If they choose to continue, proceed.
|
|
230
|
+
|
|
231
|
+
### 6b: Summarize concluded cross-cutting specs
|
|
232
|
+
|
|
233
|
+
If any **concluded** cross-cutting specifications exist, identify which are relevant to the feature being planned and summarize for handoff:
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
Cross-cutting specifications to reference:
|
|
237
|
+
- caching-strategy.md: [brief summary of key decisions]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
These specifications contain validated architectural decisions that should inform the plan. The planning skill will incorporate these as a "Cross-Cutting References" section in the plan.
|
|
241
|
+
|
|
242
|
+
→ Proceed to **Step 7**.
|
|
200
243
|
|
|
201
244
|
---
|
|
202
245
|
|
|
203
|
-
## Step
|
|
246
|
+
## Step 7: Invoke the Skill
|
|
204
247
|
|
|
205
248
|
After completing the steps above, this command's purpose is fulfilled.
|
|
206
249
|
|
|
207
250
|
Invoke the [technical-planning](../../skills/technical-planning/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.
|
|
208
251
|
|
|
209
|
-
**Example handoff:**
|
|
252
|
+
**Example handoff (fresh plan):**
|
|
210
253
|
```
|
|
211
254
|
Planning session for: {topic}
|
|
212
255
|
Specification: docs/workflow/specification/{topic}.md
|
|
213
|
-
Additional context: {summary of user's answers from Step
|
|
256
|
+
Additional context: {summary of user's answers from Step 5}
|
|
214
257
|
Cross-cutting references: {list of applicable cross-cutting specs with brief summaries, or "none"}
|
|
215
258
|
|
|
216
259
|
Invoke the technical-planning skill.
|
|
217
260
|
```
|
|
218
261
|
|
|
262
|
+
**Example handoff (continue/review existing plan):**
|
|
263
|
+
```
|
|
264
|
+
Planning session for: {topic}
|
|
265
|
+
Specification: docs/workflow/specification/{topic}.md
|
|
266
|
+
Existing plan: docs/workflow/planning/{topic}.md
|
|
267
|
+
|
|
268
|
+
Invoke the technical-planning skill.
|
|
269
|
+
```
|
|
270
|
+
|
|
219
271
|
## Notes
|
|
220
272
|
|
|
221
273
|
- Ask questions clearly and wait for responses before proceeding
|
|
@@ -120,25 +120,31 @@ At least one concluded discussion exists.
|
|
|
120
120
|
Show the current state clearly. Use this EXACT format:
|
|
121
121
|
|
|
122
122
|
```
|
|
123
|
-
|
|
123
|
+
Specification Phase
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
125
|
+
Available discussions:
|
|
126
|
+
+ {topic-1} - create new spec
|
|
127
|
+
+ {topic-2} - create new spec
|
|
128
|
+
▶ {topic-3} - continue in-progress spec
|
|
129
|
+
> {topic-4} - review concluded spec
|
|
130
130
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
Not specifiable discussions:
|
|
132
|
+
· {topic-5} [in-progress]
|
|
133
|
+
|
|
134
|
+
Existing specifications:
|
|
135
|
+
• {spec-1} [active] - sources: {topic-1}
|
|
136
|
+
• {spec-2} [superseded → {other-spec}] - sources: {topic-x}
|
|
134
137
|
|
|
135
138
|
{N} concluded discussions available.
|
|
136
139
|
```
|
|
137
140
|
|
|
138
141
|
**Legend:**
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
+
- `+` = concluded, no spec yet (create new)
|
|
143
|
+
- `▶` = concluded, has in-progress spec (continue)
|
|
144
|
+
- `>` = concluded, has concluded spec (review)
|
|
145
|
+
- `·` = in-progress (not specifiable)
|
|
146
|
+
|
|
147
|
+
Omit either discussions section if it has no entries.
|
|
142
148
|
|
|
143
149
|
#### Routing Based on State
|
|
144
150
|
|
package/package.json
CHANGED
|
@@ -40,6 +40,7 @@ echo "specifications:"
|
|
|
40
40
|
|
|
41
41
|
feature_count=0
|
|
42
42
|
feature_ready_count=0
|
|
43
|
+
feature_with_plan_count=0
|
|
43
44
|
crosscutting_count=0
|
|
44
45
|
|
|
45
46
|
if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
|
|
@@ -59,21 +60,30 @@ if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
|
|
|
59
60
|
# Skip cross-cutting specs in this pass
|
|
60
61
|
[ "$spec_type" = "cross-cutting" ] && continue
|
|
61
62
|
|
|
62
|
-
# Check if plan exists
|
|
63
|
+
# Check if plan exists and its status
|
|
63
64
|
has_plan="false"
|
|
65
|
+
plan_status=""
|
|
64
66
|
if [ -f "$PLAN_DIR/${name}.md" ]; then
|
|
65
67
|
has_plan="true"
|
|
68
|
+
plan_status=$(extract_field "$PLAN_DIR/${name}.md" "status")
|
|
69
|
+
plan_status=${plan_status:-"unknown"}
|
|
66
70
|
fi
|
|
67
71
|
|
|
68
72
|
echo " - name: \"$name\""
|
|
69
73
|
echo " status: \"$status\""
|
|
70
74
|
echo " has_plan: $has_plan"
|
|
75
|
+
if [ "$has_plan" = "true" ]; then
|
|
76
|
+
echo " plan_status: \"$plan_status\""
|
|
77
|
+
fi
|
|
71
78
|
|
|
72
79
|
feature_count=$((feature_count + 1))
|
|
73
80
|
# "concluded" specs without plans are ready for planning
|
|
74
81
|
if [ "$status" = "concluded" ] && [ "$has_plan" = "false" ]; then
|
|
75
82
|
feature_ready_count=$((feature_ready_count + 1))
|
|
76
83
|
fi
|
|
84
|
+
if [ "$has_plan" = "true" ]; then
|
|
85
|
+
feature_with_plan_count=$((feature_with_plan_count + 1))
|
|
86
|
+
fi
|
|
77
87
|
done
|
|
78
88
|
|
|
79
89
|
if [ "$feature_count" -eq 0 ]; then
|
|
@@ -109,6 +119,7 @@ if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
|
|
|
109
119
|
echo " counts:"
|
|
110
120
|
echo " feature: $feature_count"
|
|
111
121
|
echo " feature_ready: $feature_ready_count"
|
|
122
|
+
echo " feature_with_plan: $feature_with_plan_count"
|
|
112
123
|
echo " crosscutting: $crosscutting_count"
|
|
113
124
|
else
|
|
114
125
|
echo " exists: false"
|
|
@@ -117,6 +128,7 @@ else
|
|
|
117
128
|
echo " counts:"
|
|
118
129
|
echo " feature: 0"
|
|
119
130
|
echo " feature_ready: 0"
|
|
131
|
+
echo " feature_with_plan: 0"
|
|
120
132
|
echo " crosscutting: 0"
|
|
121
133
|
fi
|
|
122
134
|
|
|
@@ -177,10 +189,8 @@ echo " has_plans: $plans_exist"
|
|
|
177
189
|
# Determine workflow state for routing
|
|
178
190
|
if [ "$specs_exist" = "false" ]; then
|
|
179
191
|
echo " scenario: \"no_specs\""
|
|
180
|
-
elif [ "$feature_ready_count" -eq 0 ]; then
|
|
181
|
-
echo " scenario: \"
|
|
182
|
-
elif [ "$feature_ready_count" -eq 1 ]; then
|
|
183
|
-
echo " scenario: \"single_ready_spec\""
|
|
192
|
+
elif [ "$feature_ready_count" -eq 0 ] && [ "$feature_with_plan_count" -eq 0 ]; then
|
|
193
|
+
echo " scenario: \"nothing_actionable\""
|
|
184
194
|
else
|
|
185
|
-
echo " scenario: \"
|
|
195
|
+
echo " scenario: \"has_options\""
|
|
186
196
|
fi
|
|
@@ -65,7 +65,7 @@ Load **[spec-change-detection.md](references/spec-change-detection.md)** to chec
|
|
|
65
65
|
>
|
|
66
66
|
> {spec change summary from spec-change-detection.md}
|
|
67
67
|
>
|
|
68
|
-
> - **`continue`** — Walk through the plan from the start. You can review, amend, or
|
|
68
|
+
> - **`continue`** — Walk through the plan from the start. You can review, amend, or navigate at any point — including straight to the leading edge.
|
|
69
69
|
> - **`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."
|
|
70
70
|
|
|
71
71
|
**STOP.** Wait for user response.
|
|
@@ -144,39 +144,35 @@ Load **[planning-principles.md](references/planning-principles.md)** and follow
|
|
|
144
144
|
|
|
145
145
|
Load **[steps/verify-source-material.md](references/steps/verify-source-material.md)** and follow its instructions as written.
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
## Step 4: Define Phases
|
|
150
|
-
|
|
151
|
-
Load **[steps/define-phases.md](references/steps/define-phases.md)** and follow its instructions as written.
|
|
147
|
+
→ Proceed to **Step 4**.
|
|
152
148
|
|
|
153
149
|
---
|
|
154
150
|
|
|
155
|
-
## Step
|
|
156
|
-
|
|
157
|
-
Load **[steps/define-tasks.md](references/steps/define-tasks.md)** and follow its instructions as written.
|
|
151
|
+
## Step 4: Plan Construction
|
|
158
152
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
## Step 6: Author Tasks
|
|
153
|
+
Load **[steps/plan-construction.md](references/steps/plan-construction.md)** and follow its instructions as written.
|
|
162
154
|
|
|
163
|
-
|
|
155
|
+
→ Proceed to **Step 5**.
|
|
164
156
|
|
|
165
157
|
---
|
|
166
158
|
|
|
167
|
-
## Step
|
|
159
|
+
## Step 5: Resolve External Dependencies
|
|
168
160
|
|
|
169
161
|
Load **[steps/resolve-dependencies.md](references/steps/resolve-dependencies.md)** and follow its instructions as written.
|
|
170
162
|
|
|
163
|
+
→ Proceed to **Step 6**.
|
|
164
|
+
|
|
171
165
|
---
|
|
172
166
|
|
|
173
|
-
## Step
|
|
167
|
+
## Step 6: Plan Review
|
|
174
168
|
|
|
175
169
|
Load **[steps/plan-review.md](references/steps/plan-review.md)** and follow its instructions as written.
|
|
176
170
|
|
|
171
|
+
→ Proceed to **Step 7**.
|
|
172
|
+
|
|
177
173
|
---
|
|
178
174
|
|
|
179
|
-
## Step
|
|
175
|
+
## Step 7: Conclude the Plan
|
|
180
176
|
|
|
181
177
|
After the review is complete:
|
|
182
178
|
|
|
@@ -4,35 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
This step uses the `planning-task-author` agent (`.claude/agents/planning-task-author.md`) to write full task
|
|
7
|
+
This step uses the `planning-task-author` agent (`.claude/agents/planning-task-author.md`) to write full detail for a single task. You invoke the agent, present its output, and handle the approval gate.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
Read the Plan Index File. Check the task table under the current phase.
|
|
14
|
-
|
|
15
|
-
**For each task:**
|
|
16
|
-
- If `status: authored` → skip (already written to output format)
|
|
17
|
-
- If `status: pending` → needs authoring
|
|
18
|
-
|
|
19
|
-
Walk through tasks in order. Already-authored tasks are presented for quick review (user can approve or amend). Pending tasks need full authoring.
|
|
20
|
-
|
|
21
|
-
**If all tasks in current phase are authored:** → Return to Step 5 for next phase, or Step 7 if all phases complete.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Author Tasks
|
|
26
|
-
|
|
27
|
-
Orient the user:
|
|
28
|
-
|
|
29
|
-
> "Task list for Phase {N} is agreed. I'll work through each task one at a time — delegating to a specialist agent that will read the full specification and write the complete task detail. You'll review each one before it's logged."
|
|
30
|
-
|
|
31
|
-
Work through the task list **one task at a time**.
|
|
11
|
+
## Author the Task
|
|
32
12
|
|
|
33
13
|
### Invoke the Agent
|
|
34
14
|
|
|
35
|
-
|
|
15
|
+
Invoke `planning-task-author` with these file paths:
|
|
36
16
|
|
|
37
17
|
1. **read-specification.md**: `.claude/skills/technical-planning/references/read-specification.md`
|
|
38
18
|
2. **Specification**: path from the Plan Index File's `specification:` field
|
|
@@ -52,9 +32,9 @@ After presenting, ask:
|
|
|
52
32
|
> **Task {M} of {total}: {Task Name}**
|
|
53
33
|
>
|
|
54
34
|
> **To proceed:**
|
|
55
|
-
> - **`y`/`yes`** — Approved. I'll log it to the plan
|
|
35
|
+
> - **`y`/`yes`** — Approved. I'll log it to the plan.
|
|
56
36
|
> - **Or tell me what to change.**
|
|
57
|
-
> -
|
|
37
|
+
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
58
38
|
|
|
59
39
|
**STOP.** Wait for the user's response.
|
|
60
40
|
|
|
@@ -66,31 +46,21 @@ Re-invoke `planning-task-author` with all original inputs PLUS:
|
|
|
66
46
|
|
|
67
47
|
Present the revised task in full. Ask the same choice again. Repeat until approved.
|
|
68
48
|
|
|
49
|
+
#### If the user navigates
|
|
50
|
+
|
|
51
|
+
→ Return to **Plan Construction**.
|
|
52
|
+
|
|
69
53
|
#### If approved (`y`/`yes`)
|
|
70
54
|
|
|
71
55
|
> **CHECKPOINT**: Before logging, verify: (1) You presented this exact content, (2) The user explicitly approved with `y`/`yes` or equivalent — not a question, comment, or "okay" in passing, (3) You are writing exactly what was approved with no modifications.
|
|
72
56
|
|
|
73
57
|
1. Write the task to the output format (format-specific — see output adapter)
|
|
74
58
|
2. Update the task table in the Plan Index File: set `status: authored`
|
|
75
|
-
3.
|
|
59
|
+
3. Advance the `planning:` block in frontmatter to the next pending task (or next phase if this was the last task)
|
|
76
60
|
4. Commit: `planning({topic}): author task {task-id} ({task name})`
|
|
77
61
|
|
|
78
62
|
Confirm:
|
|
79
63
|
|
|
80
64
|
> "Task {M} of {total}: {Task Name} — authored."
|
|
81
65
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
**If tasks remain in this phase:** → Return to the top with the next task. Present it, ask, wait.
|
|
85
|
-
|
|
86
|
-
**If all tasks in this phase are authored:**
|
|
87
|
-
|
|
88
|
-
Update `planning:` block and commit: `planning({topic}): complete Phase {N} tasks`
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
Phase {N}: {Phase Name} — complete ({M} tasks authored).
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
→ Return to **Step 5** for the next phase.
|
|
95
|
-
|
|
96
|
-
**If all phases are complete:** → Proceed to **Step 7**.
|
|
66
|
+
→ Return to **Plan Construction**.
|
|
@@ -4,34 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
This step uses the `planning-phase-designer` agent (`.claude/agents/planning-phase-designer.md`) to
|
|
7
|
+
This step uses the `planning-phase-designer` agent (`.claude/agents/planning-phase-designer.md`) to define or review the phase structure. Whether phases are being designed for the first time or reviewed from a previous session, the process converges on the same approval gate.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Determine Phase State
|
|
12
12
|
|
|
13
13
|
Read the Plan Index File. Check if phases already exist in the body.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- Present them to the user for review (deterministic replay)
|
|
17
|
-
- User can approve (`y`), amend, or navigate (`skip to {X}`)
|
|
18
|
-
- If amended, re-invoke the agent with the existing phases + user feedback
|
|
19
|
-
- Once approved (or skipped), proceed to Step 5
|
|
15
|
+
#### If phases exist
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
- Present the draft for review/approval
|
|
23
|
-
- Continue the approval flow below
|
|
17
|
+
Orient the user:
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
- Continue with fresh phase design below
|
|
19
|
+
> "Phase structure already exists. I'll present it for your review."
|
|
27
20
|
|
|
28
|
-
|
|
21
|
+
Continue to **Review and Approve** below.
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
#### If no phases exist
|
|
31
24
|
|
|
32
25
|
Orient the user:
|
|
33
26
|
|
|
34
|
-
> "I'
|
|
27
|
+
> "I'll delegate phase design to a specialist agent. It will read the full specification and propose a phase structure — how we break this into independently testable stages."
|
|
35
28
|
|
|
36
29
|
### Invoke the Agent
|
|
37
30
|
|
|
@@ -43,8 +36,6 @@ Invoke `planning-phase-designer` with these file paths:
|
|
|
43
36
|
4. **phase-design.md**: `.claude/skills/technical-planning/references/phase-design.md`
|
|
44
37
|
5. **task-design.md**: `.claude/skills/technical-planning/references/task-design.md`
|
|
45
38
|
|
|
46
|
-
### Present the Output
|
|
47
|
-
|
|
48
39
|
The agent returns a complete phase structure. Write it directly to the Plan Index File body.
|
|
49
40
|
|
|
50
41
|
Update the frontmatter `planning:` block:
|
|
@@ -56,13 +47,22 @@ planning:
|
|
|
56
47
|
|
|
57
48
|
Commit: `planning({topic}): draft phase structure`
|
|
58
49
|
|
|
50
|
+
Continue to **Review and Approve** below.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Review and Approve
|
|
55
|
+
|
|
59
56
|
Present the phase structure to the user.
|
|
60
57
|
|
|
61
58
|
**STOP.** Ask:
|
|
62
59
|
|
|
60
|
+
> **Phase Structure**
|
|
61
|
+
>
|
|
63
62
|
> **To proceed:**
|
|
64
63
|
> - **`y`/`yes`** — Approved. I'll proceed to task breakdown.
|
|
65
64
|
> - **Or tell me what to change** — reorder, split, merge, add, edit, or remove phases.
|
|
65
|
+
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
66
66
|
|
|
67
67
|
#### If the user provides feedback
|
|
68
68
|
|
|
@@ -74,8 +74,9 @@ Update the Plan Index File with the revised output, re-present, and ask again. R
|
|
|
74
74
|
|
|
75
75
|
#### If approved
|
|
76
76
|
|
|
77
|
+
**If the phase structure is new or was amended:**
|
|
78
|
+
|
|
77
79
|
1. Update each phase in the Plan Index File: set `status: approved` and `approved_at: YYYY-MM-DD` (use today's actual date)
|
|
78
|
-
2.
|
|
79
|
-
3. Commit: `planning({topic}): approve phase structure`
|
|
80
|
+
2. Commit: `planning({topic}): approve phase structure`
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
**If the phase structure was already approved and unchanged:** No updates needed.
|
|
@@ -4,32 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
This step uses the `planning-task-designer` agent (`.claude/agents/planning-task-designer.md`) to
|
|
7
|
+
This step uses the `planning-task-designer` agent (`.claude/agents/planning-task-designer.md`) to design a task list for a single phase. You invoke the agent, present its output, and handle the approval gate.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
Read the Plan Index File. Check the task table under each phase.
|
|
14
|
-
|
|
15
|
-
**For each phase with an existing task table:**
|
|
16
|
-
- If all tasks show `status: authored` → skip to next phase
|
|
17
|
-
- If task table exists but not all approved → present for review (deterministic replay)
|
|
18
|
-
- User can approve (`y`), amend, or navigate (`skip to {X}`)
|
|
19
|
-
|
|
20
|
-
Walk through each phase in order, presenting existing task tables for review before moving to phases that need fresh work.
|
|
21
|
-
|
|
22
|
-
**If all phases have approved task tables:** → Proceed to Step 6.
|
|
23
|
-
|
|
24
|
-
**If no task table for current phase:** Continue with fresh task design below.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Fresh Task Design
|
|
11
|
+
## Design the Task List
|
|
29
12
|
|
|
30
13
|
Orient the user:
|
|
31
14
|
|
|
32
|
-
> "Taking Phase {N}: {Phase Name} and breaking it into tasks. I'll delegate this to a specialist agent that will read the full specification and propose a task list.
|
|
15
|
+
> "Taking Phase {N}: {Phase Name} and breaking it into tasks. I'll delegate this to a specialist agent that will read the full specification and propose a task list."
|
|
33
16
|
|
|
34
17
|
### Invoke the Agent
|
|
35
18
|
|
|
@@ -60,8 +43,9 @@ Present the task overview to the user.
|
|
|
60
43
|
**STOP.** Ask:
|
|
61
44
|
|
|
62
45
|
> **To proceed:**
|
|
63
|
-
> - **`y`/`yes`** — Approved.
|
|
46
|
+
> - **`y`/`yes`** — Approved.
|
|
64
47
|
> - **Or tell me what to change** — reorder, split, merge, add, edit, or remove tasks.
|
|
48
|
+
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
65
49
|
|
|
66
50
|
#### If the user provides feedback
|
|
67
51
|
|
|
@@ -73,7 +57,11 @@ Update the Plan Index File with the revised task table, re-present, and ask agai
|
|
|
73
57
|
|
|
74
58
|
#### If approved
|
|
75
59
|
|
|
76
|
-
|
|
60
|
+
**If the task list is new or was amended:**
|
|
61
|
+
|
|
62
|
+
1. Advance the `planning:` block to the first task in this phase
|
|
77
63
|
2. Commit: `planning({topic}): approve Phase {N} task list`
|
|
78
64
|
|
|
79
|
-
|
|
65
|
+
**If the task list was already approved and unchanged:** No updates needed.
|
|
66
|
+
|
|
67
|
+
→ Return to **Plan Construction**.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Plan Construction
|
|
2
|
+
|
|
3
|
+
*Reference for **[technical-planning](../../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
This step constructs the complete plan — defining phases, designing task lists, and authoring every task. It operates as a nested structure:
|
|
8
|
+
|
|
9
|
+
┌─────────────────────────────────────────────────────┐
|
|
10
|
+
│ │
|
|
11
|
+
│ Phase Structure — define or review all phases │
|
|
12
|
+
│ │
|
|
13
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
14
|
+
│ │ For each phase: │ │
|
|
15
|
+
│ │ │ │
|
|
16
|
+
│ │ Step A → Define tasks for the phase │ │
|
|
17
|
+
│ │ │ │
|
|
18
|
+
│ │ ┌─────────────────────────────────┐ │ │
|
|
19
|
+
│ │ │ For each task in the phase: │ │ │
|
|
20
|
+
│ │ │ │ │ │
|
|
21
|
+
│ │ │ Step B → Author the task │ │ │
|
|
22
|
+
│ │ └─────────────────────────────────┘ │ │
|
|
23
|
+
│ │ │ │
|
|
24
|
+
│ └─────────────────────────────────────────────┘ │
|
|
25
|
+
│ │
|
|
26
|
+
└─────────────────────────────────────────────────────┘
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Navigation
|
|
31
|
+
|
|
32
|
+
At any approval gate during plan construction, the user can navigate. They may describe where they want to go in their own words — a specific phase, a specific task, "the beginning", "the leading edge", or any point in the plan.
|
|
33
|
+
|
|
34
|
+
The **leading edge** is where new work begins — the first phase, task list, or task that hasn't been completed yet. It is tracked by the `planning:` block in the Plan Index File frontmatter (`phase` and `task`). To find the leading edge, read those values. If all phases and tasks are complete, the leading edge is the end of plan construction.
|
|
35
|
+
|
|
36
|
+
The `planning:` block always tracks the leading edge. It is only advanced when work is completed — never when the user navigates. Navigation moves the user's position, not the leading edge.
|
|
37
|
+
|
|
38
|
+
Navigation stays within plan construction. It cannot skip past the end of this step.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Phase Structure
|
|
43
|
+
|
|
44
|
+
Load **[define-phases.md](define-phases.md)** and follow its instructions as written.
|
|
45
|
+
|
|
46
|
+
After the phase structure is approved, continue to **Process Phases** below.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Process Phases
|
|
51
|
+
|
|
52
|
+
Work through each phase in order.
|
|
53
|
+
|
|
54
|
+
Orient the user:
|
|
55
|
+
|
|
56
|
+
> "I'll now work through each phase — presenting existing work for review and designing or authoring anything still pending. You'll approve at every stage."
|
|
57
|
+
|
|
58
|
+
### For each phase, check its state:
|
|
59
|
+
|
|
60
|
+
#### If the phase has no task table
|
|
61
|
+
|
|
62
|
+
This phase needs task design.
|
|
63
|
+
|
|
64
|
+
→ Go to **Step A** with this phase.
|
|
65
|
+
|
|
66
|
+
After Step A returns with an approved task table, continue to **Author Tasks for the Phase** below.
|
|
67
|
+
|
|
68
|
+
#### If the phase has a task table
|
|
69
|
+
|
|
70
|
+
Present the task list to the user for review.
|
|
71
|
+
|
|
72
|
+
> **Phase {N}: {Phase Name}** — {M} tasks.
|
|
73
|
+
>
|
|
74
|
+
> **To proceed:**
|
|
75
|
+
> - **`y`/`yes`** — Confirmed.
|
|
76
|
+
> - **Or tell me what to change.**
|
|
77
|
+
> - **Or navigate** — a different phase or task, or the leading edge.
|
|
78
|
+
|
|
79
|
+
**STOP.** Wait for the user's response.
|
|
80
|
+
|
|
81
|
+
**If the user wants changes:** → Go to **Step A** with this phase for revision.
|
|
82
|
+
|
|
83
|
+
**If confirmed:** Continue to **Author Tasks for the Phase** below.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Author Tasks for the Phase
|
|
88
|
+
|
|
89
|
+
Work through each task in the phase's task table, in order.
|
|
90
|
+
|
|
91
|
+
### Parallel authoring (optional optimization)
|
|
92
|
+
|
|
93
|
+
After the first `pending` task in a phase is approved, you may invoke multiple Step B agents concurrently for tasks you judge to be independent — where the authored detail of one would not inform the other. This is an invocation optimization only; the approval flow is unchanged:
|
|
94
|
+
|
|
95
|
+
- Present tasks one at a time, in order
|
|
96
|
+
- Each task still requires explicit user approval before logging
|
|
97
|
+
- If user feedback on a presented task changes context that could affect any already-authored task waiting to be presented, discard those results and re-invoke Step B
|
|
98
|
+
- When uncertain about independence, default to sequential — it is always safe
|
|
99
|
+
|
|
100
|
+
Never parallelize the first `pending` task in a phase. Never parallelize across phases.
|
|
101
|
+
|
|
102
|
+
#### If the task status is `authored`
|
|
103
|
+
|
|
104
|
+
Already written. Present a brief summary:
|
|
105
|
+
|
|
106
|
+
> "Task {M} of {total}: {Task Name} — already authored."
|
|
107
|
+
|
|
108
|
+
Continue to the next task.
|
|
109
|
+
|
|
110
|
+
#### If the task status is `pending`
|
|
111
|
+
|
|
112
|
+
→ Go to **Step B** with this task.
|
|
113
|
+
|
|
114
|
+
After Step B returns, the task is authored. Continue to the next task.
|
|
115
|
+
|
|
116
|
+
#### When all tasks in the phase are authored
|
|
117
|
+
|
|
118
|
+
Advance the `planning:` block in frontmatter to the next phase. Commit: `planning({topic}): complete Phase {N} tasks`
|
|
119
|
+
|
|
120
|
+
> Phase {N}: {Phase Name} — complete ({M} tasks authored).
|
|
121
|
+
|
|
122
|
+
Continue to the next phase.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Loop Complete
|
|
127
|
+
|
|
128
|
+
When all phases have all tasks authored:
|
|
129
|
+
|
|
130
|
+
> "All phases are complete. The plan has **{N} phases** with **{M} tasks** total."
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Step A: Define Tasks
|
|
135
|
+
|
|
136
|
+
Load **[define-tasks.md](define-tasks.md)** and follow its instructions as written. This step designs and approves a task list for **one phase**.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Step B: Author Tasks
|
|
141
|
+
|
|
142
|
+
Load **[author-tasks.md](author-tasks.md)** and follow its instructions as written. This step authors **one task** and returns.
|