strikethroo 3.21.2 → 3.21.3

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.
Files changed (65) hide show
  1. package/dist-web/assets/{arc-Dnj8t_Cg.js → arc-8Mxnwqfp.js} +1 -1
  2. package/dist-web/assets/{architectureDiagram-3BPJPVTR-7x3i_pmi.js → architectureDiagram-3BPJPVTR-CjR6ApxR.js} +1 -1
  3. package/dist-web/assets/{blockDiagram-GPEHLZMM-Cg2a93ny.js → blockDiagram-GPEHLZMM-DhGYH8V9.js} +1 -1
  4. package/dist-web/assets/{c4Diagram-AAUBKEIU-DMmHyu1B.js → c4Diagram-AAUBKEIU-BpUJqbui.js} +1 -1
  5. package/dist-web/assets/channel-BJWsQ6W2.js +1 -0
  6. package/dist-web/assets/{chunk-2J33WTMH-BarACI5V.js → chunk-2J33WTMH-BX8NM2bi.js} +1 -1
  7. package/dist-web/assets/{chunk-4BX2VUAB-D1jdtJjC.js → chunk-4BX2VUAB-ChNDzlNh.js} +1 -1
  8. package/dist-web/assets/{chunk-55IACEB6-D3ecVMrb.js → chunk-55IACEB6-62ChSXXQ.js} +1 -1
  9. package/dist-web/assets/{chunk-727SXJPM-DXNd005W.js → chunk-727SXJPM-DM_m3yWL.js} +1 -1
  10. package/dist-web/assets/{chunk-AQP2D5EJ-C0VOl8ox.js → chunk-AQP2D5EJ-DZcEQaCW.js} +1 -1
  11. package/dist-web/assets/{chunk-FMBD7UC4-DcTxd98r.js → chunk-FMBD7UC4-jITTRsf2.js} +1 -1
  12. package/dist-web/assets/{chunk-ND2GUHAM-CAMtgZHg.js → chunk-ND2GUHAM-D73huh8-.js} +1 -1
  13. package/dist-web/assets/{chunk-QZHKN3VN-DWfV0bq5.js → chunk-QZHKN3VN-DqdeIFoN.js} +1 -1
  14. package/dist-web/assets/classDiagram-4FO5ZUOK-yCIjCNKh.js +1 -0
  15. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-yCIjCNKh.js +1 -0
  16. package/dist-web/assets/{cose-bilkent-S5V4N54A-Csc9VNPk.js → cose-bilkent-S5V4N54A-B6y8LQMc.js} +1 -1
  17. package/dist-web/assets/{dagre-BM42HDAG-BnwRiOXb.js → dagre-BM42HDAG-CEudzPZe.js} +1 -1
  18. package/dist-web/assets/{diagram-2AECGRRQ-wPIOyrHK.js → diagram-2AECGRRQ-ADCpFrWI.js} +1 -1
  19. package/dist-web/assets/{diagram-5GNKFQAL-TccsDwtZ.js → diagram-5GNKFQAL-BQcNfKgC.js} +1 -1
  20. package/dist-web/assets/{diagram-KO2AKTUF-DtAJCwJt.js → diagram-KO2AKTUF-2Y25ZUgl.js} +1 -1
  21. package/dist-web/assets/{diagram-LMA3HP47-BvMQVWoO.js → diagram-LMA3HP47-qiLQPz0R.js} +1 -1
  22. package/dist-web/assets/{diagram-OG6HWLK6-BPxOm_5c.js → diagram-OG6HWLK6-5tV6wHg0.js} +1 -1
  23. package/dist-web/assets/{erDiagram-TEJ5UH35-CRPnIDwq.js → erDiagram-TEJ5UH35-C9KwzSBJ.js} +1 -1
  24. package/dist-web/assets/{flowDiagram-I6XJVG4X-DBLbHpW_.js → flowDiagram-I6XJVG4X-DWFT6yjl.js} +1 -1
  25. package/dist-web/assets/{ganttDiagram-6RSMTGT7-gZhN1gnI.js → ganttDiagram-6RSMTGT7-CwOaaOj-.js} +1 -1
  26. package/dist-web/assets/{gitGraphDiagram-PVQCEYII-Dssi43fY.js → gitGraphDiagram-PVQCEYII-D9GwiRiE.js} +1 -1
  27. package/dist-web/assets/{index-CEGCvBkm.js → index-CJtNiGoR.js} +1 -1
  28. package/dist-web/assets/{index-BdDnJAsd.js → index-CXzu9Ojw.js} +1 -1
  29. package/dist-web/assets/{index-Nz3QPmKb.js → index-R-j45X6T.js} +4 -4
  30. package/dist-web/assets/{infoDiagram-5YYISTIA-sXzUxho2.js → infoDiagram-5YYISTIA-8s7z_vpg.js} +1 -1
  31. package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-BPHTll-A.js → ishikawaDiagram-YF4QCWOH-mkZLBAJy.js} +1 -1
  32. package/dist-web/assets/{journeyDiagram-JHISSGLW-h2TzQwJC.js → journeyDiagram-JHISSGLW-CrSmLI8k.js} +1 -1
  33. package/dist-web/assets/{kanban-definition-UN3LZRKU-1xkUO8WZ.js → kanban-definition-UN3LZRKU-jB_Pkb2G.js} +1 -1
  34. package/dist-web/assets/{linear-D_7aXIXs.js → linear-BmZe-JSe.js} +1 -1
  35. package/dist-web/assets/{mermaid.core-Bwdbg8D0.js → mermaid.core-kJp9v7BU.js} +4 -4
  36. package/dist-web/assets/{mindmap-definition-RKZ34NQL-eAYjLKqV.js → mindmap-definition-RKZ34NQL-BygLhP5m.js} +1 -1
  37. package/dist-web/assets/{pieDiagram-4H26LBE5-CWfU-OAg.js → pieDiagram-4H26LBE5-CERgWyaB.js} +1 -1
  38. package/dist-web/assets/{quadrantDiagram-W4KKPZXB-CgKKzr9p.js → quadrantDiagram-W4KKPZXB-BA_bITko.js} +1 -1
  39. package/dist-web/assets/{requirementDiagram-4Y6WPE33-Dx-cDqCB.js → requirementDiagram-4Y6WPE33-BkZUv4kJ.js} +1 -1
  40. package/dist-web/assets/{sankeyDiagram-5OEKKPKP-B_yYv0Dy.js → sankeyDiagram-5OEKKPKP-DpAA7Nm0.js} +1 -1
  41. package/dist-web/assets/{sequenceDiagram-3UESZ5HK--QLtZ1Rs.js → sequenceDiagram-3UESZ5HK-D1A1wk57.js} +1 -1
  42. package/dist-web/assets/{stateDiagram-AJRCARHV-DVmFu5R7.js → stateDiagram-AJRCARHV-GNvrUmkz.js} +1 -1
  43. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-DkJ7czmr.js +1 -0
  44. package/dist-web/assets/{timeline-definition-PNZ67QCA-BUtZCLUr.js → timeline-definition-PNZ67QCA-GEOSAbn6.js} +1 -1
  45. package/dist-web/assets/{vennDiagram-CIIHVFJN-CiAEMMvF.js → vennDiagram-CIIHVFJN-D_IwvMPq.js} +1 -1
  46. package/dist-web/assets/{wardley-L42UT6IY-CzeU7tOS.js → wardley-L42UT6IY-CpNQq-PK.js} +1 -1
  47. package/dist-web/assets/{wardleyDiagram-YWT4CUSO-vvP_uZTz.js → wardleyDiagram-YWT4CUSO-DjyTS7lS.js} +1 -1
  48. package/dist-web/assets/{xychartDiagram-2RQKCTM6-vSFbOWXi.js → xychartDiagram-2RQKCTM6-Bi0kYEuJ.js} +1 -1
  49. package/dist-web/index.html +1 -1
  50. package/package.json +1 -1
  51. package/templates/harness/skills/st-code-review/SKILL.md +3 -7
  52. package/templates/harness/skills/st-create-plan/SKILL.md +22 -44
  53. package/templates/harness/skills/st-execute-blueprint/SKILL.md +26 -63
  54. package/templates/harness/skills/st-execute-task/SKILL.md +24 -83
  55. package/templates/harness/skills/st-full-workflow/SKILL.md +125 -273
  56. package/templates/harness/skills/st-generate-tasks/SKILL.md +82 -157
  57. package/templates/harness/skills/st-refine-plan/SKILL.md +54 -111
  58. package/dist-web/assets/channel-Bb0_vDD8.js +0 -1
  59. package/dist-web/assets/classDiagram-4FO5ZUOK-R25Yhm3n.js +0 -1
  60. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-R25Yhm3n.js +0 -1
  61. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-DBs8K0hr.js +0 -1
  62. package/templates/harness/skills/st-full-workflow/references/task-frontmatter.md +0 -23
  63. package/templates/harness/skills/st-full-workflow/references/test-philosophy.md +0 -17
  64. package/templates/harness/skills/st-generate-tasks/references/task-frontmatter.md +0 -23
  65. package/templates/harness/skills/st-generate-tasks/references/test-philosophy.md +0 -17
