@harness-engineering/cli 1.14.0 → 1.16.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/commands/codex/AGENTS.md +39 -0
- package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +195 -0
- package/dist/agents/commands/codex/harness/add-harness-component/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +248 -0
- package/dist/agents/commands/codex/harness/cleanup-dead-code/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +182 -0
- package/dist/agents/commands/codex/harness/detect-doc-drift/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +299 -0
- package/dist/agents/commands/codex/harness/enforce-architecture/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +452 -0
- package/dist/agents/commands/codex/harness/harness-architecture-advisor/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +919 -0
- package/dist/agents/commands/codex/harness/harness-autopilot/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +409 -0
- package/dist/agents/commands/codex/harness/harness-brainstorming/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +860 -0
- package/dist/agents/commands/codex/harness/harness-code-review/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +227 -0
- package/dist/agents/commands/codex/harness/harness-codebase-cleanup/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +369 -0
- package/dist/agents/commands/codex/harness/harness-debugging/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +182 -0
- package/dist/agents/commands/codex/harness/harness-dependency-health/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +463 -0
- package/dist/agents/commands/codex/harness/harness-docs-pipeline/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +513 -0
- package/dist/agents/commands/codex/harness/harness-execution/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +164 -0
- package/dist/agents/commands/codex/harness/harness-hotspot-detector/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +187 -0
- package/dist/agents/commands/codex/harness/harness-impact-analysis/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +170 -0
- package/dist/agents/commands/codex/harness/harness-integrity/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +291 -0
- package/dist/agents/commands/codex/harness/harness-onboarding/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +263 -0
- package/dist/agents/commands/codex/harness/harness-perf/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +582 -0
- package/dist/agents/commands/codex/harness/harness-planning/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +172 -0
- package/dist/agents/commands/codex/harness/harness-refactoring/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +692 -0
- package/dist/agents/commands/codex/harness/harness-release-readiness/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +598 -0
- package/dist/agents/commands/codex/harness/harness-roadmap/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +157 -0
- package/dist/agents/commands/codex/harness/harness-security-scan/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +295 -0
- package/dist/agents/commands/codex/harness/harness-skill-authoring/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +1270 -0
- package/dist/agents/commands/codex/harness/harness-soundness-review/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +247 -0
- package/dist/agents/commands/codex/harness/harness-supply-chain-audit/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +180 -0
- package/dist/agents/commands/codex/harness/harness-tdd/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +163 -0
- package/dist/agents/commands/codex/harness/harness-test-advisor/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +424 -0
- package/dist/agents/commands/codex/harness/harness-verification/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +162 -0
- package/dist/agents/commands/codex/harness/harness-verify/agents/openai.yaml +3 -0
- package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +235 -0
- package/dist/agents/commands/codex/harness/initialize-harness-project/agents/openai.yaml +3 -0
- package/dist/agents/commands/cursor/harness/add-harness-component.mdc +200 -0
- package/dist/agents/commands/cursor/harness/cleanup-dead-code.mdc +253 -0
- package/dist/agents/commands/cursor/harness/detect-doc-drift.mdc +187 -0
- package/dist/agents/commands/cursor/harness/enforce-architecture.mdc +304 -0
- package/dist/agents/commands/cursor/harness/harness-architecture-advisor.mdc +457 -0
- package/dist/agents/commands/cursor/harness/harness-autopilot.mdc +924 -0
- package/dist/agents/commands/cursor/harness/harness-brainstorming.mdc +414 -0
- package/dist/agents/commands/cursor/harness/harness-code-review.mdc +865 -0
- package/dist/agents/commands/cursor/harness/harness-codebase-cleanup.mdc +232 -0
- package/dist/agents/commands/cursor/harness/harness-debugging.mdc +374 -0
- package/dist/agents/commands/cursor/harness/harness-dependency-health.mdc +187 -0
- package/dist/agents/commands/cursor/harness/harness-docs-pipeline.mdc +468 -0
- package/dist/agents/commands/cursor/harness/harness-execution.mdc +518 -0
- package/dist/agents/commands/cursor/harness/harness-hotspot-detector.mdc +169 -0
- package/dist/agents/commands/cursor/harness/harness-impact-analysis.mdc +192 -0
- package/dist/agents/commands/cursor/harness/harness-integrity.mdc +175 -0
- package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +296 -0
- package/dist/agents/commands/cursor/harness/harness-perf.mdc +268 -0
- package/dist/agents/commands/cursor/harness/harness-planning.mdc +587 -0
- package/dist/agents/commands/cursor/harness/harness-refactoring.mdc +177 -0
- package/dist/agents/commands/cursor/harness/harness-release-readiness.mdc +697 -0
- package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +603 -0
- package/dist/agents/commands/cursor/harness/harness-security-scan.mdc +162 -0
- package/dist/agents/commands/cursor/harness/harness-skill-authoring.mdc +300 -0
- package/dist/agents/commands/cursor/harness/harness-soundness-review.mdc +1275 -0
- package/dist/agents/commands/cursor/harness/harness-supply-chain-audit.mdc +252 -0
- package/dist/agents/commands/cursor/harness/harness-tdd.mdc +185 -0
- package/dist/agents/commands/cursor/harness/harness-test-advisor.mdc +168 -0
- package/dist/agents/commands/cursor/harness/harness-verification.mdc +429 -0
- package/dist/agents/commands/cursor/harness/harness-verify.mdc +167 -0
- package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +240 -0
- package/dist/agents/skills/claude-code/enforce-architecture/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-auth/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +355 -45
- package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +12 -0
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +97 -3
- package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +6 -0
- package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +2 -4
- package/dist/agents/skills/claude-code/harness-database/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +99 -3
- package/dist/agents/skills/claude-code/harness-planning/skill.yaml +6 -0
- package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +1 -1
- package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +5 -5
- package/dist/agents/skills/claude-code/harness-security-review/SKILL.md +27 -7
- package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +52 -0
- package/dist/agents/skills/claude-code/harness-supply-chain-audit/SKILL.md +281 -0
- package/dist/agents/skills/claude-code/harness-supply-chain-audit/skill.yaml +51 -0
- package/dist/agents/skills/codex/add-harness-component/SKILL.md +192 -0
- package/dist/agents/skills/codex/add-harness-component/skill.yaml +33 -0
- package/dist/agents/skills/codex/align-documentation/SKILL.md +213 -0
- package/dist/agents/skills/codex/align-documentation/skill.yaml +32 -0
- package/dist/agents/skills/codex/check-mechanical-constraints/SKILL.md +191 -0
- package/dist/agents/skills/codex/check-mechanical-constraints/skill.yaml +33 -0
- package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +245 -0
- package/dist/agents/skills/codex/cleanup-dead-code/skill.yaml +34 -0
- package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +179 -0
- package/dist/agents/skills/codex/detect-doc-drift/skill.yaml +31 -0
- package/dist/agents/skills/codex/enforce-architecture/SKILL.md +296 -0
- package/dist/agents/skills/codex/enforce-architecture/skill.yaml +35 -0
- package/dist/agents/skills/codex/harness-accessibility/SKILL.md +281 -0
- package/dist/agents/skills/codex/harness-accessibility/skill.yaml +52 -0
- package/dist/agents/skills/codex/harness-api-design/SKILL.md +356 -0
- package/dist/agents/skills/codex/harness-api-design/skill.yaml +74 -0
- package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +449 -0
- package/dist/agents/skills/codex/harness-architecture-advisor/skill.yaml +49 -0
- package/dist/agents/skills/codex/harness-auth/SKILL.md +331 -0
- package/dist/agents/skills/codex/harness-auth/skill.yaml +81 -0
- package/dist/agents/skills/codex/harness-autopilot/SKILL.md +916 -0
- package/dist/agents/skills/codex/harness-autopilot/skill.yaml +67 -0
- package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +406 -0
- package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +50 -0
- package/dist/agents/skills/codex/harness-caching/SKILL.md +309 -0
- package/dist/agents/skills/codex/harness-caching/skill.yaml +73 -0
- package/dist/agents/skills/codex/harness-chaos/SKILL.md +295 -0
- package/dist/agents/skills/codex/harness-chaos/skill.yaml +72 -0
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +857 -0
- package/dist/agents/skills/codex/harness-code-review/skill.yaml +52 -0
- package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +224 -0
- package/dist/agents/skills/codex/harness-codebase-cleanup/skill.yaml +65 -0
- package/dist/agents/skills/codex/harness-compliance/SKILL.md +303 -0
- package/dist/agents/skills/codex/harness-compliance/skill.yaml +78 -0
- package/dist/agents/skills/codex/harness-containerization/SKILL.md +284 -0
- package/dist/agents/skills/codex/harness-containerization/skill.yaml +80 -0
- package/dist/agents/skills/codex/harness-data-pipeline/SKILL.md +274 -0
- package/dist/agents/skills/codex/harness-data-pipeline/skill.yaml +81 -0
- package/dist/agents/skills/codex/harness-data-validation/SKILL.md +343 -0
- package/dist/agents/skills/codex/harness-data-validation/skill.yaml +75 -0
- package/dist/agents/skills/codex/harness-database/SKILL.md +310 -0
- package/dist/agents/skills/codex/harness-database/skill.yaml +80 -0
- package/dist/agents/skills/codex/harness-debugging/SKILL.md +366 -0
- package/dist/agents/skills/codex/harness-debugging/skill.yaml +48 -0
- package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +179 -0
- package/dist/agents/skills/codex/harness-dependency-health/skill.yaml +42 -0
- package/dist/agents/skills/codex/harness-deployment/SKILL.md +307 -0
- package/dist/agents/skills/codex/harness-deployment/skill.yaml +77 -0
- package/dist/agents/skills/codex/harness-design/SKILL.md +265 -0
- package/dist/agents/skills/codex/harness-design/skill.yaml +54 -0
- package/dist/agents/skills/codex/harness-design-mobile/SKILL.md +336 -0
- package/dist/agents/skills/codex/harness-design-mobile/skill.yaml +50 -0
- package/dist/agents/skills/codex/harness-design-system/SKILL.md +282 -0
- package/dist/agents/skills/codex/harness-design-system/skill.yaml +51 -0
- package/dist/agents/skills/codex/harness-design-web/SKILL.md +360 -0
- package/dist/agents/skills/codex/harness-design-web/skill.yaml +53 -0
- package/dist/agents/skills/codex/harness-diagnostics/SKILL.md +318 -0
- package/dist/agents/skills/codex/harness-diagnostics/skill.yaml +51 -0
- package/dist/agents/skills/codex/harness-docs-pipeline/SKILL.md +460 -0
- package/dist/agents/skills/codex/harness-docs-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/codex/harness-dx/SKILL.md +276 -0
- package/dist/agents/skills/codex/harness-dx/skill.yaml +76 -0
- package/dist/agents/skills/codex/harness-e2e/SKILL.md +245 -0
- package/dist/agents/skills/codex/harness-e2e/skill.yaml +78 -0
- package/dist/agents/skills/codex/harness-event-driven/SKILL.md +280 -0
- package/dist/agents/skills/codex/harness-event-driven/skill.yaml +77 -0
- package/dist/agents/skills/codex/harness-execution/SKILL.md +510 -0
- package/dist/agents/skills/codex/harness-execution/skill.yaml +52 -0
- package/dist/agents/skills/codex/harness-feature-flags/SKILL.md +287 -0
- package/dist/agents/skills/codex/harness-feature-flags/skill.yaml +74 -0
- package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +268 -0
- package/dist/agents/skills/codex/harness-git-workflow/skill.yaml +32 -0
- package/dist/agents/skills/codex/harness-hotspot-detector/SKILL.md +161 -0
- package/dist/agents/skills/codex/harness-hotspot-detector/skill.yaml +45 -0
- package/dist/agents/skills/codex/harness-i18n/SKILL.md +484 -0
- package/dist/agents/skills/codex/harness-i18n/skill.yaml +55 -0
- package/dist/agents/skills/codex/harness-i18n-process/SKILL.md +388 -0
- package/dist/agents/skills/codex/harness-i18n-process/skill.yaml +44 -0
- package/dist/agents/skills/codex/harness-i18n-workflow/SKILL.md +512 -0
- package/dist/agents/skills/codex/harness-i18n-workflow/skill.yaml +54 -0
- package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +184 -0
- package/dist/agents/skills/codex/harness-impact-analysis/skill.yaml +45 -0
- package/dist/agents/skills/codex/harness-incident-response/SKILL.md +223 -0
- package/dist/agents/skills/codex/harness-incident-response/skill.yaml +78 -0
- package/dist/agents/skills/codex/harness-infrastructure-as-code/SKILL.md +279 -0
- package/dist/agents/skills/codex/harness-infrastructure-as-code/skill.yaml +80 -0
- package/dist/agents/skills/codex/harness-integration-test/SKILL.md +271 -0
- package/dist/agents/skills/codex/harness-integration-test/skill.yaml +73 -0
- package/dist/agents/skills/codex/harness-integrity/SKILL.md +167 -0
- package/dist/agents/skills/codex/harness-integrity/skill.yaml +48 -0
- package/dist/agents/skills/codex/harness-knowledge-mapper/SKILL.md +195 -0
- package/dist/agents/skills/codex/harness-knowledge-mapper/skill.yaml +50 -0
- package/dist/agents/skills/codex/harness-load-testing/SKILL.md +274 -0
- package/dist/agents/skills/codex/harness-load-testing/skill.yaml +79 -0
- package/dist/agents/skills/codex/harness-ml-ops/SKILL.md +341 -0
- package/dist/agents/skills/codex/harness-ml-ops/skill.yaml +79 -0
- package/dist/agents/skills/codex/harness-mobile-patterns/SKILL.md +326 -0
- package/dist/agents/skills/codex/harness-mobile-patterns/skill.yaml +82 -0
- package/dist/agents/skills/codex/harness-mutation-test/SKILL.md +251 -0
- package/dist/agents/skills/codex/harness-mutation-test/skill.yaml +70 -0
- package/dist/agents/skills/codex/harness-observability/SKILL.md +283 -0
- package/dist/agents/skills/codex/harness-observability/skill.yaml +78 -0
- package/dist/agents/skills/codex/harness-onboarding/SKILL.md +288 -0
- package/dist/agents/skills/codex/harness-onboarding/skill.yaml +31 -0
- package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +256 -0
- package/dist/agents/skills/codex/harness-parallel-agents/skill.yaml +34 -0
- package/dist/agents/skills/codex/harness-perf/SKILL.md +260 -0
- package/dist/agents/skills/codex/harness-perf/skill.yaml +51 -0
- package/dist/agents/skills/codex/harness-perf-tdd/SKILL.md +249 -0
- package/dist/agents/skills/codex/harness-perf-tdd/skill.yaml +48 -0
- package/dist/agents/skills/codex/harness-planning/SKILL.md +579 -0
- package/dist/agents/skills/codex/harness-planning/skill.yaml +56 -0
- package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +324 -0
- package/dist/agents/skills/codex/harness-pre-commit-review/skill.yaml +34 -0
- package/dist/agents/skills/codex/harness-product-spec/SKILL.md +285 -0
- package/dist/agents/skills/codex/harness-product-spec/skill.yaml +72 -0
- package/dist/agents/skills/codex/harness-property-test/SKILL.md +281 -0
- package/dist/agents/skills/codex/harness-property-test/skill.yaml +71 -0
- package/dist/agents/skills/codex/harness-refactoring/SKILL.md +169 -0
- package/dist/agents/skills/codex/harness-refactoring/skill.yaml +34 -0
- package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +689 -0
- package/dist/agents/skills/codex/harness-release-readiness/skill.yaml +58 -0
- package/dist/agents/skills/codex/harness-resilience/SKILL.md +255 -0
- package/dist/agents/skills/codex/harness-resilience/skill.yaml +76 -0
- package/dist/agents/skills/codex/harness-roadmap/SKILL.md +595 -0
- package/dist/agents/skills/codex/harness-roadmap/skill.yaml +44 -0
- package/dist/agents/skills/codex/harness-secrets/SKILL.md +293 -0
- package/dist/agents/skills/codex/harness-secrets/skill.yaml +76 -0
- package/dist/agents/skills/codex/harness-security-review/SKILL.md +260 -0
- package/dist/agents/skills/codex/harness-security-review/skill.yaml +53 -0
- package/dist/agents/skills/codex/harness-security-scan/SKILL.md +154 -0
- package/dist/agents/skills/codex/harness-security-scan/skill.yaml +42 -0
- package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +292 -0
- package/dist/agents/skills/codex/harness-skill-authoring/skill.yaml +33 -0
- package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +1267 -0
- package/dist/agents/skills/codex/harness-soundness-review/skill.yaml +49 -0
- package/dist/agents/skills/codex/harness-sql-review/SKILL.md +315 -0
- package/dist/agents/skills/codex/harness-sql-review/skill.yaml +74 -0
- package/dist/agents/skills/codex/harness-state-management/SKILL.md +309 -0
- package/dist/agents/skills/codex/harness-state-management/skill.yaml +33 -0
- package/dist/agents/skills/codex/harness-supply-chain-audit/SKILL.md +281 -0
- package/dist/agents/skills/codex/harness-supply-chain-audit/skill.yaml +51 -0
- package/dist/agents/skills/codex/harness-tdd/SKILL.md +177 -0
- package/dist/agents/skills/codex/harness-tdd/skill.yaml +49 -0
- package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +160 -0
- package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +45 -0
- package/dist/agents/skills/codex/harness-test-data/SKILL.md +268 -0
- package/dist/agents/skills/codex/harness-test-data/skill.yaml +74 -0
- package/dist/agents/skills/codex/harness-ux-copy/SKILL.md +271 -0
- package/dist/agents/skills/codex/harness-ux-copy/skill.yaml +77 -0
- package/dist/agents/skills/codex/harness-verification/SKILL.md +421 -0
- package/dist/agents/skills/codex/harness-verification/skill.yaml +43 -0
- package/dist/agents/skills/codex/harness-verify/SKILL.md +159 -0
- package/dist/agents/skills/codex/harness-verify/skill.yaml +41 -0
- package/dist/agents/skills/codex/harness-visual-regression/SKILL.md +257 -0
- package/dist/agents/skills/codex/harness-visual-regression/skill.yaml +74 -0
- package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +232 -0
- package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +32 -0
- package/dist/agents/skills/codex/validate-context-engineering/SKILL.md +150 -0
- package/dist/agents/skills/codex/validate-context-engineering/skill.yaml +32 -0
- package/dist/agents/skills/cursor/add-harness-component/SKILL.md +192 -0
- package/dist/agents/skills/cursor/add-harness-component/skill.yaml +33 -0
- package/dist/agents/skills/cursor/align-documentation/SKILL.md +213 -0
- package/dist/agents/skills/cursor/align-documentation/skill.yaml +32 -0
- package/dist/agents/skills/cursor/check-mechanical-constraints/SKILL.md +191 -0
- package/dist/agents/skills/cursor/check-mechanical-constraints/skill.yaml +33 -0
- package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +245 -0
- package/dist/agents/skills/cursor/cleanup-dead-code/skill.yaml +34 -0
- package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +179 -0
- package/dist/agents/skills/cursor/detect-doc-drift/skill.yaml +31 -0
- package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +296 -0
- package/dist/agents/skills/cursor/enforce-architecture/skill.yaml +35 -0
- package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +281 -0
- package/dist/agents/skills/cursor/harness-accessibility/skill.yaml +52 -0
- package/dist/agents/skills/cursor/harness-api-design/SKILL.md +356 -0
- package/dist/agents/skills/cursor/harness-api-design/skill.yaml +74 -0
- package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +449 -0
- package/dist/agents/skills/cursor/harness-architecture-advisor/skill.yaml +49 -0
- package/dist/agents/skills/cursor/harness-auth/SKILL.md +331 -0
- package/dist/agents/skills/cursor/harness-auth/skill.yaml +81 -0
- package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +916 -0
- package/dist/agents/skills/cursor/harness-autopilot/skill.yaml +67 -0
- package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +406 -0
- package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +50 -0
- package/dist/agents/skills/cursor/harness-caching/SKILL.md +309 -0
- package/dist/agents/skills/cursor/harness-caching/skill.yaml +73 -0
- package/dist/agents/skills/cursor/harness-chaos/SKILL.md +295 -0
- package/dist/agents/skills/cursor/harness-chaos/skill.yaml +72 -0
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +857 -0
- package/dist/agents/skills/cursor/harness-code-review/skill.yaml +52 -0
- package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +224 -0
- package/dist/agents/skills/cursor/harness-codebase-cleanup/skill.yaml +65 -0
- package/dist/agents/skills/cursor/harness-compliance/SKILL.md +303 -0
- package/dist/agents/skills/cursor/harness-compliance/skill.yaml +78 -0
- package/dist/agents/skills/cursor/harness-containerization/SKILL.md +284 -0
- package/dist/agents/skills/cursor/harness-containerization/skill.yaml +80 -0
- package/dist/agents/skills/cursor/harness-data-pipeline/SKILL.md +274 -0
- package/dist/agents/skills/cursor/harness-data-pipeline/skill.yaml +81 -0
- package/dist/agents/skills/cursor/harness-data-validation/SKILL.md +343 -0
- package/dist/agents/skills/cursor/harness-data-validation/skill.yaml +75 -0
- package/dist/agents/skills/cursor/harness-database/SKILL.md +310 -0
- package/dist/agents/skills/cursor/harness-database/skill.yaml +80 -0
- package/dist/agents/skills/cursor/harness-debugging/SKILL.md +366 -0
- package/dist/agents/skills/cursor/harness-debugging/skill.yaml +48 -0
- package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +179 -0
- package/dist/agents/skills/cursor/harness-dependency-health/skill.yaml +42 -0
- package/dist/agents/skills/cursor/harness-deployment/SKILL.md +307 -0
- package/dist/agents/skills/cursor/harness-deployment/skill.yaml +77 -0
- package/dist/agents/skills/cursor/harness-design/SKILL.md +265 -0
- package/dist/agents/skills/cursor/harness-design/skill.yaml +54 -0
- package/dist/agents/skills/cursor/harness-design-mobile/SKILL.md +336 -0
- package/dist/agents/skills/cursor/harness-design-mobile/skill.yaml +50 -0
- package/dist/agents/skills/cursor/harness-design-system/SKILL.md +282 -0
- package/dist/agents/skills/cursor/harness-design-system/skill.yaml +51 -0
- package/dist/agents/skills/cursor/harness-design-web/SKILL.md +360 -0
- package/dist/agents/skills/cursor/harness-design-web/skill.yaml +53 -0
- package/dist/agents/skills/cursor/harness-diagnostics/SKILL.md +318 -0
- package/dist/agents/skills/cursor/harness-diagnostics/skill.yaml +51 -0
- package/dist/agents/skills/cursor/harness-docs-pipeline/SKILL.md +460 -0
- package/dist/agents/skills/cursor/harness-docs-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/cursor/harness-dx/SKILL.md +276 -0
- package/dist/agents/skills/cursor/harness-dx/skill.yaml +76 -0
- package/dist/agents/skills/cursor/harness-e2e/SKILL.md +245 -0
- package/dist/agents/skills/cursor/harness-e2e/skill.yaml +78 -0
- package/dist/agents/skills/cursor/harness-event-driven/SKILL.md +280 -0
- package/dist/agents/skills/cursor/harness-event-driven/skill.yaml +77 -0
- package/dist/agents/skills/cursor/harness-execution/SKILL.md +510 -0
- package/dist/agents/skills/cursor/harness-execution/skill.yaml +52 -0
- package/dist/agents/skills/cursor/harness-feature-flags/SKILL.md +287 -0
- package/dist/agents/skills/cursor/harness-feature-flags/skill.yaml +74 -0
- package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +268 -0
- package/dist/agents/skills/cursor/harness-git-workflow/skill.yaml +32 -0
- package/dist/agents/skills/cursor/harness-hotspot-detector/SKILL.md +161 -0
- package/dist/agents/skills/cursor/harness-hotspot-detector/skill.yaml +45 -0
- package/dist/agents/skills/cursor/harness-i18n/SKILL.md +484 -0
- package/dist/agents/skills/cursor/harness-i18n/skill.yaml +55 -0
- package/dist/agents/skills/cursor/harness-i18n-process/SKILL.md +388 -0
- package/dist/agents/skills/cursor/harness-i18n-process/skill.yaml +44 -0
- package/dist/agents/skills/cursor/harness-i18n-workflow/SKILL.md +512 -0
- package/dist/agents/skills/cursor/harness-i18n-workflow/skill.yaml +54 -0
- package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +184 -0
- package/dist/agents/skills/cursor/harness-impact-analysis/skill.yaml +45 -0
- package/dist/agents/skills/cursor/harness-incident-response/SKILL.md +223 -0
- package/dist/agents/skills/cursor/harness-incident-response/skill.yaml +78 -0
- package/dist/agents/skills/cursor/harness-infrastructure-as-code/SKILL.md +279 -0
- package/dist/agents/skills/cursor/harness-infrastructure-as-code/skill.yaml +80 -0
- package/dist/agents/skills/cursor/harness-integration-test/SKILL.md +271 -0
- package/dist/agents/skills/cursor/harness-integration-test/skill.yaml +73 -0
- package/dist/agents/skills/cursor/harness-integrity/SKILL.md +167 -0
- package/dist/agents/skills/cursor/harness-integrity/skill.yaml +48 -0
- package/dist/agents/skills/cursor/harness-knowledge-mapper/SKILL.md +195 -0
- package/dist/agents/skills/cursor/harness-knowledge-mapper/skill.yaml +50 -0
- package/dist/agents/skills/cursor/harness-load-testing/SKILL.md +274 -0
- package/dist/agents/skills/cursor/harness-load-testing/skill.yaml +79 -0
- package/dist/agents/skills/cursor/harness-ml-ops/SKILL.md +341 -0
- package/dist/agents/skills/cursor/harness-ml-ops/skill.yaml +79 -0
- package/dist/agents/skills/cursor/harness-mobile-patterns/SKILL.md +326 -0
- package/dist/agents/skills/cursor/harness-mobile-patterns/skill.yaml +82 -0
- package/dist/agents/skills/cursor/harness-mutation-test/SKILL.md +251 -0
- package/dist/agents/skills/cursor/harness-mutation-test/skill.yaml +70 -0
- package/dist/agents/skills/cursor/harness-observability/SKILL.md +283 -0
- package/dist/agents/skills/cursor/harness-observability/skill.yaml +78 -0
- package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +288 -0
- package/dist/agents/skills/cursor/harness-onboarding/skill.yaml +31 -0
- package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +256 -0
- package/dist/agents/skills/cursor/harness-parallel-agents/skill.yaml +34 -0
- package/dist/agents/skills/cursor/harness-perf/SKILL.md +260 -0
- package/dist/agents/skills/cursor/harness-perf/skill.yaml +51 -0
- package/dist/agents/skills/cursor/harness-perf-tdd/SKILL.md +249 -0
- package/dist/agents/skills/cursor/harness-perf-tdd/skill.yaml +48 -0
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +579 -0
- package/dist/agents/skills/cursor/harness-planning/skill.yaml +56 -0
- package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +324 -0
- package/dist/agents/skills/cursor/harness-pre-commit-review/skill.yaml +34 -0
- package/dist/agents/skills/cursor/harness-product-spec/SKILL.md +285 -0
- package/dist/agents/skills/cursor/harness-product-spec/skill.yaml +72 -0
- package/dist/agents/skills/cursor/harness-property-test/SKILL.md +281 -0
- package/dist/agents/skills/cursor/harness-property-test/skill.yaml +71 -0
- package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +169 -0
- package/dist/agents/skills/cursor/harness-refactoring/skill.yaml +34 -0
- package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +689 -0
- package/dist/agents/skills/cursor/harness-release-readiness/skill.yaml +58 -0
- package/dist/agents/skills/cursor/harness-resilience/SKILL.md +255 -0
- package/dist/agents/skills/cursor/harness-resilience/skill.yaml +76 -0
- package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +595 -0
- package/dist/agents/skills/cursor/harness-roadmap/skill.yaml +44 -0
- package/dist/agents/skills/cursor/harness-secrets/SKILL.md +293 -0
- package/dist/agents/skills/cursor/harness-secrets/skill.yaml +76 -0
- package/dist/agents/skills/cursor/harness-security-review/SKILL.md +260 -0
- package/dist/agents/skills/cursor/harness-security-review/skill.yaml +53 -0
- package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +154 -0
- package/dist/agents/skills/cursor/harness-security-scan/skill.yaml +42 -0
- package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +292 -0
- package/dist/agents/skills/cursor/harness-skill-authoring/skill.yaml +33 -0
- package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +1267 -0
- package/dist/agents/skills/cursor/harness-soundness-review/skill.yaml +49 -0
- package/dist/agents/skills/cursor/harness-sql-review/SKILL.md +315 -0
- package/dist/agents/skills/cursor/harness-sql-review/skill.yaml +74 -0
- package/dist/agents/skills/cursor/harness-state-management/SKILL.md +309 -0
- package/dist/agents/skills/cursor/harness-state-management/skill.yaml +33 -0
- package/dist/agents/skills/cursor/harness-supply-chain-audit/SKILL.md +281 -0
- package/dist/agents/skills/cursor/harness-supply-chain-audit/skill.yaml +51 -0
- package/dist/agents/skills/cursor/harness-tdd/SKILL.md +177 -0
- package/dist/agents/skills/cursor/harness-tdd/skill.yaml +49 -0
- package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +160 -0
- package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +45 -0
- package/dist/agents/skills/cursor/harness-test-data/SKILL.md +268 -0
- package/dist/agents/skills/cursor/harness-test-data/skill.yaml +74 -0
- package/dist/agents/skills/cursor/harness-ux-copy/SKILL.md +271 -0
- package/dist/agents/skills/cursor/harness-ux-copy/skill.yaml +77 -0
- package/dist/agents/skills/cursor/harness-verification/SKILL.md +421 -0
- package/dist/agents/skills/cursor/harness-verification/skill.yaml +43 -0
- package/dist/agents/skills/cursor/harness-verify/SKILL.md +159 -0
- package/dist/agents/skills/cursor/harness-verify/skill.yaml +41 -0
- package/dist/agents/skills/cursor/harness-visual-regression/SKILL.md +257 -0
- package/dist/agents/skills/cursor/harness-visual-regression/skill.yaml +74 -0
- package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +232 -0
- package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +32 -0
- package/dist/agents/skills/cursor/validate-context-engineering/SKILL.md +150 -0
- package/dist/agents/skills/cursor/validate-context-engineering/skill.yaml +32 -0
- package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +355 -45
- package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +12 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +97 -3
- package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +6 -0
- package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +2 -4
- package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +99 -3
- package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +6 -0
- package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +1 -1
- package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +5 -5
- package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +27 -7
- package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +52 -0
- package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/SKILL.md +281 -0
- package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/skill.yaml +51 -0
- package/dist/agents/skills/package.json +1 -0
- package/dist/agents/skills/templates/discipline-template.md +49 -0
- package/dist/agents/skills/tests/schema.ts +1 -1
- package/dist/agents/skills/vitest.config.mts +5 -0
- package/dist/{agents-md-YTYQDA3P.js → agents-md-VYDFPIRW.js} +1 -1
- package/dist/{architecture-JQZYM4US.js → architecture-K5HSRBGB.js} +2 -2
- package/dist/bin/harness-mcp.js +13 -13
- package/dist/bin/harness.js +21 -19
- package/dist/{check-phase-gate-L3RADYWO.js → check-phase-gate-5AS6SXL6.js} +3 -3
- package/dist/{chunk-6KTUUFRN.js → chunk-5ZXHMCPL.js} +1 -1
- package/dist/{chunk-RCWZBSK5.js → chunk-6KWBH4EO.js} +1 -1
- package/dist/{chunk-ABQHQ6I5.js → chunk-ALFKNAZW.js} +2436 -233
- package/dist/{chunk-OXLLOSSR.js → chunk-AV6KMDO5.js} +2 -2
- package/dist/{chunk-7IP4JIFL.js → chunk-C7DTKLPW.js} +4 -4
- package/dist/{chunk-ZOAWBDWU.js → chunk-CJDVBBPB.js} +5 -1
- package/dist/{chunk-YPYGXRDR.js → chunk-DNDBFIZN.js} +18 -4
- package/dist/{chunk-XYLGHKG6.js → chunk-HKUX2X7O.js} +11 -2
- package/dist/{chunk-YZD2MRNQ.js → chunk-JOP2NDNB.js} +684 -142
- package/dist/{chunk-YBJ262QL.js → chunk-LRG3B43J.js} +1 -1
- package/dist/{chunk-AOZRDOIP.js → chunk-M6TIO6NF.js} +1 -1
- package/dist/{chunk-O5OJVPL6.js → chunk-OCDDCGDE.js} +9 -1
- package/dist/{chunk-OSXBPAMK.js → chunk-QDF7COPQ.js} +1 -1
- package/dist/{chunk-TPOTOBR7.js → chunk-RWZPHW4H.js} +3 -3
- package/dist/{chunk-3C2MLBPJ.js → chunk-SFRGPAK6.js} +1 -1
- package/dist/{chunk-XKECDXJS.js → chunk-SHYWICGA.js} +2184 -456
- package/dist/{chunk-S2FXOWOR.js → chunk-TF6ZLHJV.js} +2 -2
- package/dist/{chunk-NLVUVUGD.js → chunk-ZJMU7MEV.js} +1 -1
- package/dist/{ci-workflow-EQZFVX3P.js → ci-workflow-CRWU723U.js} +1 -1
- package/dist/{create-skill-XSWHMSM5.js → create-skill-NDXQSTIK.js} +2 -2
- package/dist/{dist-HWXF2C3R.js → dist-4LPXJYVZ.js} +105 -1
- package/dist/{docs-7ECGYMAV.js → docs-4JRHTLUZ.js} +3 -3
- package/dist/{engine-EG4EH4IX.js → engine-3G3VIM6L.js} +1 -1
- package/dist/{entropy-5USWKLVS.js → entropy-G6CZ2A6P.js} +2 -2
- package/dist/{feedback-UTBXZZHF.js → feedback-QYKQ65HB.js} +1 -1
- package/dist/{generate-agent-definitions-3PM5EU7V.js → generate-agent-definitions-SAAOAPT4.js} +3 -3
- package/dist/index.d.ts +25 -4
- package/dist/index.js +18 -18
- package/dist/{loader-ZPALXIVR.js → loader-VCOK3PF7.js} +1 -1
- package/dist/{mcp-362EZHF4.js → mcp-YENEPHBW.js} +13 -13
- package/dist/{performance-OQAFMJUD.js → performance-UBCFI2UP.js} +4 -2
- package/dist/{review-pipeline-C4GCFVGP.js → review-pipeline-IQAVCWAX.js} +1 -1
- package/dist/{runtime-7YLVK453.js → runtime-PYFFIESU.js} +1 -1
- package/dist/{security-PZOX7AQS.js → security-ZDADTPYW.js} +1 -1
- package/dist/{skill-executor-XZLYZYAK.js → skill-executor-XEVDGXUM.js} +2 -2
- package/dist/{validate-FD3Z6VJD.js → validate-VRTUHALQ.js} +2 -2
- package/dist/{validate-cross-check-WNJM6H2D.js → validate-cross-check-4Y6NHNK3.js} +1 -1
- package/package.json +8 -5
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Execute a planned set of tasks with harness validation and state tracking
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Generated by harness generate-slash-commands. Do not edit. -->
|
|
7
|
+
|
|
8
|
+
# Harness Execution
|
|
9
|
+
|
|
10
|
+
> Execute a plan task by task with atomic commits, checkpoint protocol, and persistent knowledge capture. Stop on blockers. Do not guess.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- When an approved plan exists (output of harness-planning) and implementation should begin
|
|
15
|
+
- When resuming execution of a previously started plan after a context reset
|
|
16
|
+
- When `on_new_feature` or `on_bug_fix` triggers fire and a plan is already in place
|
|
17
|
+
- NOT when no plan exists (use harness-planning first)
|
|
18
|
+
- NOT when the plan needs revision (update the plan first, then resume execution)
|
|
19
|
+
- NOT when exploring or brainstorming (use harness-brainstorming)
|
|
20
|
+
- NOT for ad-hoc single-task work that does not follow a plan
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
### Iron Law
|
|
25
|
+
|
|
26
|
+
**Execute the plan as written. If the plan is wrong, stop and fix the plan — do not improvise.**
|
|
27
|
+
|
|
28
|
+
Deviating from the plan mid-execution introduces untested assumptions, breaks task atomicity, and makes progress untraceable. If a task cannot be completed as written, that is a blocker. Record it and stop.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### Phase 1: PREPARE — Load State and Verify Prerequisites
|
|
33
|
+
|
|
34
|
+
1. **Load the plan.** Read the plan document from `docs/plans/`. Identify the total task count and any checkpoints.
|
|
35
|
+
|
|
36
|
+
2. **Gather context in one call.** Use the `gather_context` MCP tool to load all working context at once:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
gather_context({
|
|
40
|
+
path: "<project-root>",
|
|
41
|
+
intent: "Execute plan tasks starting from current position",
|
|
42
|
+
skill: "harness-execution",
|
|
43
|
+
session: "<session-slug-if-known>",
|
|
44
|
+
include: ["state", "learnings", "handoff", "validation"]
|
|
45
|
+
})
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Session resolution:** If a session directory is known (passed via autopilot dispatch or available from a previous handoff), include the `session` parameter. This scopes all state reads/writes to `.harness/sessions/<slug>/`. If no session is known, omit it — `gather_context` falls back to global files at `.harness/`.
|
|
49
|
+
|
|
50
|
+
This returns `state` (current position — if null, this is a fresh start at Task 1), `learnings` (hard-won insights from previous sessions — do not ignore them), `handoff` (structured context from the previous skill), and `validation` (current project health). If any constituent fails, its field is null and the error is reported in `meta.errors`.
|
|
51
|
+
|
|
52
|
+
3. **Load session summary for cold start.** If resuming a session (session slug is known), read the session summary for quick orientation:
|
|
53
|
+
- Call `listActiveSessions()` to read the session index (~100 tokens).
|
|
54
|
+
- If the target session is known, call `loadSessionSummary()` for that session (~200 tokens).
|
|
55
|
+
- If ambiguous (multiple active sessions, no clear target), present the index to the user and ask which session to resume.
|
|
56
|
+
- The summary provides skill, phase, status, key context, and next step — enough to orient without re-reading full state + learnings + plan.
|
|
57
|
+
|
|
58
|
+
4. **Check for known dead ends.** Review `learnings` entries tagged `[outcome:failure]`. If any match approaches in the current plan, surface warnings before proceeding.
|
|
59
|
+
|
|
60
|
+
5. **Verify prerequisites.** For the current task:
|
|
61
|
+
- Are dependency tasks marked complete in state?
|
|
62
|
+
- Do the files referenced in the task exist as expected?
|
|
63
|
+
- Does the test suite pass? Run `harness validate` to confirm a clean baseline.
|
|
64
|
+
|
|
65
|
+
6. **If prerequisites fail,** do not proceed. Report what is missing and which task is blocked.
|
|
66
|
+
|
|
67
|
+
### Graph-Enhanced Context (when available)
|
|
68
|
+
|
|
69
|
+
When a knowledge graph exists at `.harness/graph/`, use graph queries for faster, more accurate context:
|
|
70
|
+
|
|
71
|
+
- `query_graph` — check file overlap between current and next task for conflict detection
|
|
72
|
+
- `get_impact` — understand blast radius before executing a task
|
|
73
|
+
|
|
74
|
+
Enables smarter execution ordering and blockage detection. Fall back to file-based commands if no graph is available.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Phase 2: EXECUTE — Implement Tasks Atomically
|
|
79
|
+
|
|
80
|
+
When reporting task progress, use progress markers:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
**[Phase N/M]** Task N — <task description>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For each task, starting from the current position:
|
|
87
|
+
|
|
88
|
+
1. **Read the task instructions completely** before writing any code. Understand what files to touch, what tests to write, what the expected outcome is.
|
|
89
|
+
|
|
90
|
+
2. **Follow the task instructions exactly.** The plan contains exact file paths, exact code, and exact commands. Execute them as written.
|
|
91
|
+
|
|
92
|
+
3. **TDD rhythm within each task:**
|
|
93
|
+
- Write the test as specified in the task
|
|
94
|
+
- Run the test — observe it fail (for the right reason)
|
|
95
|
+
- Write the implementation as specified in the task
|
|
96
|
+
- Run the test — observe it pass
|
|
97
|
+
- Run `harness validate`
|
|
98
|
+
|
|
99
|
+
4. **Commit atomically.** Each task produces exactly one commit. Use the commit message specified in the plan. If no message is specified, write a descriptive message in the project's convention.
|
|
100
|
+
|
|
101
|
+
5. **Run mechanical gate.** After each task commit, run the full gate check. Use `assess_project` to run harness checks (including lint) in parallel, then run the test suite:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
assess_project({
|
|
105
|
+
path: "<project-root>",
|
|
106
|
+
checks: ["validate", "deps", "lint"],
|
|
107
|
+
mode: "summary"
|
|
108
|
+
})
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Then run the project's test suite (`npx turbo run test` or equivalent). This is binary pass/fail.
|
|
112
|
+
- **All pass →** proceed to the next task.
|
|
113
|
+
- **Any fail →** retry with error context (max 2 attempts).
|
|
114
|
+
- **Still failing after retries →** record the failure in `.harness/failures.md`, escalate, and stop.
|
|
115
|
+
|
|
116
|
+
6. **Update state after each task.** Write to `.harness/state.json`:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"schemaVersion": 1,
|
|
121
|
+
"position": { "phase": "execute", "task": "Task N" },
|
|
122
|
+
"progress": { "Task 1": "complete", "Task 2": "complete", "Task 3": "in_progress" },
|
|
123
|
+
"lastSession": { "date": "YYYY-MM-DD", "summary": "Completed Tasks 1-2, starting Task 3" }
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
7. **Handle checkpoints** according to the checkpoint protocol (see below).
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Checkpoint Protocol
|
|
132
|
+
|
|
133
|
+
Plans contain three types of checkpoints. Each requires pausing execution.
|
|
134
|
+
|
|
135
|
+
**`[checkpoint:human-verify]` — Show and Confirm**
|
|
136
|
+
|
|
137
|
+
1. Stop execution.
|
|
138
|
+
2. Use `emit_interaction` to present the checkpoint:
|
|
139
|
+
```json
|
|
140
|
+
emit_interaction({
|
|
141
|
+
path: "<project-root>",
|
|
142
|
+
type: "confirmation",
|
|
143
|
+
confirmation: {
|
|
144
|
+
text: "Task N complete. Output: <summary>. Continue to Task N+1?",
|
|
145
|
+
context: "<test output or file diff summary>",
|
|
146
|
+
impact: "Continuing proceeds to the next task. Declining pauses execution for review.",
|
|
147
|
+
risk: "low"
|
|
148
|
+
}
|
|
149
|
+
})
|
|
150
|
+
```
|
|
151
|
+
3. Wait for the human to confirm before proceeding.
|
|
152
|
+
|
|
153
|
+
**`[checkpoint:decision]` — Present Options and Wait**
|
|
154
|
+
|
|
155
|
+
1. Stop execution.
|
|
156
|
+
2. Use `emit_interaction` to present the decision:
|
|
157
|
+
```json
|
|
158
|
+
emit_interaction({
|
|
159
|
+
path: "<project-root>",
|
|
160
|
+
type: "question",
|
|
161
|
+
question: {
|
|
162
|
+
text: "Task N requires a decision: <description>",
|
|
163
|
+
options: [
|
|
164
|
+
{
|
|
165
|
+
label: "<option A>",
|
|
166
|
+
pros: ["<pro 1>", "<pro 2>"],
|
|
167
|
+
cons: ["<con 1>"],
|
|
168
|
+
risk: "low",
|
|
169
|
+
effort: "low"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
label: "<option B>",
|
|
173
|
+
pros: ["<pro 1>"],
|
|
174
|
+
cons: ["<con 1>", "<con 2>"],
|
|
175
|
+
risk: "medium",
|
|
176
|
+
effort: "medium"
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
recommendation: {
|
|
180
|
+
optionIndex: 0,
|
|
181
|
+
reason: "<why this option is recommended>",
|
|
182
|
+
confidence: "medium"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
})
|
|
186
|
+
```
|
|
187
|
+
3. Wait for the human to choose.
|
|
188
|
+
|
|
189
|
+
**`[checkpoint:human-action]` — Instruct and Wait**
|
|
190
|
+
|
|
191
|
+
1. Stop execution.
|
|
192
|
+
2. Tell the human exactly what they need to do (e.g., "Create an API key at [URL] and paste it here").
|
|
193
|
+
3. State: "Task N requires your action: [instructions]. Let me know when done."
|
|
194
|
+
4. Wait for the human to complete the action and confirm.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
### Phase 3: VERIFY — Two-Tier Validation
|
|
199
|
+
|
|
200
|
+
**Quick gate (default):** The mechanical gate in Phase 2 Step 5 IS the standard verification. Every task commit must pass it before proceeding. No additional verification step is needed for normal execution.
|
|
201
|
+
|
|
202
|
+
**Deep audit (on-demand):** When `--deep` is passed or at milestone boundaries (e.g., end of a phase, final task), invoke the full `harness-verification` skill for 3-level audit:
|
|
203
|
+
|
|
204
|
+
1. **EXISTS** — Do the artifacts the task claims to produce actually exist?
|
|
205
|
+
2. **SUBSTANTIVE** — Do those artifacts contain meaningful, correct content (not stubs or placeholders)?
|
|
206
|
+
3. **WIRED** — Are those artifacts integrated into the system (imported, routed, tested, reachable)?
|
|
207
|
+
|
|
208
|
+
If the deep audit fails at any level, treat it as a blocker. Record it and stop.
|
|
209
|
+
|
|
210
|
+
After all tasks pass verification:
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
emit_interaction({
|
|
214
|
+
path: "<project-root>",
|
|
215
|
+
type: "transition",
|
|
216
|
+
transition: {
|
|
217
|
+
completedPhase: "execution",
|
|
218
|
+
suggestedNext: "verification",
|
|
219
|
+
reason: "All plan tasks executed and verified",
|
|
220
|
+
artifacts: ["<list of created/modified files>"],
|
|
221
|
+
qualityGate: {
|
|
222
|
+
checks: [
|
|
223
|
+
{ name: "all-tasks-complete", passed: true, detail: "<N>/<N> tasks" },
|
|
224
|
+
{ name: "harness-validate", passed: true },
|
|
225
|
+
{ name: "tests-pass", passed: true }
|
|
226
|
+
],
|
|
227
|
+
allPassed: true
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
})
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
### Phase 4: PERSIST — Save Progress and Learnings
|
|
236
|
+
|
|
237
|
+
Between tasks (especially between sessions):
|
|
238
|
+
|
|
239
|
+
1. **Update state (session-scoped `{sessionDir}/state.json` if session is known, otherwise `.harness/state.json`)** with current position, progress, and `lastSession` context:
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"lastSession": {
|
|
244
|
+
"lastSkill": "harness-execution",
|
|
245
|
+
"pendingTasks": ["Task 4", "Task 5"]
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Graph Refresh
|
|
251
|
+
|
|
252
|
+
If a knowledge graph exists at `.harness/graph/`, refresh it after code changes to keep graph queries accurate:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
harness scan [path]
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Skipping this step means subsequent graph queries (impact analysis, dependency health, test advisor) may return stale results.
|
|
259
|
+
|
|
260
|
+
2. **Append tagged learnings to the session-scoped learnings file (`{sessionDir}/learnings.md` if session is known, otherwise `.harness/learnings.md`).** Tag every entry with skill and outcome:
|
|
261
|
+
|
|
262
|
+
```markdown
|
|
263
|
+
## YYYY-MM-DD — Task N: <task name>
|
|
264
|
+
|
|
265
|
+
- [skill:harness-execution] [outcome:success] What was accomplished
|
|
266
|
+
- [skill:harness-execution] [outcome:gotcha] What was surprising or non-obvious
|
|
267
|
+
- [skill:harness-execution] [outcome:decision] What was decided and why
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
3. **Record failures in the session-scoped failures file (`{sessionDir}/failures.md` if session is known, otherwise `.harness/failures.md`)** if any task was escalated after retry exhaustion (from Phase 2 Step 5). Include the approach attempted and why it failed, so future sessions avoid the same dead end.
|
|
271
|
+
|
|
272
|
+
4. **Write the session-scoped handoff (`{sessionDir}/handoff.json` if session is known, otherwise `.harness/handoff.json`)** with structured context for the next skill or session:
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"fromSkill": "harness-execution",
|
|
277
|
+
"timestamp": "YYYY-MM-DDTHH:MM:SSZ",
|
|
278
|
+
"summary": "Completed Tasks 1-3. Task 4 blocked on missing API endpoint.",
|
|
279
|
+
"pendingTasks": ["Task 4", "Task 5"],
|
|
280
|
+
"blockers": ["Task 4: /api/notifications endpoint not implemented"],
|
|
281
|
+
"learnings": ["Date comparison needs UTC normalization"]
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
5. **Write session summary.** Write/update the session summary for cold-start context restoration:
|
|
286
|
+
|
|
287
|
+
```json
|
|
288
|
+
writeSessionSummary(projectPath, sessionSlug, {
|
|
289
|
+
session: "<session-slug>",
|
|
290
|
+
lastActive: "<ISO timestamp>",
|
|
291
|
+
skill: "harness-execution",
|
|
292
|
+
phase: "<current phase of plan>",
|
|
293
|
+
status: "<e.g., Task 4/6 complete, paused at CHECKPOINT>",
|
|
294
|
+
spec: "<spec path if known>",
|
|
295
|
+
plan: "<plan path>",
|
|
296
|
+
keyContext: "<1-2 sentences: what was accomplished, key decisions made>",
|
|
297
|
+
nextStep: "<what to do next when resuming>"
|
|
298
|
+
})
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
This overwrites any previous summary for this session. The index.md is updated automatically.
|
|
302
|
+
|
|
303
|
+
6. **Sync roadmap (mandatory when present).** If `docs/roadmap.md` exists, call `manage_roadmap` with action `sync` and `apply: true` to update linked feature statuses from the just-completed execution state. Do not use `force_sync: true` — the human-always-wins rule applies. If `manage_roadmap` is unavailable, fall back to direct file manipulation using `syncRoadmap()` from core. If no roadmap exists, skip silently.
|
|
304
|
+
|
|
305
|
+
7. **Learnings are append-only.** Never edit or delete previous learnings. They are a chronological record.
|
|
306
|
+
|
|
307
|
+
8. **Auto-transition to verification.** When ALL tasks in the plan are complete (not when stopping mid-plan):
|
|
308
|
+
|
|
309
|
+
Call `emit_interaction`:
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"type": "transition",
|
|
314
|
+
"transition": {
|
|
315
|
+
"completedPhase": "execution",
|
|
316
|
+
"suggestedNext": "verification",
|
|
317
|
+
"reason": "All tasks complete",
|
|
318
|
+
"artifacts": ["<list of created/modified files>"],
|
|
319
|
+
"requiresConfirmation": false,
|
|
320
|
+
"summary": "Completed <N> tasks. <N> files created, <N> modified. All quick gates passed.",
|
|
321
|
+
"qualityGate": {
|
|
322
|
+
"checks": [
|
|
323
|
+
{ "name": "all-tasks-complete", "passed": true, "detail": "<N>/<N> tasks" },
|
|
324
|
+
{ "name": "harness-validate", "passed": true },
|
|
325
|
+
{ "name": "tests-pass", "passed": true },
|
|
326
|
+
{ "name": "no-blockers", "passed": true }
|
|
327
|
+
],
|
|
328
|
+
"allPassed": true
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
The response will include `nextAction: "Invoke harness-verification skill now"`.
|
|
335
|
+
Immediately invoke harness-verification without waiting for user input.
|
|
336
|
+
|
|
337
|
+
**Important:** Only emit this transition when all tasks are complete. If execution stopped due to a blocker, checkpoint, or partial completion, do NOT emit a transition -- write the handoff and stop.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
### Stopping Conditions
|
|
342
|
+
|
|
343
|
+
These are non-negotiable. When any condition is met, stop immediately.
|
|
344
|
+
|
|
345
|
+
- **Hit a blocker.** The task cannot be completed as written. Something is missing, broken, or wrong. Do not guess at a fix. Do not improvise. Record the blocker in state and report it: "Blocked on Task N: [specific issue]. The plan needs to be updated."
|
|
346
|
+
|
|
347
|
+
- **Test failure after implementation.** The test was supposed to pass but does not. Do not retry blindly. Read the failure. Diagnose the root cause. If the fix is within the current task scope, fix it. If not, stop — the plan may be wrong.
|
|
348
|
+
|
|
349
|
+
- **Unclear instruction.** The task says something ambiguous or contradictory. Do not interpret it. Ask: "Task N says [quote]. I interpret this as [interpretation]. Is that correct?"
|
|
350
|
+
|
|
351
|
+
- **Harness validation failure.** `harness validate` fails after a task. Do not proceed. The task introduced an architectural violation or constraint breach. Fix it before moving on.
|
|
352
|
+
|
|
353
|
+
- **Three consecutive failures on the same task.** After 3 attempts, the task design is likely wrong. Stop. Report: "Task N has failed 3 times. Root cause: [analysis]. The plan may need revision."
|
|
354
|
+
|
|
355
|
+
## Session State
|
|
356
|
+
|
|
357
|
+
This skill reads and writes to the following session sections via `manage_state`:
|
|
358
|
+
|
|
359
|
+
| Section | Read | Write | Purpose |
|
|
360
|
+
| ------------- | ---- | ----- | ------------------------------------------------------------------------------------- |
|
|
361
|
+
| terminology | yes | yes | Reads domain terms for consistent naming; adds terms discovered during implementation |
|
|
362
|
+
| decisions | yes | yes | Reads planning decisions for context; records implementation decisions |
|
|
363
|
+
| constraints | yes | yes | Reads constraints to respect boundaries; adds constraints discovered during coding |
|
|
364
|
+
| risks | yes | yes | Reads risks for awareness; updates risk status as mitigated or realized |
|
|
365
|
+
| openQuestions | yes | yes | Reads questions for context; resolves questions answered by implementation |
|
|
366
|
+
| evidence | yes | yes | Reads prior evidence; writes file:line citations, test outputs, and diff references |
|
|
367
|
+
|
|
368
|
+
**When to write:** After each task completion, append relevant entries. Evidence entries should be written for every significant technical assertion (test result, file reference, performance measurement). Mark openQuestions as resolved when implementation answers them.
|
|
369
|
+
|
|
370
|
+
**When to read:** During Phase 1 (PREPARE), read all sections via `gather_context` with `include: ["sessions"]` to inherit full accumulated context from brainstorming and planning.
|
|
371
|
+
|
|
372
|
+
## Evidence Requirements
|
|
373
|
+
|
|
374
|
+
When this skill makes claims about task completion, test results, or code behavior, it MUST cite evidence using one of:
|
|
375
|
+
|
|
376
|
+
1. **File reference:** `file:line` format (e.g., `src/services/notification-service.ts:42` -- "create method implemented with validation")
|
|
377
|
+
2. **Test output:** Include the actual test command and its output:
|
|
378
|
+
```
|
|
379
|
+
$ npx vitest run src/services/notification-service.test.ts
|
|
380
|
+
PASS src/services/notification-service.test.ts (8 tests)
|
|
381
|
+
```
|
|
382
|
+
3. **Diff evidence:** Before/after with file path for modifications to existing files
|
|
383
|
+
4. **Harness output:** Include `harness validate` output as evidence of project health
|
|
384
|
+
5. **Session evidence:** Write to the `evidence` session section after each task:
|
|
385
|
+
```json
|
|
386
|
+
manage_state({
|
|
387
|
+
action: "append_entry",
|
|
388
|
+
session: "<current-session>",
|
|
389
|
+
section: "evidence",
|
|
390
|
+
authorSkill: "harness-execution",
|
|
391
|
+
content: "src/services/notification-service.ts:42 -- create method returns Notification with all required fields"
|
|
392
|
+
})
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
**When to cite:** After every task completion in Phase 2 (EXECUTE). Every commit message claim ("added X", "fixed Y") must be backed by test output or file reference. During Phase 4 (PERSIST) when writing learnings that reference specific code behavior.
|
|
396
|
+
|
|
397
|
+
**Uncited claims:** Technical assertions without citations MUST be prefixed with `[UNVERIFIED]`. Example: `[UNVERIFIED] The notification service handles duplicate entries`. Uncited claims are flagged during review (Wave 2.2).
|
|
398
|
+
|
|
399
|
+
## Harness Integration
|
|
400
|
+
|
|
401
|
+
- **`harness validate`** — Run after every task completion. Mandatory. No task is complete without a passing validation.
|
|
402
|
+
- **`gather_context`** — Used in PREPARE phase to load state, learnings, handoff, and validation in a single call instead of 4+ separate reads.
|
|
403
|
+
- **`harness check-deps`** — Run when tasks add new imports or modules. Catches boundary violations early.
|
|
404
|
+
- **`harness state show`** — View current execution position and progress.
|
|
405
|
+
- **`harness state learn "<message>"`** — Append a learning from the command line.
|
|
406
|
+
- **State file** — Session-scoped at `{sessionDir}/state.json` when session is known, otherwise `.harness/state.json`. Read at session start to resume position. Updated after every task.
|
|
407
|
+
- **Learnings file** — Session-scoped at `{sessionDir}/learnings.md` when session is known, otherwise `.harness/learnings.md`. Append-only knowledge capture. Read at session start for prior context.
|
|
408
|
+
- **Roadmap sync** — After completing plan execution, call `manage_roadmap` with action `sync` and `apply: true` to update roadmap status. Mandatory when `docs/roadmap.md` exists. Do not use `force_sync: true`. Falls back to `syncRoadmap()` from core if MCP tool is unavailable.
|
|
409
|
+
- **`emit_interaction`** -- Call at plan completion to auto-transition to harness-verification. Uses auto-transition (proceeds immediately without user confirmation).
|
|
410
|
+
|
|
411
|
+
## Success Criteria
|
|
412
|
+
|
|
413
|
+
- Every task in the plan is executed in order, atomically, with one commit per task
|
|
414
|
+
- `.harness/state.json` accurately reflects current position and progress
|
|
415
|
+
- `.harness/learnings.md` contains entries for every session with non-trivial discoveries
|
|
416
|
+
- `harness validate` passes after every task
|
|
417
|
+
- Checkpoints were honored: execution paused at every `[checkpoint:*]` marker
|
|
418
|
+
- No improvisation: tasks were executed as written, or execution was stopped and the blocker was reported
|
|
419
|
+
- All stopping conditions were respected (no guessing past blockers, no blind retries)
|
|
420
|
+
|
|
421
|
+
## Examples
|
|
422
|
+
|
|
423
|
+
### Example: Executing a 5-Task Notification Plan
|
|
424
|
+
|
|
425
|
+
**Session Start (fresh):**
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
Read plan: docs/plans/2026-03-14-notifications-plan.md (5 tasks)
|
|
429
|
+
Read state: .harness/state.json — file not found (fresh start, position: Task 1)
|
|
430
|
+
Read learnings: .harness/learnings.md — file not found (no prior context)
|
|
431
|
+
Run: harness validate — passes. Clean baseline confirmed.
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Task 1: Define notification types**
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
1. Create src/types/notification.ts with Notification interface
|
|
438
|
+
2. Run: harness validate — passes
|
|
439
|
+
3. Commit: "feat(notifications): define Notification type"
|
|
440
|
+
4. Update state: { position: Task 2, progress: { "Task 1": "complete" } }
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**Task 2: Create notification service (TDD)**
|
|
444
|
+
|
|
445
|
+
```
|
|
446
|
+
1. Write test: src/services/notification-service.test.ts
|
|
447
|
+
2. Run test: FAIL — NotificationService is not defined (correct failure)
|
|
448
|
+
3. Implement: src/services/notification-service.ts
|
|
449
|
+
4. Run test: PASS
|
|
450
|
+
5. Run: harness validate — passes
|
|
451
|
+
6. Commit: "feat(notifications): add NotificationService.create"
|
|
452
|
+
7. Update state: { position: Task 3, progress: { "Task 1": "complete", "Task 2": "complete" } }
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**Task 3: Add list and expiry (TDD) — has checkpoint**
|
|
456
|
+
|
|
457
|
+
```
|
|
458
|
+
[checkpoint:human-verify] — "Tasks 1-2 complete. NotificationService can create
|
|
459
|
+
notifications. Tests pass. Continue to Task 3 (list and expiry methods)?"
|
|
460
|
+
Human: "Continue."
|
|
461
|
+
|
|
462
|
+
1. Write tests: list by userId, filter expired
|
|
463
|
+
2. Run tests: FAIL (methods not implemented)
|
|
464
|
+
3. Implement list() and isExpired()
|
|
465
|
+
4. Run tests: PASS
|
|
466
|
+
5. Run: harness validate — passes
|
|
467
|
+
6. Commit: "feat(notifications): add list and expiry to NotificationService"
|
|
468
|
+
7. Update state, append learning:
|
|
469
|
+
"## 2026-03-14 — Task 3: list and expiry
|
|
470
|
+
- [gotcha]: Date comparison needed UTC normalization — used Date.now() not new Date()"
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
**Context reset mid-plan (resume at Task 4):**
|
|
474
|
+
|
|
475
|
+
```
|
|
476
|
+
Read plan: docs/plans/2026-03-14-notifications-plan.md
|
|
477
|
+
Read state: .harness/state.json — position: Task 4, Tasks 1-3 complete
|
|
478
|
+
Read learnings: .harness/learnings.md — "Date comparison needed UTC normalization"
|
|
479
|
+
Run: harness validate — passes. Resume from Task 4.
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
## Gates
|
|
483
|
+
|
|
484
|
+
These are hard stops. Violating any gate means the process has broken down.
|
|
485
|
+
|
|
486
|
+
- **No execution without a plan.** If no plan document exists, do not start. Use harness-planning to create one.
|
|
487
|
+
- **No improvisation.** Execute the plan as written. If the plan says "create file X with code Y," create file X with code Y. Do not add "improvements" or "optimizations" that are not in the plan.
|
|
488
|
+
- **No skipping tasks.** Tasks are ordered by dependency. Skipping a task means later tasks may fail. Execute in order.
|
|
489
|
+
- **No skipping validation.** `harness validate` runs after every task. No exceptions. A task that passes its tests but fails validation is not complete.
|
|
490
|
+
- **No ignoring checkpoints.** If a task has a `[checkpoint:*]` marker, execution must pause. Do not auto-continue past checkpoints.
|
|
491
|
+
- **No guessing past blockers.** If a task cannot be completed as written, stop. Report the blocker. Do not invent a workaround.
|
|
492
|
+
- **State must be updated.** After every task, `.harness/state.json` must reflect the new position. Skipping state updates makes resume impossible.
|
|
493
|
+
|
|
494
|
+
## Escalation
|
|
495
|
+
|
|
496
|
+
- **When a task fails and the fix is outside task scope:** Report: "Task N failed because [reason]. The fix requires changes to [files/tasks outside scope]. The plan needs to be updated at Tasks [X, Y] before I can continue."
|
|
497
|
+
- **When the plan references files that do not exist:** The plan is out of date or was written against a different branch. Report: "Task N references [file] which does not exist. Plan may need regeneration."
|
|
498
|
+
- **When tests pass but behavior seems wrong:** Do not ignore your instinct, but also do not act on it unilaterally. Report: "Task N passes all tests, but I notice [observation]. Should I investigate before proceeding?"
|
|
499
|
+
- **When state is corrupted or inconsistent:** If `.harness/state.json` says Task 5 is complete but the code for Task 5 does not exist, the state is wrong. Report the inconsistency. Do not trust corrupted state — re-verify from Task 1 if needed.
|
|
500
|
+
- **When the human wants to skip ahead:** Explain the risk: "Skipping Task N means Tasks [X, Y] that depend on it may fail. If you want to skip, we should update the plan to remove the dependency." Get explicit approval before skipping.
|
|
501
|
+
|
|
502
|
+
## Trace Output (Optional)
|
|
503
|
+
|
|
504
|
+
When `.harness/gate.json` has `"trace": true` or `--verbose` is passed, append one-sentence reasoning at each phase boundary to `.harness/trace.md`.
|
|
505
|
+
|
|
506
|
+
**Format:** `**[PHASE HH:MM:SS]** summary`
|
|
507
|
+
|
|
508
|
+
Example:
|
|
509
|
+
|
|
510
|
+
```markdown
|
|
511
|
+
**[PREPARE 14:32:07]** Loaded plan with 5 tasks, resuming from Task 3 per state.json.
|
|
512
|
+
**[EXECUTE 14:32:15]** Task 3 committed; mechanical gate passed on first attempt.
|
|
513
|
+
**[VERIFY 14:35:42]** Deep audit requested at milestone; all 3 levels passed.
|
|
514
|
+
**[PERSIST 14:35:50]** State updated, handoff.json written with 2 pending tasks.
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
This is for human debugging only. Not required for normal execution.
|
|
518
|
+
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Identify structural risk hotspots via co-change and churn analysis
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Generated by harness generate-slash-commands. Do not edit. -->
|
|
7
|
+
|
|
8
|
+
# Harness Hotspot Detector
|
|
9
|
+
|
|
10
|
+
> Identify modules that represent structural risk via co-change and churn analysis.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- Weekly scheduled analysis to track codebase risk
|
|
15
|
+
- Before major refactoring — find the riskiest areas
|
|
16
|
+
- When investigating why changes keep breaking unrelated features
|
|
17
|
+
- NOT for finding dead code (use cleanup-dead-code)
|
|
18
|
+
- NOT for checking architecture rules (use enforce-architecture)
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
A knowledge graph at `.harness/graph/` with git history enables full analysis. If no graph exists,
|
|
23
|
+
the skill uses static analysis fallbacks (see Graph Availability section).
|
|
24
|
+
Run `harness scan` to enable graph-enhanced analysis.
|
|
25
|
+
|
|
26
|
+
### Graph Availability
|
|
27
|
+
|
|
28
|
+
Before starting, check if `.harness/graph/graph.json` exists.
|
|
29
|
+
|
|
30
|
+
**If graph exists:** Use graph tools as primary strategy. (Staleness sensitivity: **Low** — never auto-refresh.
|
|
31
|
+
Git-based churn data in the graph remains useful even when slightly stale.)
|
|
32
|
+
|
|
33
|
+
**If graph exists and is fresh (or refreshed):** Use graph tools as primary strategy.
|
|
34
|
+
|
|
35
|
+
**If no graph exists:** Output "Running without graph (run `harness scan` to
|
|
36
|
+
enable full analysis)" and use fallback strategies for all subsequent steps.
|
|
37
|
+
|
|
38
|
+
## Process
|
|
39
|
+
|
|
40
|
+
### Phase 1: CO-CHANGE — Analyze Co-Change Patterns
|
|
41
|
+
|
|
42
|
+
Query the graph for `co_changes_with` edges (created by GitIngestor):
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
query_graph(rootNodeIds=[all file nodes], includeEdges=["co_changes_with"])
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Identify file pairs that frequently change together:
|
|
49
|
+
|
|
50
|
+
- **Co-located pairs** (same directory): Normal — they share a concern.
|
|
51
|
+
- **Distant pairs** (different modules): Suspicious — may indicate hidden coupling.
|
|
52
|
+
|
|
53
|
+
Flag distant co-change pairs as potential hotspots.
|
|
54
|
+
|
|
55
|
+
### Phase 2: CHURN — Identify High-Churn Files
|
|
56
|
+
|
|
57
|
+
Query commit nodes to find files with the highest change frequency:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
query_graph(rootNodeIds=[commit nodes], includeTypes=["commit", "file"], includeEdges=["co_changes_with"])
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Rank files by:
|
|
64
|
+
|
|
65
|
+
- Total commit count touching the file
|
|
66
|
+
- Recent velocity (commits in last 30 days vs prior 30 days)
|
|
67
|
+
- Change size (total lines added + deleted)
|
|
68
|
+
|
|
69
|
+
High churn in shared utilities or core modules = high risk.
|
|
70
|
+
|
|
71
|
+
#### Fallback (without graph)
|
|
72
|
+
|
|
73
|
+
When no graph is available, git log provides nearly all the data needed (~90% completeness):
|
|
74
|
+
|
|
75
|
+
1. **Per-file churn**: `git log --format="%H" -- <file>` for each source file (use glob to enumerate). Count commits per file. Sort descending to rank by churn.
|
|
76
|
+
2. **Recent velocity**: `git log --since="30 days ago" --format="%H" -- <file>` vs `git log --since="60 days ago" --until="30 days ago" --format="%H" -- <file>` to compare recent vs prior 30-day windows.
|
|
77
|
+
3. **Co-change detection**: `git log --format="%H %n" --name-only` to build a map of which files changed together in the same commit. File pairs that appear together in >3 commits are co-change candidates.
|
|
78
|
+
4. **Distant co-change identification**: For co-change pairs, check if they share a parent directory (co-located = normal) or are in different modules (distant = suspicious).
|
|
79
|
+
5. **Complexity proxy**: Use line count (`wc -l`) as a rough proxy for complexity when graph complexity metrics are unavailable.
|
|
80
|
+
6. **Hidden dependency detection**: Cross-reference co-change pairs against import parsing (grep for import statements). Co-change pairs with no import relationship indicate hidden dependencies.
|
|
81
|
+
|
|
82
|
+
> Fallback completeness: ~90% — git log provides nearly all the data the graph stores for this use case.
|
|
83
|
+
|
|
84
|
+
### Phase 3: COUPLING — Detect Hidden Dependencies
|
|
85
|
+
|
|
86
|
+
Cross-reference co-change data with structural data:
|
|
87
|
+
|
|
88
|
+
1. **High logical coupling, low structural coupling**: Files that always change together but have no `imports` edge between them. This indicates a hidden dependency — changing one requires changing the other, but the code doesn't express this relationship.
|
|
89
|
+
|
|
90
|
+
2. **High structural coupling, low logical coupling**: Files with `imports` edges but that rarely change together. This may indicate over-coupling — the import exists but the relationship is weak.
|
|
91
|
+
|
|
92
|
+
Use `get_relationships` to check structural edges between co-change pairs.
|
|
93
|
+
|
|
94
|
+
### Phase 4: REPORT — Generate Ranked Hotspot Report
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
## Hotspot Analysis Report
|
|
98
|
+
|
|
99
|
+
### Risk Hotspots (ranked by risk score)
|
|
100
|
+
|
|
101
|
+
1. **src/services/billing.ts** — Risk: HIGH
|
|
102
|
+
- Churn: 23 commits (last 30 days: 8)
|
|
103
|
+
- Co-changes with: src/types/invoice.ts (distant, 15 co-changes)
|
|
104
|
+
- Hidden dependency: no imports edge to invoice.ts
|
|
105
|
+
- Recommendation: Extract shared billing types or add explicit dependency
|
|
106
|
+
|
|
107
|
+
2. **src/utils/helpers.ts** — Risk: HIGH
|
|
108
|
+
- Churn: 45 commits (highest in codebase)
|
|
109
|
+
- Co-changes with: 12 different files across 4 modules
|
|
110
|
+
- Recommendation: Split into domain-specific utilities to reduce blast radius
|
|
111
|
+
|
|
112
|
+
3. **src/middleware/auth.ts** — Risk: MEDIUM
|
|
113
|
+
- Churn: 15 commits
|
|
114
|
+
- Co-changes with: src/routes/login.ts (co-located, expected)
|
|
115
|
+
- No hidden dependencies detected
|
|
116
|
+
|
|
117
|
+
### Summary
|
|
118
|
+
- Total hotspots detected: 5
|
|
119
|
+
- High risk: 2
|
|
120
|
+
- Medium risk: 3
|
|
121
|
+
- Hidden dependencies: 1
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Harness Integration
|
|
125
|
+
|
|
126
|
+
- **`harness scan`** — Recommended before this skill for full graph-enhanced analysis. If graph is missing, skill uses git log fallbacks.
|
|
127
|
+
- **`harness validate`** — Run after acting on findings to verify project health.
|
|
128
|
+
- **Graph tools** — This skill uses `query_graph`, `get_impact`, and `get_relationships` MCP tools.
|
|
129
|
+
|
|
130
|
+
## Success Criteria
|
|
131
|
+
|
|
132
|
+
- Hotspots ranked by composite risk score (churn + coupling)
|
|
133
|
+
- Hidden dependencies identified (high co-change, no structural edge)
|
|
134
|
+
- Co-change patterns detected and classified (co-located vs distant)
|
|
135
|
+
- Report follows the structured output format
|
|
136
|
+
- All findings are backed by graph query evidence (with graph) or git log analysis (without graph)
|
|
137
|
+
|
|
138
|
+
## Examples
|
|
139
|
+
|
|
140
|
+
### Example: Detecting Hotspots in a Growing Codebase
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Input: Scheduled weekly analysis on project root
|
|
144
|
+
|
|
145
|
+
1. CO-CHANGE — query_graph for co_changes_with edges
|
|
146
|
+
Found 4 distant co-change pairs
|
|
147
|
+
2. CHURN — Ranked files by commit frequency
|
|
148
|
+
billing.ts: 23 commits, helpers.ts: 45 commits
|
|
149
|
+
3. COUPLING — Cross-referenced co-change vs imports edges
|
|
150
|
+
billing.ts <-> invoice.ts: 15 co-changes, no imports edge
|
|
151
|
+
(hidden dependency detected)
|
|
152
|
+
4. REPORT — Ranked hotspots by risk score
|
|
153
|
+
|
|
154
|
+
Output:
|
|
155
|
+
Hotspots: 5 total (2 high, 3 medium)
|
|
156
|
+
Hidden dependencies: 1 (billing.ts <-> invoice.ts)
|
|
157
|
+
Top recommendation: Extract shared billing types
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Gates
|
|
161
|
+
|
|
162
|
+
- **Graph preferred, fallback available.** If no graph exists, use git log for churn and co-change analysis. Do not stop — git log provides ~90% of the data needed.
|
|
163
|
+
- **Systematic analysis required.** Use graph `co_changes_with` edges when available; use `git log` commit analysis when not. Do not guess — parse actual git history.
|
|
164
|
+
|
|
165
|
+
## Escalation
|
|
166
|
+
|
|
167
|
+
- **When hidden dependencies found**: Recommend making the dependency explicit (add import) or extracting shared code.
|
|
168
|
+
- **When a single file has >30 commits**: Flag as critical hotspot requiring architectural attention.
|
|
169
|
+
|