@leeovery/claude-technical-workflows 2.0.50 → 2.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/link-dependencies.md +10 -10
- package/commands/workflow/start-implementation.md +119 -65
- package/commands/workflow/start-planning.md +2 -0
- package/package.json +1 -1
- package/scripts/discovery-for-implementation-and-review.sh +346 -0
- package/scripts/discovery-for-planning.sh +19 -0
- package/scripts/migrations/005-plan-external-deps-frontmatter.sh +231 -0
- package/skills/technical-discussion/SKILL.md +15 -0
- package/skills/technical-implementation/SKILL.md +91 -6
- package/skills/technical-planning/SKILL.md +30 -1
- package/skills/technical-planning/references/dependencies.md +23 -19
- package/skills/technical-planning/references/steps/resolve-dependencies.md +11 -11
- package/skills/technical-research/SKILL.md +15 -0
- package/skills/technical-review/SKILL.md +15 -0
- package/skills/technical-specification/SKILL.md +15 -0
- package/skills/technical-specification/references/specification-guide.md +0 -6
|
@@ -65,13 +65,13 @@ Stop here.
|
|
|
65
65
|
|
|
66
66
|
## Step 3: Extract External Dependencies
|
|
67
67
|
|
|
68
|
-
For each plan,
|
|
68
|
+
For each plan, read the `external_dependencies` field from the frontmatter:
|
|
69
69
|
|
|
70
|
-
1. **Read
|
|
71
|
-
2. **Categorize each dependency
|
|
72
|
-
- **Unresolved**:
|
|
73
|
-
- **Resolved**:
|
|
74
|
-
- **Satisfied externally**:
|
|
70
|
+
1. **Read `external_dependencies`** from each plan index file's frontmatter
|
|
71
|
+
2. **Categorize each dependency** by its `state` field:
|
|
72
|
+
- **Unresolved**: `state: unresolved` (no task linked)
|
|
73
|
+
- **Resolved**: `state: resolved` (has `task_id`)
|
|
74
|
+
- **Satisfied externally**: `state: satisfied_externally`
|
|
75
75
|
|
|
76
76
|
3. **Build a summary**:
|
|
77
77
|
|
|
@@ -84,7 +84,7 @@ Plan: authentication (format: {format})
|
|
|
84
84
|
|
|
85
85
|
Plan: billing-system (format: {format})
|
|
86
86
|
- authentication: User context (unresolved)
|
|
87
|
-
-
|
|
87
|
+
- payment-gateway: Payment processing (satisfied externally)
|
|
88
88
|
|
|
89
89
|
Plan: notifications (format: {format})
|
|
90
90
|
- authentication: User lookup (unresolved)
|
|
@@ -111,8 +111,8 @@ For each unresolved dependency:
|
|
|
111
111
|
|
|
112
112
|
For each resolved match:
|
|
113
113
|
|
|
114
|
-
1. **Update the plan index file**:
|
|
115
|
-
- Change
|
|
114
|
+
1. **Update the plan index file's frontmatter**:
|
|
115
|
+
- Change the dependency's `state: unresolved` to `state: resolved` and add `task_id: {task-id}`
|
|
116
116
|
|
|
117
117
|
2. **Create dependency in output format**:
|
|
118
118
|
- Load `skills/technical-planning/references/output-formats/output-{format}.md`
|
|
@@ -123,7 +123,7 @@ For each resolved match:
|
|
|
123
123
|
For each plan that was a dependency target (i.e., other plans depend on it):
|
|
124
124
|
|
|
125
125
|
1. **Check reverse dependencies**: Are there other plans that should have this wired up?
|
|
126
|
-
2. **Offer to update**: "Plan X depends on tasks you just linked. Update its
|
|
126
|
+
2. **Offer to update**: "Plan X depends on tasks you just linked. Update its `external_dependencies` frontmatter?"
|
|
127
127
|
|
|
128
128
|
## Step 7: Report Results
|
|
129
129
|
|
|
@@ -61,14 +61,30 @@ This outputs structured YAML. Parse it to understand:
|
|
|
61
61
|
**From `plans` section:**
|
|
62
62
|
- `exists` - whether any plans exist
|
|
63
63
|
- `files` - list of plans with: name, topic, status, date, format, specification, specification_exists, plan_id (if present)
|
|
64
|
+
- Per plan `external_deps` - array of dependencies with topic, state, task_id
|
|
65
|
+
- Per plan `has_unresolved_deps` - whether plan has unresolved dependencies
|
|
66
|
+
- Per plan `unresolved_dep_count` - count of unresolved dependencies
|
|
64
67
|
- `count` - total number of plans
|
|
65
68
|
|
|
69
|
+
**From `implementation` section:**
|
|
70
|
+
- `exists` - whether any implementation tracking files exist
|
|
71
|
+
- `files` - list of tracking files with: topic, status, current_phase, completed_phases, completed_tasks
|
|
72
|
+
|
|
73
|
+
**From `dependency_resolution` section:**
|
|
74
|
+
- Per plan `deps_satisfied` - whether all resolved deps have their tasks completed
|
|
75
|
+
- Per plan `deps_blocking` - list of deps not yet satisfied with reason
|
|
76
|
+
|
|
66
77
|
**From `environment` section:**
|
|
67
78
|
- `setup_file_exists` - whether environment-setup.md exists
|
|
68
79
|
- `requires_setup` - true, false, or unknown
|
|
69
80
|
|
|
70
81
|
**From `state` section:**
|
|
71
82
|
- `scenario` - one of: `"no_plans"`, `"single_plan"`, `"multiple_plans"`
|
|
83
|
+
- `plans_concluded_count` - plans with status concluded
|
|
84
|
+
- `plans_with_unresolved_deps` - plans with unresolved external deps
|
|
85
|
+
- `plans_ready_count` - concluded plans with all deps satisfied
|
|
86
|
+
- `plans_in_progress_count` - implementations in progress
|
|
87
|
+
- `plans_completed_count` - implementations completed
|
|
72
88
|
|
|
73
89
|
**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.
|
|
74
90
|
|
|
@@ -102,66 +118,137 @@ Plans exist.
|
|
|
102
118
|
|
|
103
119
|
## Step 3: Present Plans and Select
|
|
104
120
|
|
|
105
|
-
Present all discovered plans
|
|
121
|
+
Present all discovered plans using the icon system below. Classify each plan into one of three sections based on its state.
|
|
122
|
+
|
|
123
|
+
**Classification logic:**
|
|
124
|
+
|
|
125
|
+
A plan is **Implementable** if:
|
|
126
|
+
- It has `status: concluded` AND all deps are satisfied (`deps_satisfied: true` or no deps) AND no tracking file or tracking `status: not-started`, OR
|
|
127
|
+
- It has an implementation tracking file with `status: in-progress`
|
|
128
|
+
|
|
129
|
+
A plan is **Implemented** if:
|
|
130
|
+
- It has an implementation tracking file with `status: completed`
|
|
131
|
+
|
|
132
|
+
A plan is **Not implementable** if:
|
|
133
|
+
- It has `status: concluded` but deps are NOT satisfied (blocking deps exist)
|
|
134
|
+
- It has `status: planning` or other non-concluded status
|
|
135
|
+
- It has unresolved deps (`has_unresolved_deps: true`)
|
|
106
136
|
|
|
107
137
|
**Present the full state:**
|
|
108
138
|
|
|
109
139
|
```
|
|
110
|
-
|
|
140
|
+
Implementation Phase
|
|
141
|
+
|
|
142
|
+
Implementable:
|
|
143
|
+
1. ▶ billing - continue [Phase 2, Task 3]
|
|
144
|
+
2. + core-features - start
|
|
111
145
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
3. {topic-3} (in-progress) - format: {format}
|
|
146
|
+
Implemented:
|
|
147
|
+
3. > user-auth
|
|
115
148
|
|
|
116
|
-
|
|
149
|
+
Not implementable:
|
|
150
|
+
· advanced-features [blocked: core-features task core-2-3 not completed]
|
|
151
|
+
· reporting [planning]
|
|
117
152
|
```
|
|
118
153
|
|
|
119
|
-
**
|
|
120
|
-
|
|
121
|
-
|
|
154
|
+
**Formatting rules:**
|
|
155
|
+
|
|
156
|
+
Implementable (numbered, selectable):
|
|
157
|
+
- **`▶`** — implementation `status: in-progress`, show current position `[Phase N, Task M]`
|
|
158
|
+
- **`+`** — concluded plan, deps met, no tracking file or tracking `status: not-started`
|
|
159
|
+
|
|
160
|
+
Implemented (numbered, selectable):
|
|
161
|
+
- **`>`** — implementation `status: completed`
|
|
162
|
+
|
|
163
|
+
Not implementable (not numbered, not selectable):
|
|
164
|
+
- **`·`** — blocked or plan not concluded
|
|
165
|
+
- `[blocked: {topic} task {id} not completed]` — resolved dep, task not done
|
|
166
|
+
- `[blocked: unresolved dep on {topic}]` — no task linked
|
|
167
|
+
- `[planning]` — plan status is not `concluded`
|
|
168
|
+
|
|
169
|
+
**Ordering:**
|
|
170
|
+
1. Implementable first: `▶` in-progress, then `+` new (foundational before dependent)
|
|
171
|
+
2. Implemented next: `>` completed
|
|
172
|
+
3. Not implementable last
|
|
173
|
+
|
|
174
|
+
Numbering is sequential across Implementable and Implemented. Omit any section entirely if it has no entries.
|
|
175
|
+
|
|
176
|
+
**If Not implementable section is shown**, append after the presentation:
|
|
122
177
|
|
|
123
|
-
**If single plan exists (auto-select):**
|
|
124
178
|
```
|
|
125
|
-
|
|
179
|
+
If a blocked dependency has been resolved outside this workflow, name the plan and the dependency to unblock it.
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Then prompt based on what's actionable:**
|
|
183
|
+
|
|
184
|
+
**If single implementable plan and no implemented plans (auto-select):**
|
|
185
|
+
```
|
|
186
|
+
Auto-selecting: {topic} (only implementable plan)
|
|
126
187
|
```
|
|
127
188
|
→ Proceed directly to **Step 4**.
|
|
128
189
|
|
|
129
|
-
**If
|
|
190
|
+
**If nothing selectable (no implementable or implemented):**
|
|
191
|
+
Show Not implementable section only (with unblock hint above).
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
No implementable plans.
|
|
195
|
+
|
|
196
|
+
To proceed:
|
|
197
|
+
- Complete blocking dependencies first
|
|
198
|
+
- Or finish plans still in progress with /start-planning
|
|
199
|
+
```
|
|
130
200
|
|
|
131
201
|
**STOP.** Wait for user response.
|
|
132
202
|
|
|
203
|
+
**Otherwise (multiple selectable plans, or implemented plans exist):**
|
|
204
|
+
```
|
|
205
|
+
Select a plan (enter number):
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**STOP.** Wait for user response.
|
|
209
|
+
|
|
210
|
+
#### If the user requests an unblock
|
|
211
|
+
|
|
212
|
+
1. Identify the plan and the specific dependency
|
|
213
|
+
2. Confirm with the user which dependency to mark as satisfied
|
|
214
|
+
3. Update the plan's `external_dependencies` frontmatter: set `state` to `satisfied_externally`
|
|
215
|
+
4. Commit the change
|
|
216
|
+
5. Re-run classification and re-present Step 3
|
|
217
|
+
|
|
133
218
|
→ Based on user choice, proceed to **Step 4**.
|
|
134
219
|
|
|
135
220
|
---
|
|
136
221
|
|
|
137
222
|
## Step 4: Check External Dependencies
|
|
138
223
|
|
|
139
|
-
**This step is a gate.**
|
|
140
|
-
|
|
141
|
-
See **[dependencies.md](../../skills/technical-planning/references/dependencies.md)** for dependency format and states.
|
|
224
|
+
**This step is a confirmation gate.** Dependencies have been pre-analyzed by the discovery script.
|
|
142
225
|
|
|
143
226
|
After the plan is selected:
|
|
144
227
|
|
|
145
|
-
1. **
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
228
|
+
1. **Check the plan's `external_deps` and `dependency_resolution`** from the discovery output
|
|
229
|
+
|
|
230
|
+
#### If all deps satisfied (or no deps)
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
External dependencies satisfied.
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
→ Proceed to **Step 5**.
|
|
150
237
|
|
|
151
|
-
|
|
238
|
+
#### If any deps are blocking
|
|
152
239
|
|
|
153
|
-
|
|
240
|
+
This should not normally happen for plans classified as "Implementable" in Step 3. However, as an escape hatch:
|
|
154
241
|
|
|
155
242
|
```
|
|
156
|
-
|
|
243
|
+
Missing dependencies:
|
|
157
244
|
|
|
158
245
|
UNRESOLVED (not yet planned):
|
|
159
|
-
-
|
|
160
|
-
|
|
246
|
+
- {topic}: {description}
|
|
247
|
+
-> No plan exists for this topic. Create with /start-planning or mark as satisfied externally.
|
|
161
248
|
|
|
162
249
|
INCOMPLETE (planned but not implemented):
|
|
163
|
-
-
|
|
164
|
-
|
|
250
|
+
- {topic}: task {task_id} not yet completed
|
|
251
|
+
-> This task must be completed first.
|
|
165
252
|
|
|
166
253
|
OPTIONS:
|
|
167
254
|
1. Implement the blocking dependencies first
|
|
@@ -171,23 +258,15 @@ OPTIONS:
|
|
|
171
258
|
|
|
172
259
|
**STOP.** Wait for user response.
|
|
173
260
|
|
|
174
|
-
|
|
261
|
+
#### Escape Hatch
|
|
175
262
|
|
|
176
263
|
If the user says a dependency has been implemented outside the workflow:
|
|
177
264
|
|
|
178
265
|
1. Ask which dependency to mark as satisfied
|
|
179
|
-
2. Update the plan
|
|
266
|
+
2. Update the plan frontmatter: Change the dependency's `state` to `satisfied_externally`
|
|
180
267
|
3. Commit the change
|
|
181
268
|
4. Re-check dependencies
|
|
182
269
|
|
|
183
|
-
### All Dependencies Satisfied
|
|
184
|
-
|
|
185
|
-
If all dependencies are resolved and complete (or satisfied externally), proceed to Step 5.
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
✅ External dependencies satisfied.
|
|
189
|
-
```
|
|
190
|
-
|
|
191
270
|
→ Proceed to **Step 5**.
|
|
192
271
|
|
|
193
272
|
---
|
|
@@ -227,32 +306,7 @@ Are there any environment setup instructions I should follow before implementati
|
|
|
227
306
|
|
|
228
307
|
---
|
|
229
308
|
|
|
230
|
-
## Step 6:
|
|
231
|
-
|
|
232
|
-
Ask the user about implementation scope:
|
|
233
|
-
|
|
234
|
-
```
|
|
235
|
-
How would you like to proceed?
|
|
236
|
-
|
|
237
|
-
1. Implement all phases - Work through the entire plan sequentially
|
|
238
|
-
2. Implement specific phase - Focus on one phase (e.g., "Phase 1")
|
|
239
|
-
3. Implement specific task - Focus on a single task
|
|
240
|
-
4. Next available task - Auto-discover the next incomplete task
|
|
241
|
-
|
|
242
|
-
Which approach?
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
**STOP.** Wait for user response.
|
|
246
|
-
|
|
247
|
-
If they choose a specific phase or task, ask them to specify which one.
|
|
248
|
-
|
|
249
|
-
> **Note:** Do NOT verify that the phase or task exists at this stage. Record the user's answer in the handoff context. Validation happens when the skill is invoked.
|
|
250
|
-
|
|
251
|
-
→ Proceed to **Step 7**.
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## Step 7: Invoke the Skill
|
|
309
|
+
## Step 6: Invoke the Skill
|
|
256
310
|
|
|
257
311
|
After completing the steps above, this command's purpose is fulfilled.
|
|
258
312
|
|
|
@@ -265,9 +319,9 @@ Plan: docs/workflow/planning/{topic}.md
|
|
|
265
319
|
Format: {format}
|
|
266
320
|
Plan ID: {plan_id} (if applicable)
|
|
267
321
|
Specification: {specification} (exists: {true|false})
|
|
268
|
-
|
|
322
|
+
Implementation tracking: {exists | new} (status: {in-progress | not-started | completed})
|
|
269
323
|
|
|
270
|
-
Dependencies: {All satisfied
|
|
324
|
+
Dependencies: {All satisfied | List any notes}
|
|
271
325
|
Environment: {Setup required | No special setup required}
|
|
272
326
|
|
|
273
327
|
Invoke the technical-implementation skill.
|
|
@@ -70,6 +70,7 @@ This outputs structured YAML. Parse it to understand:
|
|
|
70
70
|
**From `plans` section:**
|
|
71
71
|
- `exists` - whether any plans exist
|
|
72
72
|
- `files` - each plan's name, format, status, and plan_id (if present)
|
|
73
|
+
- `common_format` - the output format if all existing plans share the same one; empty string otherwise
|
|
73
74
|
|
|
74
75
|
**From `state` section:**
|
|
75
76
|
- `scenario` - one of: `"no_specs"`, `"nothing_actionable"`, `"has_options"`
|
|
@@ -255,6 +256,7 @@ Planning session for: {topic}
|
|
|
255
256
|
Specification: docs/workflow/specification/{topic}.md
|
|
256
257
|
Additional context: {summary of user's answers from Step 5}
|
|
257
258
|
Cross-cutting references: {list of applicable cross-cutting specs with brief summaries, or "none"}
|
|
259
|
+
Recommended output format: {common_format from discovery if non-empty, otherwise "none"}
|
|
258
260
|
|
|
259
261
|
Invoke the technical-planning skill.
|
|
260
262
|
```
|