@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.
@@ -65,13 +65,13 @@ Stop here.
65
65
 
66
66
  ## Step 3: Extract External Dependencies
67
67
 
68
- For each plan, find the External Dependencies section:
68
+ For each plan, read the `external_dependencies` field from the frontmatter:
69
69
 
70
- 1. **Read the External Dependencies section** from each plan index file
71
- 2. **Categorize each dependency**:
72
- - **Unresolved**: `- {topic}: {description}` (no arrow, no task ID)
73
- - **Resolved**: `- {topic}: {description} → {task-id}` (has task ID)
74
- - **Satisfied externally**: `- ~~{topic}: {description}~~ → 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
- - ~~payment-gateway: Payment processing~~ satisfied externally
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 `- {topic}: {description}` to `- {topic}: {description} {task-id}`
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 External Dependencies section?"
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 to help the user make an informed choice.
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
- Available Plans:
140
+ Implementation Phase
141
+
142
+ Implementable:
143
+ 1. ▶ billing - continue [Phase 2, Task 3]
144
+ 2. + core-features - start
111
145
 
112
- 1. {topic-1} (in-progress) - format: {format}
113
- 2. {topic-2} (concluded) - format: {format}
114
- 3. {topic-3} (in-progress) - format: {format}
146
+ Implemented:
147
+ 3. > user-auth
115
148
 
116
- Which plan would you like to implement? (Enter a number or name)
149
+ Not implementable:
150
+ · advanced-features [blocked: core-features task core-2-3 not completed]
151
+ · reporting [planning]
117
152
  ```
118
153
 
119
- **Legend:**
120
- - `in-progress` = implementation ongoing or not started
121
- - `concluded` = implementation complete (can still be selected for review/continuation)
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
- Auto-selecting: {topic} (only available plan)
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 multiple plans exist:**
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.** Implementation cannot proceed if dependencies are not satisfied.
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. **Read the External Dependencies section** from the plan file
146
- 2. **Check each dependency** according to its state:
147
- - **Unresolved**: Block
148
- - **Resolved**: Check if task is complete (load output format reference, follow "Querying Dependencies" section)
149
- - **Satisfied externally**: Proceed
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
- ### Blocking Behavior
238
+ #### If any deps are blocking
152
239
 
153
- If ANY dependency is unresolved or incomplete, **stop and present**:
240
+ This should not normally happen for plans classified as "Implementable" in Step 3. However, as an escape hatch:
154
241
 
155
242
  ```
156
- ⚠️ Implementation blocked. Missing dependencies:
243
+ Missing dependencies:
157
244
 
158
245
  UNRESOLVED (not yet planned):
159
- - billing-system: Invoice generation for order completion
160
- No plan exists for this topic. Create with /start-planning or mark as satisfied externally.
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
- - authentication: User context retrieval
164
- Status: in-progress. This task must be completed first.
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
- ### Escape Hatch
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 file: Change `- {topic}: {description}` to `- ~~{topic}: {description}~~ → satisfied externally`
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: Ask About Scope
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
- Scope: {all phases | Phase N | Task N.M | next-available}
322
+ Implementation tracking: {exists | new} (status: {in-progress | not-started | completed})
269
323
 
270
- Dependencies: {All satisfied | List any notes}
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
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leeovery/claude-technical-workflows",
3
- "version": "2.0.50",
3
+ "version": "2.0.52",
4
4
  "description": "Technical workflow skills & commands for Claude Code",
5
5
  "license": "MIT",
6
6
  "author": "Lee Overy <me@leeovery.com>",