@@ -5,68 +5,39 @@ description: Use when the user asks to run the complete end-to-end Strikethroo w
5
5
 
6
6
  # st-full-workflow
7
7
 
8
- Drive the complete end-to-end Strikethroo workflow from initial plan creation through final blueprint execution and archival.
9
-
10
8
  ## Critical Rule
11
9
 
12
- Execute all three steps sequentially without waiting for user input between them. This is a fully automated orchestration workflow. Progress indicators are for user visibility only and do not pause execution.
10
+ Execute all three steps sequentially without waiting for user input between them.
13
11
 
14
12
  ## Inputs
15
13
 
16
14
  The user supplies the work order conversationally.
17
15
 
18
- ## Context Passing Between Steps
19
-
20
- Information flows through the workflow via structured output parsing:
21
-
22
- 1. **Step 1 → Step 2**: Extract the numeric `Plan ID` from the Step 1 structured summary output. Use this exact ID to drive Step 2.
23
- 2. **Step 2 → Step 3**: Extract the `Tasks` count from the Step 2 structured summary output. Use this count for progress tracking during Step 3.
24
-
25
- Do not proceed to the next step until the structured output from the current step has been successfully parsed.
26
-
27
- ## Progress Indicators
28
-
29
- Display progress indicators at key transition points to provide visual feedback without interrupting execution:
30
-
31
- - `⬛⬜⬜ 33%` — Step 1: Plan Creation Complete
32
- - `⬛⬛⬜ 66%` — Step 2: Task Generation Complete
33
- - `⬛⬛⬛ 100%` — Step 3: Blueprint Execution Complete
34
-
35
- These indicators are purely informational. Do not pause or wait for user input when displaying them.
36
-
37
16
  ## Operating Procedure
