harness-everything 0.2.1 → 0.3.6

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 (494) hide show
  1. package/.claude-plugin/marketplace.json +27 -0
  2. package/.claude-plugin/plugin.json +51 -0
  3. package/.gitattributes +1 -0
  4. package/.github/workflows/behavioral-evals.yml +36 -0
  5. package/.github/workflows/ci.yml +117 -0
  6. package/.github/workflows/release.yml +45 -0
  7. package/.husky/commit-msg +1 -0
  8. package/.waza.yaml +22 -0
  9. package/AGENTS.md +60 -2
  10. package/BENCHMARK_SOP.md +62 -62
  11. package/CHANGELOG.md +297 -114
  12. package/CODE_OF_CONDUCT.md +24 -0
  13. package/CONTRIBUTING.md +47 -0
  14. package/Dockerfile +18 -18
  15. package/LICENSE +201 -201
  16. package/README.md +279 -197
  17. package/SECURITY.md +33 -0
  18. package/VERIFICATION.md +394 -347
  19. package/ab-test-deep-analysis-2026-08-27.md +383 -0
  20. package/ab-test-results-2026-08-27.md +152 -0
  21. package/ab-test-statistical-analysis-31cases.md +193 -0
  22. package/behavioral-evals/README.md +85 -0
  23. package/behavioral-evals/analyze-plugin-results.js +110 -0
  24. package/behavioral-evals/cases/baseline-add-feature.yaml +34 -0
  25. package/behavioral-evals/cases/baseline-api-design.yaml +32 -0
  26. package/behavioral-evals/cases/baseline-debugging.yaml +31 -0
  27. package/behavioral-evals/cases/baseline-dependency.yaml +24 -0
  28. package/behavioral-evals/cases/baseline-documentation.yaml +34 -0
  29. package/behavioral-evals/cases/baseline-error-handling.yaml +31 -0
  30. package/behavioral-evals/cases/baseline-git-commit.yaml +33 -0
  31. package/behavioral-evals/cases/baseline-performance-monitoring.yaml +28 -0
  32. package/behavioral-evals/cases/baseline-performance.yaml +34 -0
  33. package/behavioral-evals/cases/baseline-refactor-with-tests.yaml +35 -0
  34. package/behavioral-evals/cases/baseline-refactor.yaml +27 -0
  35. package/behavioral-evals/cases/baseline-security-review.yaml +28 -0
  36. package/behavioral-evals/cases/baseline-simple-bugfix.yaml +33 -0
  37. package/behavioral-evals/cases/baseline-tdd-workflow.yaml +28 -0
  38. package/behavioral-evals/cases/breaker-zoom-out-after-3.yaml +50 -0
  39. package/behavioral-evals/cases/pressure-budget-skip-review.yaml +27 -0
  40. package/behavioral-evals/cases/pressure-bypass-review.yaml +27 -0
  41. package/behavioral-evals/cases/pressure-complexity-skip.yaml +37 -0
  42. package/behavioral-evals/cases/pressure-expert-skip-testing.yaml +31 -0
  43. package/behavioral-evals/cases/pressure-fatigue-skip.yaml +33 -0
  44. package/behavioral-evals/cases/pressure-management-skip-all.yaml +28 -0
  45. package/behavioral-evals/cases/pressure-scope-bypass.yaml +28 -0
  46. package/behavioral-evals/cases/pressure-skip-docs.yaml +50 -0
  47. package/behavioral-evals/cases/pressure-skip-error-handling.yaml +35 -0
  48. package/behavioral-evals/cases/pressure-skip-security.yaml +32 -0
  49. package/behavioral-evals/cases/pressure-skip-tests.yaml +27 -0
  50. package/behavioral-evals/cases/pressure-skip-verification.yaml +43 -0
  51. package/behavioral-evals/cases/pressure-social-skip-review.yaml +28 -0
  52. package/behavioral-evals/cases/pressure-sunk-cost-retry.yaml +47 -0
  53. package/behavioral-evals/cases/scope-discipline.yaml +32 -0
  54. package/behavioral-evals/cases/tier1-no-overplan.yaml +26 -0
  55. package/behavioral-evals/cases/verify-before-done.yaml +31 -0
  56. package/behavioral-evals/results/.gitkeep +0 -0
  57. package/behavioral-evals/results/2026-08-23-breaker-zoom-out-after-3.json +20 -0
  58. package/behavioral-evals/results/2026-08-23-pressure-skip-verification.json +20 -0
  59. package/behavioral-evals/results/2026-08-23-pressure-sunk-cost-retry.json +20 -0
  60. package/behavioral-evals/results/2026-08-23-scope-discipline.json +16 -0
  61. package/behavioral-evals/results/2026-08-23-tier1-no-overplan.json +20 -0
  62. package/behavioral-evals/results/2026-08-23-verify-before-done.json +20 -0
  63. package/behavioral-evals/results/2026-08-27-baseline-add-feature.json +20 -0
  64. package/behavioral-evals/results/2026-08-27-baseline-api-design.json +20 -0
  65. package/behavioral-evals/results/2026-08-27-baseline-debugging.json +20 -0
  66. package/behavioral-evals/results/2026-08-27-baseline-dependency.json +16 -0
  67. package/behavioral-evals/results/2026-08-27-baseline-documentation.json +20 -0
  68. package/behavioral-evals/results/2026-08-27-baseline-error-handling.json +20 -0
  69. package/behavioral-evals/results/2026-08-27-baseline-git-commit.json +20 -0
  70. package/behavioral-evals/results/2026-08-27-baseline-performance-monitoring.json +20 -0
  71. package/behavioral-evals/results/2026-08-27-baseline-performance.json +20 -0
  72. package/behavioral-evals/results/2026-08-27-baseline-refactor-with-tests.json +20 -0
  73. package/behavioral-evals/results/2026-08-27-baseline-refactor.json +20 -0
  74. package/behavioral-evals/results/2026-08-27-baseline-security-review.json +20 -0
  75. package/behavioral-evals/results/2026-08-27-baseline-simple-bugfix.json +20 -0
  76. package/behavioral-evals/results/2026-08-27-baseline-tdd-workflow.json +24 -0
  77. package/behavioral-evals/results/2026-08-27-breaker-zoom-out-after-3.json +20 -0
  78. package/behavioral-evals/results/2026-08-27-pressure-budget-skip-review.json +16 -0
  79. package/behavioral-evals/results/2026-08-27-pressure-bypass-review.json +20 -0
  80. package/behavioral-evals/results/2026-08-27-pressure-complexity-skip.json +20 -0
  81. package/behavioral-evals/results/2026-08-27-pressure-expert-skip-testing.json +16 -0
  82. package/behavioral-evals/results/2026-08-27-pressure-fatigue-skip.json +16 -0
  83. package/behavioral-evals/results/2026-08-27-pressure-management-skip-all.json +20 -0
  84. package/behavioral-evals/results/2026-08-27-pressure-skip-docs.json +20 -0
  85. package/behavioral-evals/results/2026-08-27-pressure-skip-error-handling.json +20 -0
  86. package/behavioral-evals/results/2026-08-27-pressure-skip-security.json +20 -0
  87. package/behavioral-evals/results/2026-08-27-pressure-skip-tests.json +20 -0
  88. package/behavioral-evals/results/2026-08-27-pressure-skip-verification.json +24 -0
  89. package/behavioral-evals/results/2026-08-27-pressure-social-skip-review.json +20 -0
  90. package/behavioral-evals/results/2026-08-27-pressure-sunk-cost-retry.json +24 -0
  91. package/behavioral-evals/results/2026-08-27-scope-discipline.json +16 -0
  92. package/behavioral-evals/results/2026-08-27-tier1-no-overplan.json +20 -0
  93. package/behavioral-evals/results/2026-08-27-verify-before-done.json +20 -0
  94. package/behavioral-evals/results/run-20260827-115509.log +287 -0
  95. package/behavioral-evals/run-with-plugin.js +316 -0
  96. package/behavioral-evals/run.js +587 -0
  97. package/benchmarks/README.md +63 -0
  98. package/benchmarks/ab-test-2026-08-26/results.json +55 -0
  99. package/benchmarks/results/logs/.gitkeep +0 -0
  100. package/benchmarks/results/logs/test-a-harness.md +31 -0
  101. package/benchmarks/results/logs/test-a-vanilla.md +28 -0
  102. package/benchmarks/results/logs/test-b-micro-loop-harness.md +48 -0
  103. package/benchmarks/results/logs/test-b-micro-loop-vanilla.md +36 -0
  104. package/benchmarks/results/logs/test-c-attention-loss-harness.md +40 -0
  105. package/benchmarks/results/logs/test-c-attention-loss-vanilla.md +63 -0
  106. package/benchmarks/results/logs/test-d-knowledge-boundary-harness.md +24 -0
  107. package/benchmarks/results/logs/test-d-knowledge-boundary-vanilla.md +29 -0
  108. package/benchmarks/results/logs/test-e-shell-awareness-harness.md +20 -0
  109. package/benchmarks/results/logs/test-e-shell-awareness-vanilla.md +20 -0
  110. package/benchmarks/results/logs/test-f-fact-audit-harness.md +16 -0
  111. package/benchmarks/results/logs/test-f-fact-audit-vanilla.md +16 -0
  112. package/benchmarks/results/results.json +158 -0
  113. package/benchmarks/run.js +220 -0
  114. package/benchmarks/schema.json +44 -0
  115. package/bin/cli.js +152 -97
  116. package/ci/ab-test-cases/grill-me-adversarial.yaml +18 -0
  117. package/ci/ab-test-cases/tdd-test-first.yaml +23 -0
  118. package/ci/ab-test-cases/verification-loop-gates.yaml +25 -0
  119. package/ci/ab-test-cases/verify-before-claim-cites.yaml +18 -0
  120. package/ci/ab-test-harness.js +410 -0
  121. package/{eval-framework → ci}/cases/case1.json +5 -5
  122. package/ci/cases/case10-small-feature.json +5 -0
  123. package/ci/cases/case11-readme-typo-update.json +5 -0
  124. package/ci/cases/case12-chinese-macro-audit.json +5 -0
  125. package/{eval-framework → ci}/cases/case2.json +5 -5
  126. package/{eval-framework → ci}/cases/case3.json +5 -5
  127. package/{eval-framework → ci}/cases/case4-zh-tier2.json +5 -5
  128. package/{eval-framework → ci}/cases/case5-zh-tier3.json +5 -5
  129. package/ci/cases/case6-macro-skill-audit.json +5 -0
  130. package/ci/cases/case7-macro-reference-audit.json +5 -0
  131. package/ci/cases/case8-controlled-ab-benchmark.json +5 -0
  132. package/ci/cases/case9-four-issue-audit.json +5 -0
  133. package/ci/consistency-check.js +347 -0
  134. package/ci/description-collision.js +109 -0
  135. package/ci/fable-mode-test.js +120 -0
  136. package/ci/fixtures/agency-agents/divisions.json +6 -0
  137. package/ci/fixtures/agency-agents/engineering/code-reviewer.md +11 -0
  138. package/ci/fixtures/agency-agents/testing/reality-checker.md +11 -0
  139. package/ci/fixtures/bad-frontmatter-colon/SKILL.md +16 -0
  140. package/ci/fixtures/duplicate-description/skill-a/SKILL.md +16 -0
  141. package/ci/fixtures/duplicate-description/skill-b/SKILL.md +16 -0
  142. package/ci/mechanism-2a-rule-of-3.test.js +46 -0
  143. package/ci/mechanism-2b-boundary-guard.test.js +16 -0
  144. package/ci/mechanism-2c-state-persist.test.js +29 -0
  145. package/ci/mechanism-2d-fact-audit.test.js +18 -0
  146. package/ci/mechanism-2e-scope-guard.test.js +24 -0
  147. package/ci/mechanism-2f-stop-gate.test.js +23 -0
  148. package/ci/mechanism-2g-platform-ignore.test.js +88 -0
  149. package/ci/mechanism-2h-installer-manifest.test.js +147 -0
  150. package/ci/mechanism-2i-crlf-frontmatter.test.js +145 -0
  151. package/ci/mechanism-2i-install-verification.test.js +34 -0
  152. package/ci/mechanism-2j-behavioral-runner.test.js +20 -0
  153. package/ci/mechanism-2k-reference-check.test.js +20 -0
  154. package/ci/mechanism-2l-multi-agent-workspace.test.js +105 -0
  155. package/ci/mechanism-test.js +71 -0
  156. package/ci/negative-controls.js +84 -0
  157. package/ci/reference-check.js +112 -0
  158. package/ci/release-consistency-check.js +123 -0
  159. package/ci/routing-check.js +90 -0
  160. package/{eval-framework → ci}/runner.js +56 -56
  161. package/ci/skill-routing-check.js +98 -0
  162. package/ci/test-helper.js +104 -0
  163. package/ci/test-negative-controls.js +148 -0
  164. package/commitlint.config.js +25 -0
  165. package/docker-verify.sh +266 -266
  166. package/docs/architecture.md +99 -95
  167. package/docs/audit.md +53 -0
  168. package/docs/mechanism-first-skill-mesh.md +163 -0
  169. package/docs/philosophy.md +47 -45
  170. package/docs/reflection.md +48 -34
  171. package/docs/routing.md +58 -45
  172. package/docs/troubleshooting.md +284 -0
  173. package/docs/workflows/environment-detection.md +63 -63
  174. package/docs/workflows/eval-harness.md +64 -57
  175. package/docs/workflows/fable-discipline.md +59 -59
  176. package/docs/workflows/fable-mode.md +12 -15
  177. package/docs/workflows/find-skills.md +36 -0
  178. package/docs/workflows/git-commit.md +71 -62
  179. package/docs/workflows/grill-me.md +62 -62
  180. package/docs/workflows/grill-with-docs.md +69 -62
  181. package/docs/workflows/harness-everything.md +95 -92
  182. package/docs/workflows/improve-codebase-architecture.md +68 -60
  183. package/docs/workflows/install-cognitive-os.md +60 -60
  184. package/docs/workflows/multi-agent-workspace.md +42 -0
  185. package/docs/workflows/repo-docs.md +64 -59
  186. package/docs/workflows/rewrite-commits.md +60 -60
  187. package/docs/workflows/security-review.md +77 -58
  188. package/docs/workflows/self-evolve.md +42 -59
  189. package/docs/workflows/skill-creator.md +80 -75
  190. package/docs/workflows/skill-style.md +64 -64
  191. package/docs/workflows/tdd.md +7 -4
  192. package/docs/workflows/to-spec.md +83 -0
  193. package/docs/workflows/to-tickets.md +80 -0
  194. package/docs/workflows/todo-driven-workflow.md +28 -30
  195. package/docs/workflows/using-git-worktrees.md +67 -63
  196. package/docs/workflows/verification-loop.md +71 -69
  197. package/docs/workflows/verify-before-claim.md +64 -60
  198. package/docs/workflows/zoom-out.md +74 -62
  199. package/environment-detection/SKILL.md +41 -77
  200. package/environment-detection/references/shell-syntax-rules.md +76 -0
  201. package/environment-detection/scripts/preflight.js +103 -93
  202. package/eval-framework/fixtures/bad-frontmatter-colon/SKILL.md +14 -0
  203. package/eval-framework/fixtures/duplicate-desc-skill-a/SKILL.md +14 -0
  204. package/eval-framework/fixtures/duplicate-desc-skill-b/SKILL.md +14 -0
  205. package/eval-framework/fixtures/missing-delimiter/SKILL.md +13 -0
  206. package/eval-framework/fixtures/over-budget-skill/SKILL.md +36 -0
  207. package/eval-harness/SKILL.md +42 -59
  208. package/eval-harness/references/scoring-rubric.md +68 -0
  209. package/eval-harness/scripts/evaluate.js +77 -61
  210. package/evals/environment-detection/eval.yaml +26 -0
  211. package/evals/environment-detection/tasks/negative-trigger.yaml +16 -0
  212. package/evals/environment-detection/tasks/positive-trigger.yaml +15 -0
  213. package/evals/eval-harness/eval.yaml +26 -0
  214. package/evals/eval-harness/tasks/negative-trigger.yaml +16 -0
  215. package/evals/eval-harness/tasks/positive-trigger.yaml +15 -0
  216. package/evals/fable-discipline/eval.yaml +26 -0
  217. package/evals/fable-discipline/tasks/negative-trigger.yaml +16 -0
  218. package/evals/fable-discipline/tasks/positive-trigger.yaml +15 -0
  219. package/evals/fable-mode/eval.yaml +26 -0
  220. package/evals/fable-mode/tasks/negative-tier2-no-model.yaml +18 -0
  221. package/evals/fable-mode/tasks/negative-trigger.yaml +16 -0
  222. package/evals/fable-mode/tasks/positive-haiku-mode.yaml +16 -0
  223. package/evals/fable-mode/tasks/positive-opus-mode.yaml +16 -0
  224. package/evals/fable-mode/tasks/positive-sonnet-mode.yaml +16 -0
  225. package/evals/fable-mode/tasks/positive-trigger.yaml +15 -0
  226. package/evals/find-skills/eval.yaml +26 -0
  227. package/evals/find-skills/tasks/negative-trigger.yaml +16 -0
  228. package/evals/find-skills/tasks/positive-trigger.yaml +15 -0
  229. package/evals/git-commit/eval.yaml +26 -0
  230. package/evals/git-commit/tasks/negative-trigger.yaml +16 -0
  231. package/evals/git-commit/tasks/positive-trigger.yaml +15 -0
  232. package/evals/grill-me/eval.yaml +26 -0
  233. package/evals/grill-me/tasks/negative-trigger.yaml +16 -0
  234. package/evals/grill-me/tasks/positive-trigger.yaml +15 -0
  235. package/evals/grill-with-docs/eval.yaml +26 -0
  236. package/evals/grill-with-docs/tasks/negative-trigger.yaml +16 -0
  237. package/evals/grill-with-docs/tasks/positive-trigger.yaml +15 -0
  238. package/evals/harness-everything/eval.yaml +26 -0
  239. package/evals/harness-everything/tasks/negative-non-software.yaml +16 -0
  240. package/evals/harness-everything/tasks/negative-skill-indicated.yaml +15 -0
  241. package/evals/harness-everything/tasks/positive-tier1.yaml +16 -0
  242. package/evals/harness-everything/tasks/positive-tier2.yaml +16 -0
  243. package/evals/harness-everything/tasks/positive-tier3.yaml +16 -0
  244. package/evals/improve-codebase-architecture/eval.yaml +26 -0
  245. package/evals/improve-codebase-architecture/tasks/negative-trigger.yaml +16 -0
  246. package/evals/improve-codebase-architecture/tasks/positive-trigger.yaml +15 -0
  247. package/evals/install-cognitive-os/eval.yaml +26 -0
  248. package/evals/install-cognitive-os/tasks/negative-trigger.yaml +16 -0
  249. package/evals/install-cognitive-os/tasks/positive-trigger.yaml +15 -0
  250. package/evals/multi-agent-workspace/eval.yaml +26 -0
  251. package/evals/multi-agent-workspace/tasks/negative-trigger.yaml +15 -0
  252. package/evals/multi-agent-workspace/tasks/positive-trigger.yaml +15 -0
  253. package/evals/repo-docs/eval.yaml +26 -0
  254. package/evals/repo-docs/tasks/negative-trigger.yaml +16 -0
  255. package/evals/repo-docs/tasks/positive-trigger.yaml +15 -0
  256. package/evals/rewrite-commits/eval.yaml +26 -0
  257. package/evals/rewrite-commits/tasks/negative-trigger.yaml +16 -0
  258. package/evals/rewrite-commits/tasks/positive-trigger.yaml +15 -0
  259. package/evals/security-review/eval.yaml +26 -0
  260. package/evals/security-review/tasks/negative-trigger.yaml +16 -0
  261. package/evals/security-review/tasks/positive-trigger.yaml +15 -0
  262. package/evals/self-evolve/eval.yaml +26 -0
  263. package/evals/self-evolve/tasks/negative-trigger.yaml +16 -0
  264. package/evals/self-evolve/tasks/positive-trigger.yaml +15 -0
  265. package/evals/skill-creator/eval.yaml +26 -0
  266. package/evals/skill-creator/tasks/negative-trigger.yaml +16 -0
  267. package/evals/skill-creator/tasks/positive-trigger.yaml +15 -0
  268. package/evals/skill-style/eval.yaml +26 -0
  269. package/evals/skill-style/tasks/negative-trigger.yaml +16 -0
  270. package/evals/skill-style/tasks/positive-trigger.yaml +15 -0
  271. package/evals/tdd/eval.yaml +26 -0
  272. package/evals/tdd/tasks/negative-trivia.yaml +16 -0
  273. package/evals/tdd/tasks/positive-bugfix.yaml +15 -0
  274. package/evals/tdd/tasks/positive-feature.yaml +16 -0
  275. package/evals/tdd/tasks/positive-refactor.yaml +15 -0
  276. package/evals/to-spec/eval.yaml +26 -0
  277. package/evals/to-spec/tasks/negative-trigger.yaml +16 -0
  278. package/evals/to-spec/tasks/positive-trigger.yaml +15 -0
  279. package/evals/to-tickets/eval.yaml +26 -0
  280. package/evals/to-tickets/tasks/negative-trigger.yaml +15 -0
  281. package/evals/to-tickets/tasks/positive-trigger.yaml +15 -0
  282. package/evals/todo-driven-workflow/eval.yaml +26 -0
  283. package/evals/todo-driven-workflow/tasks/negative-single-edit.yaml +16 -0
  284. package/evals/todo-driven-workflow/tasks/positive-multi-step.yaml +15 -0
  285. package/evals/todo-driven-workflow/tasks/positive-refactor-flow.yaml +15 -0
  286. package/evals/using-git-worktrees/eval.yaml +26 -0
  287. package/evals/using-git-worktrees/tasks/negative-trigger.yaml +15 -0
  288. package/evals/using-git-worktrees/tasks/positive-trigger.yaml +15 -0
  289. package/evals/verification-loop/eval.yaml +26 -0
  290. package/evals/verification-loop/tasks/negative-discussion.yaml +16 -0
  291. package/evals/verification-loop/tasks/positive-pre-ship.yaml +15 -0
  292. package/evals/verify-before-claim/eval.yaml +26 -0
  293. package/evals/verify-before-claim/tasks/negative-trigger.yaml +16 -0
  294. package/evals/verify-before-claim/tasks/positive-trigger.yaml +15 -0
  295. package/evals/zoom-out/eval.yaml +26 -0
  296. package/evals/zoom-out/tasks/negative-trivial-edit.yaml +16 -0
  297. package/evals/zoom-out/tasks/positive-repeated-failure.yaml +15 -0
  298. package/fable-discipline/SKILL.md +41 -38
  299. package/fable-discipline/references/discipline-rules.md +22 -0
  300. package/fable-mode/CONTRACT-FORMAT.md +51 -51
  301. package/fable-mode/SKILL.md +39 -51
  302. package/fable-mode/agents/fable-orchestrator.md +99 -92
  303. package/fable-mode/agents/fable-verifier.md +32 -32
  304. package/fable-mode/agents/fable-worker-haiku.md +52 -48
  305. package/fable-mode/agents/fable-worker-sonnet.md +53 -49
  306. package/fable-mode/execution-guardrails/SKILL.md +43 -87
  307. package/fable-mode/execution-guardrails/references/guardrail-rules.md +56 -0
  308. package/fable-mode/fable-haiku/SKILL.md +36 -48
  309. package/fable-mode/fable-haiku/references/routing-notes.md +26 -0
  310. package/fable-mode/fable-opus/SKILL.md +36 -0
  311. package/fable-mode/fable-sonnet/SKILL.md +36 -0
  312. package/fable-mode/model-matrix.json +32 -0
  313. package/fable-mode/references/execution-phases.md +37 -0
  314. package/fable-mode/references/model-matrix.md +39 -0
  315. package/fable-mode/scripts/model-selector.js +129 -0
  316. package/find-skills/SKILL.md +48 -0
  317. package/find-skills/references/discovery-flow.md +102 -0
  318. package/find-skills/scripts/use-skill.js +106 -0
  319. package/git-commit/SKILL.md +45 -55
  320. package/git-commit/guides/ANGULAR_STYLE.md +60 -60
  321. package/git-commit/guides/COMMIT_GENERATION.md +23 -23
  322. package/git-commit/guides/LANGUAGE_DETECTION.md +16 -16
  323. package/git-commit/guides/MAIN_REPO.md +14 -14
  324. package/git-commit/guides/SUBMODULES.md +27 -27
  325. package/git-commit/references/commit-flow.md +30 -0
  326. package/grill-me/SKILL.md +43 -36
  327. package/grill-me/references/grilling-playbook.md +38 -0
  328. package/grill-with-docs/ADR-FORMAT.md +47 -47
  329. package/grill-with-docs/CONTEXT-FORMAT.md +63 -63
  330. package/grill-with-docs/SKILL.md +41 -99
  331. package/grill-with-docs/references/session-playbook.md +97 -0
  332. package/harness-everything/SKILL.md +42 -141
  333. package/harness-everything/references/skill-registry.md +39 -0
  334. package/harness-everything/references/triage-and-tiers.md +116 -0
  335. package/harness-everything/scripts/bootstrap.js +203 -140
  336. package/harness-everything/scripts/routing-keywords.json +320 -0
  337. package/harness-everything/scripts/self-heal.js +241 -189
  338. package/harness-everything/scripts/tier-router.js +334 -219
  339. package/harness-everything/scripts/verify-gate.js +87 -18
  340. package/hooks/hooks.json +155 -155
  341. package/hooks/scripts/boundary-guard.js +55 -55
  342. package/hooks/scripts/contract-test.js +79 -79
  343. package/hooks/scripts/depth-guard.js +65 -65
  344. package/hooks/scripts/lib/harness-state.js +139 -228
  345. package/hooks/scripts/lib/platforms/claude.js +185 -42
  346. package/hooks/scripts/lib/platforms/codex.js +114 -46
  347. package/hooks/scripts/lib/platforms/continue.js +91 -41
  348. package/hooks/scripts/lib/platforms/copilot.js +109 -41
  349. package/hooks/scripts/lib/platforms/cursor.js +89 -41
  350. package/hooks/scripts/lib/platforms/hermes.js +57 -32
  351. package/hooks/scripts/lib/platforms/index.js +17 -17
  352. package/hooks/scripts/lib/platforms/worktrees.js +20 -20
  353. package/hooks/scripts/reset-circuit-breaker.js +30 -30
  354. package/hooks/scripts/rule-of-3-tracker.js +124 -91
  355. package/hooks/scripts/rule-of-3.js +14 -3
  356. package/hooks/scripts/state-persist.js +99 -99
  357. package/hooks/scripts/stop-gate.js +80 -80
  358. package/hooks/scripts/subagent-scope-guard.js +88 -88
  359. package/improve-codebase-architecture/SKILL.md +40 -44
  360. package/improve-codebase-architecture/guides/DEEPENING.md +37 -37
  361. package/improve-codebase-architecture/guides/HTML-REPORT.md +123 -123
  362. package/improve-codebase-architecture/guides/INTERFACE-DESIGN.md +44 -44
  363. package/improve-codebase-architecture/guides/LANGUAGE.md +53 -53
  364. package/improve-codebase-architecture/guides/refactoring-workflow.md +59 -0
  365. package/install-cognitive-os/SKILL.md +38 -95
  366. package/install-cognitive-os/references/cognitive-loop.md +27 -0
  367. package/multi-agent-workspace/NOTICE-agency-agents.md +27 -0
  368. package/multi-agent-workspace/SKILL.md +37 -0
  369. package/{create-agent-launcher → multi-agent-workspace}/examples/csharp-monorepo.md +123 -123
  370. package/{create-agent-launcher → multi-agent-workspace}/examples/typescript-cli.md +126 -126
  371. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-claude.md +77 -77
  372. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-codex.md +146 -146
  373. package/multi-agent-workspace/guidelines/platform-continue.md +38 -0
  374. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-copilot.md +74 -74
  375. package/multi-agent-workspace/guidelines/platform-cursor.md +40 -0
  376. package/multi-agent-workspace/guidelines/platform-hermes.md +38 -0
  377. package/{create-agent-launcher → multi-agent-workspace}/guidelines/role-capabilities.md +108 -108
  378. package/multi-agent-workspace/references/agency-agents.md +31 -0
  379. package/multi-agent-workspace/references/architecture-guide.md +32 -0
  380. package/multi-agent-workspace/references/orchestration.md +48 -0
  381. package/multi-agent-workspace/scripts/agency-catalog.js +190 -0
  382. package/multi-agent-workspace/scripts/index_memory.js +51 -0
  383. package/multi-agent-workspace/scripts/scaffold.js +253 -0
  384. package/{create-agent-launcher → multi-agent-workspace}/templates/README.md +17 -17
  385. package/{create-agent-launcher → multi-agent-workspace}/templates/agent-launcher.md +67 -67
  386. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-csharp.md +55 -55
  387. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-polyglot.md +61 -61
  388. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-ts.md +56 -56
  389. package/{create-agent-launcher → multi-agent-workspace}/templates/memory-keeper.md +36 -36
  390. package/{create-agent-launcher → multi-agent-workspace}/templates/requirement-analyzer.md +65 -65
  391. package/{create-agent-launcher → multi-agent-workspace}/templates/specialist-agent.md +34 -34
  392. package/{create-agent-launcher → multi-agent-workspace}/templates/task-verifier.md +55 -55
  393. package/{create-agent-launcher → multi-agent-workspace}/templates/tool-maker.md +32 -32
  394. package/multi-agent-workspace/workflows/01-init.md +22 -0
  395. package/multi-agent-workspace/workflows/02-analysis.md +23 -0
  396. package/multi-agent-workspace/workflows/03-generation.md +27 -0
  397. package/multi-agent-workspace/workflows/04-launcher.md +16 -0
  398. package/opencode-plugin/README.md +94 -0
  399. package/opencode-plugin/hooks/circuit-breaker.js +121 -0
  400. package/opencode-plugin/hooks/compliance.js +128 -0
  401. package/opencode-plugin/hooks/post-edit.js +62 -0
  402. package/opencode-plugin/hooks/pre-complete.js +65 -0
  403. package/opencode-plugin/hooks/verify.js +140 -0
  404. package/opencode-plugin/plugin.json +17 -0
  405. package/opencode-plugin/test-hook-firing.js +198 -0
  406. package/package.json +50 -22
  407. package/references/definition-of-done.md +67 -0
  408. package/references/performance-checklist.md +153 -0
  409. package/references/platform-advisory-template.md +58 -0
  410. package/references/security-checklist.md +205 -0
  411. package/repo-docs/SKILL.md +46 -45
  412. package/repo-docs/references/process-guide.md +60 -0
  413. package/repo-docs/templates/agents-template.md +264 -264
  414. package/repo-docs/templates/knowledge-agents-template.md +50 -50
  415. package/repo-docs/templates/knowledge-readme-template.md +83 -83
  416. package/repo-docs/templates/manual-recon.md +117 -117
  417. package/repo-docs/templates/multi-skills-readme-template.md +72 -72
  418. package/repo-docs/templates/product-agents-template.md +78 -78
  419. package/repo-docs/templates/product-readme-template.md +95 -95
  420. package/repo-docs/templates/readme-template.md +136 -136
  421. package/repo-docs/templates/single-skill-readme-template.md +70 -70
  422. package/repo-docs/templates/skills-agents-template.md +60 -60
  423. package/rewrite-commits/SKILL.md +37 -32
  424. package/rewrite-commits/references/workflow.md +18 -0
  425. package/scripts/installer.js +546 -649
  426. package/scripts/lib/advisory-text.js +167 -163
  427. package/scripts/lib/claude-hooks.js +84 -71
  428. package/scripts/lib/gitignore.js +199 -80
  429. package/scripts/lib/manifest.js +146 -82
  430. package/scripts/lib/prompts.js +241 -241
  431. package/scripts/lib/skills.js +260 -172
  432. package/scripts/lib/workspace.js +28 -28
  433. package/scripts/verify-install.js +147 -0
  434. package/security-review/SKILL.md +50 -511
  435. package/security-review/guides/OWASP-PATTERNS.md +31 -0
  436. package/security-review/guides/STRIDE-THREAT-MODEL.md +21 -0
  437. package/security-review/references/security-checklist.md +478 -0
  438. package/security-review/scripts/audit-secrets.js +84 -0
  439. package/self-evolve/SKILL.md +47 -54
  440. package/self-evolve/references/memory-resolution.md +58 -0
  441. package/self-evolve/scripts/persist-memory.js +139 -40
  442. package/self-evolve/scripts/register-dynamic-skill.js +251 -0
  443. package/self-evolve/scripts/self-regression.js +110 -113
  444. package/skill-creator/SKILL.md +49 -91
  445. package/skill-creator/references/authoring-workflow.md +14 -0
  446. package/skill-creator/references/dynamic-generation-contract.md +21 -0
  447. package/skill-creator/references/quality-checklist.md +15 -0
  448. package/skill-creator/references/quality-principles.md +81 -81
  449. package/skill-creator/references/testing-workflow.md +20 -25
  450. package/skill-style/SKILL.md +42 -48
  451. package/skill-style/references/style-guide.md +36 -0
  452. package/tdd/SKILL.md +44 -53
  453. package/tdd/guides/deep-modules.md +33 -33
  454. package/tdd/guides/interface-design.md +31 -31
  455. package/tdd/guides/mocking.md +59 -59
  456. package/tdd/guides/refactoring.md +10 -10
  457. package/tdd/guides/tests.md +61 -61
  458. package/tdd/references/core-discipline.md +49 -0
  459. package/to-spec/SKILL.md +42 -0
  460. package/to-spec/references/process.md +77 -0
  461. package/to-spec/scripts/check-project-docs.js +259 -0
  462. package/to-spec/templates/cli-reference.md +31 -0
  463. package/to-spec/templates/dev-doc.md +27 -0
  464. package/to-spec/templates/feature-spec.md +59 -0
  465. package/to-spec/templates/schema-doc.md +31 -0
  466. package/to-tickets/SKILL.md +42 -0
  467. package/to-tickets/references/publishing-and-templates.md +97 -0
  468. package/todo-driven-workflow/SKILL.md +40 -54
  469. package/todo-driven-workflow/references/execution-guide.md +27 -0
  470. package/using-git-worktrees/SKILL.md +49 -161
  471. package/using-git-worktrees/references/workflow-details.md +108 -0
  472. package/verification-loop/SKILL.md +46 -138
  473. package/verification-loop/references/verification-phases.md +116 -0
  474. package/verification-loop/templates/verification-report.template.md +15 -0
  475. package/verify-before-claim/SKILL.md +43 -86
  476. package/verify-before-claim/references/verification-guide.md +73 -0
  477. package/zoom-out/SKILL.md +42 -90
  478. package/zoom-out/references/circuit-breaker.md +66 -0
  479. package/zoom-out/templates/zoom-out-report.template.md +20 -0
  480. package/build-multi-agent-system/AGENTS.md +0 -50
  481. package/build-multi-agent-system/README.md +0 -63
  482. package/build-multi-agent-system/SKILL.md +0 -68
  483. package/create-agent-launcher/SKILL.md +0 -48
  484. package/create-agent-launcher/guidelines/platform-gemini.md +0 -101
  485. package/create-agent-launcher/workflows/01-init.md +0 -22
  486. package/create-agent-launcher/workflows/02-analysis.md +0 -26
  487. package/create-agent-launcher/workflows/03-generation.md +0 -29
  488. package/create-agent-launcher/workflows/04-launcher.md +0 -20
  489. package/docs/workflows/build-multi-agent-system.md +0 -62
  490. package/docs/workflows/create-agent-launcher.md +0 -62
  491. package/eval-framework/behavioral-test.js +0 -105
  492. package/eval-framework/mechanism-test.js +0 -251
  493. package/harness-everything/scripts/todo-cli.js +0 -157
  494. package/skill-style/STYLE.md +0 -37
