@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,49 @@
|
|
|
1
|
+
name: harness-soundness-review
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Deep soundness analysis of specs and plans with auto-fix and convergence loop
|
|
4
|
+
cognitive_mode: meticulous-verifier
|
|
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
|
+
cli:
|
|
18
|
+
command: harness skill run harness-soundness-review
|
|
19
|
+
args:
|
|
20
|
+
- name: path
|
|
21
|
+
description: Project root path
|
|
22
|
+
required: false
|
|
23
|
+
- name: mode
|
|
24
|
+
description: Review mode — "spec" for spec soundness or "plan" for plan soundness
|
|
25
|
+
required: true
|
|
26
|
+
mcp:
|
|
27
|
+
tool: run_skill
|
|
28
|
+
input:
|
|
29
|
+
skill: harness-soundness-review
|
|
30
|
+
path: string
|
|
31
|
+
type: rigid
|
|
32
|
+
tier: 2
|
|
33
|
+
phases:
|
|
34
|
+
- name: check
|
|
35
|
+
description: Run all checks for the current mode and classify findings
|
|
36
|
+
required: true
|
|
37
|
+
- name: fix
|
|
38
|
+
description: Auto-fix inferrable issues and log changes
|
|
39
|
+
required: true
|
|
40
|
+
- name: converge
|
|
41
|
+
description: Re-run checks, compare issue counts, loop or stop
|
|
42
|
+
required: true
|
|
43
|
+
- name: surface
|
|
44
|
+
description: Present remaining issues to user for resolution
|
|
45
|
+
required: true
|
|
46
|
+
state:
|
|
47
|
+
persistent: false
|
|
48
|
+
files: []
|
|
49
|
+
depends_on: []
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Harness SQL Review
|
|
2
|
+
|
|
3
|
+
> Adversarial review of SQL queries for performance anti-patterns, missing indexes, N+1 queries, and unsafe operations. Analyzes raw SQL, ORM-generated queries, and migration scripts to produce optimization recommendations with estimated impact.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- When reviewing a PR that adds or modifies SQL queries, repository methods, or database access patterns
|
|
8
|
+
- When investigating slow database performance or timeout issues
|
|
9
|
+
- When adding new database tables or indexes and validating query access patterns
|
|
10
|
+
- NOT for schema design or migration safety (use harness-database)
|
|
11
|
+
- NOT for data pipeline DAG structure or ETL patterns (use harness-data-pipeline)
|
|
12
|
+
- NOT for ORM selection or configuration decisions (use harness-database)
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Phase 1: SCAN -- Locate SQL Queries
|
|
17
|
+
|
|
18
|
+
1. **Resolve project root.** Use provided path or cwd.
|
|
19
|
+
|
|
20
|
+
2. **Detect SQL dialect.** Determine the database from project configuration:
|
|
21
|
+
- PostgreSQL: `DATABASE_URL` containing `postgres`, Prisma `provider = "postgresql"`, `pg` package
|
|
22
|
+
- MySQL: `DATABASE_URL` containing `mysql`, Prisma `provider = "mysql"`, `mysql2` package
|
|
23
|
+
- SQLite: `.sqlite` or `.db` files, Prisma `provider = "sqlite"`, `better-sqlite3` package
|
|
24
|
+
- MSSQL: `DATABASE_URL` containing `sqlserver`, `mssql` or `tedious` package
|
|
25
|
+
- Override with `--dialect` if auto-detection fails
|
|
26
|
+
|
|
27
|
+
3. **Extract raw SQL queries.** Scan source files for:
|
|
28
|
+
- SQL string literals: template literals containing `SELECT`, `INSERT`, `UPDATE`, `DELETE`, `CREATE`
|
|
29
|
+
- Query builder calls: `.query()`, `.raw()`, `.execute()`, `$queryRaw`, `$executeRaw`
|
|
30
|
+
- SQL files: `*.sql` in `queries/`, `src/**/sql/`, migration directories
|
|
31
|
+
- Stored procedures and views referenced in application code
|
|
32
|
+
|
|
33
|
+
4. **Extract ORM queries.** Identify ORM usage and extract the implied SQL:
|
|
34
|
+
- **Prisma:** `findMany`, `findUnique`, `include`, `select` with nested relations
|
|
35
|
+
- **TypeORM:** `createQueryBuilder`, `find` with `relations`, `@OneToMany` eager loading
|
|
36
|
+
- **Sequelize:** `findAll` with `include`, raw queries
|
|
37
|
+
- **Knex:** query chain analysis (`.select()`, `.where()`, `.join()`)
|
|
38
|
+
- **Drizzle:** query builder chains and relational queries
|
|
39
|
+
|
|
40
|
+
5. **Scope to PR changes.** If triggered by a PR, focus on queries in changed files. Also scan unchanged files that import changed models (they may be affected by schema changes).
|
|
41
|
+
|
|
42
|
+
6. **Build query inventory.** For each query, record:
|
|
43
|
+
- Source file and line number
|
|
44
|
+
- Query type (SELECT, INSERT, UPDATE, DELETE, DDL)
|
|
45
|
+
- Tables accessed
|
|
46
|
+
- Whether it is in a loop (potential N+1)
|
|
47
|
+
- Estimated complexity (simple, join, subquery, CTE, window function)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### Phase 2: ANALYZE -- Evaluate Query Patterns
|
|
52
|
+
|
|
53
|
+
1. **Detect N+1 queries.** The most common and impactful anti-pattern:
|
|
54
|
+
- Look for queries inside loops: `for` / `forEach` / `map` containing `await db.query`
|
|
55
|
+
- Look for ORM eager loading gaps: `findMany` followed by individual `findUnique` per result
|
|
56
|
+
- Look for GraphQL resolvers that query per-field without DataLoader
|
|
57
|
+
- Classify: **Error** if in a known hot path, **Warning** if in administrative code
|
|
58
|
+
|
|
59
|
+
2. **Detect missing indexes.** For each `WHERE`, `JOIN`, and `ORDER BY` clause:
|
|
60
|
+
- Identify the columns being filtered, joined, or sorted
|
|
61
|
+
- Check if a supporting index exists (read migration files, `CREATE INDEX` statements, Prisma `@@index`)
|
|
62
|
+
- Flag unindexed columns on tables likely to be large (referenced in multiple queries or with `count` operations)
|
|
63
|
+
- Recommend composite indexes when queries filter on multiple columns
|
|
64
|
+
|
|
65
|
+
3. **Detect full table scans.** Flag queries that:
|
|
66
|
+
- Use `SELECT *` on large tables without a `WHERE` clause
|
|
67
|
+
- Use `LIKE '%pattern%'` (leading wildcard prevents index use)
|
|
68
|
+
- Use functions on indexed columns in `WHERE` (`WHERE LOWER(email) = ...`)
|
|
69
|
+
- Use `OR` across different columns without index support
|
|
70
|
+
- Use `NOT IN` with large subqueries
|
|
71
|
+
|
|
72
|
+
4. **Detect unsafe operations.** Flag queries that:
|
|
73
|
+
- `UPDATE` or `DELETE` without a `WHERE` clause
|
|
74
|
+
- Use `TRUNCATE` in application code (should be migration/admin only)
|
|
75
|
+
- Perform DDL (`ALTER TABLE`, `DROP`) in application code
|
|
76
|
+
- Use `SELECT ... FOR UPDATE` without a transaction
|
|
77
|
+
- Have unbounded result sets (`SELECT` without `LIMIT` on user-facing endpoints)
|
|
78
|
+
|
|
79
|
+
5. **Detect join inefficiencies.** Evaluate:
|
|
80
|
+
- Cartesian products (missing `ON` clause or cross join without intent)
|
|
81
|
+
- Joining on non-indexed columns
|
|
82
|
+
- Joining large tables without filtering first (suggest subquery or CTE)
|
|
83
|
+
- Multiple joins that could be replaced with a single denormalized query
|
|
84
|
+
- Correlated subqueries that could be rewritten as joins
|
|
85
|
+
|
|
86
|
+
6. **Detect transaction issues.** Check for:
|
|
87
|
+
- Long-running transactions (multiple queries without commit)
|
|
88
|
+
- Read-after-write without transaction isolation
|
|
89
|
+
- Deadlock-prone patterns (acquiring locks in inconsistent order)
|
|
90
|
+
- Missing transactions on multi-step writes
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### Phase 3: OPTIMIZE -- Produce Recommendations
|
|
95
|
+
|
|
96
|
+
1. **Generate optimized query alternatives.** For each finding, provide:
|
|
97
|
+
- The original query (with file location)
|
|
98
|
+
- The optimized alternative
|
|
99
|
+
- Explanation of why the optimization helps
|
|
100
|
+
- Estimated impact (order of magnitude: "reduces from O(N) queries to O(1)")
|
|
101
|
+
|
|
102
|
+
2. **Recommend index additions.** For each missing index:
|
|
103
|
+
|
|
104
|
+
```sql
|
|
105
|
+
-- Recommended: speeds up user lookup by email in login flow
|
|
106
|
+
-- Estimated impact: O(N) full scan -> O(log N) index seek
|
|
107
|
+
CREATE INDEX idx_users_email ON users (email);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Include:
|
|
111
|
+
- Index type recommendation (B-tree, hash, GIN, GiST) based on query pattern
|
|
112
|
+
- Composite index column order (most selective first)
|
|
113
|
+
- Partial index suggestions when queries always filter on a condition
|
|
114
|
+
|
|
115
|
+
3. **Recommend batching strategies for N+1.** Provide specific alternatives:
|
|
116
|
+
- ORM eager loading: show the `include` / `relations` / `with` syntax
|
|
117
|
+
- DataLoader pattern: show the DataLoader implementation for GraphQL resolvers
|
|
118
|
+
- `WHERE IN` batching: show the batched query for loop-based N+1
|
|
119
|
+
- SQL `JOIN` rewrite: show how to combine parent + child in one query
|
|
120
|
+
|
|
121
|
+
4. **Recommend query rewrites.** For complex subqueries and inefficient patterns:
|
|
122
|
+
- Correlated subquery -> JOIN or CTE
|
|
123
|
+
- `NOT IN` -> `NOT EXISTS` (NULL-safe and often faster)
|
|
124
|
+
- Multiple `UNION` -> single query with `CASE WHEN`
|
|
125
|
+
- `DISTINCT` on large result sets -> `GROUP BY` or `EXISTS`
|
|
126
|
+
- `SELECT *` -> explicit column list
|
|
127
|
+
|
|
128
|
+
5. **Prioritize by impact.** Order recommendations:
|
|
129
|
+
- N+1 queries in hot paths (highest impact)
|
|
130
|
+
- Missing indexes on high-traffic queries
|
|
131
|
+
- Unsafe operations (correctness risk)
|
|
132
|
+
- Query rewrites for efficiency
|
|
133
|
+
- Style and readability improvements
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### Phase 4: VALIDATE -- Verify Optimization Correctness
|
|
138
|
+
|
|
139
|
+
1. **Verify semantic equivalence.** For every rewritten query:
|
|
140
|
+
- Does it return the same result set as the original?
|
|
141
|
+
- Does it handle NULL values the same way? (`NOT IN` vs `NOT EXISTS` differs on NULLs)
|
|
142
|
+
- Does it handle empty sets the same way?
|
|
143
|
+
- Does it maintain the same ordering?
|
|
144
|
+
|
|
145
|
+
2. **Verify index recommendations.** For each proposed index:
|
|
146
|
+
- Does the index cover the query it is intended to speed up?
|
|
147
|
+
- Does the index column order match the query filter order?
|
|
148
|
+
- Will the index cause write performance degradation? (flag if table has heavy write load)
|
|
149
|
+
- Are there existing indexes that already cover this query? (avoid duplicates)
|
|
150
|
+
|
|
151
|
+
3. **Check for regression risks.** Flag:
|
|
152
|
+
- Index additions on tables with high write throughput (may slow inserts)
|
|
153
|
+
- Query rewrites that increase memory usage (e.g., large `IN` lists)
|
|
154
|
+
- Eager loading that may fetch too much data (the "N+1 overcorrection" of loading everything)
|
|
155
|
+
- Batched queries that exceed the database's parameter limit
|
|
156
|
+
|
|
157
|
+
4. **Output structured report.** Present findings in review format:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
SQL Review: [PASS/NEEDS_ATTENTION/FAIL]
|
|
161
|
+
Queries analyzed: N
|
|
162
|
+
Findings: E errors, W warnings, I info
|
|
163
|
+
|
|
164
|
+
ERRORS:
|
|
165
|
+
[SQL-N1-001] src/repositories/OrderRepository.ts:45
|
|
166
|
+
N+1 query in getOrdersWithItems(): queries items per order in loop
|
|
167
|
+
Current: 1 + N queries (N = number of orders)
|
|
168
|
+
Recommended: Single query with JOIN or Prisma include
|
|
169
|
+
Impact: O(N) -> O(1) database round trips
|
|
170
|
+
|
|
171
|
+
[SQL-UNSAFE-001] src/services/CleanupService.ts:23
|
|
172
|
+
DELETE without WHERE clause: db.execute("DELETE FROM temp_records")
|
|
173
|
+
Risk: Deletes all records if called outside intended context
|
|
174
|
+
Recommended: Add WHERE clause with date filter or use TRUNCATE in migration
|
|
175
|
+
|
|
176
|
+
WARNINGS:
|
|
177
|
+
[SQL-IDX-001] src/repositories/UserRepository.ts:78
|
|
178
|
+
Missing index: WHERE email = ? on users table (estimated 500K rows)
|
|
179
|
+
Recommended: CREATE INDEX idx_users_email ON users (email);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
5. **Verify no new anti-patterns introduced.** Check that recommended optimizations do not introduce new problems (e.g., a JOIN recommendation that creates a Cartesian product, or an index recommendation on a column already indexed).
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Harness Integration
|
|
187
|
+
|
|
188
|
+
- **`harness skill run harness-sql-review`** -- Primary command for SQL query analysis.
|
|
189
|
+
- **`harness validate`** -- Run after applying query optimizations to verify project health.
|
|
190
|
+
- **`Glob`** -- Used to locate SQL files, repository files, DAO classes, and migration scripts.
|
|
191
|
+
- **`Grep`** -- Used to extract SQL strings, query builder calls, ORM methods, and index definitions.
|
|
192
|
+
- **`Read`** -- Used to read query files, repository implementations, and schema definitions.
|
|
193
|
+
- **`Write`** -- Used to generate optimized query files and index migration scripts.
|
|
194
|
+
- **`Bash`** -- Used to run `EXPLAIN` queries when database connection is available and to check migration files.
|
|
195
|
+
- **`emit_interaction`** -- Used to present the review report and confirm optimization approach for complex rewrites.
|
|
196
|
+
|
|
197
|
+
## Success Criteria
|
|
198
|
+
|
|
199
|
+
- All SQL queries in scope are inventoried with source location and type
|
|
200
|
+
- N+1 patterns are detected in both raw SQL and ORM usage
|
|
201
|
+
- Missing indexes are identified with specific `CREATE INDEX` recommendations
|
|
202
|
+
- Unsafe operations are flagged with risk assessment
|
|
203
|
+
- Optimized alternatives are semantically equivalent to originals
|
|
204
|
+
- Recommendations are prioritized by estimated performance impact
|
|
205
|
+
- Report follows structured format with actionable findings
|
|
206
|
+
|
|
207
|
+
## Examples
|
|
208
|
+
|
|
209
|
+
### Example: Express.js API with Prisma ORM
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Phase 1: SCAN
|
|
213
|
+
Dialect: PostgreSQL (detected from DATABASE_URL)
|
|
214
|
+
ORM: Prisma 5.10
|
|
215
|
+
Queries found: 34 (28 Prisma, 4 $queryRaw, 2 $executeRaw)
|
|
216
|
+
Scope: PR diff (3 changed repository files)
|
|
217
|
+
|
|
218
|
+
Phase 2: ANALYZE
|
|
219
|
+
[SQL-N1-001] src/routes/orders.ts:67
|
|
220
|
+
findMany orders then findUnique for each order's customer
|
|
221
|
+
Pattern: 1 query for orders + N queries for customers
|
|
222
|
+
[SQL-IDX-001] src/routes/products.ts:23
|
|
223
|
+
findMany with where: { category: catId, status: "active" }
|
|
224
|
+
No composite index on (category_id, status)
|
|
225
|
+
[SQL-UNSAFE-001] src/routes/admin.ts:89
|
|
226
|
+
$executeRaw DELETE FROM sessions (no WHERE clause)
|
|
227
|
+
|
|
228
|
+
Phase 3: OPTIMIZE
|
|
229
|
+
N+1 fix: Use Prisma include: { customer: true }
|
|
230
|
+
Index: CREATE INDEX idx_products_category_status ON products (category_id, status);
|
|
231
|
+
Safety: Add WHERE expired_at < NOW() to session cleanup
|
|
232
|
+
|
|
233
|
+
Phase 4: VALIDATE
|
|
234
|
+
All rewrites produce equivalent results: YES
|
|
235
|
+
Index does not duplicate existing: YES (checked schema.prisma)
|
|
236
|
+
Report: FAIL (1 N+1 error, 1 unsafe operation, 1 missing index)
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Example: Django REST Framework with Raw SQL
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
Phase 1: SCAN
|
|
243
|
+
Dialect: PostgreSQL (detected from DATABASES setting)
|
|
244
|
+
ORM: Django ORM + 6 raw SQL queries
|
|
245
|
+
Queries found: 52 (46 ORM, 6 raw)
|
|
246
|
+
Scope: full project audit
|
|
247
|
+
|
|
248
|
+
Phase 2: ANALYZE
|
|
249
|
+
[SQL-N1-001] views/analytics.py:34
|
|
250
|
+
for report in reports: report.author.name (lazy loading author per report)
|
|
251
|
+
[SQL-SCAN-001] queries/search.sql:12
|
|
252
|
+
WHERE description LIKE '%' || search_term || '%' (leading wildcard, full scan)
|
|
253
|
+
[SQL-JOIN-001] views/dashboard.py:78
|
|
254
|
+
3 sequential queries that could be a single JOIN
|
|
255
|
+
[SQL-TXN-001] views/transfer.py:45
|
|
256
|
+
Debit + credit operations without @transaction.atomic
|
|
257
|
+
|
|
258
|
+
Phase 3: OPTIMIZE
|
|
259
|
+
N+1: Add select_related('author') to queryset
|
|
260
|
+
Search: Recommend PostgreSQL full-text search with GIN index:
|
|
261
|
+
CREATE INDEX idx_items_description_gin ON items USING GIN (to_tsvector('english', description));
|
|
262
|
+
Join: Combine 3 queries into single query with LEFT JOIN
|
|
263
|
+
Transaction: Wrap debit+credit in @transaction.atomic
|
|
264
|
+
|
|
265
|
+
Phase 4: VALIDATE
|
|
266
|
+
All optimizations preserve correctness: YES
|
|
267
|
+
Full-text search returns equivalent results: YES (for word-boundary matches)
|
|
268
|
+
Report: FAIL (1 N+1, 1 missing transaction) + 2 warnings
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Example: Go Service with sqlx and Raw Queries
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
Phase 1: SCAN
|
|
275
|
+
Dialect: PostgreSQL (detected from connection string)
|
|
276
|
+
Query library: sqlx
|
|
277
|
+
Queries found: 28 (all raw SQL in repository files)
|
|
278
|
+
SQL files: 12 in queries/ directory
|
|
279
|
+
|
|
280
|
+
Phase 2: ANALYZE
|
|
281
|
+
[SQL-N1-001] internal/repo/order_repo.go:56
|
|
282
|
+
GetOrdersByUser calls GetItemsByOrderID in loop
|
|
283
|
+
[SQL-IDX-001] queries/search_users.sql:3
|
|
284
|
+
WHERE created_at > $1 AND status = $2 ORDER BY created_at
|
|
285
|
+
Missing composite index on (status, created_at)
|
|
286
|
+
[SQL-PERF-001] queries/report_daily.sql:8
|
|
287
|
+
Correlated subquery for calculating running total
|
|
288
|
+
Recommend: window function SUM() OVER (ORDER BY date)
|
|
289
|
+
|
|
290
|
+
Phase 3: OPTIMIZE
|
|
291
|
+
N+1: Rewrite with single query using LEFT JOIN and GROUP BY
|
|
292
|
+
Index: CREATE INDEX idx_users_status_created ON users (status, created_at);
|
|
293
|
+
Rewrite: Replace correlated subquery with:
|
|
294
|
+
SELECT date, amount, SUM(amount) OVER (ORDER BY date) as running_total
|
|
295
|
+
FROM daily_revenue;
|
|
296
|
+
|
|
297
|
+
Phase 4: VALIDATE
|
|
298
|
+
Window function produces identical results: YES
|
|
299
|
+
Index column order matches query pattern: YES (equality on status, range on created_at)
|
|
300
|
+
Report: NEEDS_ATTENTION (1 N+1 error, 1 missing index, 1 query rewrite)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Gates
|
|
304
|
+
|
|
305
|
+
- **No approving N+1 queries in user-facing hot paths.** An N+1 query in an endpoint called per page load is always an error. It must be fixed with eager loading, batching, or a JOIN before the PR can merge.
|
|
306
|
+
- **No recommending indexes without checking for duplicates.** Before recommending a new index, verify no existing index covers the same columns. Duplicate indexes waste write performance and storage.
|
|
307
|
+
- **No rewriting queries without semantic equivalence verification.** Every optimized query must produce the same result set as the original, including NULL handling and ordering. If equivalence cannot be confirmed, flag the rewrite as "needs manual verification."
|
|
308
|
+
- **No ignoring unsafe DELETE/UPDATE without WHERE.** These are always errors regardless of context. Even if the developer intends to delete all records, it should be an explicit `TRUNCATE` or have a documented justification.
|
|
309
|
+
|
|
310
|
+
## Escalation
|
|
311
|
+
|
|
312
|
+
- **When query optimization requires schema changes:** If the best optimization involves adding a column, denormalizing a table, or changing a relationship, flag it: "Optimal fix for SQL-N1-001 requires a denormalized `customer_name` column on orders. This is a schema change that needs harness-database review."
|
|
313
|
+
- **When EXPLAIN ANALYZE is needed but no database connection is available:** Report that static analysis has limits: "SQL-IDX-001 is flagged based on static analysis. Running EXPLAIN ANALYZE on the actual database would confirm whether a sequential scan is occurring. Consider adding `--explain` with a database connection."
|
|
314
|
+
- **When an N+1 pattern is intentional:** If the developer asserts the N+1 is acceptable (e.g., N is always small, capped at 5), require documentation: "Add a comment explaining the bounded N (max 5) and a test asserting the bound."
|
|
315
|
+
- **When ORM-generated SQL cannot be optimized without dropping to raw SQL:** Present the tradeoff: "Prisma cannot express this query efficiently. Options: (A) use `$queryRaw` for this specific query, (B) accept the suboptimal query with a performance budget note, (C) restructure the data access pattern."
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: harness-sql-review
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: SQL query optimization, index analysis, N+1 detection, and query plan review
|
|
4
|
+
cognitive_mode: adversarial-reviewer
|
|
5
|
+
triggers:
|
|
6
|
+
- manual
|
|
7
|
+
- on_pr
|
|
8
|
+
platforms:
|
|
9
|
+
- claude-code
|
|
10
|
+
- gemini-cli
|
|
11
|
+
tools:
|
|
12
|
+
- Bash
|
|
13
|
+
- Read
|
|
14
|
+
- Write
|
|
15
|
+
- Edit
|
|
16
|
+
- Glob
|
|
17
|
+
- Grep
|
|
18
|
+
- emit_interaction
|
|
19
|
+
cli:
|
|
20
|
+
command: harness skill run harness-sql-review
|
|
21
|
+
args:
|
|
22
|
+
- name: path
|
|
23
|
+
description: Project root path
|
|
24
|
+
required: false
|
|
25
|
+
- name: dialect
|
|
26
|
+
description: "SQL dialect: postgresql, mysql, sqlite, mssql. Auto-detected when omitted."
|
|
27
|
+
required: false
|
|
28
|
+
- name: explain
|
|
29
|
+
description: Include EXPLAIN ANALYZE output for detected queries when database connection is available
|
|
30
|
+
required: false
|
|
31
|
+
mcp:
|
|
32
|
+
tool: run_skill
|
|
33
|
+
input:
|
|
34
|
+
skill: harness-sql-review
|
|
35
|
+
path: string
|
|
36
|
+
type: rigid
|
|
37
|
+
tier: 3
|
|
38
|
+
internal: false
|
|
39
|
+
keywords:
|
|
40
|
+
- SQL
|
|
41
|
+
- query optimization
|
|
42
|
+
- index
|
|
43
|
+
- N+1
|
|
44
|
+
- explain plan
|
|
45
|
+
- slow query
|
|
46
|
+
- join
|
|
47
|
+
- subquery
|
|
48
|
+
- query plan
|
|
49
|
+
- database performance
|
|
50
|
+
- EXPLAIN ANALYZE
|
|
51
|
+
stack_signals:
|
|
52
|
+
- "src/**/*.sql"
|
|
53
|
+
- "queries/"
|
|
54
|
+
- "src/**/repositories/**"
|
|
55
|
+
- "src/**/dao/**"
|
|
56
|
+
- "src/**/*query*"
|
|
57
|
+
- "src/**/*repository*"
|
|
58
|
+
phases:
|
|
59
|
+
- name: scan
|
|
60
|
+
description: Locate SQL queries in source files, ORMs, raw queries, and migration scripts
|
|
61
|
+
required: true
|
|
62
|
+
- name: analyze
|
|
63
|
+
description: Evaluate query patterns for N+1, missing indexes, full table scans, and join efficiency
|
|
64
|
+
required: true
|
|
65
|
+
- name: optimize
|
|
66
|
+
description: Produce optimized query alternatives, index recommendations, and batching strategies
|
|
67
|
+
required: true
|
|
68
|
+
- name: validate
|
|
69
|
+
description: Verify optimizations preserve correctness and estimate performance improvement
|
|
70
|
+
required: true
|
|
71
|
+
state:
|
|
72
|
+
persistent: false
|
|
73
|
+
files: []
|
|
74
|
+
depends_on: []
|