38
17
 
39
18
  ### Step 1: Plan Creation
40
19
 
41
- **Progress**: `⬛⬜⬜ 33% - Step 1/3: Starting Plan Creation`
42
-
43
20
  #### 1. Locate the strikethroo root
44
21
 
45
- Run `scripts/find-strikethroo-root.cjs` from the user's working directory.
22
+ Run `scripts/find-strikethroo-root.cjs` from the user's working directory. If
23
+ it exits non-zero, stop and ask the user to run `npx strikethroo init`.
46
24
 
47
- If the script exits non-zero, the working directory is not inside an
48
- initialized strikethroo workspace. Stop and ask the user to run the project
49
- initializer (e.g. `npx strikethroo init`) before continuing. Do
50
- not attempt to execute the full workflow outside of a valid root.
51
-
52
- For every subsequent step, treat the path printed by this script as `<root>`.
25
+ Treat the path it prints as `<root>` for every subsequent step.
53
26
 
54
27
  #### 2. Load project context
55
28
 
56
- Read `<root>/config/STRIKETHROO.md` for the directory structure conventions
57
- this project uses. Read `<root>/config/hooks/PRE_PLAN.md` and execute the
58
- instructions it contains before proceeding. Read
59
- `<root>/config/templates/PLAN_TEMPLATE.md` so the plan you emit conforms
60
- to its structure.
29
+ Read `<root>/config/STRIKETHROO.md` for this project's directory conventions.
30
+ Read `<root>/config/hooks/PRE_PLAN.md` and execute its instructions before
31
+ proceeding. Read `<root>/config/templates/PLAN_TEMPLATE.md`; the plan must
32
+ conform to it.
61
33
 
62
- Also read `<root>/config/shared/anti-rationalization.md`. The steps below
63
- require you to apply it.
34
+ Also read `<root>/config/shared/anti-rationalization.md`.
64
35
 
65
36
  #### 3. Analyze the work order
66
37
 
67
38
  Identify:
68
39
 
69
- - Objective and end goal.
40
+ - Objective.
70
41
  - Scope and explicit boundaries.
71
42
  - Success criteria.
72
43
  - Dependencies, prerequisites, blockers.
@@ -92,37 +63,24 @@ Apply `<root>/config/shared/anti-rationalization.md` to this rationalization tab
92
63
 
93
64
  #### 5. Allocate the next plan ID
94
65
 
95
- Run `scripts/get-next-plan-id.cjs` to obtain the next available plan ID.
96
- Pass `<root>` as the first argument when invoking the script from a working
97
- directory that is not inside the project, otherwise no argument is required.
98
- The script prints a single integer.
99
-
100
- Compute the zero-padded form for directory naming (`{padded-id}--{slug}`)
101
- and use the unpadded integer in the plan frontmatter and the final summary.
66
+ Run `scripts/get-next-plan-id.cjs` for the next available plan ID. Compute its
67
+ zero-padded form for the directory name (`{padded-id}--{slug}`) and use the
68
+ unpadded integer in the plan frontmatter.
102
69
 
103
70
  #### 6. Emit the plan
104
71
 
105
- Write the plan to:
72
+ Write the plan to
73
+ `<root>/plans/{padded-id}--{slug}/plan-{padded-id}--{slug}.md`, conforming to
74
+ `<root>/config/templates/PLAN_TEMPLATE.md` in both frontmatter and sections.
75
+ Include no time estimates, task lists, or code samples; those belong to the
76
+ task-generation step.
106
77
 
107
- ```
108
- <root>/plans/{padded-id}--{slug}/plan-{padded-id}--{slug}.md
109
- ```
110
-
111
- The output must:
112
-
113
- - Conform to `<root>/config/templates/PLAN_TEMPLATE.md`, including required
114
- YAML frontmatter fields (at minimum `id`, `summary`, `created`).
115
- - Contain the standard sections from the template body.
116
- - Use Markdown, not free-form prose.
117
- - Avoid time estimates, task lists, or code samples — those belong to the
118
- later task-generation step.
119
-
120
- The `<slug>` is derived from the plan summary: lowercase, alphanumeric and
121
- hyphens only, collapsed, trimmed.
78
+ Derive `<slug>` from the plan summary: lowercase, alphanumeric and hyphens
79
+ only, collapsed, trimmed.
122
80
 
123
81
  #### 7. Run post-plan hook
124
82
 
125
- Execute `<root>/config/hooks/POST_PLAN.md` after the plan file is written.
83
+ Execute `<root>/config/hooks/POST_PLAN.md`.
126
84
 
127
85
  #### 8. Emit the Step 1 structured summary
128
86
 
@@ -138,21 +96,14 @@ Plan Summary:
138
96
 
139
97
  Parse the `Plan ID` value from this output and pass it to Step 2.
140
98
 
141
- **Progress**: `⬛⬜⬜ 33% - Step 1/3: Plan Creation Complete`
142
-
143
- ---
144
-
145
99
  ### Step 2: Task Generation
146
100
 
147
- **Progress**: `⬛⬜⬜ 33% - Step 2/3: Starting Task Generation`
148
-
149
- Using the Plan ID extracted from Step 1:
101
+ Using the plan ID from Step 1:
150
102
 
151
103
  #### 1. Resolve the plan
152
104
 