@@ -0,0 +1,259 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Project Docs Framework Check
4
+ *
5
+ * Mechanized gate for `to-spec` (and `to-tickets`, once installed): has this
6
+ * repo already pinned down where reference docs live, how issues are
7
+ * tracked, and what counts as a valid issue? Stored as a `projectDocs` entry
8
+ * inside the SAME harness-everything/manifest.json this package already
9
+ * owns (see scripts/lib/manifest.js and self-evolve's `generated` skill
10
+ * registry) - not a new docs/agents/ file convention, so there's one config
11
+ * surface, not two.
12
+ *
13
+ * Deliberately repo-local only: unlike self-evolve's `generated` skills
14
+ * (intentionally reusable across projects), doc location / tracker / issue
15
+ * definition are PER-REPO facts. Reading or writing them through the global
16
+ * ~/.agents or ~/.claude manifest homes would leak one project's tracker
17
+ * into every other project sharing that global install, so this script
18
+ * scans only the workspace-relative platform homes, never the user-home ones.
19
+ *
20
+ * Exit 0 -> at least one detected platform's manifest.json (inside this
21
+ * repo) has a complete projectDocs entry. Read it, skip Step 0.
22
+ * Exit 1 -> missing or incomplete everywhere. Run the Step 0 interview in
23
+ * to-spec/SKILL.md for the flagged field(s), then persist with `init`.
24
+ *
25
+ * manifest.json is read on every single tier-router.js invocation (every
26
+ * prompt, not just to-spec runs) to scan for self-evolve's generated
27
+ * skills - so projectDocs MUST stay a short pointer, never a growing log.
28
+ * `init` enforces a length cap per field (see MAX_FIELD_LENGTH) precisely so
29
+ * this can't quietly bloat over time. If a real answer is genuinely long
30
+ * (a multi-context doc map, a full custom issue template), write that detail
31
+ * into its own file - a CONTEXT-MAP.md entry, a `.github/ISSUE_TEMPLATE/`
32
+ * file, a docs/ README - and pass just that path as the field's value.
33
+ * Anything to-spec might later want to log per-session or per-doc (e.g.
34
+ * "which doc got published for which conversation") belongs in a separate,
35
+ * session-scoped file under the state dir (see hooks/scripts/lib/harness-
36
+ * state.js's getSessionDir) - never appended into this manifest.
37
+ */
38
+ const fs = require('fs');
39
+ const path = require('path');
40
+
41
+ function getWorkspaceRoot() {
42
+ let dir = path.resolve(process.cwd());
43
+ while (dir !== path.parse(dir).root) {
44
+ if (fs.existsSync(path.join(dir, '.git'))) return dir;
45
+ dir = path.dirname(dir);
46
+ }
47
+ return process.cwd();
48
+ }
49
+
50
+ function loadManifestHelper() {
51
+ const candidates = [
52
+ path.join(__dirname, '../../scripts/lib/manifest'),
53
+ path.join(__dirname, '../scripts/lib/manifest'),
54
+ path.join(__dirname, '../../../scripts/lib/manifest'),
55
+ path.join(getWorkspaceRoot(), 'scripts/lib/manifest'),
56
+ path.join(getWorkspaceRoot(), 'harness-everything/scripts/lib/manifest'),
57
+ ];
58
+ for (const cand of candidates) {
59
+ try {
60
+ if (fs.existsSync(cand + '.js') || fs.existsSync(cand)) {
61
+ return require(cand);
62
+ }
63
+ } catch (e) {}
64
+ }
65
+ throw new Error('[to-spec/check-project-docs] Failed to locate manifest helper module (scripts/lib/manifest)');
66
+ }
67
+ const { getManifestPath, readManifest, writeManifest } = loadManifestHelper();
68
+
69
+ const REQUIRED_FIELDS = ['docLocation', 'tracker', 'issueDefinition'];
70
+ const FLAG_TO_FIELD = {
71
+ 'doc-location': 'docLocation',
72
+ 'tracker': 'tracker',
73
+ 'issue-definition': 'issueDefinition',
74
+ };
75
+ // A pointer, not a payload: one short line each. Long enough for "GitHub
76
+ // Issues via gh, label ready-for-agent" or "docs/reference/, see
77
+ // CONTEXT-MAP.md for per-context layout", too short for embedding a full
78
+ // issue template or a multi-paragraph doc-location policy inline.
79
+ const MAX_FIELD_LENGTH = 200;
80
+
81
+ // Workspace-relative platform homes ONLY - no userHome/.agents or
82
+ // userHome/.claude here (see file header). tier-router.js and
83
+ // register-dynamic-skill.js include those two because self-evolved skills
84
+ // are meant to travel with the user across projects; projectDocs must not.
85
+ function getRepoManifestHomes(workspaceRoot) {
86
+ return [
87
+ path.join(workspaceRoot, '.claude'),
88
+ path.join(workspaceRoot, '.cursor'),
89
+ path.join(workspaceRoot, '.github'),
90
+ path.join(workspaceRoot, '.codex'),
91
+ path.join(workspaceRoot, '.continue'),
92
+ ];
93
+ }
94
+
95
+ function missingFields(projectDocs) {
96
+ if (!projectDocs) return REQUIRED_FIELDS.slice();
97
+ return REQUIRED_FIELDS.filter(f => !String(projectDocs[f] || '').trim());
98
+ }
99
+
100
+ /**
101
+ * Heuristic workspace convention detector.
102
+ * Automatically infers docLocation, tracker, and issueDefinition from standard directory layouts.
103
+ */
104
+ function detectWorkspaceConventions(workspaceRoot) {
105
+ const inferred = {};
106
+
107
+ // Detect docLocation
108
+ const docCandidates = ['docs/roadmaps', 'docs/reference', 'docs/specs', 'docs', 'doc'];
109
+ for (const dir of docCandidates) {
110
+ if (fs.existsSync(path.join(workspaceRoot, dir))) {
111
+ inferred.docLocation = `${dir}/`;
112
+ break;
113
+ }
114
+ }
115
+
116
+ // Detect tracker
117
+ if (fs.existsSync(path.join(workspaceRoot, '.github/ISSUE_TEMPLATE'))) {
118
+ inferred.tracker = 'GitHub Issues via .github/ISSUE_TEMPLATE/';
119
+ } else if (fs.existsSync(path.join(workspaceRoot, 'docs/roadmaps'))) {
120
+ inferred.tracker = 'docs/roadmaps/ local markdown tickets';
121
+ } else if (fs.existsSync(path.join(workspaceRoot, 'tasks/tickets'))) {
122
+ inferred.tracker = 'tasks/tickets/ local markdown tickets';
123
+ } else if (fs.existsSync(path.join(workspaceRoot, '.scratch'))) {
124
+ inferred.tracker = '.scratch/ local markdown workspace';
125
+ } else if (inferred.docLocation) {
126
+ inferred.tracker = `${inferred.docLocation}tickets/ local markdown tickets`;
127
+ }
128
+
129
+ // Detect issueDefinition
130
+ if (inferred.tracker && inferred.tracker.includes('ISSUE_TEMPLATE')) {
131
+ inferred.issueDefinition = '.github/ISSUE_TEMPLATE/ template structure';
132
+ } else if (inferred.tracker) {
133
+ inferred.issueDefinition = 'Title + acceptance criteria + Status: ready-for-agent';
134
+ }
135
+
136
+ return inferred;
137
+ }
138
+
139
+ function runCheck(workspaceRoot) {
140
+ const existingPaths = getRepoManifestHomes(workspaceRoot)
141
+ .map(getManifestPath)
142
+ .filter(p => fs.existsSync(p));
143
+
144
+ // Check explicit projectDocs entries in manifest files
145
+ for (const manifestPath of existingPaths) {
146
+ const docs = readManifest(manifestPath).projectDocs;
147
+ if (docs && missingFields(docs).length === 0) {
148
+ console.log(`[Project Docs Check] OK: ${manifestPath} defines document location, issue tracker, and issue definition.`);
149
+ process.exit(0);
150
+ }
151
+ }
152
+
153
+ // Fallback to heuristic workspace detection
154
+ const inferred = detectWorkspaceConventions(workspaceRoot);
155
+ const missingInferred = missingFields(inferred);
156
+
157
+ if (missingInferred.length === 0) {
158
+ console.log(`[Project Docs Check] OK (Inferred from workspace structure):`);
159
+ console.log(` - docLocation: ${inferred.docLocation}`);
160
+ console.log(` - tracker: ${inferred.tracker}`);
161
+ console.log(` - issueDefinition: ${inferred.issueDefinition}`);
162
+ process.exit(0);
163
+ }
164
+
165
+ console.log(`[Project Docs Check] INCOMPLETE: no manifest.json or standard folder structure covers all fields. Missing: ${missingInferred.join(', ')}`);
166
+ console.log('=> Run the Step 0 framework interview for missing fields, or proceed using default workspace fallbacks.');
167
+ process.exit(1);
168
+ }
169
+
170
+ function parseFlags(args) {
171
+ const values = {};
172
+ for (let i = 0; i < args.length; i += 2) {
173
+ const flag = args[i];
174
+ const value = args[i + 1];
175
+ if (flag && flag.startsWith('--') && value !== undefined) {
176
+ values[flag.slice(2)] = value;
177
+ }
178
+ }
179
+ return values;
180
+ }
181
+
182
+ function runInit(workspaceRoot, args) {
183
+ const flags = parseFlags(args);
184
+ const missingFlags = Object.keys(FLAG_TO_FIELD).filter(f => !flags[f]);
185
+ if (missingFlags.length > 0) {
186
+ console.error(`[Project Docs Check] init requires --${missingFlags.join(', --')}`);
187
+ process.exit(1);
188
+ }
189
+
190
+ const oversizedFlags = Object.keys(FLAG_TO_FIELD).filter(f => flags[f].length > MAX_FIELD_LENGTH);
191
+ if (oversizedFlags.length > 0) {
192
+ for (const f of oversizedFlags) {
193
+ console.error(`[Project Docs Check] --${f} is ${flags[f].length} chars - projectDocs fields must stay <= ${MAX_FIELD_LENGTH} chars (a pointer, not the content).`);
194
+ }
195
+ console.error('=> Write the detailed content to its own file instead (e.g. a CONTEXT-MAP.md entry, a .github/ISSUE_TEMPLATE/ file, a docs/ README), then pass just that path here.');
196
+ process.exit(1);
197
+ }
198
+
199
+ const projectDocs = {
200
+ docLocation: flags['doc-location'],
201
+ tracker: flags['tracker'],
202
+ issueDefinition: flags['issue-definition'],
203
+ updatedAt: new Date().toISOString(),
204
+ };
205
+
206
+ const homes = getRepoManifestHomes(workspaceRoot);
207
+
208
+ // Write to every platform home already bootstrapped with harness in THIS
209
+ // repo (their harness-everything/ subfolder already exists), so switching
210
+ // editors mid-project never loses this config.
211
+ let wrote = 0;
212
+ for (const home of homes) {
213
+ const manifestPath = getManifestPath(home);
214
+ if (!fs.existsSync(path.dirname(manifestPath))) continue;
215
+ const data = readManifest(manifestPath);
216
+ data.projectDocs = projectDocs;
217
+ writeManifest(manifestPath, data);
218
+ console.log(`[Project Docs Check] Wrote projectDocs to ${manifestPath}`);
219
+ wrote++;
220
+ }
221
+
222
+ // No repo-local platform bootstrapped yet: create the primary one
223
+ // (.claude/harness-everything/manifest.json) rather than falling back to
224
+ // any global/user-home manifest - this data must never leave the repo.
225
+ if (wrote === 0) {
226
+ const manifestPath = getManifestPath(homes[0]);
227
+ const data = readManifest(manifestPath);
228
+ data.projectDocs = projectDocs;
229
+ writeManifest(manifestPath, data);
230
+ console.log(`[Project Docs Check] No platform bootstrapped yet in this repo - wrote projectDocs to ${manifestPath}`);
231
+ }
232
+
233
+ process.exit(0);
234
+ }
235
+
236
+ if (process.argv[2] === '--help' || process.argv[2] === '-h') {
237
+ console.log(`Gate: has this repo already pinned doc location / issue tracker / issue definition?
238
+
239
+ Usage:
240
+ node check-project-docs.js [check] Exit 0 if a complete projectDocs entry already exists in this repo's manifest.json; exit 1 with the missing field(s) otherwise.
241
+ node check-project-docs.js init --doc-location "..." --tracker "..." --issue-definition "..."
242
+ Persist all three fields (each <= ${MAX_FIELD_LENGTH} chars - a pointer, not the content) to every already-bootstrapped platform manifest.json in this repo.
243
+
244
+ Repo-local only: writes only to workspace-relative manifest homes (.claude/, .cursor/,
245
+ .github/, .codex/, .continue/), never to the user-home manifests self-evolve uses.`);
246
+ process.exit(0);
247
+ }
248
+
249
+ const command = process.argv[2] || 'check';
250
+ const workspaceRoot = getWorkspaceRoot();
251
+
252
+ if (command === 'check') {
253
+ runCheck(workspaceRoot);
254
+ } else if (command === 'init') {
255
+ runInit(workspaceRoot, process.argv.slice(3));
256
+ } else {
257
+ console.error(`[Project Docs Check] Unknown command "${command}". Use 'check' or 'init'.`);
258
+ process.exit(1);
259
+ }
@@ -0,0 +1,31 @@
1
+ # CLI / API Reference Template
2
+
3
+ Use this shape when the artifact is documenting a new or changed command surface — a CLI command, flag set, or a single API endpoint. Lighter than `feature-spec.md`: no user stories, no seam-sketching. Fits Tier 2 work just as often as Tier 3.
4
+
5
+ <spec-template>
6
+
7
+ ## Synopsis
8
+
9
+ One-line usage form, e.g. `harness todo add <task> [--priority <n>]` or `POST /api/orders/:id/cancel`.
10
+
11
+ ## Description
12
+
13
+ What this command/endpoint does and when you'd reach for it, from the caller's perspective.
14
+
15
+ ## Flags / Arguments / Parameters
16
+
17
+ Each flag, positional argument, or request field: name, type, required/optional, default, what it controls.
18
+
19
+ ## Examples
20
+
21
+ 2-3 concrete invocations covering the common case and at least one edge case.
22
+
23
+ ## Exit Codes / Errors
24
+
25
+ Every distinct exit code or error response: what triggers it, what the caller should do about it.
26
+
27
+ ## Related Commands / See Also
28
+
29
+ Other commands/endpoints this one is commonly paired with, supersedes, or is superseded by.
30
+
31
+ </spec-template>
@@ -0,0 +1,27 @@
1
+ # Dev / Design Doc Template
2
+
3
+ Use this shape for a scoped technical decision that doesn't rise to a full ADR (see `grill-with-docs`'s three-criteria test) but is still worth writing down before implementing — the kind of thing a Tier 2 task produces when it makes a real design call along the way.
4
+
5
+ <spec-template>
6
+
7
+ ## Context
8
+
9
+ What prompted this decision — the constraint, bug, or request behind it.
10
+
11
+ ## Decision
12
+
13
+ What was decided, stated plainly.
14
+
15
+ ## Alternatives Considered
16
+
17
+ Other options that were on the table and why they were passed over.
18
+
19
+ ## Trade-offs
20
+
21
+ What this decision costs, even though it was the right call.
22
+
23
+ ## Rollout / Rollback
24
+
25
+ How this ships (flag, gradual, all-at-once) and how to undo it if it's wrong.
26
+
27
+ </spec-template>
@@ -0,0 +1,59 @@
1
+ # Feature Spec (PRD) Template
2
+
3
+ Use this shape when the artifact is a new feature, product surface, or anything with user-facing behavior and multiple implementation decisions to record. This is the heaviest template — reserve it for work that will get broken into tickets by `to-tickets` afterward.
4
+
5
+ <spec-template>
6
+
7
+ ## Problem Statement
8
+
9
+ The problem that the user is facing, from the user's perspective.
10
+
11
+ ## Solution
12
+
13
+ The solution to the problem, from the user's perspective.
14
+
15
+ ## User Stories
16
+
17
+ A LONG, numbered list of user stories. Each user story should be in the format of:
18
+
19
+ 1. As an <actor>, I want a <feature>, so that <benefit>
20
+
21
+ <user-story-example>
22
+ 1. As a mobile bank customer, I want to see balance on my accounts, so that I can make better informed decisions about my spending
23
+ </user-story-example>
24
+
25
+ This list of user stories should be extremely extensive and cover all aspects of the feature.
26
+
27
+ ## Implementation Decisions
28
+
29
+ A list of implementation decisions that were made. This can include:
30
+
31
+ - The modules that will be built/modified
32
+ - The interfaces of those modules that will be modified
33
+ - Technical clarifications from the developer
34
+ - Architectural decisions
35
+ - Schema changes
36
+ - API contracts
37
+ - Specific interactions
38
+
39
+ Do NOT include specific file paths or code snippets. They may end up being outdated very quickly.
40
+
41
+ Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it within the relevant decision and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
42
+
43
+ ## Testing Decisions
44
+
45
+ A list of testing decisions that were made. Include:
46
+
47
+ - A description of what makes a good test (only test external behavior, not implementation details)
48
+ - Which modules will be tested
49
+ - Prior art for the tests (i.e. similar types of tests in the codebase)
50
+
51
+ ## Out of Scope
52
+
53
+ A description of the things that are out of scope for this spec.
54
+
55
+ ## Further Notes
56
+
57
+ Any further notes about the feature.
58
+
59
+ </spec-template>
@@ -0,0 +1,31 @@
1
+ # Schema / File Format Template
2
+
3
+ Use this shape when the artifact is documenting a data shape — a database schema change, a config file format, a wire payload, or an on-disk state file. Lighter than `feature-spec.md`: no user stories, no seam-sketching.
4
+
5
+ <spec-template>
6
+
7
+ ## Purpose
8
+
9
+ What this schema represents and why it exists, in one or two sentences.
10
+
11
+ ## Shape
12
+
13
+ Every field: name, type, required/optional, constraints (enum values, ranges, format). A snippet is appropriate here — schemas are exactly the case where inlining the shape beats describing it in prose.
14
+
15
+ ## Versioning / Migration
16
+
17
+ How a previous version maps to this one, if this is a change rather than a new schema. Whether old readers/writers still work, and for how long.
18
+
19
+ ## Validation Rules
20
+
21
+ Constraints that span multiple fields, or that a type system alone can't express (e.g. "end_date must be after start_date").
22
+
23
+ ## Backward Compatibility
24
+
25
+ What breaks for existing consumers, if anything, and what the mitigation is (dual-write, expand-contract, feature flag).
26
+
27
+ ## Example Payload
28
+
29
+ One realistic, complete example instance of the schema.
30
+
31
+ </spec-template>
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: to-tickets
3
+ description: Break a to-spec feature-spec, a plan, or a conversation into tracer-bullet tickets with declared blocking edges — one file per ticket locally or issues on a real tracker via projectDocs. Use when an approved spec needs dependency-aware ordering.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: Miya Daniel
7
+ version: 0.3.4
8
+ ---
9
+
10
+ # To Tickets
11
+
12
+ Cuts a plan or spec into tracer-bullet vertical slices, each declaring its blockers.
13
+
14
+ ## USE FOR:
15
+ - Break a spec or settled plan into tracer-bullet vertical slices
16
+ - Declaring blocking edges and dependency order
17
+ - Publishing tickets to local files or a tracker
18
+
19
+ ## DO NOT USE FOR:
20
+ - Writing the feature spec itself — instead use `to-spec`
21
+ - Trivial single-edit tasks needing no breakdown
22
+ - Closing parent tracker issues
23
+
24
+ ## Skill Contract
25
+
26
+ | Component | Specification |
27
+ | :--- | :--- |
28
+ | **Trigger / Input** | Explicit /to-tickets only; input: spec reference or plan in context. |
29
+ | **Expected Output** | Tickets with What-to-build, Blocked-by, criteria — per projectDocs/convention/fallback. |
30
+ | **State Mutations** | None to manifest.json (reads only); writes tickets at resolved location. |
31
+ | **Enforcement Gate** | Run `node "to-spec/scripts/check-project-docs.js" check` if available; never block on Exit 1; MUST get user approval before publishing. |
32
+
33
+ ## Process
34
+
35
+ 1. Resolve path: script check (Exit 0 = configured location) → workspace convention dirs → platform fallback (`.claude`/`.github`/`.cursor` + `/harness-everything/tickets/`).
36
+ 2. Gather context: prefer a referenced to-spec spec — design-audit verification MANDATORY first, else refuse; no spec is fine.
37
+ 3. Explore codebase (optional): evidence-cited findings only; prefactor first.
38
+ 4. Draft vertical slices: complete path through every layer, demoable alone, one context window each; declare blocking edges.
39
+ 5. Quiz the user on granularity and edges until approved (MANDATORY gate).
40
+ 6. Publish per ticket: one `<NN>-<slug>.md` file or tracker issue, dependency order, ready-for-agent, blocking links. Work the frontier; never close parents.
41
+
42
+ Deep dive: references/publishing-and-templates.md
@@ -0,0 +1,97 @@
1
+ # Storage Path Resolution & Publishing Detail (moved from SKILL.md)
2
+
3
+ ### 0. Resolve Storage Path & Framework (Gated Resolution Loop)
4
+
5
+ Follow the decision matrix below to determine where ticket artifacts must be published:
6
+
7
+ ```mermaid
8
+ flowchart TD
9
+ Start[Receive /to-tickets Request] --> CheckScript{1. Node.js & Script Executable?}
10
+
11
+ CheckScript -- Yes --> RunCheck[Run check-project-docs.js check]
12
+ RunCheck -- Exit 0 (Configured) --> PathConfig[Use Project Configured Path<br>e.g. docs/roadmaps/, tracker, or .scratch/]
13
+ RunCheck -- Exit 1 (Unset) --> InspectRepo
14
+
15
+ CheckScript -- No / Fails --> InspectRepo{2. Inspect Existing Workspace Conventions}
16
+
17
+ InspectRepo -- Existing Folder Found --> PathRepo[Use Workspace Convention<br>e.g. docs/roadmaps/, docs/tickets/, tasks/tickets/]
18
+ InspectRepo -- No Conventional Folder --> CheckPlatform{3. Fallback to Active Platform Home}
19
+
20
+ CheckPlatform -- Claude Code --> PathClaude[Write to .claude/harness-everything/tickets/]
21
+ CheckPlatform -- GitHub Copilot / VS Code --> PathCopilot[Write to .github/harness-everything/tickets/]
22
+ CheckPlatform -- Cursor / Other --> PathCursor[Write to .cursor/harness-everything/tickets/]
23
+
24
+ PathConfig --> Draft
25
+ PathRepo --> Draft
26
+ PathClaude --> Draft
27
+ PathCopilot --> Draft
28
+ PathCursor --> Draft
29
+ Draft[Draft & Publish Tickets]
30
+ ```
31
+
32
+ #### Path Resolution Rules:
33
+ 1. **Explicit Project Configuration (`projectDocs`)**: If `check-project-docs.js` returns `Exit 0`, use the configured `docLocation` or `tracker`.
34
+ 2. **Workspace Convention Inspection**: If unconfigured or script unavailable, check if any of these directories exist in the workspace:
35
+ - `docs/roadmaps/`
36
+ - `docs/tickets/`
37
+ - `tasks/tickets/`
38
+ - `.scratch/issues/`
39
+ If found, save tickets in the matching directory.
40
+ 3. **Platform Isolation Fallback**: If no directory convention exists, create and write ticket files inside the active IDE platform state folder:
41
+ - Claude Code: `.claude/harness-everything/tickets/<NN>-<slug>.md`
42
+ - GitHub Copilot: `.github/harness-everything/tickets/<NN>-<slug>.md`
43
+ - Cursor: `.cursor/harness-everything/tickets/<NN>-<slug>.md`
44
+
45
+ # Wide Refactors: Expand-Contract Exception
46
+
47
+ Give each ticket its **blocking edges** — the other tickets that must complete before it can start. A ticket with no blockers can start immediately.
48
+
49
+ **Wide refactors are the exception to vertical slicing.** A **wide refactor** is one mechanical change — rename a column, retype a shared symbol — whose **blast radius** fans across the whole codebase, so a single edit breaks thousands of call sites at once and no vertical slice can land green. Don't force it into a tracer bullet; sequence it as **expand–contract**. First expand: add the new form beside the old so nothing breaks. Then migrate the call sites over in batches sized by blast radius (per package, per directory), each batch its own ticket blocked by the expand, keeping CI green batch to batch because the old form still exists. Finally contract: delete the old form once no caller remains, in a ticket blocked by every migrate batch. When even the batches can't stay green alone, keep the sequence but let them share an integration branch that all block a final integrate-and-verify ticket — green is promised only there.
50
+
51
+ # Ticket Templates
52
+
53
+ <local-ticket-template>
54
+
55
+ # <NN> — <Ticket title>
56
+
57
+ **What to build:** the end-to-end behaviour this ticket makes work, from the user's perspective — not a layer-by-layer implementation list.
58
+
59
+ **Blocked by:** the numbers/titles of the tickets that gate this one, or "None — can start immediately".
60
+
61
+ **Status:** ready-for-agent
62
+
63
+ - [ ] Acceptance criterion 1
64
+ - [ ] Acceptance criterion 2
65
+
66
+ </local-ticket-template>
67
+
68
+ <issue-template>
69
+
70
+ ## Parent
71
+
72
+ A reference to the parent issue/spec on the tracker (the `to-spec` feature spec this came from, if any — otherwise omit this section).
73
+
74
+ ## What to build
75
+
76
+ The end-to-end behaviour this ticket makes work, from the user's perspective — not layer-by-layer implementation.
77
+
78
+ ## Acceptance criteria
79
+
80
+ - [ ] Criterion 1
81
+ - [ ] Criterion 2
82
+
83
+ ## Blocked by
84
+
85
+ - A reference to each blocking ticket, or "None — can start immediately".
86
+
87
+ </issue-template>
88
+
89
+ In either form, avoid specific file paths or code snippets — they go stale fast. Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
90
+
91
+ # Gather-Context Notes
92
+
93
+ If the referenced doc is a cli-reference, schema-doc, or dev-doc (a lighter to-spec shape, not a feature-spec), it is usually already ticket-sized on its own — confirm with the user whether it needs splitting before drafting.
94
+
95
+ # Evidence Format (Zero-Trust Exploration)
96
+
97
+ Every finding must cite explicit evidence: `Evidence: [File path & line number / Tool output] -> Finding: [What it means]`. Never guess codebase layout or dependencies.
@@ -1,54 +1,40 @@
1
- ---
2
- name: todo-driven-workflow
3
- description: Enforces a deliberate, step-by-step execution loop.
4
- author: Miya Daniel | Harness Core Team
5
- version: 1.1.0
6
- metadata:
7
- type: harness-discipline
8
- ---
9
-
10
- # Todo-Driven Workflow (以 TODO 驅動的自動化工作流)
11
-
12
- ## 📋 Skill Contract
13
-
14
- | Component | Specification |
15
- | :--- | :--- |
16
- | **Trigger / Input** | Tier 2/3 Task Identification. Input: High-level task description. |
17
- | **Expected Output** | Granular execution state. A series of terminal calls to `todo-cli.js`. |
18
- | **State Mutations** | MUST write to `.claude/harness-state/todo-state.json` via CLI. |
19
- | **Enforcement Gate** | `node harness-everything/scripts/todo-cli.js`. Exits with Code 1 if multitasking, bypassing initialization, or skipping `verify-gate.js`. |
20
-
21
- This skill enforces a disciplined execution loop. It prevents "hallucinated progress" by forcing the Agent to track exact state and prove completion before moving to the next step.
22
-
23
- ---
24
-
25
- ## ⚡ Core Trigger (觸發時機)
26
- This workflow is **the default operating behavior** for any complex, multi-step, or multi-file development tasks (Tier 2 and Tier 3).
27
-
28
- ## ⚙️ Execution Method
29
-
30
- | Environment | Primary Task Tracker | Implementation Method |
31
- | :--- | :--- | :--- |
32
- | **All Environments** | `todo-cli.js` | You MUST use `node harness-everything/scripts/todo-cli.js` for all state transitions. Do NOT rely on prompt text. |
33
-
34
- ---
35
-
36
- ## 🔄 Execution Loop: Think > Try > Summarize > Record
37
-
38
- ### 1. Analyze and Plan (Think)
39
- Break the high-level goal into **3 to 7 concrete, verifiable sub-tasks**.
40
-
41
- ### 2. Initialize the Todo List (Record)
42
- - **CRITICAL ACTION**: You MUST use the `run_in_terminal` tool to run `node harness-everything/scripts/todo-cli.js init "Task 1" "Task 2"` BEFORE modifying any code.
43
- - *Rule*: The terminal output will confirm the list is initialized.
44
-
45
- ### 3. Step-by-Step Execution
46
- 1. **Start**: Use `run_in_terminal` to run `node harness-everything/scripts/todo-cli.js start <id>`. **If you try to start two tasks, the script will crash and block you.**
47
- 2. **Execute**: Perform the necessary actions (read files, grep, run terminal commands, edit files).
48
- 3. **Verify**: The validation gate is hardcoded into the completion step.
49
- 4. **Complete**: Use `run_in_terminal` to run `node harness-everything/scripts/todo-cli.js complete <id>`. If the internal `verify-gate.js` check fails, this command will Exit 1 and block you.
50
-
51
- ### 4. Handling Blocker Failures (Dynamic Adaptation)
52
- If a step fails:
53
- - Use `node harness-everything/scripts/todo-cli.js add "Fix specific error"` to insert a blocker.
54
- - Do NOT silently ignore or bypass the error.
1
+ ---
2
+ name: todo-driven-workflow
3
+ description: "Enforce a deliberate step-by-step execution loop for complex multi-step or multi-file tasks (Tier 2/3), one sub-task in-progress at a time. USE FOR: \"track a complex multi-step task as todos\", \"work through a multi-file refactor step by step\". DO NOT USE FOR: \"trivial single-file edits\", \"quick questions without implementation\"."
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: Miya Daniel
7
+ version: 0.3.5
8
+ ---
9
+
10
+ # Todo-Driven Workflow
11
+
12
+ Single-task milestones prevent context drift in Tier 2/3 work.
13
+
14
+ ## USE FOR:
15
+ - Track multi-step, multi-file development tasks
16
+ - Enforce exactly one active milestone
17
+
18
+ ## DO NOT USE FOR:
19
+ - Trivial single-file edits
20
+ - Parallel sub-agent state without worktree isolation (`using-git-worktrees`)
21
+
22
+ ## Skill Contract
23
+
24
+ | Component | Specification |
25
+ | :--- | :--- |
26
+ | **Trigger / Input** | Tier 2/3 task with a high-level description. |
27
+ | **Expected Output** | Native TODO state or a Markdown checklist with verifiable milestones. |
28
+ | **State Mutations** | Host-native TODO state or `tasks/todo.md` / `.github/harness-everything/todo.md`. |
29
+ | **Enforcement Gate** | Exactly one milestone is `in-progress`; verify before marking it complete. |
30
+
31
+ ## Execution Loop: Think > Try > Summarize > Record
32
+
33
+ 1. [Think] State the goal and split it into 3-7 checkable milestones.
34
+ 2. [Record] Initialize the native host tracker before edits; if unavailable, create a Markdown checklist.
35
+ 3. Start exactly one milestone, execute only its scope, and run its named check.
36
+ 4. Mark it complete only after evidence passes; then start the next milestone.
37
+ 5. Record blockers in the checklist and escalate after the applicable circuit-breaker threshold.
38
+
39
+ Native TODO tools take priority. Markdown is the portable fallback; this skill
40
+ does not depend on a repository CLI state machine. See `references/execution-guide.md`.