@harness-engineering/cli 1.26.0 → 1.27.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/agents/skills/README.md +1 -0
- package/dist/agents/skills/claude-code/cleanup-dead-code/SKILL.md +3 -1
- package/dist/agents/skills/claude-code/detect-doc-drift/SKILL.md +3 -1
- package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +4 -0
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +55 -24
- package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +49 -10
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +21 -6
- package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-debugging/SKILL.md +13 -1
- package/dist/agents/skills/claude-code/harness-dependency-health/SKILL.md +4 -0
- package/dist/agents/skills/claude-code/harness-execution/SKILL.md +22 -6
- package/dist/agents/skills/claude-code/harness-impact-analysis/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-integration/SKILL.md +560 -0
- package/dist/agents/skills/claude-code/harness-integration/skill.yaml +65 -0
- package/dist/agents/skills/claude-code/harness-integrity/SKILL.md +2 -0
- package/dist/agents/skills/claude-code/harness-onboarding/SKILL.md +4 -0
- package/dist/agents/skills/claude-code/harness-perf/SKILL.md +9 -7
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +102 -11
- package/dist/agents/skills/claude-code/harness-refactoring/SKILL.md +13 -4
- package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +3 -1
- package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +4 -0
- package/dist/agents/skills/claude-code/harness-tdd/SKILL.md +5 -2
- package/dist/agents/skills/claude-code/harness-verification/SKILL.md +4 -0
- package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +22 -6
- package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +2 -1
- package/dist/agents/skills/claude-code/initialize-test-suite-project/SKILL.md +415 -0
- package/dist/agents/skills/claude-code/initialize-test-suite-project/skill.yaml +35 -0
- package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +3 -1
- package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +3 -1
- package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +4 -0
- package/dist/agents/skills/codex/harness-autopilot/SKILL.md +55 -24
- package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +49 -10
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +21 -6
- package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-debugging/SKILL.md +13 -1
- package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +4 -0
- package/dist/agents/skills/codex/harness-execution/SKILL.md +22 -6
- package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-integration/SKILL.md +560 -0
- package/dist/agents/skills/codex/harness-integration/skill.yaml +65 -0
- package/dist/agents/skills/codex/harness-integrity/SKILL.md +2 -0
- package/dist/agents/skills/codex/harness-onboarding/SKILL.md +4 -0
- package/dist/agents/skills/codex/harness-perf/SKILL.md +9 -7
- package/dist/agents/skills/codex/harness-planning/SKILL.md +102 -11
- package/dist/agents/skills/codex/harness-refactoring/SKILL.md +13 -4
- package/dist/agents/skills/codex/harness-security-scan/SKILL.md +3 -1
- package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +4 -0
- package/dist/agents/skills/codex/harness-tdd/SKILL.md +5 -2
- package/dist/agents/skills/codex/harness-verification/SKILL.md +4 -0
- package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +22 -6
- package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +2 -1
- package/dist/agents/skills/codex/initialize-test-suite-project/SKILL.md +415 -0
- package/dist/agents/skills/codex/initialize-test-suite-project/skill.yaml +35 -0
- package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +3 -1
- package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +3 -1
- package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +4 -0
- package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +55 -24
- package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +49 -10
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +21 -6
- package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-debugging/SKILL.md +13 -1
- package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +4 -0
- package/dist/agents/skills/cursor/harness-execution/SKILL.md +22 -6
- package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-integration/SKILL.md +560 -0
- package/dist/agents/skills/cursor/harness-integration/skill.yaml +65 -0
- package/dist/agents/skills/cursor/harness-integrity/SKILL.md +2 -0
- package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +4 -0
- package/dist/agents/skills/cursor/harness-perf/SKILL.md +9 -7
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +102 -11
- package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +13 -4
- package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +3 -1
- package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +4 -0
- package/dist/agents/skills/cursor/harness-tdd/SKILL.md +5 -2
- package/dist/agents/skills/cursor/harness-verification/SKILL.md +4 -0
- package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +22 -6
- package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +2 -1
- package/dist/agents/skills/cursor/initialize-test-suite-project/SKILL.md +415 -0
- package/dist/agents/skills/cursor/initialize-test-suite-project/skill.yaml +35 -0
- package/dist/agents/skills/gemini-cli/cleanup-dead-code/SKILL.md +3 -1
- package/dist/agents/skills/gemini-cli/detect-doc-drift/SKILL.md +3 -1
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +4 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +55 -24
- package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +49 -10
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +21 -6
- package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-debugging/SKILL.md +13 -1
- package/dist/agents/skills/gemini-cli/harness-dependency-health/SKILL.md +4 -0
- package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +22 -6
- package/dist/agents/skills/gemini-cli/harness-impact-analysis/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-integration/SKILL.md +560 -0
- package/dist/agents/skills/gemini-cli/harness-integration/skill.yaml +65 -0
- package/dist/agents/skills/gemini-cli/harness-integrity/SKILL.md +2 -0
- package/dist/agents/skills/gemini-cli/harness-onboarding/SKILL.md +4 -0
- package/dist/agents/skills/gemini-cli/harness-perf/SKILL.md +9 -7
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +102 -11
- package/dist/agents/skills/gemini-cli/harness-refactoring/SKILL.md +13 -4
- package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +3 -1
- package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +4 -0
- package/dist/agents/skills/gemini-cli/harness-tdd/SKILL.md +5 -2
- package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +4 -0
- package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +22 -6
- package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +2 -1
- package/dist/agents/skills/gemini-cli/initialize-test-suite-project/SKILL.md +415 -0
- package/dist/agents/skills/gemini-cli/initialize-test-suite-project/skill.yaml +35 -0
- package/dist/agents/skills/tests/initialize-test-suite-project.test.ts +152 -0
- package/dist/{agents-md-OPOZA5L7.js → agents-md-2RN666DE.js} +3 -3
- package/dist/{architecture-PMVMO6SF.js → architecture-ZR33YKJB.js} +4 -4
- package/dist/{assess-project-ZW7EKNIT.js → assess-project-LLWWEQEV.js} +1 -1
- package/dist/bin/harness-mcp.js +18 -16
- package/dist/bin/harness.js +29 -28
- package/dist/{business-knowledge-6RHYJOB3.js → business-knowledge-EISPR7FU.js} +1 -1
- package/dist/{check-phase-gate-NTLAU3LO.js → check-phase-gate-ZVG56NT2.js} +4 -4
- package/dist/chunk-27AJKSQY.js +107 -0
- package/dist/{chunk-G6SYTGOH.js → chunk-2FOLD76X.js} +2 -2
- package/dist/{chunk-IFHAUFJX.js → chunk-3AJW7VQ3.js} +2 -2
- package/dist/{chunk-KXIAHHHP.js → chunk-3XMOWLK3.js} +2 -2
- package/dist/{chunk-Z2JORLRT.js → chunk-776JFSPK.js} +1 -1
- package/dist/{chunk-4KSKV5MK.js → chunk-A4ETL34H.js} +7 -2
- package/dist/{chunk-JWSVLC4I.js → chunk-BO4AJZRE.js} +1 -1
- package/dist/{chunk-UBRD5FH4.js → chunk-BZZNYHRY.js} +9 -9
- package/dist/{chunk-6SCA4NEZ.js → chunk-C7RPQWBG.js} +1 -1
- package/dist/{chunk-NVGQO4VM.js → chunk-CJYNZMOP.js} +8 -8
- package/dist/{chunk-7JNZXJKY.js → chunk-EGRQHLDM.js} +5 -5
- package/dist/{chunk-EXTWTJRF.js → chunk-EICASBYP.js} +1 -1
- package/dist/{chunk-RNAGPTKF.js → chunk-F3Y64VNF.js} +6 -6
- package/dist/{chunk-HAOBHL3W.js → chunk-FUS4OOGC.js} +1 -1
- package/dist/{chunk-VV2PJT4K.js → chunk-GAIOIINV.js} +1353 -707
- package/dist/{chunk-77EZGPSR.js → chunk-IBTHD2UA.js} +139 -78
- package/dist/{chunk-RC5ZY3EV.js → chunk-IOW3MW2K.js} +2 -2
- package/dist/{chunk-JZ6GORAK.js → chunk-L3Y7L4EG.js} +1 -1
- package/dist/{chunk-KFE2X7LG.js → chunk-MGPVA2EM.js} +27 -4
- package/dist/{chunk-JBJ4AVE4.js → chunk-Q5DKIL46.js} +3 -3
- package/dist/{chunk-NIOB6FTG.js → chunk-QTXW5TIS.js} +1 -1
- package/dist/{chunk-ZBQ3ZY75.js → chunk-SA57FVGX.js} +100 -60
- package/dist/{chunk-KSFUJT5B.js → chunk-SDDQPMZK.js} +1 -1
- package/dist/{chunk-QYSWNPXZ.js → chunk-SDPHFDQS.js} +1 -1
- package/dist/{chunk-FI3D6D7U.js → chunk-T7UZOJF4.js} +9 -9
- package/dist/{chunk-CAS3TS4Y.js → chunk-TCMVZ3B7.js} +1142 -348
- package/dist/{chunk-J3O64D2A.js → chunk-YZH4I4JO.js} +1 -1
- package/dist/{ci-workflow-H52EMCL6.js → ci-workflow-JFOL4YWW.js} +3 -3
- package/dist/{create-skill-6QWJHQYS.js → create-skill-4T5CBSJ2.js} +2 -2
- package/dist/{dist-PGQ32ZI7.js → dist-BZS2XRLG.js} +5 -1
- package/dist/{dist-TG63OKA5.js → dist-CPKL5Y2R.js} +2 -2
- package/dist/{docs-GP4VUSIB.js → docs-FUTRJQHA.js} +4 -4
- package/dist/{engine-KQG5RVXX.js → engine-FB3HCNVT.js} +3 -3
- package/dist/{entropy-RXESIYKC.js → entropy-FIEE4YDA.js} +3 -3
- package/dist/{feedback-HS7ZYXOU.js → feedback-7EC4T6XG.js} +1 -1
- package/dist/{generate-agent-definitions-I4B7CVOB.js → generate-agent-definitions-FOSFADNR.js} +4 -4
- package/dist/{graph-loader-TIVI6NQ7.js → graph-loader-QEI7SYOQ.js} +1 -1
- package/dist/hooks/adoption-tracker.js +36 -8
- package/dist/hooks/sentinel-pre.js +3 -2
- package/dist/hooks/telemetry-reporter.js +34 -15
- package/dist/index-builder-3AOQ3ZII.js +13 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +31 -30
- package/dist/{loader-CWAH6B4H.js → loader-HXUOBTYA.js} +3 -3
- package/dist/mcp-ICXMTAD3.js +41 -0
- package/dist/{performance-WDW5WS3J.js → performance-TYXBCTR7.js} +4 -4
- package/dist/{review-pipeline-QOZGWCTY.js → review-pipeline-B4WPU6BQ.js} +3 -3
- package/dist/{runtime-SFEFRPLX.js → runtime-HQQNOARD.js} +3 -3
- package/dist/{scan-IJ7EYTF7.js → scan-TX55R6QS.js} +1 -1
- package/dist/{security-2K7UUK6T.js → security-25VFLIAO.js} +1 -1
- package/dist/templates/orchestrator/harness.orchestrator.md +18 -8
- package/dist/{validate-HXM6DXRZ.js → validate-EAVGKZQB.js} +4 -4
- package/dist/{validate-cross-check-ULQLEOME.js → validate-cross-check-SPL3H4O5.js} +3 -3
- package/package.json +14 -6
- package/dist/agents/commands/claude-code/harness/harness.md +0 -36
- package/dist/agents/commands/codex/AGENTS.md +0 -39
- package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +0 -204
- package/dist/agents/commands/codex/harness/add-harness-component/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +0 -257
- package/dist/agents/commands/codex/harness/cleanup-dead-code/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +0 -191
- package/dist/agents/commands/codex/harness/detect-doc-drift/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +0 -289
- package/dist/agents/commands/codex/harness/enforce-architecture/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +0 -442
- package/dist/agents/commands/codex/harness/harness-architecture-advisor/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +0 -929
- package/dist/agents/commands/codex/harness/harness-autopilot/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +0 -418
- package/dist/agents/commands/codex/harness/harness-brainstorming/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +0 -850
- package/dist/agents/commands/codex/harness/harness-code-review/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +0 -236
- package/dist/agents/commands/codex/harness/harness-codebase-cleanup/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +0 -378
- package/dist/agents/commands/codex/harness/harness-debugging/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +0 -190
- package/dist/agents/commands/codex/harness/harness-dependency-health/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +0 -472
- package/dist/agents/commands/codex/harness/harness-docs-pipeline/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +0 -522
- package/dist/agents/commands/codex/harness/harness-execution/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +0 -172
- package/dist/agents/commands/codex/harness/harness-hotspot-detector/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +0 -195
- package/dist/agents/commands/codex/harness/harness-impact-analysis/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +0 -178
- package/dist/agents/commands/codex/harness/harness-integrity/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +0 -299
- package/dist/agents/commands/codex/harness/harness-onboarding/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +0 -272
- package/dist/agents/commands/codex/harness/harness-perf/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +0 -592
- package/dist/agents/commands/codex/harness/harness-planning/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +0 -181
- package/dist/agents/commands/codex/harness/harness-refactoring/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +0 -701
- package/dist/agents/commands/codex/harness/harness-release-readiness/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +0 -607
- package/dist/agents/commands/codex/harness/harness-roadmap/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +0 -147
- package/dist/agents/commands/codex/harness/harness-security-scan/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +0 -314
- package/dist/agents/commands/codex/harness/harness-skill-authoring/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +0 -1280
- package/dist/agents/commands/codex/harness/harness-soundness-review/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +0 -255
- package/dist/agents/commands/codex/harness/harness-supply-chain-audit/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +0 -189
- package/dist/agents/commands/codex/harness/harness-tdd/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +0 -171
- package/dist/agents/commands/codex/harness/harness-test-advisor/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +0 -433
- package/dist/agents/commands/codex/harness/harness-verification/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +0 -170
- package/dist/agents/commands/codex/harness/harness-verify/agents/openai.yaml +0 -3
- package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +0 -244
- package/dist/agents/commands/codex/harness/initialize-harness-project/agents/openai.yaml +0 -3
- package/dist/agents/commands/cursor/harness/add-harness-component.mdc +0 -200
- package/dist/agents/commands/cursor/harness/cleanup-dead-code.mdc +0 -253
- package/dist/agents/commands/cursor/harness/detect-doc-drift.mdc +0 -187
- package/dist/agents/commands/cursor/harness/enforce-architecture.mdc +0 -304
- package/dist/agents/commands/cursor/harness/harness-architecture-advisor.mdc +0 -457
- package/dist/agents/commands/cursor/harness/harness-autopilot.mdc +0 -924
- package/dist/agents/commands/cursor/harness/harness-brainstorming.mdc +0 -414
- package/dist/agents/commands/cursor/harness/harness-code-review.mdc +0 -865
- package/dist/agents/commands/cursor/harness/harness-codebase-cleanup.mdc +0 -232
- package/dist/agents/commands/cursor/harness/harness-debugging.mdc +0 -374
- package/dist/agents/commands/cursor/harness/harness-dependency-health.mdc +0 -187
- package/dist/agents/commands/cursor/harness/harness-docs-pipeline.mdc +0 -468
- package/dist/agents/commands/cursor/harness/harness-execution.mdc +0 -518
- package/dist/agents/commands/cursor/harness/harness-hotspot-detector.mdc +0 -169
- package/dist/agents/commands/cursor/harness/harness-impact-analysis.mdc +0 -192
- package/dist/agents/commands/cursor/harness/harness-integrity.mdc +0 -175
- package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +0 -296
- package/dist/agents/commands/cursor/harness/harness-perf.mdc +0 -268
- package/dist/agents/commands/cursor/harness/harness-planning.mdc +0 -587
- package/dist/agents/commands/cursor/harness/harness-refactoring.mdc +0 -177
- package/dist/agents/commands/cursor/harness/harness-release-readiness.mdc +0 -697
- package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +0 -603
- package/dist/agents/commands/cursor/harness/harness-security-scan.mdc +0 -162
- package/dist/agents/commands/cursor/harness/harness-skill-authoring.mdc +0 -300
- package/dist/agents/commands/cursor/harness/harness-soundness-review.mdc +0 -1275
- package/dist/agents/commands/cursor/harness/harness-supply-chain-audit.mdc +0 -252
- package/dist/agents/commands/cursor/harness/harness-tdd.mdc +0 -185
- package/dist/agents/commands/cursor/harness/harness-test-advisor.mdc +0 -168
- package/dist/agents/commands/cursor/harness/harness-verification.mdc +0 -429
- package/dist/agents/commands/cursor/harness/harness-verify.mdc +0 -167
- package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +0 -240
- package/dist/agents/commands/gemini-cli/harness/harness.toml +0 -277
- package/dist/hooks/profiles.ts +0 -48
- package/dist/mcp-KHK5KYER.js +0 -39
- package/dist/{chunk-RRHUCDRD.js → chunk-ZP5E7YET.js} +3 -3
|
@@ -22,26 +22,28 @@ Tier 1 violations are non-negotiable blockers. If a Tier 1 violation is detected
|
|
|
22
22
|
|
|
23
23
|
### Phase 1: ANALYZE — Structural and Coupling Checks
|
|
24
24
|
|
|
25
|
-
1. **
|
|
25
|
+
1. **Assess current performance posture.** Run `check_performance` to evaluate current performance metrics against defined budgets. Run `get_critical_paths` to identify performance-critical functions and hot paths.
|
|
26
|
+
|
|
27
|
+
2. **Run structural checks.** Execute `harness check-perf --structural` to compute complexity metrics for all changed files:
|
|
26
28
|
- Cyclomatic complexity per function
|
|
27
29
|
- Nesting depth per function
|
|
28
30
|
- File length (lines of code)
|
|
29
31
|
- Parameter count per function
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
3. **Run coupling checks.** Execute `harness check-perf --coupling` to compute coupling metrics:
|
|
32
34
|
- Fan-in and fan-out per module
|
|
33
35
|
- Afferent and efferent coupling
|
|
34
36
|
- Transitive dependency depth
|
|
35
37
|
- Circular dependency detection
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
4. **Classify violations by tier:**
|
|
38
40
|
- **Tier 1 (error, block commit):** Cyclomatic complexity > 15, circular dependencies, hotspot in top 5%
|
|
39
41
|
- **Tier 2 (warning, block merge):** Complexity > 10, nesting > 4, fan-out > 10, size budget exceeded
|
|
40
42
|
- **Tier 3 (info, no gate):** File length > 300, fan-in > 20, transitive depth > 30
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
5. **If Tier 1 violations found,** report them immediately and STOP. Do not proceed to benchmarks. The violations must be fixed first.
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
6. **If no violations found,** proceed to Phase 2.
|
|
45
47
|
|
|
46
48
|
---
|
|
47
49
|
|
|
@@ -83,7 +85,7 @@ This phase runs only when `.bench.ts` files exist in the project. If none are fo
|
|
|
83
85
|
|
|
84
86
|
4. **Run benchmarks.** Execute `harness perf bench` to run all benchmark suites.
|
|
85
87
|
|
|
86
|
-
5. **Load baselines.** Read `.harness/perf/baselines.json` for previous benchmark results. If no baselines exist, treat this as a baseline-capture run.
|
|
88
|
+
5. **Load baselines.** Load existing baselines via `get_perf_baselines` before running new benchmarks. Read `.harness/perf/baselines.json` for previous benchmark results. If no baselines exist, treat this as a baseline-capture run.
|
|
87
89
|
|
|
88
90
|
6. **Compare results against baselines** using the `RegressionDetector`:
|
|
89
91
|
- Calculate percentage change for each benchmark
|
|
@@ -100,7 +102,7 @@ This phase runs only when `.bench.ts` files exist in the project. If none are fo
|
|
|
100
102
|
- **Tier 2:** >10% regression on a non-critical-path benchmark
|
|
101
103
|
- **Tier 3:** >5% regression on a non-critical-path benchmark (within noise margin consideration)
|
|
102
104
|
|
|
103
|
-
9. **If this is a baseline-capture run,** report results without regression comparison. Recommend running `harness perf baselines update` to persist.
|
|
105
|
+
9. **If this is a baseline-capture run,** report results without regression comparison. Recommend running `harness perf baselines update` to persist. After benchmarks pass, update baselines via `update_perf_baselines` to record new performance targets.
|
|
104
106
|
|
|
105
107
|
---
|
|
106
108
|
|
|
@@ -29,6 +29,7 @@ The `rigorLevel` is passed by autopilot (or set via `--fast`/`--thorough` flags)
|
|
|
29
29
|
| Phase | `fast` | `standard` (default) | `thorough` |
|
|
30
30
|
| --------- | -------------------------------------------------- | ------------------------------------------ | --------------------------------------------------- |
|
|
31
31
|
| SCOPE | No change. | No change. | No change. |
|
|
32
|
+
| KNOWLEDGE | Skip entirely. | Run detect; fix if gaps found. | Run detect; fix if gaps found. |
|
|
32
33
|
| DECOMPOSE | Skip skeleton. Full tasks directly after file map. | Skeleton if tasks >= 8; full tasks if < 8. | Always skeleton. Require approval before expanding. |
|
|
33
34
|
| SEQUENCE | No change. | No change. | No change. |
|
|
34
35
|
| VALIDATE | No change. | No change. | No change. |
|
|
@@ -41,7 +42,7 @@ The skeleton pass is the primary rigor lever. Fast mode goes straight to full de
|
|
|
41
42
|
|
|
42
43
|
When invoked by autopilot (or with explicit arguments), resolve paths before starting:
|
|
43
44
|
|
|
44
|
-
1. **Session slug:** If `session-slug` argument provided, set `{sessionDir} = .harness/sessions/<session-slug>/`. Pass to `gather_context({ session: "<session-slug>" })`. All handoff writes go to `{sessionDir}/handoff.json`.
|
|
45
|
+
1. **Session slug:** If `session-slug` argument provided, set `{sessionDir} = .harness/sessions/<session-slug>/`. Pass to `gather_context({ session: "<session-slug>", include: ["state", "learnings", "handoff", "graph", "businessKnowledge", "sessions", "validation"] })`. All handoff writes go to `{sessionDir}/handoff.json`.
|
|
45
46
|
2. **Spec path:** If `spec-path` argument provided, read spec from that path. Otherwise, discover from `{sessionDir}/handoff.json` (read upstream brainstorming output) or prompt the user.
|
|
46
47
|
3. **Rigor level:** If `fast`/`thorough` argument provided, use it. Otherwise default to `standard`.
|
|
47
48
|
|
|
@@ -54,14 +55,31 @@ When no arguments are provided (standalone invocation), discover spec from conte
|
|
|
54
55
|
Work backward from the goal. Start with "what must be true when we are done?"
|
|
55
56
|
|
|
56
57
|
1. **State the goal.** One sentence. What does the system do when this plan is complete?
|
|
57
|
-
|
|
58
|
+
|
|
59
|
+
1b. **Load skill recommendations.** After loading the spec, check for skill recommendations:
|
|
60
|
+
|
|
61
|
+
- If `docs/changes/<feature>/SKILLS.md` exists alongside the spec: parse the Apply and Reference tiers. These inform task annotation in Phase 2.
|
|
62
|
+
- If SKILLS.md is missing but a spec exists: run the advisor inline using `advise_skills` MCP tool to generate SKILLS.md.
|
|
63
|
+
- If neither SKILLS.md nor a spec exists: emit a one-line note:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Note: No skill recommendations found. Run the advisor to discover
|
|
67
|
+
relevant design, framework, and knowledge skills:
|
|
68
|
+
harness advise-skills --spec-path <path>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Store the parsed skill list for use in Phase 2 task annotation.
|
|
72
|
+
|
|
73
|
+
2. **Review prior decisions.** Check `decisions` from the prior brainstorming session (loaded via `sessions` in gather_context). Do not re-decide what was already decided — build on those choices.
|
|
74
|
+
|
|
75
|
+
3. **Derive observable truths.** What can be observed (running a command, opening a browser, reading a file) that proves the goal is met? Be specific:
|
|
58
76
|
- BAD: "The API handles errors"
|
|
59
77
|
- GOOD: "GET /api/users/nonexistent returns 404 with `{ error: 'User not found' }` body"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
78
|
+
4. **Derive required artifacts.** For each truth, what files must exist? What functions? What tests pass? List exact file paths.
|
|
79
|
+
5. **Identify key links.** How do artifacts connect? What imports what? What calls what?
|
|
80
|
+
6. **Apply YAGNI.** For every artifact: "Is this required for an observable truth?" If not, cut it.
|
|
63
81
|
|
|
64
|
-
|
|
82
|
+
7. **Surface uncertainties.** Before proceeding to Phase 2, explicitly list what you do NOT know. For each uncertainty, classify it:
|
|
65
83
|
- **Blocking:** Cannot decompose tasks without resolving this. Escalate to user.
|
|
66
84
|
- **Assumption:** Can proceed with a stated assumption. Document it. If wrong, specific tasks will need revision.
|
|
67
85
|
- **Deferrable:** Does not affect task decomposition. Note for execution phase.
|
|
@@ -75,7 +93,7 @@ Work backward from the goal. Start with "what must be true when we are done?"
|
|
|
75
93
|
- [DEFERRABLE] Exact error message wording. (Can be finalized during implementation.)
|
|
76
94
|
```
|
|
77
95
|
|
|
78
|
-
**Read-only constraint:** Steps 1-
|
|
96
|
+
**Read-only constraint:** Steps 1-6 above are research and analysis. Do not propose task structure, file organization, or implementation approaches during SCOPE. Record what must be true (observable truths) and what you do not know (uncertainties). Solutions belong in DECOMPOSE.
|
|
79
97
|
|
|
80
98
|
When scope is ambiguous, use `emit_interaction`:
|
|
81
99
|
|
|
@@ -145,9 +163,39 @@ When a knowledge graph exists at `.harness/graph/`, use graph queries for faster
|
|
|
145
163
|
|
|
146
164
|
- `query_graph` — discover module dependencies for realistic task decomposition
|
|
147
165
|
- `get_impact` — estimate which modules a feature touches
|
|
166
|
+
- `compute_blast_radius` — simulate failure propagation from target files to understand scope
|
|
167
|
+
- `predict_failures` — forecast which architectural constraints are at risk from planned changes, informing where extra test coverage or smaller tasks are needed
|
|
168
|
+
- `detect_anomalies` — identify structural irregularities in the affected area before planning tasks around them
|
|
148
169
|
|
|
149
170
|
Fall back to file-based commands if no graph is available.
|
|
150
171
|
|
|
172
|
+
### Intelligence Signals (when orchestrator is available)
|
|
173
|
+
|
|
174
|
+
If the orchestrator is running, request intelligence analysis via `POST /api/analyze` with the feature title/description before decomposing. The pipeline returns:
|
|
175
|
+
|
|
176
|
+
- **SEL** (Spec Enrichment) — affected systems and blast radius derived from the graph
|
|
177
|
+
- **CML** (Complexity Modeling) — structural, semantic, and historical complexity scores. Use `structuralComplexity > 0.7` to flag areas needing smaller, more cautious tasks.
|
|
178
|
+
- **PESL** (Pre-Execution Simulation) — simulated risk score. Use `riskScore > 0.6` to add extra checkpoints or split risky tasks further.
|
|
179
|
+
|
|
180
|
+
If no orchestrator, `predict_failures` and `compute_blast_radius` MCP tools provide equivalent directional signals.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### Phase 1.5: KNOWLEDGE BASELINE — Materialize Domain Knowledge
|
|
185
|
+
|
|
186
|
+
Before decomposing into tasks, ensure domain knowledge from PRDs and specs is documented. **Skip this phase** when no PRDs, specs, or business domain documents exist in the project, or when rigor level is `fast`.
|
|
187
|
+
|
|
188
|
+
1. **Run knowledge pipeline in detect mode.** Execute `harness knowledge-pipeline --domain <feature-domain>` to produce a differential gap report comparing extracted business rules against documented knowledge in `docs/knowledge/`.
|
|
189
|
+
|
|
190
|
+
2. **If gaps exist and `--fix` is appropriate,** run `harness knowledge-pipeline --fix --domain <feature-domain>` to materialize `docs/knowledge/{domain}/*.md` files from extracted findings. This creates the knowledge baseline from PRDs before any tasks are written.
|
|
191
|
+
|
|
192
|
+
3. **Cross-check uncertainties against materialized knowledge** (from `businessKnowledge` loaded in gather_context and freshly materialized docs):
|
|
193
|
+
- Remove "assumptions" from the uncertainty list that are now documented facts in `docs/knowledge/`
|
|
194
|
+
- Escalate if contradictions exist between PRDs and existing knowledge docs
|
|
195
|
+
- Use `business_fact` nodes from the graph context to validate domain assumptions
|
|
196
|
+
|
|
197
|
+
4. **Reference materialized knowledge in Phase 2 task decomposition.** Tasks should reference specific knowledge docs they implement. Observable truths should map back to documented business rules. Use the `businessKnowledge` context (domains, tags, documented facts) loaded in Phase 1 to ground task instructions in verified domain knowledge rather than assumptions.
|
|
198
|
+
|
|
151
199
|
---
|
|
152
200
|
|
|
153
201
|
### Phase 2: DECOMPOSE — Map File Structure and Create Tasks
|
|
@@ -190,16 +238,47 @@ Report progress: `**[Phase 2/4]** DECOMPOSE — mapping file structure and creat
|
|
|
190
238
|
- **Exact commit message**
|
|
191
239
|
- **`harness validate`** as the final step
|
|
192
240
|
|
|
193
|
-
5. **
|
|
241
|
+
5. **Skill annotations.** If skill recommendations were loaded in Phase 1, annotate each task with relevant skills from the Apply and Reference tiers:
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
### Task 3: Implement dark mode toggle
|
|
245
|
+
**Skills:** `design-dark-mode` (apply), `a11y-color-contrast` (reference)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Match skills to tasks based on keyword and domain overlap between the task description and the skill's purpose/keywords. Only annotate when the match is relevant to the specific task.
|
|
249
|
+
|
|
250
|
+
6. **Include checkpoints.** Mark tasks requiring human input:
|
|
194
251
|
- `[checkpoint:human-verify]` — Pause, show result, wait for confirmation
|
|
195
252
|
- `[checkpoint:decision]` — Pause, present options, wait for choice
|
|
196
253
|
- `[checkpoint:human-action]` — Pause, instruct human on required action
|
|
197
254
|
|
|
255
|
+
7. **Derive integration tasks from the spec's Integration Points section.** If the spec contains an Integration Points section, create tasks for each non-empty integration point. Skip subsections marked "None" — do not derive tasks from them. Integration tasks are normal plan tasks but tagged with `category: "integration"` in their description. They appear at the end of the task list, after all implementation tasks.
|
|
256
|
+
|
|
257
|
+
For each subsection of Integration Points, derive tasks:
|
|
258
|
+
|
|
259
|
+
| Integration Point | Example Derived Task |
|
|
260
|
+
| ----------------------------------------------- | -------------------------------------------------------------------------- |
|
|
261
|
+
| Entry Points: "New CLI command" | "Regenerate barrel exports. Verify new command appears in `_registry.ts`." |
|
|
262
|
+
| Registrations Required: "Skill at tier 2" | "Add skill to tier list in `AGENTS.md`. Generate slash commands." |
|
|
263
|
+
| Documentation Updates: "AGENTS.md capabilities" | "Update AGENTS.md to describe the feature." |
|
|
264
|
+
| Architectural Decisions: "ADR for approach X" | "Write ADR `docs/knowledge/decisions/NNNN-<slug>.md`." |
|
|
265
|
+
| Knowledge Impact: "Domain concept Y" | "Enrich knowledge graph with concept node." |
|
|
266
|
+
|
|
267
|
+
Integration tasks follow the same atomic task rules (2-5 minutes, exact file paths, exact code). Use the `**Category:** integration` tag in the task header, e.g.:
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
### Task N: Update AGENTS.md with new feature description
|
|
271
|
+
|
|
272
|
+
**Depends on:** Task N-1 | **Files:** `AGENTS.md` | **Category:** integration
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
If the spec has no Integration Points section, skip this step.
|
|
276
|
+
|
|
198
277
|
---
|
|
199
278
|
|
|
200
279
|
### Phase 3: SEQUENCE — Order Tasks and Identify Dependencies
|
|
201
280
|
|
|
202
|
-
1. **Order by dependency.** Types before implementations. Implementations before integrations. Tests alongside implementations (same task, TDD style).
|
|
281
|
+
1. **Order by dependency.** Types before implementations. Implementations before integrations. Integration tasks (tagged `category: "integration"`) after all implementation tasks. Tests alongside implementations (same task, TDD style).
|
|
203
282
|
2. **Identify parallel opportunities.** Tasks touching different subsystems with no shared state can be marked parallelizable.
|
|
204
283
|
3. **Number tasks sequentially.** Use `Task 1`, `Task 2`, etc. Dependencies reference task numbers.
|
|
205
284
|
4. **Estimate total time.** Sum 2-5 minutes per task. If total exceeds available time, identify a milestone boundary for pausing.
|
|
@@ -236,7 +315,7 @@ Report progress: `**[Phase 2/4]** DECOMPOSE — mapping file structure and creat
|
|
|
236
315
|
```markdown
|
|
237
316
|
# Plan: <Feature Name>
|
|
238
317
|
|
|
239
|
-
**Date:** YYYY-MM-DD | **Spec:** (if applicable) | **Tasks:** N | **Time:** N min
|
|
318
|
+
**Date:** YYYY-MM-DD | **Spec:** (if applicable) | **Tasks:** N | **Time:** N min | **Integration Tier:** small | medium | large
|
|
240
319
|
|
|
241
320
|
## Goal
|
|
242
321
|
|
|
@@ -274,6 +353,18 @@ One sentence.
|
|
|
274
353
|
[checkpoint:human-verify] ...
|
|
275
354
|
```
|
|
276
355
|
|
|
356
|
+
### Integration Tier Heuristics
|
|
357
|
+
|
|
358
|
+
When a spec contains an **Integration Points** section, set the plan's `integrationTier` field based on scope:
|
|
359
|
+
|
|
360
|
+
| Tier | Signal | Integration Requirements |
|
|
361
|
+
| ---------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
362
|
+
| **small** | Bug fix, config change, < 3 files, no new exports | Wiring checks only (defaults always run) |
|
|
363
|
+
| **medium** | New feature within existing package, new exports, 3-15 files | Wiring + project updates (roadmap, changelog, graph enrichment) |
|
|
364
|
+
| **large** | New package, new skill, new public API surface, architectural change | Wiring + project updates + knowledge materialization (ADRs, doc updates) |
|
|
365
|
+
|
|
366
|
+
If the spec has no Integration Points section, omit the `integrationTier` field from the plan header.
|
|
367
|
+
|
|
277
368
|
## Session State
|
|
278
369
|
|
|
279
370
|
| Section | Read | Write | Purpose |
|
|
@@ -287,7 +378,7 @@ One sentence.
|
|
|
287
378
|
|
|
288
379
|
**When to write:** Phase 1 — constraints and risks. Phase 2 — decisions about task structure. Phase 4 — resolve questions.
|
|
289
380
|
|
|
290
|
-
**When to read:** Start of Phase 1 via `gather_context` with `include: ["sessions"]` to inherit brainstorming context.
|
|
381
|
+
**When to read:** Start of Phase 1 via `gather_context` with `include: ["state", "learnings", "handoff", "graph", "businessKnowledge", "sessions", "validation"]` to inherit brainstorming context and load documented business knowledge.
|
|
291
382
|
|
|
292
383
|
## Evidence Requirements
|
|
293
384
|
|
|
@@ -28,9 +28,11 @@ If tests are not green before you start, you are not refactoring — you are deb
|
|
|
28
28
|
|
|
29
29
|
2. **Run `harness validate`** and **`harness check-deps`**. Both must pass. You are establishing a clean baseline. If either reports issues, fix those first (that is a separate task, not part of this refactoring).
|
|
30
30
|
|
|
31
|
-
3. **
|
|
31
|
+
3. **Run `compute_blast_radius` on target files** to understand downstream impact before refactoring. This reveals which modules, tests, and consumers will be affected by structural changes.
|
|
32
32
|
|
|
33
|
-
4. **
|
|
33
|
+
4. **Identify the refactoring target.** Be specific: which file, function, class, or module? What is wrong with the current structure? What will be better after refactoring?
|
|
34
|
+
|
|
35
|
+
5. **Plan the steps.** Break the refactoring into the smallest possible individual changes. Each step should be independently committable and verifiable. If you cannot describe a step in one sentence, it is too large.
|
|
34
36
|
|
|
35
37
|
### Graph-Enhanced Context (when available)
|
|
36
38
|
|
|
@@ -81,6 +83,10 @@ For EACH step in the plan:
|
|
|
81
83
|
|
|
82
84
|
2. **Run `harness validate` and `harness check-deps` one final time.** Clean output.
|
|
83
85
|
|
|
86
|
+
3. **Run `detect_stale_constraints`** to verify architectural constraints are still valid after structural changes. Refactoring can render existing constraints obsolete or misaligned.
|
|
87
|
+
|
|
88
|
+
4. **Run `check_traceability`** to confirm refactoring didn't break requirement-to-implementation mappings. Moved or renamed code may orphan traceability links.
|
|
89
|
+
|
|
84
90
|
### Graph Refresh
|
|
85
91
|
|
|
86
92
|
If a knowledge graph exists at `.harness/graph/`, refresh it after code changes to keep graph queries accurate:
|
|
@@ -91,9 +97,9 @@ harness scan [path]
|
|
|
91
97
|
|
|
92
98
|
Skipping this step means subsequent graph queries (impact analysis, dependency health, test advisor) may return stale results.
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
5. **Review the cumulative diff.** Does the final state match the intended improvement? Is the code genuinely better, or just different?
|
|
95
101
|
|
|
96
|
-
|
|
102
|
+
6. **If the refactoring introduced no improvement,** revert the entire sequence. Refactoring for its own sake is churn.
|
|
97
103
|
|
|
98
104
|
## Common Refactoring Patterns
|
|
99
105
|
|
|
@@ -133,6 +139,9 @@ Skipping this step means subsequent graph queries (impact analysis, dependency h
|
|
|
133
139
|
- **`harness check-deps`** — Run after each step, especially when moving code between files or layers. Catches dependency violations introduced by structural changes.
|
|
134
140
|
- **`harness check-docs`** — Run after renaming or moving public APIs. Catches documentation that references old names or locations.
|
|
135
141
|
- **`harness cleanup`** — Run after completing a refactoring sequence. Detects dead code that the refactoring may have created (unused exports, orphaned files).
|
|
142
|
+
- **`compute_blast_radius`** — Run in Phase 1 PREPARE before making changes. Reveals downstream impact of target files so you understand what the refactoring will affect.
|
|
143
|
+
- **`detect_stale_constraints`** — Run in Phase 3 VERIFY after refactoring. Checks whether architectural constraints are still valid after structural changes.
|
|
144
|
+
- **`check_traceability`** — Run in Phase 3 VERIFY after refactoring. Confirms requirement-to-implementation mappings were not broken by moved or renamed code.
|
|
136
145
|
|
|
137
146
|
## Success Criteria
|
|
138
147
|
|
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
- `warning`: errors and warnings (default)
|
|
35
35
|
- `info`: all findings
|
|
36
36
|
|
|
37
|
-
6. **
|
|
37
|
+
6. **Check security trends.** Check `get_security_trends` to compare current scan results against the project's security posture history and identify trajectory changes.
|
|
38
|
+
|
|
39
|
+
7. **Output report.** Present findings grouped by severity:
|
|
38
40
|
|
|
39
41
|
```
|
|
40
42
|
Security Scan: [PASS/FAIL]
|
|
@@ -47,6 +47,10 @@ Every finding conforms to this structure:
|
|
|
47
47
|
|
|
48
48
|
Execute all checks for the active mode. Classify each finding as `autoFixable: true` or `false`. Record total issue count.
|
|
49
49
|
|
|
50
|
+
#### Traceability and Cross-Check Tools
|
|
51
|
+
|
|
52
|
+
Run `check_traceability` to verify that all requirements in the spec/plan have corresponding implementation artifacts. Run `validate_cross_check` to verify plan-to-implementation alignment as part of the soundness assessment.
|
|
53
|
+
|
|
50
54
|
#### Graph Detection and Fallback
|
|
51
55
|
|
|
52
56
|
Before running checks, determine graph availability:
|
|
@@ -71,9 +71,11 @@ If you find yourself writing production code first, STOP. Delete it. Write the t
|
|
|
71
71
|
|
|
72
72
|
2. **Run `harness validate`** to verify the full project health. This catches architectural drift, documentation gaps, and constraint violations.
|
|
73
73
|
|
|
74
|
-
3. **
|
|
74
|
+
3. **Run `check_traceability`** to verify new tests map to specific requirements, ensuring test coverage aligns with spec expectations. This catches tests that exist in isolation without a traced requirement.
|
|
75
75
|
|
|
76
|
-
4. **
|
|
76
|
+
4. **If any check fails,** fix the issue before committing. The fix may require another RED-GREEN-REFACTOR cycle if it involves behavioral changes.
|
|
77
|
+
|
|
78
|
+
5. **Commit the cycle.** Each RED-GREEN-REFACTOR-VALIDATE cycle produces one atomic commit. The commit message references what behavior was added (not "add test" — describe the behavior).
|
|
77
79
|
|
|
78
80
|
### Graph Refresh
|
|
79
81
|
|
|
@@ -111,6 +113,7 @@ Repeat the 4 phases for each new behavior. A typical feature requires 3-10 cycle
|
|
|
111
113
|
- **`harness check-deps`** — Run in VALIDATE phase after each cycle. Catches forbidden imports and layer boundary violations introduced by new code.
|
|
112
114
|
- **`harness validate`** — Run in VALIDATE phase after each cycle. Full project health check including architecture, documentation, and constraints.
|
|
113
115
|
- **`harness cleanup`** — Run periodically (every 3-5 cycles) to detect entropy accumulation. Address any issues before they compound.
|
|
116
|
+
- **`check_traceability`** — Run in VALIDATE phase after tests are written. Verifies new tests map to specific requirements so test coverage aligns with spec expectations.
|
|
114
117
|
- **Test runner** — Use the project's configured test runner. Harness does not prescribe a test framework but the test must actually execute and report results.
|
|
115
118
|
|
|
116
119
|
## Success Criteria
|
|
@@ -386,6 +386,10 @@ Task: "Create UserService with CRUD operations."
|
|
|
386
386
|
- **`harness check-deps`** -- Run during Level 3 (WIRED) to verify dependency boundaries.
|
|
387
387
|
- **`harness check-docs`** -- Verify documentation updated for new artifacts. Missing docs for public APIs is a gap.
|
|
388
388
|
- **Test runner** -- Must be run fresh (not cached) during Level 3. Read actual output, check exit codes.
|
|
389
|
+
- **`check_traceability`** -- Run during Level 3 (WIRED) to verify every requirement in the spec maps to at least one implemented artifact and test.
|
|
390
|
+
- **`validate_cross_check`** -- Run after Level 3 against the plan to verify implementation matches planned file map and task descriptions.
|
|
391
|
+
- **`check_phase_gate`** -- Run before producing the verification report to validate the current phase meets all gate criteria before marking complete.
|
|
392
|
+
- **`detect_anomalies`** -- Run during the Anti-Pattern Scan to identify structural inconsistencies (orphaned files, missing tests, unusual coupling) introduced during execution.
|
|
389
393
|
- **`emit_interaction`** -- Auto-transition to harness-code-review on PASS verdict only.
|
|
390
394
|
- **Session directory** -- `.harness/sessions/<slug>/` contains `handoff.json`, `state.json`, `artifacts.json` (spec path, plan path, file lists from execution). Do not write to global `.harness/handoff.json` when session slug is known.
|
|
391
395
|
|
|
@@ -29,6 +29,17 @@
|
|
|
29
29
|
|
|
30
30
|
4. **Recommend the target adoption level.** For new projects, start with basic unless the team has harness experience. For existing projects, recommend one level up from current. Present the recommendation and wait for confirmation.
|
|
31
31
|
|
|
32
|
+
5. **Classify the project shape — product/service or test-suite?** Check these signals; if any match, the project is a test suite and the rest of this skill's flow changes:
|
|
33
|
+
- Repo or package name matches `*test*`, `*-e2e*`, `*-qa*`, `*-automation*`
|
|
34
|
+
- `package.json` has `@playwright/test`, `cypress`, `webdriverio`, `mocha`, or `testcafe` as a direct dep
|
|
35
|
+
- Top-level `tests/`, `e2e/`, `specs/`, or `playwright/` directories are the primary source tree
|
|
36
|
+
- Config files like `playwright.config.*`, `cypress.config.*`, `wdio.conf.*`
|
|
37
|
+
- No production runtime — build output consumed only by other test repos (shared library)
|
|
38
|
+
|
|
39
|
+
**If a test suite:** complete Phase 2 (scaffolding) here, then dispatch to `initialize-test-suite-project` for Phase 3 configuration and Phase 4 verification, then return here for Phase 4 step 4+ (knowledge graph, roadmap nudge, final commit). The test-suite skill owns archetype selection, layer variants, tags, reporters, and the custom report.
|
|
40
|
+
|
|
41
|
+
**If a product/service:** continue with the rest of this skill as written.
|
|
42
|
+
|
|
32
43
|
### Phase 2: SCAFFOLD — Generate Project Structure
|
|
33
44
|
|
|
34
45
|
1. **Run `harness init` with the appropriate flags:**
|
|
@@ -72,6 +83,8 @@
|
|
|
72
83
|
- **No:** Set `i18n.enabled: false` in `harness.config.json`. The `harness-i18n-process` skill will still fire gentle prompts for unconfigured projects when features touch user-facing strings.
|
|
73
84
|
- **Not sure yet:** Skip i18n configuration entirely. Do not set `i18n.enabled`. The project can enable i18n later by running `harness-i18n-workflow` directly.
|
|
74
85
|
|
|
86
|
+
6. **Test-suite projects only — dispatch to `initialize-test-suite-project`.** If Phase 1 step 5 classified this as a test suite, invoke `initialize-test-suite-project` now and let it own archetype selection, shared-library decision, layer variants (A self-contained vs B consumer), ESLint flat-config fix, tag taxonomy, reporter stack, custom report, and the "prove the guards fire" verification. Return here for Phase 4 step 4+ (knowledge graph, roadmap, commit). Product and service projects skip this step entirely.
|
|
87
|
+
|
|
75
88
|
### Phase 4: VALIDATE — Confirm Everything Works
|
|
76
89
|
|
|
77
90
|
1. **Run `harness validate`** to verify the full configuration. This checks:
|
|
@@ -107,6 +120,7 @@ This creates the `.harness/graph/` directory and populates it with the project's
|
|
|
107
120
|
- **`harness validate`** — Verify the full project configuration is valid and complete.
|
|
108
121
|
- **`harness check-deps`** — Verify dependency constraints match the actual codebase (intermediate and above).
|
|
109
122
|
- **`harness-i18n-workflow configure` + `harness-i18n-workflow scaffold`** — Invoked during Phase 3 if the project will support multiple languages. Sets up i18n configuration and translation file structure.
|
|
123
|
+
- **`initialize-test-suite-project`** — Sub-skill. Invoked during Phase 3 step 6 when Phase 1 step 5 classified the project as a test suite. Owns archetype selection, shared-library vs in-repo decision, layer variants, tag taxonomy, reporter stack, custom report, and "prove the guards fire" verification.
|
|
110
124
|
- **Roadmap nudge** — After successful initialization, inform the user about `/harness:roadmap --create` for setting up project-level feature tracking. Informational only; does not create the roadmap.
|
|
111
125
|
|
|
112
126
|
## Success Criteria
|
|
@@ -120,15 +134,17 @@ This creates the `.harness/graph/` directory and populates it with the project's
|
|
|
120
134
|
- The adoption level matches what was agreed upon with the human
|
|
121
135
|
- All generated files are committed in a single atomic commit
|
|
122
136
|
- i18n configuration is set if the human chose to enable it during init
|
|
137
|
+
- For test suites: `initialize-test-suite-project` ran to completion and its Success Criteria are also met
|
|
123
138
|
|
|
124
139
|
## Rationalizations to Reject
|
|
125
140
|
|
|
126
|
-
| Rationalization | Why It Is Wrong
|
|
127
|
-
| ------------------------------------------------------------------------ |
|
|
128
|
-
| "The generated AGENTS.md template looks fine -- no need to customize it" | Phase 3 says do not blindly accept generated content. Without project-specific descriptions, agents receive generic instructions.
|
|
129
|
-
| "We should start at the advanced level since we want full coverage" | The skill recommends basic for new projects. Each level builds on the previous. Jumping to advanced creates misconfigured rules.
|
|
130
|
-
| "I will skip the i18n question to keep setup fast" | Phase 3 requires asking about i18n and recording the decision. Skipping creates ambiguity about whether the omission was intentional.
|
|
131
|
-
| "Validation passed, so the project is ready" | Phase 4 includes harness check-deps for intermediate+ projects and knowledge graph initialization. Validation alone is not sufficient.
|
|
141
|
+
| Rationalization | Why It Is Wrong |
|
|
142
|
+
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
143
|
+
| "The generated AGENTS.md template looks fine -- no need to customize it" | Phase 3 says do not blindly accept generated content. Without project-specific descriptions, agents receive generic instructions. |
|
|
144
|
+
| "We should start at the advanced level since we want full coverage" | The skill recommends basic for new projects. Each level builds on the previous. Jumping to advanced creates misconfigured rules. |
|
|
145
|
+
| "I will skip the i18n question to keep setup fast" | Phase 3 requires asking about i18n and recording the decision. Skipping creates ambiguity about whether the omission was intentional. |
|
|
146
|
+
| "Validation passed, so the project is ready" | Phase 4 includes harness check-deps for intermediate+ projects and knowledge graph initialization. Validation alone is not sufficient. |
|
|
147
|
+
| "This is a test suite, we'll configure layers in this skill" | Phase 3 step 6 dispatches to `initialize-test-suite-project` for archetype selection, layer variants, and the rest. Do not inline test-suite-specific configuration here — the sub-skill owns it and carries the gotchas. |
|
|
132
148
|
|
|
133
149
|
## Examples
|
|
134
150
|
|