153
- Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
154
- absolute path of the plan file. Passing a different field name prints that
155
- field alone.
105
+ Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` for the plan
106
+ file's absolute path. Another field name prints that field instead.
156
107
 
157
108
  If the script exits non-zero, surface its stderr to the user and stop the
158
109
  workflow.
@@ -162,12 +113,11 @@ Do not guess a different ID.
162
113
 
163
114
  Read these files, in order:
164
115
 
165
- - `<root>/config/STRIKETHROO.md` — directory conventions for plans, tasks,
166
- and the archive layout.
167
- - The plan body at the path returned by step 1 — this is the contract for
116
+ - `<root>/config/STRIKETHROO.md` — project and directory conventions.
117
+ - The plan body at the path returned by step 1 — the contract for
168
118
  what tasks must exist.
169
- - `<root>/config/templates/TASK_TEMPLATE.md` — every task file you emit must
170
- conform to this template's frontmatter schema and section structure.
119
+ - `<root>/config/templates/TASK_TEMPLATE.md` — the schema every task file
120
+ must match.
171
121
  - `<root>/config/shared/anti-rationalization.md` — apply in step 3.
172
122
 
173
123
  #### 3. Analyze and decompose the plan
@@ -180,23 +130,10 @@ Decompose each deliverable into atomic tasks only when genuinely needed.
180
130
  - Create only the minimum number of tasks necessary. Target a 20–30%
181
131
  reduction from comprehensive lists by questioning the necessity of each
182
132
  candidate.
183
- - **Direct Implementation Only**: a task corresponds to an explicit
184
- requirement, not a "nice-to-have".
185
- - **DRY Task Principle**: each task has a unique, non-overlapping purpose.
186
- - **Question Everything**: for each task, ask "Is this absolutely necessary
187
- to meet the plan objectives?"
188
- - **Avoid Gold-plating**: resist comprehensive features the plan does not
189
- require.
190
-
191
- **Antipatterns to avoid:**
192
-
193
- - Separating "error handling" from the main implementation when it can be
194
- inline.
195
- - Splitting trivially small operations into multiple tasks (e.g. "validate
196
- input" + "process input" as separate units).
197
- - Adding tasks for "future extensibility" or "best practices" the plan does
198
- not mention.
199
- - Comprehensive test suites for trivial functionality.
133
+ - Every task corresponds to an explicit requirement, never a nice-to-have, a
134
+ "best practice", or future extensibility the plan does not mention.
135
+ - Each task has a unique, non-overlapping purpose.
136
+ - Keep error handling inside the task that owns the behavior it guards.
200
137
 
201
138
  Apply `<root>/config/shared/anti-rationalization.md` to this rationalization table:
202
139
 
@@ -218,80 +155,68 @@ Each task must be:
218
155
  concrete, runnable verification step (a command plus its expected output, or
219
156
  another observable signal). Never settle for a vague "works correctly".
220
157
 
221
- Skill assignment (kebab-case, automatically inferred from the task's
222
- technical requirements):
223
-
224
- - 1 skill — single-domain task (e.g. `["css"]`, `["vitest"]`).
225
- - 2 skills — complementary domains (e.g. `["api-endpoints", "database"]`,
226
- `["react-components", "vitest"]`).
227
- - 3+ skills indicates the task should be broken down further.
158
+ Infer skills in kebab-case from the task's technical requirements. Use one
159
+ skill for a single-domain task and two for complementary domains, such as
160
+ `["api-endpoints", "database"]`. Three or more means the task must be broken
161
+ down further.
228
162
 
229
163
  #### 5. Test philosophy: "write a few tests, mostly integration"
230
164
 
231
- When generating test tasks, keep this constraint:
165
+ **Write tests for:**
232
166
 
233
- **Definition.** Meaningful tests verify custom business logic, critical paths,
234
- and edge cases specific to this application. Test *your* code, not the
235
- framework or library.
167
+ - Custom business logic and algorithms.
168
+ - Critical user workflows and data transformations.
169
+ - Edge cases and error conditions in core functionality.
170
+ - Integration points between components.
171
+ - Complex validation or calculation logic.
236
172
 
237
- Before writing any test task, read `references/test-philosophy.md`; it lists
238
- what deserves a test and what does not.
173
+ **Do not write tests for:**
239
174
 
240
- **Test task creation rules:**
175
+ - Third-party library and framework functionality.
176
+ - Simple CRUD without custom logic.
177
+ - Trivial getters/setters and static configuration.
178
+ - Obvious functionality that would break immediately if incorrect.
241
179
 
242
- - Combine related test scenarios into a single task (e.g. "Test user
243
- authentication flow" not separate tasks for login, logout, validation).
244
- - Favor integration and critical-path coverage over per-method unit tests.
245
- - Avoid one test task per CRUD operation.
246
- - Question whether simple functions need a dedicated test task.
180
+ Combine related test scenarios into one task ("Test user authentication flow",
181
+ not separate tasks for login, logout, and validation). Favor integration and
182
+ critical-path coverage over per-method unit tests. Never create one test task
183
+ per CRUD operation.
247
184
 
248
- If any test task is generated, restate this section and the reference file
249
- verbatim or near-verbatim in that task's "Implementation Notes" so the
250
- executing agent applies them.
185
+ Copy these rules into the "Implementation Notes" of every test task you
186
+ generate.
251
187
 
252
188
  #### 6. Dependency analysis
253
189
 
254
- For each task, identify:
255
-
256
- - **Hard dependencies**: tasks that MUST complete before this one can start.
257
- - **Soft dependencies**: tasks that SHOULD complete for optimal execution.
258
-
259
- A task B depends on A if B requires A's output or artifacts, modifies code
260
- created by A, or tests functionality implemented by A. Validate that the
261
- final dependency graph is acyclic.
190
+ Task B depends on task A when B requires A's output or artifacts, modifies
191
+ code created by A, or tests functionality implemented by A. Record it as a
192
+ **hard dependency** when B cannot start before A completes and as a **soft
193
+ dependency** when B merely runs better after A. Validate that the final
194
+ dependency graph is acyclic.
262
195
 
263
196
  #### 7. Complexity analysis
264
197
 
265
198
  For every candidate task, assign a `complexity_score` (integer 1–10) before
266
199
  writing any file. Read `references/complexity-rubric.md` before scoring; it
267
- defines the four dimensions each band is judged on.
268
-
269
- **Pre-emission sanity rules** — apply these before any task is written:
200
+ defines the four dimensions each band is judged on. Then apply these rules:
270
201
 
271
- - 3+ skills assigned → split the task into smaller tasks, each with 1–2 skills.
272
- - Vague acceptance criteria → sharpen them until they include at least one
273
- concrete, runnable verification step.
274
- - Trivially small adjacent tasks → merge them into a single task.
275
202
  - Score ≥ 8 → decompose further; do not emit as-is.
276
- - Score 6–7 → either sharpen criteria or split; do not emit without an
277
- explicit reason.
203
+ - Score 6–7 → sharpen or split; do not emit without an explicit reason.
204
+ - Vague acceptance criteria → sharpen them into a concrete, runnable
205
+ verification step.
206
+ - Trivially small adjacent tasks → merge them.
278
207
 
279
- **Loop-back rule:**
280
-
281
- After applying split, sharpen, or merge, re-run dependency analysis and
282
- re-score the adjusted tasks. Repeat this loop no more than three times. If
208
+ **Loop-back rule:** after applying split, sharpen, or merge, re-run dependency
209
+ analysis and re-score the adjusted tasks. Repeat no more than three times. If
283
210
  complexity is still unresolved after three passes, stop and surface the
284
211
  blocker to the user.
285
212
 
286
213
  #### 8. Allocate task IDs
287
214
 
288
- Run `scripts/get-next-task-id.cjs <plan-id>` to obtain the first available
289
- task ID. Allocate subsequent IDs by incrementing in-process; do not invoke
290
- the script repeatedly. Use the unpadded integer in the task frontmatter `id`
291
- field and the zero-padded form (`{padded-id}--{slug}`) for the filename.
292
-
293
- The slug derives from a short task title: lowercase, alphanumeric and
294
- hyphens only, collapsed, trimmed.
215
+ Run `scripts/get-next-task-id.cjs <plan-id>` once for the first available task
216
+ ID, then allocate the rest by incrementing in-process. Use the unpadded
217
+ integer in the task frontmatter `id` field and the zero-padded form in the
218
+ filename. The slug derives from a short task title: lowercase, alphanumeric
219
+ and hyphens only, collapsed, trimmed.
295
220
 
296
221
  #### 9. Emit the task files
297
222
 
@@ -301,34 +226,23 @@ Write each task to:
301
226
  <root>/plans/<plan-dir-name>/tasks/{padded-id}--{slug}.md
302
227
  ```
