strikethroo 3.4.2 → 3.6.0
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/dist/metadata.d.ts +1 -1
- package/dist/metadata.js +1 -1
- package/dist/skill-scripts/shared/root.js +2 -2
- package/dist/skill-scripts/shared/root.js.map +1 -1
- package/dist-web/assets/{arc-B2vRTAtp.js → arc-C5tFWQfy.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-BaE0WZP8.js → architectureDiagram-3BPJPVTR-DgCKGG7t.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-EYPDaLkJ.js → blockDiagram-GPEHLZMM-BCkOJRns.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-fc_1_fJV.js → c4Diagram-AAUBKEIU-CSRTvUCD.js} +1 -1
- package/dist-web/assets/channel-BaPw1Rvz.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-BFdYIb-H.js → chunk-2J33WTMH-ClcerQV2.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-BTnyxNYb.js → chunk-4BX2VUAB-CbmeOs5K.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-DAnXzn2R.js → chunk-55IACEB6-Bul5AABk.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-CgGGmYGu.js → chunk-727SXJPM-CgLGtlrF.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-B-eVBjow.js → chunk-AQP2D5EJ-DL7JPYWy.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-Qn3q5Qhx.js → chunk-FMBD7UC4-CGHZbLY6.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-DDrXpr-b.js → chunk-ND2GUHAM-CvBKPRCq.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-Ib3X1Gaq.js → chunk-QZHKN3VN-DQBIVpdk.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-C35Ivx5Q.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-C35Ivx5Q.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-Cc9Pa2Np.js → cose-bilkent-S5V4N54A-eh3JaEY5.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-CSZhBLZq.js → dagre-BM42HDAG-EJD5vp_w.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-CbX0S5by.js → diagram-2AECGRRQ-BZ_P79sY.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-DQucEHMA.js → diagram-5GNKFQAL-OQ7nHA8w.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-CSs1kvk3.js → diagram-KO2AKTUF-DdbHiG9U.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-CoDfh1_X.js → diagram-LMA3HP47-DtYxc1U-.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-se9DZ4Bb.js → diagram-OG6HWLK6-DiYlNb2D.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-cVHBGhT0.js → erDiagram-TEJ5UH35-CfACqBE8.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-pxtIoOED.js → flowDiagram-I6XJVG4X-XjbGJa2k.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-CLBch1QN.js → ganttDiagram-6RSMTGT7-uEIeokwH.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-DJux0GA6.js → gitGraphDiagram-PVQCEYII-nmf5n0DJ.js} +1 -1
- package/dist-web/assets/{index-DtUXMh0p.js → index-BDUuRubV.js} +4 -4
- package/dist-web/assets/{index-9yA-mDCf.js → index-DNjRW3Nz.js} +1 -1
- package/dist-web/assets/{index-DN2M3jFj.js → index-lcDf4NjX.js} +1 -1
- package/dist-web/assets/{infoDiagram-5YYISTIA-DsPlHBE7.js → infoDiagram-5YYISTIA-ce27RWm0.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-BxbaTVwk.js → ishikawaDiagram-YF4QCWOH-D6Wresga.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-CDwF7CzN.js → journeyDiagram-JHISSGLW-BBl3RVug.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-Caz5DWRS.js → kanban-definition-UN3LZRKU-BR4xuvyK.js} +1 -1
- package/dist-web/assets/{linear-BP4pxN-r.js → linear-t7m4QGzs.js} +1 -1
- package/dist-web/assets/{mermaid.core-C0ywvB_J.js → mermaid.core-BrBzpjFi.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-DCrqo_pU.js → mindmap-definition-RKZ34NQL-BtLQxP_O.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5--wRkF_Wt.js → pieDiagram-4H26LBE5-DRJmqIpA.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-N-hXNYsT.js → quadrantDiagram-W4KKPZXB-CE2Oh9Rc.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-D8-9JKfq.js → requirementDiagram-4Y6WPE33-sG5PEAU3.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-nucHWP9c.js → sankeyDiagram-5OEKKPKP-CArsTW6e.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-BA3nMsqM.js → sequenceDiagram-3UESZ5HK-CSEbWgF8.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-CtGW_5HH.js → stateDiagram-AJRCARHV-CPia1lq4.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-CR8eRw1b.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-DqvFcHZm.js → timeline-definition-PNZ67QCA-BW5V8Z8D.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-xaOtI74Z.js → vennDiagram-CIIHVFJN-BeCuGgz0.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-BHR2vhXn.js → wardley-L42UT6IY-DIy_1BDw.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-B_5FPztm.js → wardleyDiagram-YWT4CUSO-DV4cijhj.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-DW9idD29.js → xychartDiagram-2RQKCTM6-DfIJ29y1.js} +1 -1
- package/dist-web/index.html +1 -1
- package/package.json +2 -1
- package/templates/harness/skills/st-create-plan/SKILL.md +15 -1
- package/templates/harness/skills/st-create-plan/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-create-plan/scripts/get-next-plan-id.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/SKILL.md +14 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/create-feature-branch.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-execute-task/SKILL.md +1 -1
- package/templates/harness/skills/st-execute-task/scripts/check-task-dependencies.cjs +1 -1
- package/templates/harness/skills/st-execute-task/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-execute-task/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/SKILL.md +12 -2
- package/templates/harness/skills/st-full-workflow/scripts/create-feature-branch.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/get-next-plan-id.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/get-next-task-id.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/SKILL.md +17 -2
- package/templates/harness/skills/st-generate-tasks/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/scripts/get-next-task-id.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-refine-plan/SKILL.md +9 -5
- package/templates/harness/skills/st-refine-plan/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-refine-plan/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/strikethroo/config/hooks/PRE_TASK_EXECUTION.md +14 -0
- package/templates/strikethroo/config/shared/anti-rationalization.md +3 -0
- package/templates/strikethroo/config/shared/clarification-gate.md +7 -0
- package/templates/strikethroo/config/shared/verification-gate.md +10 -0
- package/dist-web/assets/channel-C1z4NHke.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-D0BcCPc_.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D0BcCPc_.js +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-CbmIerZp.js +0 -1
|
@@ -39,7 +39,7 @@ var path4 = __toESM(require("path"));
|
|
|
39
39
|
// src/skill-scripts/shared/root.ts
|
|
40
40
|
var fs = __toESM(require("fs"));
|
|
41
41
|
var path = __toESM(require("path"));
|
|
42
|
-
var EXPECTED_SCHEMA = true ?
|
|
42
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
43
43
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
44
44
|
try {
|
|
45
45
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: st-full-workflow
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to run the complete end-to-end Strikethroo workflow for a work order in one shot in this repository — triggers include full workflow, end-to-end, plan and execute, do everything, run the whole strikethroo workflow. Do not use when the user wants only one stage (create a plan, generate tasks, or execute a blueprint); use the dedicated skill for that stage instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# st-full-workflow
|
|
@@ -166,7 +166,9 @@ Each task must be:
|
|
|
166
166
|
- **Single-purpose** — one clear deliverable.
|
|
167
167
|
- **Atomic** — cannot be meaningfully split further.
|
|
168
168
|
- **Skill-specific** — executable by an agent with 1–2 technical skills.
|
|
169
|
-
- **Verifiable** — has explicit acceptance criteria
|
|
169
|
+
- **Verifiable** — has explicit acceptance criteria that include at least one
|
|
170
|
+
concrete, runnable verification step (a command plus its expected output, or
|
|
171
|
+
another observable signal). Never settle for a vague "works correctly".
|
|
170
172
|
|
|
171
173
|
Skill assignment (kebab-case, automatically inferred from the task's
|
|
172
174
|
technical requirements):
|
|
@@ -266,6 +268,9 @@ Before declaring task generation complete, verify:
|
|
|
266
268
|
- Task IDs are unique, sequential, and start from the value returned by
|
|
267
269
|
`get-next-task-id.cjs`.
|
|
268
270
|
- Groups are consistent and meaningful.
|
|
271
|
+
- Every task's Acceptance Criteria includes at least one concrete, runnable
|
|
272
|
+
verification step (command + expected output / observable signal), not a
|
|
273
|
+
vague "works correctly".
|
|
269
274
|
- Every **explicitly stated** deliverable in the plan is covered.
|
|
270
275
|
- No redundant or overlapping tasks.
|
|
271
276
|
- Minimization applied (20–30% reduction target).
|
|
@@ -334,6 +339,7 @@ Read these files in order:
|
|
|
334
339
|
- `<root>/config/STRIKETHROO.md` — directory conventions and project context.
|
|
335
340
|
- The plan document.
|
|
336
341
|
- The plan's Execution Blueprint section — this defines the phase groupings and task dispatch order.
|
|
342
|
+
- `<root>/config/shared/verification-gate.md` — apply in the phase loop below.
|
|
337
343
|
|
|
338
344
|
#### 5. Execute phases in order
|
|
339
345
|
|
|
@@ -357,6 +363,8 @@ Maximize parallelism within each phase. Run every task that is ready at the same
|
|
|
357
363
|
##### 5c. Phase completion verification
|
|
358
364
|
Ensure every task in the phase has status `completed`. Collect and review all task outputs. Document any issues or exceptions encountered.
|
|
359
365
|
|
|
366
|
+
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.
|
|
367
|
+
|
|
360
368
|
##### 5d. Phase post-execution
|
|
361
369
|
Read `<root>/config/hooks/POST_PHASE.md` and execute its instructions. Do not proceed to the next phase until this hook succeeds.
|
|
362
370
|
|
|
@@ -368,6 +376,8 @@ Repeat for the next phase until all phases are complete.
|
|
|
368
376
|
|
|
369
377
|
Read `<root>/config/hooks/POST_EXECUTION.md` and execute its instructions. If validation fails, halt execution. The plan remains in `plans/` for debugging.
|
|
370
378
|
|
|
379
|
+
Before declaring execution complete, apply the evidence gate in `<root>/config/shared/verification-gate.md` to the plan's Success Criteria and Self Validation steps.
|
|
380
|
+
|
|
371
381
|
#### 7. Append execution summary
|
|
372
382
|
|
|
373
383
|
Append an execution summary section to the plan document using the format described in `<root>/config/templates/EXECUTION_SUMMARY_TEMPLATE.md`. Populate:
|
|
@@ -54,7 +54,7 @@ var path3 = __toESM(require("path"));
|
|
|
54
54
|
// src/skill-scripts/shared/root.ts
|
|
55
55
|
var fs = __toESM(require("fs"));
|
|
56
56
|
var path = __toESM(require("path"));
|
|
57
|
-
var EXPECTED_SCHEMA = true ?
|
|
57
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
58
58
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
59
59
|
try {
|
|
60
60
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(find_strikethroo_root_exports);
|
|
|
37
37
|
// src/skill-scripts/shared/root.ts
|
|
38
38
|
var fs = __toESM(require("fs"));
|
|
39
39
|
var path = __toESM(require("path"));
|
|
40
|
-
var EXPECTED_SCHEMA = true ?
|
|
40
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
41
41
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
42
42
|
try {
|
|
43
43
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(get_next_plan_id_exports);
|
|
|
37
37
|
// src/skill-scripts/shared/root.ts
|
|
38
38
|
var fs = __toESM(require("fs"));
|
|
39
39
|
var path = __toESM(require("path"));
|
|
40
|
-
var EXPECTED_SCHEMA = true ?
|
|
40
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
41
41
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
42
42
|
try {
|
|
43
43
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -41,7 +41,7 @@ var path3 = __toESM(require("path"));
|
|
|
41
41
|
// src/skill-scripts/shared/root.ts
|
|
42
42
|
var fs = __toESM(require("fs"));
|
|
43
43
|
var path = __toESM(require("path"));
|
|
44
|
-
var EXPECTED_SCHEMA = true ?
|
|
44
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
45
45
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
46
46
|
try {
|
|
47
47
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -39,7 +39,7 @@ var path4 = __toESM(require("path"));
|
|
|
39
39
|
// src/skill-scripts/shared/root.ts
|
|
40
40
|
var fs = __toESM(require("fs"));
|
|
41
41
|
var path = __toESM(require("path"));
|
|
42
|
-
var EXPECTED_SCHEMA = true ?
|
|
42
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
43
43
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
44
44
|
try {
|
|
45
45
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: st-generate-tasks
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to decompose, break down, or generate tasks for an existing Strikethroo plan ID in this repository — triggers include generate tasks, break down the plan, decompose plan, create the task blueprint. Do not use to create a new plan, to execute tasks, or for generic project planning outside Strikethroo.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# st-generate-tasks
|
|
@@ -56,6 +56,7 @@ Read these files, in order:
|
|
|
56
56
|
what tasks must exist.
|
|
57
57
|
- `<root>/config/templates/TASK_TEMPLATE.md` — every task file you emit must
|
|
58
58
|
conform to this template's frontmatter schema and section structure.
|
|
59
|
+
- `<root>/config/shared/anti-rationalization.md` — apply in step 4.
|
|
59
60
|
|
|
60
61
|
### 4. Analyze and decompose the plan
|
|
61
62
|
|
|
@@ -85,6 +86,15 @@ Decompose each deliverable into atomic tasks only when genuinely needed.
|
|
|
85
86
|
not mention.
|
|
86
87
|
- Comprehensive test suites for trivial functionality.
|
|
87
88
|
|
|
89
|
+
Apply `<root>/config/shared/anti-rationalization.md` to this rationalization table:
|
|
90
|
+
|
|
91
|
+
| You catch yourself thinking… | The binding rule |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| "One extra task won't hurt." | It violates the 20–30% minimization target. Every task traces to an **explicitly stated** deliverable or it does not exist. |
|
|
94
|
+
| "This edge case deserves its own task." | Fold it into the task that owns the behavior. Do not split trivially small operations into separate units. |
|
|
95
|
+
| "I'll add a test suite to be safe." | Comprehensive tests for trivial functionality are gold-plating. Follow the test philosophy — meaningful tests only. |
|
|
96
|
+
| "Future extensibility justifies this task." | YAGNI. The plan does not mention it, so it is not a task. |
|
|
97
|
+
|
|
88
98
|
### 5. Apply granularity and skill rules
|
|
89
99
|
|
|
90
100
|
Each task must be:
|
|
@@ -92,7 +102,9 @@ Each task must be:
|
|
|
92
102
|
- **Single-purpose** — one clear deliverable.
|
|
93
103
|
- **Atomic** — cannot be meaningfully split further.
|
|
94
104
|
- **Skill-specific** — executable by an agent with 1–2 technical skills.
|
|
95
|
-
- **Verifiable** — has explicit acceptance criteria
|
|
105
|
+
- **Verifiable** — has explicit acceptance criteria that include at least one
|
|
106
|
+
concrete, runnable verification step (a command plus its expected output, or
|
|
107
|
+
another observable signal). Never settle for a vague "works correctly".
|
|
96
108
|
|
|
97
109
|
Skill assignment (kebab-case, automatically inferred from the task's
|
|
98
110
|
technical requirements):
|
|
@@ -198,6 +210,9 @@ Before declaring task generation complete, verify:
|
|
|
198
210
|
- Task IDs are unique, sequential, and start from the value returned by
|
|
199
211
|
`get-next-task-id.cjs`.
|
|
200
212
|
- Groups are consistent and meaningful.
|
|
213
|
+
- Every task's Acceptance Criteria includes at least one concrete, runnable
|
|
214
|
+
verification step (command + expected output / observable signal), not a
|
|
215
|
+
vague "works correctly".
|
|
201
216
|
- Every **explicitly stated** deliverable in the plan is covered.
|
|
202
217
|
- No redundant or overlapping tasks.
|
|
203
218
|
- Minimization applied (20–30% reduction target).
|
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(find_strikethroo_root_exports);
|
|
|
37
37
|
// src/skill-scripts/shared/root.ts
|
|
38
38
|
var fs = __toESM(require("fs"));
|
|
39
39
|
var path = __toESM(require("path"));
|
|
40
|
-
var EXPECTED_SCHEMA = true ?
|
|
40
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
41
41
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
42
42
|
try {
|
|
43
43
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -41,7 +41,7 @@ var path3 = __toESM(require("path"));
|
|
|
41
41
|
// src/skill-scripts/shared/root.ts
|
|
42
42
|
var fs = __toESM(require("fs"));
|
|
43
43
|
var path = __toESM(require("path"));
|
|
44
|
-
var EXPECTED_SCHEMA = true ?
|
|
44
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
45
45
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
46
46
|
try {
|
|
47
47
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -39,7 +39,7 @@ var path4 = __toESM(require("path"));
|
|
|
39
39
|
// src/skill-scripts/shared/root.ts
|
|
40
40
|
var fs = __toESM(require("fs"));
|
|
41
41
|
var path = __toESM(require("path"));
|
|
42
|
-
var EXPECTED_SCHEMA = true ?
|
|
42
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
43
43
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
44
44
|
try {
|
|
45
45
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: st-refine-plan
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to review, refine, improve, interrogate, pressure-test, or update an existing Strikethroo plan by plan ID in this repository — triggers include refine plan, improve plan, review plan, red-team the plan, update plan. Do not use to create a new plan, to generate tasks, or for generic brainstorming outside Strikethroo.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# st-refine-plan
|
|
@@ -55,6 +55,7 @@ Read these files, in order:
|
|
|
55
55
|
before proceeding.
|
|
56
56
|
- `<root>/config/templates/PLAN_TEMPLATE.md` — the structural baseline the
|
|
57
57
|
refined plan must continue to conform to.
|
|
58
|
+
- `<root>/config/shared/clarification-gate.md` — apply in the Clarification Loop.
|
|
58
59
|
|
|
59
60
|
### 4. Baseline Review
|
|
60
61
|
|
|
@@ -107,16 +108,19 @@ appropriately.
|
|
|
107
108
|
Think harder before interrupting the user — only trigger this loop when you
|
|
108
109
|
can cite concrete uncertainties.
|
|
109
110
|
|
|
111
|
+
Follow the clarification cadence in `<root>/config/shared/clarification-gate.md`.
|
|
112
|
+
|
|
110
113
|
1. Review the gaps documented in the Baseline Review.
|
|
111
114
|
2. If no gaps remain, stop here and proceed to Stage 6.
|
|
112
|
-
3.
|
|
115
|
+
3. Group the open questions by theme, but ask them one at a time per the
|
|
116
|
+
cadence above rather than dumping them as a single batch.
|
|
113
117
|
4. Prefill each question with the most plausible answer so the user can
|
|
114
118
|
confirm or deny quickly.
|
|
115
119
|
5. Always include an "Other / open-ended" option to capture nuances you did
|
|
116
120
|
not anticipate.
|
|
117
|
-
6. **STOP AND ASK**:
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
6. **STOP AND ASK**: Put each question to the user and halt execution to await
|
|
122
|
+
their input. Do not simulate the user's response. Do not proceed to Stage 6
|
|
123
|
+
until you have received explicit answers and confirmed the resolved scope.
|
|
120
124
|
7. After receiving answers, record them in the Plan Clarifications table.
|
|
121
125
|
If the user cannot answer a question, record it as unresolved with
|
|
122
126
|
mitigation notes so downstream assistants know the risk.
|
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(find_strikethroo_root_exports);
|
|
|
37
37
|
// src/skill-scripts/shared/root.ts
|
|
38
38
|
var fs = __toESM(require("fs"));
|
|
39
39
|
var path = __toESM(require("path"));
|
|
40
|
-
var EXPECTED_SCHEMA = true ?
|
|
40
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
41
41
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
42
42
|
try {
|
|
43
43
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -39,7 +39,7 @@ var path4 = __toESM(require("path"));
|
|
|
39
39
|
// src/skill-scripts/shared/root.ts
|
|
40
40
|
var fs = __toESM(require("fs"));
|
|
41
41
|
var path = __toESM(require("path"));
|
|
42
|
-
var EXPECTED_SCHEMA = true ?
|
|
42
|
+
var EXPECTED_SCHEMA = true ? 2 : 2;
|
|
43
43
|
var isValidStrikethrooRoot = (strikethrooPath) => {
|
|
44
44
|
try {
|
|
45
45
|
if (!fs.existsSync(strikethrooPath)) return false;
|
|
@@ -1 +1,15 @@
|
|
|
1
1
|
# PRE_TASK_EXECUTION Hook
|
|
2
|
+
|
|
3
|
+
## Test-Driven Development: RED → GREEN → REFACTOR
|
|
4
|
+
|
|
5
|
+
Before writing production code for this task, follow this cycle for each increment:
|
|
6
|
+
|
|
7
|
+
1. **RED** — Write one failing test and run it; confirm it fails for the
|
|
8
|
+
expected reason.
|
|
9
|
+
2. **GREEN** — Write the minimal code to pass it (YAGNI); confirm it passes.
|
|
10
|
+
3. **REFACTOR** — Clean up with the test green; re-run and confirm still green.
|
|
11
|
+
|
|
12
|
+
Apply this only to the meaningful tests the test philosophy calls for (custom
|
|
13
|
+
logic, critical paths, edge cases) — not to trivial, CRUD, or framework code.
|
|
14
|
+
If a task warrants no new test under that philosophy, state why and implement
|
|
15
|
+
directly.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Anti-rationalization
|
|
2
|
+
|
|
3
|
+
A discipline survives pressure only if you refuse the excuse to skip it. When a thought in the "rationalization" column of the skill's table forms, treat it as a red flag and apply the binding rule instead. There is no "unless it matters" exception.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Clarification Gate — Cadence & Approval
|
|
2
|
+
|
|
3
|
+
When you have questions:
|
|
4
|
+
|
|
5
|
+
- **One at a time.** Ask a single question, wait for the answer, then decide the next from it — do not dump a batch.
|
|
6
|
+
- **Multiple-choice first.** When the question allows, offer options with a recommended default plus an open-ended "Other"; the user confirms in one word.
|
|
7
|
+
- **Approval gate.** Present the resolved scope and get explicit confirmation before you write or update the plan.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Verification Gate — Evidence Before Claims
|
|
2
|
+
|
|
3
|
+
Before stating that anything is complete, passing, or working:
|
|
4
|
+
|
|
5
|
+
1. **IDENTIFY** the command or signal that proves the claim.
|
|
6
|
+
2. **RUN** it fresh now — never rely on earlier output or a subagent's report.
|
|
7
|
+
3. **READ** the full output and exit code.
|
|
8
|
+
4. **VERIFY** it matches the claim, then state the result.
|
|
9
|
+
|
|
10
|
+
Red-flag words — "should", "probably", "seems to", "looks like", a premature "Done!" — mean you have not run the gate. Run it.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,C as n}from"./mermaid.core-C0ywvB_J.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-CgGGmYGu.js";import{b as i}from"./mermaid.core-C0ywvB_J.js";import"./chunk-FMBD7UC4-Qn3q5Qhx.js";import"./chunk-ND2GUHAM-DDrXpr-b.js";import"./chunk-55IACEB6-DAnXzn2R.js";import"./chunk-2J33WTMH-BFdYIb-H.js";import"./index-DtUXMh0p.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-CgGGmYGu.js";import{b as i}from"./mermaid.core-C0ywvB_J.js";import"./chunk-FMBD7UC4-Qn3q5Qhx.js";import"./chunk-ND2GUHAM-DDrXpr-b.js";import"./chunk-55IACEB6-DAnXzn2R.js";import"./chunk-2J33WTMH-BFdYIb-H.js";import"./index-DtUXMh0p.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e,a as r,s as a,S as s}from"./chunk-AQP2D5EJ-B-eVBjow.js";import{b as i}from"./mermaid.core-C0ywvB_J.js";import"./chunk-55IACEB6-DAnXzn2R.js";import"./chunk-2J33WTMH-BFdYIb-H.js";import"./index-DtUXMh0p.js";var u={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{u as diagram};
|