@harness-engineering/cli 1.15.0 → 1.17.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 +123 -14
- package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +6 -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-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/claude-code/harness-roadmap-pilot/skill.yaml +52 -0
- 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-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/codex/harness-roadmap-pilot/skill.yaml +52 -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-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/cursor/harness-roadmap-pilot/skill.yaml +52 -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 +123 -14
- package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +6 -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-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/skill.yaml +52 -0
- 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 +5 -5
- package/dist/agents/skills/templates/discipline-template.md +49 -0
- package/dist/agents/skills/tests/schema.ts +1 -1
- package/dist/{agents-md-ZGNIDWAF.js → agents-md-DUYNKHJZ.js} +1 -1
- package/dist/{architecture-ZLIH5533.js → architecture-UBO5KKUV.js} +2 -2
- package/dist/bin/harness-mcp.js +14 -14
- package/dist/bin/harness.js +20 -20
- package/dist/{check-phase-gate-ZOXVBDCN.js → check-phase-gate-OSHN2AEL.js} +3 -3
- package/dist/{chunk-NNHDDXYT.js → chunk-2DMIQ35P.js} +486 -132
- package/dist/{chunk-OFXQSFOW.js → chunk-5FM64G6D.js} +2 -2
- package/dist/{chunk-RCWZBSK5.js → chunk-6KWBH4EO.js} +1 -1
- package/dist/{chunk-LGYBN7Y6.js → chunk-ABQUCXRE.js} +2 -1
- package/dist/{chunk-VEPAJXBW.js → chunk-APNPXLB2.js} +4 -4
- package/dist/{chunk-ZOAWBDWU.js → chunk-CJDVBBPB.js} +5 -1
- package/dist/{chunk-FTMXDOR6.js → chunk-CZZXE6BL.js} +1 -1
- package/dist/{chunk-N25INEIX.js → chunk-GWXP3JVA.js} +3 -3
- package/dist/{chunk-XYLGHKG6.js → chunk-HKUX2X7O.js} +11 -2
- package/dist/{chunk-YBJ262QL.js → chunk-LRG3B43J.js} +1 -1
- package/dist/{chunk-AOZRDOIP.js → chunk-M6TIO6NF.js} +1 -1
- package/dist/{chunk-J4RAX7YB.js → chunk-OA3MOZGG.js} +1683 -507
- package/dist/{chunk-YLXFKVJE.js → chunk-OHZVGIPE.js} +9 -9
- package/dist/{chunk-2BKLWLY6.js → chunk-QSRRBNLY.js} +8 -8
- package/dist/{chunk-3ZZKVN62.js → chunk-TG7IUJ3J.js} +1 -1
- package/dist/{chunk-EDXIVMAP.js → chunk-TZIHFNEG.js} +20 -6
- package/dist/{chunk-ND2ENWDM.js → chunk-UX3JHYEA.js} +1 -1
- package/dist/{chunk-Z2OOPXJO.js → chunk-VF23UTNB.js} +1771 -164
- package/dist/{chunk-7MJAPE3Z.js → chunk-YLN34N65.js} +1 -0
- package/dist/{chunk-B2HKP423.js → chunk-ZA2I7S3E.js} +28 -1
- package/dist/{ci-workflow-765LSHRD.js → ci-workflow-FJZMNZPT.js} +1 -1
- package/dist/{create-skill-XSWHMSM5.js → create-skill-NDXQSTIK.js} +2 -2
- package/dist/{dist-ALQDD67R.js → dist-MF5BK5AD.js} +77 -1
- package/dist/{dist-B26DFXMP.js → dist-U7EAO6T2.js} +110 -60
- package/dist/{docs-NRMQCOJ6.js → docs-WZHW4N4P.js} +3 -3
- package/dist/{engine-3RB7MXPP.js → engine-VS6ZJ2VZ.js} +2 -2
- package/dist/{entropy-6AGX2ZUN.js → entropy-FCIGJIIT.js} +2 -2
- package/dist/{feedback-MY4QZIFD.js → feedback-O3FYTZIE.js} +1 -1
- package/dist/{generate-agent-definitions-ZAE726AU.js → generate-agent-definitions-EYG263XD.js} +3 -3
- package/dist/{graph-loader-2M2HXDQI.js → graph-loader-KMHDQYDT.js} +1 -1
- package/dist/index.d.ts +95 -15
- package/dist/index.js +20 -20
- package/dist/{loader-UUTVMQCC.js → loader-B4XWX4K6.js} +1 -1
- package/dist/{mcp-VU5FMO52.js → mcp-DVVUODN7.js} +14 -14
- package/dist/{performance-2D7G6NMJ.js → performance-NMJDV6HF.js} +4 -2
- package/dist/{review-pipeline-RAQ55ISU.js → review-pipeline-MSEJWTKM.js} +1 -1
- package/dist/{runtime-BCK5RRZQ.js → runtime-YHVLJNPG.js} +1 -1
- package/dist/{security-2RPQEN62.js → security-HTDKKGMX.js} +1 -1
- package/dist/{skill-executor-XZLYZYAK.js → skill-executor-XEVDGXUM.js} +2 -2
- package/dist/{validate-KBYQAEWE.js → validate-SPSTH2YW.js} +2 -2
- package/dist/{validate-cross-check-OABMREW4.js → validate-cross-check-YTDWIMFI.js} +1 -1
- package/package.json +20 -20
|
@@ -22,6 +22,21 @@ A plan with vague tasks like "add validation" or "implement the service" is not
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
+
### Rigor Levels
|
|
26
|
+
|
|
27
|
+
The `rigorLevel` is passed to the planner by autopilot (or set via `--fast`/`--thorough` flags in standalone invocation). Default is `standard`.
|
|
28
|
+
|
|
29
|
+
| Phase | `fast` | `standard` (default) | `thorough` |
|
|
30
|
+
| --------- | ---------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------- |
|
|
31
|
+
| SCOPE | No change — always derive observable truths. | No change. | No change. |
|
|
32
|
+
| DECOMPOSE | Skip skeleton pass. Produce full tasks directly after file map. | Skeleton if estimated task count >= 8. Full tasks if < 8. | Always produce skeleton. Require human approval before expanding to full tasks. |
|
|
33
|
+
| SEQUENCE | No change — always order by dependency. | No change. | No change. |
|
|
34
|
+
| VALIDATE | No change — always run harness validate and verify completeness. | No change. | No change. |
|
|
35
|
+
|
|
36
|
+
The skeleton pass is the primary rigor lever for planning. Fast mode trusts the direction and goes straight to full detail. Thorough mode always validates direction before investing tokens in full task expansion.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
25
40
|
### Phase 1: SCOPE — Derive Must-Haves from Goals
|
|
26
41
|
|
|
27
42
|
Work backward from the goal. Do not start with "what should we build?" Start with "what must be true when we are done?"
|
|
@@ -129,21 +144,63 @@ When presenting the task breakdown, use progress markers:
|
|
|
129
144
|
MODIFY src/api/routes/users.ts (add notification trigger)
|
|
130
145
|
```
|
|
131
146
|
|
|
132
|
-
2. **
|
|
147
|
+
2. **Skeleton pass (rigor-gated).** Before writing full task details, produce a lightweight skeleton that validates direction. The skeleton is ~200 tokens and catches structural errors before investing in full expansion.
|
|
148
|
+
|
|
149
|
+
**Gating logic:**
|
|
150
|
+
- `rigorLevel == "fast"`: Skip this step entirely. Proceed directly to full task decomposition.
|
|
151
|
+
- `rigorLevel == "standard"`: Estimate the task count from the file map. If >= 8 tasks, produce the skeleton and present for approval. If < 8 tasks, skip the skeleton and proceed to full decomposition.
|
|
152
|
+
- `rigorLevel == "thorough"`: Always produce the skeleton and require human approval before expanding.
|
|
153
|
+
|
|
154
|
+
**Skeleton format:**
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
## Skeleton
|
|
158
|
+
|
|
159
|
+
1. Foundation types and interfaces (~3 tasks, ~10 min)
|
|
160
|
+
2. Core scoring module with TDD (~2 tasks, ~8 min)
|
|
161
|
+
3. CLI integration and flag parsing (~4 tasks, ~15 min)
|
|
162
|
+
4. Integration tests and validation (~3 tasks, ~10 min)
|
|
163
|
+
|
|
164
|
+
**Estimated total:** 12 tasks, ~43 minutes
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Each line is a logical group of tasks with an estimated count and time. The skeleton does NOT contain file paths, code, or detailed instructions — those come in the expansion step.
|
|
168
|
+
|
|
169
|
+
**Approval gate:**
|
|
170
|
+
|
|
171
|
+
When the skeleton is produced, present it to the human:
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
emit_interaction({
|
|
175
|
+
path: "<project-root>",
|
|
176
|
+
type: "confirmation",
|
|
177
|
+
confirmation: {
|
|
178
|
+
text: "Approve skeleton direction?",
|
|
179
|
+
context: "<estimated task count> tasks across <group count> groups. <one-sentence summary of approach>",
|
|
180
|
+
impact: "Approving proceeds to full task expansion. Rejecting allows direction change before detail investment.",
|
|
181
|
+
risk: "low"
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- **If approved:** Proceed to full task decomposition (step 3).
|
|
187
|
+
- **If rejected:** Ask what should change. Revise the skeleton. Re-present for approval. Do not expand until approved.
|
|
188
|
+
|
|
189
|
+
3. **Decompose into atomic tasks.** Each task must:
|
|
133
190
|
- Be completable in 2-5 minutes
|
|
134
191
|
- Fit in a single context window
|
|
135
192
|
- Have a clear, testable outcome
|
|
136
193
|
- Follow TDD: write test, fail, implement, pass, commit
|
|
137
194
|
- Produce one atomic commit
|
|
138
195
|
|
|
139
|
-
|
|
196
|
+
4. **Write complete instructions for each task.** Not summaries — complete executable instructions:
|
|
140
197
|
- **Exact file paths** to create or modify
|
|
141
198
|
- **Exact code** to write (not "add validation logic" — write the actual validation code)
|
|
142
199
|
- **Exact test commands** to run (e.g., `npx vitest run src/services/notification-service.test.ts`)
|
|
143
200
|
- **Exact commit message** to use
|
|
144
201
|
- **`harness validate`** as the final step
|
|
145
202
|
|
|
146
|
-
|
|
203
|
+
5. **Include checkpoints.** Mark tasks that require human verification, decisions, or actions:
|
|
147
204
|
- `[checkpoint:human-verify]` — Pause, show result, wait for confirmation
|
|
148
205
|
- `[checkpoint:decision]` — Pause, present options, wait for choice
|
|
149
206
|
- `[checkpoint:human-action]` — Pause, instruct human on what they need to do
|
|
@@ -281,6 +338,15 @@ One sentence.
|
|
|
281
338
|
- CREATE path/to/file.ts
|
|
282
339
|
- MODIFY path/to/other-file.ts
|
|
283
340
|
|
|
341
|
+
## Skeleton (if produced)
|
|
342
|
+
|
|
343
|
+
1. <group name> (~N tasks, ~N min)
|
|
344
|
+
2. <group name> (~N tasks, ~N min)
|
|
345
|
+
|
|
346
|
+
**Estimated total:** N tasks, ~N minutes
|
|
347
|
+
|
|
348
|
+
_Skeleton approved: yes/no. If no, note the revision._
|
|
349
|
+
|
|
284
350
|
## Tasks
|
|
285
351
|
|
|
286
352
|
### Task 1: <descriptive name>
|
|
@@ -359,6 +425,8 @@ When this skill makes claims about existing code structure, file locations, or i
|
|
|
359
425
|
- **Handoff to harness-execution** — Once the plan is approved, invoke harness-execution to begin task-by-task implementation.
|
|
360
426
|
- **Task commands** — Every task includes exact harness CLI commands to run (e.g., `harness validate`, `harness check-deps`).
|
|
361
427
|
- **`emit_interaction`** -- Call at the end of Phase 4 to suggest transitioning to harness-execution. Uses confirmed transition (waits for user approval).
|
|
428
|
+
- **Rigor levels** — `--fast` / `--thorough` flags control the skeleton pass in DECOMPOSE. Fast skips skeleton entirely. Standard produces skeleton for plans with >= 8 tasks. Thorough always produces skeleton and requires approval. See the Rigor Levels table for details.
|
|
429
|
+
- **Two-pass planning** — Skeleton pass produces a ~200-token outline before full task expansion. Catches directional errors early. Gated by rigor level and estimated task count.
|
|
362
430
|
|
|
363
431
|
## Change Specifications
|
|
364
432
|
|
|
@@ -394,6 +462,11 @@ When `docs/changes/` exists in the project, produce `docs/changes/<feature>/delt
|
|
|
394
462
|
- `harness validate` passes before the plan is written
|
|
395
463
|
- `harness validate` is included as a step in every task
|
|
396
464
|
- The human has reviewed and approved the plan
|
|
465
|
+
- When `rigorLevel` is `fast`, the skeleton pass is skipped and full tasks are produced directly
|
|
466
|
+
- When `rigorLevel` is `thorough`, a skeleton is always produced and requires human approval before expansion
|
|
467
|
+
- When `rigorLevel` is `standard` and task count >= 8, a skeleton is produced for approval
|
|
468
|
+
- When `rigorLevel` is `standard` and task count < 8, the skeleton is skipped
|
|
469
|
+
- The skeleton format is lightweight (~200 tokens): numbered groups with task count and time estimates
|
|
397
470
|
|
|
398
471
|
## Examples
|
|
399
472
|
|
|
@@ -420,6 +493,10 @@ MODIFY src/api/routes/users.ts
|
|
|
420
493
|
MODIFY src/api/routes/users.test.ts
|
|
421
494
|
```
|
|
422
495
|
|
|
496
|
+
**Skeleton (standard mode, 6 tasks — skeleton skipped because < 8 tasks)**
|
|
497
|
+
|
|
498
|
+
_Skeleton not produced — task count (6) below threshold (8)._
|
|
499
|
+
|
|
423
500
|
**Task 1: Define notification types**
|
|
424
501
|
|
|
425
502
|
```
|
|
@@ -463,6 +540,25 @@ Files: src/services/notification-service.ts, src/services/notification-service.t
|
|
|
463
540
|
6. Commit: "feat(notifications): add list and expiry to NotificationService"
|
|
464
541
|
```
|
|
465
542
|
|
|
543
|
+
### Example: Planning with Skeleton (thorough mode)
|
|
544
|
+
|
|
545
|
+
**Goal:** Add rate limiting to all API endpoints.
|
|
546
|
+
|
|
547
|
+
**Skeleton (thorough mode — always produced):**
|
|
548
|
+
|
|
549
|
+
```
|
|
550
|
+
## Skeleton
|
|
551
|
+
|
|
552
|
+
1. Rate limit types and configuration (~2 tasks, ~7 min)
|
|
553
|
+
2. Rate limit middleware with Redis backend (~3 tasks, ~12 min)
|
|
554
|
+
3. Route integration and per-endpoint config (~4 tasks, ~15 min)
|
|
555
|
+
4. Integration tests and load verification (~3 tasks, ~10 min)
|
|
556
|
+
|
|
557
|
+
**Estimated total:** 12 tasks, ~44 minutes
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
_Presented for approval. User approved. Expanded to full tasks._
|
|
561
|
+
|
|
466
562
|
## Gates
|
|
467
563
|
|
|
468
564
|
These are hard stops. Violating any gate means the process has broken down.
|
|
@@ -22,6 +22,12 @@ cli:
|
|
|
22
22
|
- name: path
|
|
23
23
|
description: Project root path
|
|
24
24
|
required: false
|
|
25
|
+
- name: fast
|
|
26
|
+
description: Skip skeleton pass — produce full plan directly
|
|
27
|
+
required: false
|
|
28
|
+
- name: thorough
|
|
29
|
+
description: Always produce skeleton for approval before full expansion
|
|
30
|
+
required: false
|
|
25
31
|
mcp:
|
|
26
32
|
tool: run_skill
|
|
27
33
|
input:
|
|
@@ -150,7 +150,7 @@ Run the built-in security scanner against staged files. This is a mechanical che
|
|
|
150
150
|
git diff --cached --name-only --diff-filter=d | grep -E '\.(ts|tsx|js|jsx|go|py)$'
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
Run `harness check-security --changed-only` on the staged files. Report any findings:
|
|
154
154
|
|
|
155
155
|
- **Error findings (blocking):** Hardcoded secrets, eval/injection, weak crypto — these block the commit just like lint failures.
|
|
156
156
|
- **Warning/info findings (advisory):** CORS wildcards, HTTP URLs, disabled TLS — reported but do not block.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Harness Roadmap Pilot
|
|
2
|
+
|
|
3
|
+
> AI-assisted selection of the next highest-impact unblocked roadmap item. Scores candidates, recommends one, assigns it, and transitions to the appropriate next skill.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- When the team or individual needs to pick the next item to work on from the roadmap
|
|
8
|
+
- When there are multiple unblocked items and prioritization guidance is needed
|
|
9
|
+
- After completing a feature and looking for the next highest-impact work
|
|
10
|
+
- NOT when the roadmap does not exist (direct user to harness-roadmap --create)
|
|
11
|
+
- NOT when the user already knows what to work on (use harness-brainstorming or harness-autopilot directly)
|
|
12
|
+
|
|
13
|
+
## Process
|
|
14
|
+
|
|
15
|
+
### Iron Law
|
|
16
|
+
|
|
17
|
+
**Never assign or transition without the human confirming the recommendation first.**
|
|
18
|
+
|
|
19
|
+
Present the ranked candidates, the AI reasoning, and the recommended pick. Wait for explicit confirmation before making any changes.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### Phase 1: SCAN -- Score Candidates
|
|
24
|
+
|
|
25
|
+
1. Check if `docs/roadmap.md` exists.
|
|
26
|
+
- If missing: error. "No roadmap found at docs/roadmap.md. Run harness-roadmap --create first."
|
|
27
|
+
2. Parse the roadmap using `parseRoadmap` from `@harness-engineering/core`.
|
|
28
|
+
3. Determine the current user:
|
|
29
|
+
- Use the `--user` argument if provided
|
|
30
|
+
- Otherwise, attempt to detect from git config: `git config user.name` or `git config user.email`
|
|
31
|
+
- If neither available, proceed without affinity scoring
|
|
32
|
+
4. Call `scoreRoadmapCandidates(roadmap, { currentUser })` from `@harness-engineering/core`.
|
|
33
|
+
5. If no candidates: inform the human. "No unblocked planned or backlog items found. All items are either in-progress, done, blocked, or the roadmap is empty."
|
|
34
|
+
|
|
35
|
+
Present the top 5 candidates:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
ROADMAP PILOT -- Candidate Scoring
|
|
39
|
+
|
|
40
|
+
Top candidates (scored by position 50%, dependents 30%, affinity 20%):
|
|
41
|
+
|
|
42
|
+
# Feature Milestone Priority Score Breakdown
|
|
43
|
+
1. Feature A MVP Release P0 0.85 pos:0.9 dep:0.8 aff:1.0
|
|
44
|
+
2. Feature B MVP Release P1 0.72 pos:0.8 dep:0.6 aff:0.5
|
|
45
|
+
3. Feature C Q2 Release -- 0.65 pos:0.7 dep:0.5 aff:0.0
|
|
46
|
+
4. Feature D Backlog -- 0.40 pos:0.3 dep:0.4 aff:0.0
|
|
47
|
+
5. Feature E Backlog -- 0.35 pos:0.2 dep:0.3 aff:0.0
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Phase 2: RECOMMEND -- AI-Assisted Analysis
|
|
51
|
+
|
|
52
|
+
1. For the top 3 candidates, read their spec files (if they exist):
|
|
53
|
+
- Read the spec's Overview and Goals section
|
|
54
|
+
- Read the spec's Success Criteria section
|
|
55
|
+
- Assess effort and impact from the spec content
|
|
56
|
+
|
|
57
|
+
2. Provide a recommendation with reasoning:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
RECOMMENDATION
|
|
61
|
+
|
|
62
|
+
I recommend Feature A (MVP Release, P0, score: 0.85).
|
|
63
|
+
|
|
64
|
+
Reasoning:
|
|
65
|
+
- Highest priority (P0) with strong positional signal (first in MVP milestone)
|
|
66
|
+
- Unblocks 2 downstream features (Feature X, Feature Y)
|
|
67
|
+
- You completed its blocker "Foundation" -- high context affinity
|
|
68
|
+
- Spec exists with clear success criteria (12 acceptance tests)
|
|
69
|
+
- Estimated effort: medium (8 tasks in the plan)
|
|
70
|
+
|
|
71
|
+
Alternative: Feature B (P1, score: 0.72) -- consider if Feature A's scope is too large for the current time window.
|
|
72
|
+
|
|
73
|
+
Proceed with Feature A? (y/n/pick another)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Phase 3: CONFIRM -- Human Decision
|
|
77
|
+
|
|
78
|
+
1. Wait for human confirmation.
|
|
79
|
+
- If **yes**: proceed to Phase 4.
|
|
80
|
+
- If **pick another**: ask which candidate number, then proceed with that pick.
|
|
81
|
+
- If **no**: stop. No changes made.
|
|
82
|
+
|
|
83
|
+
### Phase 4: ASSIGN -- Execute Assignment and Transition
|
|
84
|
+
|
|
85
|
+
1. Call `assignFeature(roadmap, feature, currentUser, todayDate)` from `@harness-engineering/core`.
|
|
86
|
+
- This updates the feature's `Assignee` field
|
|
87
|
+
- Appends `assigned` record to assignment history (and `unassigned` for previous assignee if reassignment)
|
|
88
|
+
|
|
89
|
+
2. Serialize and write the updated roadmap to `docs/roadmap.md`.
|
|
90
|
+
|
|
91
|
+
3. If tracker config exists in `harness.config.json`, sync the assignment:
|
|
92
|
+
- Call the external tracker's `assignTicket` to push the assignment
|
|
93
|
+
- Log result but do not block on failure
|
|
94
|
+
|
|
95
|
+
4. Determine the transition target:
|
|
96
|
+
- If the feature has a `spec` field (non-null): transition to `harness:autopilot`
|
|
97
|
+
- If the feature has no `spec`: transition to `harness:brainstorming`
|
|
98
|
+
|
|
99
|
+
5. Present the transition to the human via `emit_interaction`:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
emit_interaction({
|
|
103
|
+
path: "<project-root>",
|
|
104
|
+
type: "transition",
|
|
105
|
+
transition: {
|
|
106
|
+
completedPhase: "roadmap-pilot",
|
|
107
|
+
suggestedNext: "<brainstorming|autopilot>",
|
|
108
|
+
reason: "Feature '<name>' assigned and ready for <brainstorming|execution>",
|
|
109
|
+
artifacts: ["docs/roadmap.md"],
|
|
110
|
+
requiresConfirmation: true,
|
|
111
|
+
summary: "Assigned '<name>' to <user>. <Spec exists -- ready for autopilot|No spec -- needs brainstorming first>.",
|
|
112
|
+
qualityGate: {
|
|
113
|
+
checks: [
|
|
114
|
+
{ "name": "roadmap-parsed", "passed": true },
|
|
115
|
+
{ "name": "candidate-scored", "passed": true },
|
|
116
|
+
{ "name": "human-confirmed", "passed": true },
|
|
117
|
+
{ "name": "assignment-written", "passed": true }
|
|
118
|
+
],
|
|
119
|
+
allPassed: true
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
6. Run `harness validate`.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Harness Integration
|
|
130
|
+
|
|
131
|
+
- **`parseRoadmap` / `serializeRoadmap`** -- Parse and write `docs/roadmap.md`. Import from `@harness-engineering/core`.
|
|
132
|
+
- **`scoreRoadmapCandidates`** -- Core scoring algorithm. Import from `@harness-engineering/core`. Takes a `Roadmap` and optional `PilotScoringOptions` (currentUser for affinity).
|
|
133
|
+
- **`assignFeature`** -- Assignment with history tracking. Import from `@harness-engineering/core`. Handles new assignment and reassignment (unassigned + assigned records).
|
|
134
|
+
- **`emit_interaction`** -- Used for the skill transition at the end. Transitions to `harness:brainstorming` (no spec) or `harness:autopilot` (spec exists).
|
|
135
|
+
- **`harness validate`** -- Run after assignment is written.
|
|
136
|
+
- **External sync** -- If `harness.config.json` has tracker config, use `fullSync` or direct `assignTicket` to push assignment to external service.
|
|
137
|
+
|
|
138
|
+
## Success Criteria
|
|
139
|
+
|
|
140
|
+
1. Roadmap is parsed and unblocked planned/backlog items are scored
|
|
141
|
+
2. Scoring uses two-tier sort: explicit priority first, then weighted score
|
|
142
|
+
3. AI reads top candidates' specs and provides recommendation with reasoning
|
|
143
|
+
4. Human confirms before any changes are made
|
|
144
|
+
5. Assignment updates feature field, appends history records, and syncs externally
|
|
145
|
+
6. Reassignment produces two history records (unassigned + assigned)
|
|
146
|
+
7. Transition routes to brainstorming (no spec) or autopilot (spec exists)
|
|
147
|
+
8. `harness validate` passes after all changes
|
|
148
|
+
|
|
149
|
+
## Examples
|
|
150
|
+
|
|
151
|
+
### Example: Pick Next Item from a Multi-Milestone Roadmap
|
|
152
|
+
|
|
153
|
+
**Context:** A roadmap with 3 milestones, 8 features. 2 are in-progress, 1 is done, 2 are blocked, 3 are planned/backlog and unblocked. User is @cwarner who completed "Core Library Design".
|
|
154
|
+
|
|
155
|
+
**Phase 1: SCAN**
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
ROADMAP PILOT -- Candidate Scoring
|
|
159
|
+
|
|
160
|
+
Top candidates:
|
|
161
|
+
# Feature Milestone Priority Score Breakdown
|
|
162
|
+
1. Graph Connector MVP Release P2 0.78 pos:0.8 dep:0.6 aff:1.0
|
|
163
|
+
2. Performance Baselines Q3 Hardening -- 0.45 pos:0.5 dep:0.3 aff:0.0
|
|
164
|
+
3. Push Notifications Backlog -- 0.30 pos:0.2 dep:0.2 aff:0.5
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Phase 2: RECOMMEND**
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
I recommend Graph Connector (MVP Release, P2, score: 0.78).
|
|
171
|
+
|
|
172
|
+
Reasoning:
|
|
173
|
+
- Only prioritized item among candidates (P2)
|
|
174
|
+
- You completed its blocker "Core Library Design" -- maximum affinity bonus
|
|
175
|
+
- Unblocks "API Integration" downstream
|
|
176
|
+
- Spec exists at docs/changes/graph-connector/proposal.md
|
|
177
|
+
|
|
178
|
+
Proceed? (y/n/pick another)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Human confirms **y**.
|
|
182
|
+
|
|
183
|
+
**Phase 4: ASSIGN**
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
Assigned: Graph Connector -> @cwarner
|
|
187
|
+
History: +1 record (assigned, 2026-04-02)
|
|
188
|
+
Roadmap updated: docs/roadmap.md
|
|
189
|
+
External sync: github:harness-eng/harness#43 assigned
|
|
190
|
+
|
|
191
|
+
Transitioning to harness:autopilot (spec exists)...
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Gates
|
|
195
|
+
|
|
196
|
+
- **No assignment without human confirmation.** The CONFIRM phase must complete with explicit approval. Never auto-assign.
|
|
197
|
+
- **No transition without assignment.** The skill must write the assignment before transitioning to the next skill.
|
|
198
|
+
- **No scoring without a parsed roadmap.** If `docs/roadmap.md` does not exist or fails to parse, stop with an error.
|
|
199
|
+
|
|
200
|
+
## Escalation
|
|
201
|
+
|
|
202
|
+
- **When no unblocked candidates exist:** Inform the human. Suggest reviewing blocked items to see if blockers can be resolved, or adding new features via `harness-roadmap --add`.
|
|
203
|
+
- **When affinity data is unavailable:** Proceed without affinity scoring (weight falls to 0 for all candidates). Note this in the output.
|
|
204
|
+
- **When external sync fails:** Log the error, complete the local assignment, and note that external sync can be retried with `harness-roadmap --sync`.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: harness-roadmap-pilot
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: AI-assisted selection of the next highest-impact roadmap item with scoring, assignment, and skill transition
|
|
4
|
+
cognitive_mode: constructive-architect
|
|
5
|
+
triggers:
|
|
6
|
+
- manual
|
|
7
|
+
platforms:
|
|
8
|
+
- claude-code
|
|
9
|
+
- gemini-cli
|
|
10
|
+
tools:
|
|
11
|
+
- Bash
|
|
12
|
+
- Read
|
|
13
|
+
- Write
|
|
14
|
+
- Edit
|
|
15
|
+
- Glob
|
|
16
|
+
- Grep
|
|
17
|
+
- emit_interaction
|
|
18
|
+
cli:
|
|
19
|
+
command: harness skill run harness-roadmap-pilot
|
|
20
|
+
args:
|
|
21
|
+
- name: path
|
|
22
|
+
description: Project root path
|
|
23
|
+
required: false
|
|
24
|
+
- name: user
|
|
25
|
+
description: "Current user identifier (e.g., @cwarner) for affinity matching"
|
|
26
|
+
required: false
|
|
27
|
+
mcp:
|
|
28
|
+
tool: run_skill
|
|
29
|
+
input:
|
|
30
|
+
skill: harness-roadmap-pilot
|
|
31
|
+
path: string
|
|
32
|
+
type: rigid
|
|
33
|
+
tier: 2
|
|
34
|
+
phases:
|
|
35
|
+
- name: scan
|
|
36
|
+
description: Parse roadmap, filter unblocked candidates, compute scores
|
|
37
|
+
required: true
|
|
38
|
+
- name: recommend
|
|
39
|
+
description: AI reads top candidates specs and provides recommendation
|
|
40
|
+
required: true
|
|
41
|
+
- name: confirm
|
|
42
|
+
description: Present recommendation to human for approval
|
|
43
|
+
required: true
|
|
44
|
+
- name: assign
|
|
45
|
+
description: Update assignee, history, sync external, transition to next skill
|
|
46
|
+
required: true
|
|
47
|
+
state:
|
|
48
|
+
persistent: false
|
|
49
|
+
depends_on:
|
|
50
|
+
- harness-brainstorming
|
|
51
|
+
- harness-autopilot
|
|
52
|
+
- harness-roadmap
|
|
@@ -55,16 +55,14 @@ This skill follows the Deterministic-vs-LLM Responsibility Split principle. The
|
|
|
55
55
|
|
|
56
56
|
Run the built-in security scanner against the project.
|
|
57
57
|
|
|
58
|
-
1. **Run the scanner.** Use the `
|
|
58
|
+
1. **Run the scanner.** Use the `harness check-security` CLI command:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
|
|
62
|
-
harness scan --security
|
|
63
|
-
|
|
64
|
-
# Via CLI
|
|
65
|
-
npx vitest run packages/core/tests/security/
|
|
61
|
+
harness check-security
|
|
66
62
|
```
|
|
67
63
|
|
|
64
|
+
For machine-readable output, add `--json`. For scanning only changed files, add `--changed-only`.
|
|
65
|
+
|
|
68
66
|
2. **Review findings.** Categorize by severity:
|
|
69
67
|
- **Error (blocking):** Must fix before merge — secrets, injection, eval, weak crypto
|
|
70
68
|
- **Warning (review):** Should fix — CORS wildcards, disabled TLS, path traversal patterns
|
|
@@ -103,6 +101,28 @@ After the OWASP baseline, add stack-specific checks:
|
|
|
103
101
|
- **React:** XSS via `dangerouslySetInnerHTML`, sensitive data in client state, insecure `postMessage` listeners
|
|
104
102
|
- **Go:** Race conditions in concurrent handlers, `unsafe.Pointer` usage, format string injection
|
|
105
103
|
|
|
104
|
+
#### Insecure Defaults Analysis
|
|
105
|
+
|
|
106
|
+
For each configuration variable that controls a security feature (auth, encryption, TLS, CORS, rate limiting), verify:
|
|
107
|
+
|
|
108
|
+
- Does the feature **fail-closed** (error/deny) when configuration is missing?
|
|
109
|
+
- Or does it **fail-open** (degrade to permissive/disabled)?
|
|
110
|
+
- Trace fallback chains: `config.x ?? env.Y ?? default` — is the final default secure?
|
|
111
|
+
|
|
112
|
+
Patterns the mechanical `SEC-DEF-*` rules cannot catch (focus here):
|
|
113
|
+
|
|
114
|
+
- Multi-line fallback chains where the insecure default is not adjacent to the security variable name
|
|
115
|
+
- Conditional logic that enables security features only in specific environments (e.g., `if (isProd) enableTLS()`)
|
|
116
|
+
- Error handlers that swallow failures in auth, session, or token validation code (multi-line `catch` blocks)
|
|
117
|
+
- Silent type coercions that convert truthy env vars to falsy values
|
|
118
|
+
|
|
119
|
+
**Rationalizations to reject** (adapted from Trail of Bits):
|
|
120
|
+
|
|
121
|
+
- "The default is only used in development" — production deployments inherit defaults when config is missing
|
|
122
|
+
- "The env var will always be set" — missing env vars are the #1 cause of fail-open in production
|
|
123
|
+
- "The catch block will be filled in later" — empty auth catch blocks ship to production
|
|
124
|
+
- "It's behind a feature flag" — feature flags can be inadvertently enabled or disabled
|
|
125
|
+
|
|
106
126
|
### Phase 3: THREAT-MODEL (optional, `--deep` flag; full mode or explicit `--deep` in pipeline)
|
|
107
127
|
|
|
108
128
|
When invoked with `--deep`, build a lightweight threat model:
|
|
@@ -149,7 +169,7 @@ Threat Model:
|
|
|
149
169
|
|
|
150
170
|
## Harness Integration
|
|
151
171
|
|
|
152
|
-
- **`
|
|
172
|
+
- **`harness check-security`** — Run the mechanical scanner via CLI. Use `--json` for machine-readable output.
|
|
153
173
|
- **`harness validate`** — Standard project health check
|
|
154
174
|
- **`query_graph` / `get_relationships`** — Used in threat modeling phase for data flow tracing
|
|
155
175
|
- **`get_impact`** — Understand blast radius of security-sensitive changes
|
|
@@ -58,6 +58,58 @@
|
|
|
58
58
|
- **`harness.config.json`** — Security section configures severity threshold and file exclusions.
|
|
59
59
|
- **codebase-health-analyst persona** — Invokes this skill as part of its sweep.
|
|
60
60
|
|
|
61
|
+
## Evidence Requirements
|
|
62
|
+
|
|
63
|
+
When this skill makes claims about existing code, architecture, or behavior,
|
|
64
|
+
it MUST cite evidence using one of:
|
|
65
|
+
|
|
66
|
+
1. **File reference:** `file:line` format (e.g., `src/auth.ts:42`)
|
|
67
|
+
2. **Code pattern reference:** `file` with description (e.g., `src/utils/hash.ts` —
|
|
68
|
+
"existing bcrypt wrapper")
|
|
69
|
+
3. **Test/command output:** Inline or referenced output from a test run or CLI command
|
|
70
|
+
4. **Session evidence:** Write to the `evidence` session section via `manage_state`
|
|
71
|
+
|
|
72
|
+
**Uncited claims:** Technical assertions without citations MUST be prefixed with
|
|
73
|
+
`[UNVERIFIED]`. Example: `[UNVERIFIED] The auth middleware supports refresh tokens`.
|
|
74
|
+
|
|
75
|
+
## Red Flags
|
|
76
|
+
|
|
77
|
+
### Universal
|
|
78
|
+
|
|
79
|
+
These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
80
|
+
|
|
81
|
+
- **"I believe the codebase does X"** — Stop. Read the code and cite a file:line
|
|
82
|
+
reference. Belief is not evidence.
|
|
83
|
+
- **"Let me recommend [pattern] for this"** without checking existing patterns — Stop.
|
|
84
|
+
Search the codebase first. The project may already have a convention.
|
|
85
|
+
- **"While we're here, we should also [unrelated improvement]"** — Stop. Flag the idea
|
|
86
|
+
but do not expand scope beyond the stated task.
|
|
87
|
+
|
|
88
|
+
### Domain-Specific
|
|
89
|
+
|
|
90
|
+
- **"This finding is in test code, so it's not a real issue"** — Stop. Test code can leak secrets, establish bad patterns, and be copy-pasted to production.
|
|
91
|
+
- **"This dependency is widely used, so it's safe"** — Stop. Popularity is not a security guarantee. Check CVE databases and advisory feeds.
|
|
92
|
+
- **"This is a low-severity finding, skipping"** — Stop. Low-severity findings compound. Document why you are deprioritizing, do not silently skip.
|
|
93
|
+
- **"The scanner didn't flag it, so it's clean"** — Stop. Scanners have false negatives. A clean scan is not proof of security — it is absence of evidence.
|
|
94
|
+
|
|
95
|
+
## Rationalizations to Reject
|
|
96
|
+
|
|
97
|
+
### Universal
|
|
98
|
+
|
|
99
|
+
These reasoning patterns sound plausible but lead to bad outcomes. Reject them.
|
|
100
|
+
|
|
101
|
+
- **"It's probably fine"** — "Probably" is not evidence. Verify before asserting.
|
|
102
|
+
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
103
|
+
confirm it applies to this codebase.
|
|
104
|
+
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
105
|
+
with a concrete follow-up plan.
|
|
106
|
+
|
|
107
|
+
### Domain-Specific
|
|
108
|
+
|
|
109
|
+
- **"No attacker would find this"** — Security by obscurity. If the code is wrong, flag it regardless of discoverability.
|
|
110
|
+
- **"We're behind a firewall"** — Network boundaries change. Code should be secure at every layer regardless of deployment topology.
|
|
111
|
+
- **"The framework handles this for us"** — Verify the framework's actual behavior. Misuse of a secure framework is still insecure.
|
|
112
|
+
|
|
61
113
|
## Escalation
|
|
62
114
|
|
|
63
115
|
- **When error-severity findings are disputed:** The scanner is mechanical — it may flag false positives. If a finding is a false positive, add a `// harness-ignore SEC-XXX` comment on the line and document the rationale. Do not suppress without explanation.
|