303
228
 
304
- Each file must conform to `<root>/config/templates/TASK_TEMPLATE.md`. Read
305
- `references/task-frontmatter.md` when filling the frontmatter; it lists every
306
- field, its type, and when the optional ones apply.
229
+ Each file must conform to `<root>/config/templates/TASK_TEMPLATE.md`. Add
230
+ `complexity_notes` only when the score needs justification. Never write
231
+ `execution_profile`; the routing helper writes it.
307
232
 
308
- The body sections (Objective, Skills Required, Acceptance Criteria, Technical
309
- Requirements, Input Dependencies, Output Artifacts, Implementation Notes)
310
- must be filled with task-specific content. Place detailed implementation
311
- guidance inside a `<details>` block under "Implementation Notes" — write it
312
- so a non-thinking LLM could execute the task from that section alone.
233
+ Fill every body section with task-specific content. Place detailed
234
+ implementation guidance inside a `<details>` block under "Implementation
235
+ Notes", written so a non-thinking LLM could execute the task from that
236
+ section alone.
313
237
 
314
238
  #### 10. Validation checklist
315
239
 
316
240
  Before declaring task generation complete, verify:
317
241
 
318
- - Each task has 1–2 appropriate technical skills assigned and inferred from
319
- its objectives.
320
- - Dependencies form an acyclic graph; no orphan or circular references.
321
- - Task IDs are unique, sequential, and start from the value returned by
322
- `get-next-task-id.cjs`.
323
- - Groups are consistent and meaningful.
324
- - Every task's Acceptance Criteria includes at least one concrete, runnable
325
- verification step (command + expected output / observable signal), not a
326
- vague "works correctly".
327
- - Every **explicitly stated** deliverable in the plan is covered.
328
- - No redundant or overlapping tasks.
329
- - Minimization applied (20–30% reduction target).
330
- - Test tasks focus on business logic, not framework functionality.
331
- - No gold-plating: only plan requirements are addressed.
242
+ - Every **explicitly stated** deliverable in the plan is covered by a task.
243
+ - No two tasks overlap in purpose.
244
+ - Dependencies form an acyclic graph, with no orphan or circular references.
245
+ - Groups are consistent across the plan.
332
246
  - After writing the task files, run
333
247
  `scripts/validate-plan-blueprint.cjs <plan-id> complexityScoresValid`. Stop
334
248
  unless it prints `yes`; if it prints `no`, run
@@ -340,78 +254,41 @@ Before declaring task generation complete, verify:
340
254
  Read `<root>/config/hooks/TASK_EXECUTION_ROUTING.md` and follow its
341
255
  instructions together with this procedure:
342
256
 
343
- 1. Run `scripts/route-task-execution.cjs profiles <plan-id>` and interpret
344
- its JSON result. On `no-config` or `disabled`, routing is off: skip the
345
- remaining routing steps and continue. On `invalid-config`, stop and
346
- surface the errors to the user — do not generate the blueprint.
347
- 2. Classify every task in the plan's `tasks/` directory against the
348
- configured profile descriptions. For tasks generated in this run, use the
349
- task content already in your context — objective, acceptance criteria,
350
- technical requirements, `skills`, and `complexity_score`; do not reread
351
- the emitted task files to reconstruct information you already hold. If
352
- the plan carried task files from an earlier generation run, read those
353
- files (and only those) to classify them — the mapping must cover every
354
- task in the plan. Assign each task ID exactly one configured profile
355
- name. Never invent a profile name, model, or harness.
257
+ 1. Run `scripts/route-task-execution.cjs profiles <plan-id>`. On `no-config`
258
+ or `disabled`, routing is off; skip the remaining routing steps and
259
+ continue. On `invalid-config`, stop and surface the errors to the user; do
260
+ not generate the blueprint.
261
+ 2. Assign every task in the plan's `tasks/` directory exactly one configured
262
+ profile name. Classify the tasks generated in this run from the content
263
+ already in your context. If the plan carried task files from an earlier
264
+ generation run, read those files to classify them.
356
265
  3. Write the complete task-ID-to-profile mapping as a JSON object to a
357
266
  temporary file, for example `{"1": "routine", "2": "demanding"}`.
358
- 4. Run
359
- `scripts/route-task-execution.cjs apply <plan-id> <mapping-file>`. The
360
- helper validates the mapping (every task exactly once, only configured
361
- profiles), writes one `execution_profile` frontmatter field per task, and
362
- verifies the written files. Target selection and resolver execution happen
363
- later at task dispatch, never during generation.
364
- 5. On `routed`, delete the temporary mapping file and continue. On any
365
- failure result (`invalid-assignments`, `invalid-tasks`,
366
- `routing-failure`, `infrastructure-failure`), stop
367
- and surface the JSON errors to the user. Never proceed to blueprint
368
- generation with partially routed tasks.
369
-
370
- Profile names are durable routing labels. Persist them only through the
371
- helper's `execution_profile` field; never hand-write a concrete `execution`
372
- target into task frontmatter or task bodies.
267
+ 4. Run `scripts/route-task-execution.cjs apply <plan-id> <mapping-file>`.
268
+ Target selection happens later at task dispatch, never during generation.
269
+ 5. On `routed`, delete the temporary mapping file and continue. On any failure
270
+ result (`invalid-assignments`, `invalid-tasks`, `routing-failure`,
271
+ `infrastructure-failure`), stop and surface the JSON errors to the user.
272
+ Never continue to blueprint generation with partially routed tasks.
273
+
274
+ Never hand-write a concrete execution target into task frontmatter or task
275
+ bodies.
373
276
 
374
277
  #### 12. Run the POST_TASK_GENERATION_ALL hook
375
278
 
376
279
  Read `<root>/config/hooks/POST_TASK_GENERATION_ALL.md` and follow its
377
- instructions. Run it only after routing succeeded or reported routing off.
378
- This typically requires:
379
-
380
- - Appending an Execution Blueprint section to the plan document, including a
381
- Mermaid dependency diagram and explicit phase groupings (Phase 1 contains
382
- zero-dependency tasks; each subsequent phase contains tasks whose
383
- dependencies all live in earlier phases). Use
384
- `<root>/config/templates/BLUEPRINT_TEMPLATE.md` for structure.
385
-
386
- #### 13. Emit the Step 2 structured summary
387
-
388
- Conclude Step 2 with exactly this block:
389
-
390
- ```
391
- ---
392
- Task Generation Summary:
393
- - Plan ID: [numeric-id]
394
- - Tasks: [count]
395
- - Status: Ready for execution
396
- ```
397
-
398
- Parse the `Tasks` count from this output and pass it to Step 3 for progress tracking.
399
-
400
- **Progress**: `⬛⬛⬜ 66% - Step 2/3: Task Generation Complete`
401
-
402
- ---
280
+ instructions, using `<root>/config/templates/BLUEPRINT_TEMPLATE.md` for the
281
+ Execution Blueprint structure. Run the hook only after routing succeeded or
282
+ reported routing off.
403
283
 
404
284
  ### Step 3: Blueprint Execution
405
285
 
406
- **Progress**: `⬛⬛⬜ 66% - Step 3/3: Starting Blueprint Execution`
407
-
408
- Using the Plan ID from the previous phases:
286
+ Using the plan ID from Step 1:
409
287
 
410
288
  #### 1. Resolve the plan
411
289
 
412
- Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
413
- absolute path of the plan file. Passing a different field name prints that
414
- field alone.
290
+ Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` for the plan
291
+ file's absolute path. Another field name prints that field instead.
415
292
 
416
293
  If the script exits non-zero, surface its stderr to the user and stop the
417
294
  workflow.
@@ -429,26 +306,26 @@ Run `scripts/validate-plan-blueprint.cjs <plan-id> taskCount` and
429
306
 
430
307
  If `taskCount` is 0 or `blueprintExists` is `no`:
431
308
 
432
- - Notify the user: "Tasks or execution blueprint not found. Generating tasks automatically..."
309
+ Notify the user: "Tasks or execution blueprint not found. Generating tasks automatically..."
310
+
433
311
  - Execute the full task generation procedure from Step 2 for this plan ID.
434
- - After generation completes, re-run the `planFile`, `planDir`, `taskCount`, and `blueprintExists` queries to refresh the resolved paths and counts.
312
+ - Re-run the `planFile`, `planDir`, `taskCount`, and `blueprintExists` queries to refresh the resolved paths and counts.
435
313
 
436
- If generation still leaves the plan without tasks or a blueprint, stop and report failure. Do not attempt execution without a valid blueprint.
314
+ If the plan still has no tasks or no blueprint, stop and report failure.
437
315
 
438
316
  #### 4. Optionally create a feature branch
439
317
 
440
- Run `scripts/create-feature-branch.cjs <plan-id>` once before phase execution. Branch creation is best-effort: when the script reports that it skipped creation (for example, not on `main`/`master`), continue on the current branch and do not retry or create a branch manually. Uncommitted or untracked changes are permitted only when every change is inside the repository-root `.ai/strikethroo` subtree. When the script exits with an error—including changes anywhere outside that subtree or an inability to inspect Git status on `main`/`master`—halt and report the error. Do not treat a skipped branch as a failure or spend effort working around a skip.
318
+ Run `scripts/create-feature-branch.cjs <plan-id>` once before phase execution. A skip is not a failure. Continue on the current branch, and never create the branch by hand. Uncommitted or untracked changes are permitted only inside the repository-root `.ai/strikethroo` subtree. An error result halts execution; report it.
441
319
 
442
- After the branch step, run `scripts/capture-base-commit.cjs <plan-id>` once. It records the commit the review gate diffs against. A `skipped` result is not a failure — continue execution and note that the review gate will skip. Only an `error` result halts.
320
+ Then run `scripts/capture-base-commit.cjs <plan-id>` once to record the commit the review gate diffs against. A `skipped` result continues execution and means the review gate will skip. Only an `error` result halts.
443
321
 
444
322
  #### 5. Load project context and execution blueprint
445
323
 
446
324
  Read these files, in order:
447
325
 
448
- - `<root>/config/STRIKETHROO.md` — directory conventions and project context.
449
- - The plan document at the path returned by step 1.
450
- - The plan's Execution Blueprint section — this defines the phase groupings and task dispatch order.
451
- - `<root>/config/shared/verification-gate.md` and `<root>/config/shared/anti-rationalization.md` — apply in the phase loop below.
326
+ - `<root>/config/STRIKETHROO.md`
327
+ - The plan document at the path from step 1, including its Execution Blueprint section, which defines the phase groupings and task dispatch order.
328
+ - `<root>/config/shared/verification-gate.md` and `<root>/config/shared/anti-rationalization.md`, both applied in the phase loop below.
452
329
 
453
330
  #### 6. Execute phases in order
454
331
 
@@ -470,17 +347,13 @@ scripts/dispatch-task-execution.cjs resolve <task-file> <current-harness> <works
470
347
  ```
471
348
 
472
349
  Resolvers never launch external processes. After interpreting all route results, issue
473
- every external execution and every native Task-tool agent **together in one parallel
350
+ every external execution and every sub-agent **together in one parallel
474
351
  tool operation**. External execution uses:
475
352
 
476
353
  ```text
477
354
  scripts/dispatch-task-execution.cjs execute <handoff> <task-file> <current-harness> <workspace> <plan-id> <task-id>
478
355
  ```
479
356
 
480
- This two-step protocol is mandatory: do not execute external tasks during route
481
- resolution, do not serialize external commands, and do not wait for external completion
482
- before launching ready native agents.
483
-
484
357
  `<current-harness>` is the exact supported harness identifier running this
485
358
  skill; `<workspace>` is the project working directory.
486
359
 
@@ -491,29 +364,20 @@ Interpret the one-line JSON result and act on its `kind` exactly once:
491
364
  | `native-default` | Dispatch natively with no execution-setting prose. |
492
365
  | `native-override` | Dispatch natively, explicitly requiring the exact returned `model`. Require the returned `reasoningEffort` only when that property is present. |
493
366
  | `external-override` | Run the `execute` command with the returned `handoff`, then read its result against this same table. |
494
- | `fallback` | Nothing launched. Record the returned `reason` and `detail` visibly, then dispatch natively with no execution-setting prose. Either command can return it. |
367
+ | `fallback` | Nothing launched. Record the returned `reason` and `detail` visibly, then dispatch natively with no execution-setting prose. |
495
368
  | `launched-success` | The external process exited zero. Do not dispatch natively; review status and evidence as you would for a native agent. |
496
369
  | `launched-failure` | A failed task. Set its status to `failed` and run `<root>/config/hooks/POST_ERROR_DETECTION.md`. Never retry it natively. |
497
- | `infrastructure-failure` | A failed task. Set its status to `failed` and run `<root>/config/hooks/POST_ERROR_DETECTION.md`. Never retry it natively. |
370
+ | `infrastructure-failure` | Handle exactly as the preceding row. |
498
371
 
499
- Handoff and exit rules:
372
+ Handoff rules:
500
373
 
501
374
  - Pass the exact opaque `handoff` string the resolver returned for that task. Never reconstruct one.
502
375
  - Never reuse a handoff for another task, and never rerun resolution after launches begin.
503
- - `execute` validates the handoff and does not reread routing configuration.
504
- - The command emits exactly one JSON line. Exit code `2` is an infrastructure failure; exit code `1` is a launched task failure.
505
376
 
506
- Deploy all remaining native agents simultaneously using your internal Task tool. Each agent MUST:
507
-
508
- 1. Read and execute `<root>/config/hooks/PRE_TASK_EXECUTION.md` before starting any implementation work.
509
- 2. Execute the task according to its requirements.
510
- 3. Monitor execution progress and capture outputs and artifacts.
511
- 4. Update task status in real-time.
377
+ Deploy all remaining native sub-agents simultaneously. Each sub-agent must read and execute `<root>/config/hooks/PRE_TASK_EXECUTION.md` before any implementation work, then execute the task and update its status.
512
378
 
513
379
  ##### 6c. Phase completion verification
514
- Ensure every task in the phase has status `completed`. Collect and review all task outputs. Document any issues or exceptions encountered.
515
-
516
- Do not accept a subagent's report of success as proof. Apply the evidence gate in `<root>/config/shared/verification-gate.md` before marking the phase complete. Do not mark a phase complete on an unverified claim.
380
+ Ensure every task in the phase has status `completed` and collect its outputs. Do not accept a subagent's report of success as proof. Apply the evidence gate in `<root>/config/shared/verification-gate.md` before marking the phase complete.
517
381
 
518
382
  ##### 6d. Phase post-execution
519
383
  Read `<root>/config/hooks/POST_PHASE.md` and execute its instructions. Do not proceed to the next phase until this hook succeeds.
@@ -544,17 +408,15 @@ After `POST_EXECUTION.md` reports green, follow the `st-code-review` skill and r
544
408
  code-review.cjs <plan-id> <current-harness>
545
409
  ```
546
410
 
547
- Resolve `code-review.cjs` from the `st-code-review` skill's sibling `scripts` directory. Pass the exact supported harness identifier running this skill. The command emits exactly one JSON line on stdout; reviewer output goes to stderr.
548
-
549
- If the `st-code-review` skill is not installed, record that outcome in the execution summary and continue to summary and archival.
411
+ Resolve `code-review.cjs` from the `st-code-review` skill's sibling `scripts` directory and pass the exact supported harness identifier running this skill. If the `st-code-review` skill is not installed, record that outcome in the execution summary and continue to summary and archival.
550
412
 
551
- Handle the JSON line in this order:
413
+ Handle the one JSON line it prints on stdout, in this order:
552
414
 
553
415
  1. Copy it verbatim into the execution summary's review outcome. Do not reformat it or omit fields.
554
- 2. Follow its top-level `action`. If it is `halt`, stop and report the top-level `detail`; execution is incomplete. If it is `continue`, proceed to the execution summary and archival.
416
+ 2. Follow its top-level `action`. If it is `halt`, stop and report the top-level `detail`. If it is `continue`, proceed to the execution summary and archival.
555
417
  3. Only when `verdict.kind` is `review-recorded`, read `<plan-dir>/review/review.xml` and `<plan-dir>/review/findings.json`, then decide which findings to act on. `severity` and `confidence` are advisory labels, not instructions.
556
418
 
557
- The compiled top-level `action` and exit status control the decision. Do not re-derive `action` from another field. Never report an uncertified review as clean.
419
+ Never report an uncertified review as clean.
558
420
 
559
421
  Hard rules:
560
422
 
@@ -564,21 +426,11 @@ Hard rules:
564
426
 
565
427
  #### 8. Append execution summary
566
428
 
567
- Append an execution summary section to the plan document using the format described in `<root>/config/templates/EXECUTION_SUMMARY_TEMPLATE.md`. Populate:
568
-
569
- - **Status**: Completed Successfully
570
- - **Completed Date**: current date
571
- - **Results**: brief summary of deliverables
572
- - **Noteworthy Events**: all decisions, issues, and outcomes encountered during execution. Always record the review gate's outcome here: the gate's JSON line verbatim, then which findings you acted on versus ignored and why. If nothing else occurred, state "No significant issues encountered." after the review outcome.
573
- - **Necessary follow-ups**: any follow-up actions or optimizations
429
+ Append an execution summary section to the plan document, filling every field of `<root>/config/templates/EXECUTION_SUMMARY_TEMPLATE.md`. Under Noteworthy Events, always record the review gate's JSON line verbatim, then which findings you acted on versus ignored and why.
574
430
 
575
431
  #### 9. Archive the plan
576
432
 
577
- Move the completed plan directory from `<root>/plans/<plan-folder>` to `<root>/archive/<plan-folder>`.
578
-
579
- Preserve the entire folder structure, including all tasks and subdirectories. If the move fails, log the error but do not fail the overall execution.
580
-
581
- **Progress**: `⬛⬛⬛ 100% - Step 3/3: Blueprint Execution Complete`
433
+ Move the completed plan directory from `<root>/plans/<plan-folder>` to `<root>/archive/<plan-folder>`, preserving the entire folder structure. If the move fails, log the error but do not fail the overall execution.
582
434
 
583
435
  ## Failure Modes
584
436