@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,159 @@
|
|
|
1
|
+
# Harness Verify
|
|
2
|
+
|
|
3
|
+
> Binary pass/fail quick gate. Runs test, lint, typecheck — returns structured result. No judgment calls, no deep analysis. Pass or fail.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- After every task as a final sanity check
|
|
8
|
+
- As the final step in any code-producing skill
|
|
9
|
+
- When you need a fast mechanical answer: "does the code compile, lint, and pass tests?"
|
|
10
|
+
- NOT for deep verification or architectural review (use `harness-verification` for that)
|
|
11
|
+
- NOT for AI-powered code review (use `harness-code-review` for that)
|
|
12
|
+
|
|
13
|
+
## Relationship to Other Skills
|
|
14
|
+
|
|
15
|
+
| Skill | What It Does | Time |
|
|
16
|
+
| ------------------------- | ---------------------------------------------- | ----- |
|
|
17
|
+
| **harness-verify** (this) | Mechanical quick gate: typecheck, lint, test | ~30s |
|
|
18
|
+
| **harness-verification** | Deep audit: architecture, patterns, edge cases | ~5min |
|
|
19
|
+
|
|
20
|
+
`harness-verify` is the fast, deterministic gate. `harness-verification` is the slow, thorough audit. They serve different purposes and should not be confused.
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
### Phase 1: DETECT
|
|
25
|
+
|
|
26
|
+
Auto-detect project commands by inspecting the project root:
|
|
27
|
+
|
|
28
|
+
1. **package.json** — Look for `scripts.test`, `scripts.lint`, `scripts.typecheck` (or `scripts.tsc`, `scripts.type-check`)
|
|
29
|
+
2. **Makefile** — Look for `test`, `lint`, `typecheck` targets
|
|
30
|
+
3. **Conventions** — Fall back to common commands:
|
|
31
|
+
- Typecheck: `npx tsc --noEmit`, `mypy .`, `go vet ./...`
|
|
32
|
+
- Lint: `npx eslint .`, `ruff check .`, `golangci-lint run`
|
|
33
|
+
- Test: `npm test`, `pytest`, `go test ./...`
|
|
34
|
+
4. **Language detection** — Use file extensions to determine which convention set applies
|
|
35
|
+
|
|
36
|
+
For each of the three checks (typecheck, lint, test), record either the detected command or `NONE` if no command can be determined.
|
|
37
|
+
|
|
38
|
+
### Phase 2: EXECUTE
|
|
39
|
+
|
|
40
|
+
Run all detected commands in this order: **typecheck -> lint -> test**.
|
|
41
|
+
|
|
42
|
+
Rules:
|
|
43
|
+
|
|
44
|
+
- Run ALL commands regardless of earlier failures. Do not short-circuit.
|
|
45
|
+
- Capture exit code, stdout, and stderr for each command.
|
|
46
|
+
- Exit code 0 = PASS. Any non-zero exit code = FAIL.
|
|
47
|
+
- If a command was `NONE` (not detected), mark that check as `SKIPPED`.
|
|
48
|
+
- Run each command from the project root directory.
|
|
49
|
+
- Do not modify any files. Do not install dependencies. Do not fix errors.
|
|
50
|
+
|
|
51
|
+
### Design Constraint Check (conditional)
|
|
52
|
+
|
|
53
|
+
When `harness.config.json` contains a `design` block:
|
|
54
|
+
|
|
55
|
+
1. **Run design constraint checks** by invoking `harness-accessibility` in scan+evaluate mode against the project.
|
|
56
|
+
2. Apply the `design.strictness` setting to determine severity:
|
|
57
|
+
- `strict`: accessibility violations are FAIL; anti-pattern violations are WARN
|
|
58
|
+
- `standard`: accessibility and anti-pattern violations are WARN; nothing blocks
|
|
59
|
+
- `permissive`: all design violations are INFO
|
|
60
|
+
3. Capture the result as `Design: [PASS/WARN/FAIL/SKIPPED]`.
|
|
61
|
+
4. If no `design` block exists in config, mark Design as `SKIPPED`.
|
|
62
|
+
|
|
63
|
+
The design check runs AFTER test/lint/typecheck. It does not short-circuit on earlier failures.
|
|
64
|
+
|
|
65
|
+
### Phase 3: REPORT
|
|
66
|
+
|
|
67
|
+
Output a structured result in this exact format:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Verification: [PASS/FAIL]
|
|
71
|
+
- Typecheck: [PASS/FAIL/SKIPPED]
|
|
72
|
+
- Lint: [PASS/FAIL/SKIPPED]
|
|
73
|
+
- Test: [PASS/FAIL/SKIPPED]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
When design config is present, include the design line:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Verification: [PASS/FAIL]
|
|
80
|
+
- Typecheck: [PASS/FAIL/SKIPPED]
|
|
81
|
+
- Lint: [PASS/FAIL/SKIPPED]
|
|
82
|
+
- Test: [PASS/FAIL/SKIPPED]
|
|
83
|
+
- Design: [PASS/WARN/FAIL/SKIPPED]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Rules:
|
|
87
|
+
|
|
88
|
+
- Overall `Verification: PASS` only if all non-skipped checks passed.
|
|
89
|
+
- If all checks are SKIPPED, overall result is `PASS` (nothing to fail).
|
|
90
|
+
- On FAIL, include a brief summary of what failed (e.g., "3 type errors", "2 lint errors", "5 tests failed") below the structured block.
|
|
91
|
+
|
|
92
|
+
### Roadmap Sync (conditional)
|
|
93
|
+
|
|
94
|
+
When all non-skipped checks pass (overall `Verification: PASS`) and `docs/roadmap.md` exists:
|
|
95
|
+
|
|
96
|
+
1. Trigger a roadmap sync to update feature statuses based on the verified state.
|
|
97
|
+
2. Use the `manage_roadmap` MCP tool with `sync` action if available, or note to the caller that a roadmap sync is recommended.
|
|
98
|
+
3. Features linked to plans whose tasks are all complete and verified may be marked as `done`.
|
|
99
|
+
|
|
100
|
+
If `docs/roadmap.md` does not exist, skip this step silently. If verification failed, do not sync — the roadmap should only reflect verified completions.
|
|
101
|
+
|
|
102
|
+
## Deterministic Checks
|
|
103
|
+
|
|
104
|
+
This skill is entirely deterministic. There are no LLM judgment calls anywhere in the process.
|
|
105
|
+
|
|
106
|
+
- Exit code 0 = PASS. Always.
|
|
107
|
+
- Exit code non-zero = FAIL. Always.
|
|
108
|
+
- No "it looks like this might be okay" reasoning. No interpretation of output.
|
|
109
|
+
- The same codebase with the same commands will always produce the same result.
|
|
110
|
+
|
|
111
|
+
## Harness Integration
|
|
112
|
+
|
|
113
|
+
- Follows Principle 7 (Deterministic-vs-LLM Split) — this skill is entirely deterministic
|
|
114
|
+
- Invoked as the final step by code-producing skills (harness-execution, harness-tdd)
|
|
115
|
+
- Complements harness-verification (deep audit) — use verify for quick checks, verification for milestones
|
|
116
|
+
- Output format is consumed by harness-integrity for the unified pipeline
|
|
117
|
+
- Invokes `harness-accessibility` for design constraint checking when `design` config exists
|
|
118
|
+
- Design violations respect `design.strictness` from `harness.config.json`
|
|
119
|
+
- **Roadmap sync** — When verification passes and `docs/roadmap.md` exists, triggers `manage_roadmap sync` to mark verified features as `done`. Only fires on overall PASS.
|
|
120
|
+
|
|
121
|
+
## Success Criteria
|
|
122
|
+
|
|
123
|
+
- [ ] All detected commands were executed
|
|
124
|
+
- [ ] Report follows the structured format exactly
|
|
125
|
+
- [ ] Overall verdict correctly reflects individual results
|
|
126
|
+
- [ ] Failed checks include error output summary
|
|
127
|
+
|
|
128
|
+
## Examples
|
|
129
|
+
|
|
130
|
+
### Example: Node.js Project
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Verification: PASS
|
|
134
|
+
- Types: PASS (no errors)
|
|
135
|
+
- Lint: PASS (0 warnings)
|
|
136
|
+
- Tests: PASS (42/42)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Example: Failing Project
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
Verification: FAIL
|
|
143
|
+
- Types: FAIL (3 type errors in src/auth/login.ts)
|
|
144
|
+
- Lint: PASS
|
|
145
|
+
- Tests: NOT RUN
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Gates
|
|
149
|
+
|
|
150
|
+
- **No judgment calls.** The exit code is the only signal.
|
|
151
|
+
- **No skipping.** If a command is detected, it runs. Period.
|
|
152
|
+
- **Fresh execution only.** Do not cache results. Do not reuse previous runs. Execute the commands right now.
|
|
153
|
+
- **No file modifications.** This skill is read-only (plus command execution). It must not change the codebase.
|
|
154
|
+
|
|
155
|
+
## Escalation
|
|
156
|
+
|
|
157
|
+
- **Timeout:** Each command has a 120-second timeout. If a command exceeds this, mark it as FAIL with reason "TIMEOUT".
|
|
158
|
+
- **No commands detected:** If no typecheck, lint, or test commands can be detected, all three checks are SKIPPED and the overall result is PASS. Log a note that no verification commands were found.
|
|
159
|
+
- **Environment errors:** If a command fails due to missing tooling (e.g., `tsc` not installed), mark it as FAIL. Do not attempt to install the tooling.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: harness-verify
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Binary pass/fail quick gate — runs test, lint, typecheck commands and returns structured result
|
|
4
|
+
triggers:
|
|
5
|
+
- manual
|
|
6
|
+
- on_task_complete
|
|
7
|
+
platforms:
|
|
8
|
+
- claude-code
|
|
9
|
+
- gemini-cli
|
|
10
|
+
tools:
|
|
11
|
+
- Bash
|
|
12
|
+
- Read
|
|
13
|
+
- Glob
|
|
14
|
+
cli:
|
|
15
|
+
command: harness skill run harness-verify
|
|
16
|
+
args:
|
|
17
|
+
- name: path
|
|
18
|
+
description: Project root path
|
|
19
|
+
required: false
|
|
20
|
+
mcp:
|
|
21
|
+
tool: run_skill
|
|
22
|
+
input:
|
|
23
|
+
skill: harness-verify
|
|
24
|
+
path: string
|
|
25
|
+
type: rigid
|
|
26
|
+
tier: 2
|
|
27
|
+
cognitive_mode: meticulous-verifier
|
|
28
|
+
phases:
|
|
29
|
+
- name: detect
|
|
30
|
+
description: Auto-detect project commands from package.json, Makefile, or conventions
|
|
31
|
+
required: true
|
|
32
|
+
- name: execute
|
|
33
|
+
description: Run test, lint, typecheck commands
|
|
34
|
+
required: true
|
|
35
|
+
- name: report
|
|
36
|
+
description: Return structured pass/fail result
|
|
37
|
+
required: true
|
|
38
|
+
state:
|
|
39
|
+
persistent: false
|
|
40
|
+
files: []
|
|
41
|
+
depends_on: []
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Harness Visual Regression
|
|
2
|
+
|
|
3
|
+
> Screenshot comparison, visual diff detection, and baseline management. Catches unintended CSS regressions, layout shifts, and rendering inconsistencies before they reach production.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Adding visual regression coverage for UI components or pages
|
|
8
|
+
- Reviewing visual changes in a pull request before merge
|
|
9
|
+
- Updating baselines after intentional design changes
|
|
10
|
+
- NOT when testing interactive user flows (use harness-e2e instead)
|
|
11
|
+
- NOT when testing component behavior or state (use unit tests or harness-tdd instead)
|
|
12
|
+
- NOT when auditing accessibility compliance (use harness-accessibility instead)
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Phase 1: DETECT -- Identify UI Components and Rendering Infrastructure
|
|
17
|
+
|
|
18
|
+
1. **Scan for existing visual test infrastructure.** Search for:
|
|
19
|
+
- Storybook configuration (`.storybook/`, `*.stories.tsx`, `*.stories.ts`)
|
|
20
|
+
- Visual testing tools (Chromatic config, `percy.yml`, Playwright screenshot tests)
|
|
21
|
+
- Existing baseline directories (`screenshots/`, `__image_snapshots__/`, `visual-tests/`)
|
|
22
|
+
|
|
23
|
+
2. **Catalog testable components.** Identify UI surfaces that benefit from visual testing:
|
|
24
|
+
- Shared design system components (buttons, forms, modals, navigation)
|
|
25
|
+
- Page-level layouts (dashboard, settings, landing page)
|
|
26
|
+
- Responsive breakpoints (mobile, tablet, desktop)
|
|
27
|
+
- Theme variants (light mode, dark mode)
|
|
28
|
+
- States (loading, empty, error, populated)
|
|
29
|
+
|
|
30
|
+
3. **Determine the rendering strategy.** Choose how screenshots are captured:
|
|
31
|
+
- **Storybook + Chromatic/Percy:** best for component libraries with existing stories
|
|
32
|
+
- **Playwright screenshots:** best for full-page and integration-level visual tests
|
|
33
|
+
- **Jest + jest-image-snapshot:** best for lightweight component rendering with jsdom or happy-dom
|
|
34
|
+
- **Cypress + Percy plugin:** best when Cypress is already the E2E framework
|
|
35
|
+
|
|
36
|
+
4. **Identify viewport and theme matrix.** Define the combinations to test:
|
|
37
|
+
- Viewports: 375px (mobile), 768px (tablet), 1280px (desktop), 1920px (wide)
|
|
38
|
+
- Themes: light, dark (if supported)
|
|
39
|
+
- Locales: LTR, RTL (if internationalized)
|
|
40
|
+
|
|
41
|
+
5. **Report findings.** Summarize: components to cover, rendering strategy, viewport matrix, and estimated baseline count.
|
|
42
|
+
|
|
43
|
+
### Phase 2: BASELINE -- Capture Reference Screenshots
|
|
44
|
+
|
|
45
|
+
1. **Configure the visual testing tool.** Set up:
|
|
46
|
+
- Screenshot output directory with `.gitkeep` or add to `.gitignore` as appropriate
|
|
47
|
+
- Threshold for pixel-level diff tolerance (recommended: 0.1% for component tests, 0.5% for full-page tests)
|
|
48
|
+
- Anti-aliasing handling to avoid false positives across different rendering engines
|
|
49
|
+
- Font loading: wait for web fonts to load before capture, or use a system font fallback in test mode
|
|
50
|
+
|
|
51
|
+
2. **Stabilize rendering for deterministic screenshots.** Address common sources of non-determinism:
|
|
52
|
+
- Disable CSS animations and transitions in test mode
|
|
53
|
+
- Mock dates and times to prevent timestamp-based changes
|
|
54
|
+
- Replace dynamic content (avatars, ads, user-generated content) with stable placeholders
|
|
55
|
+
- Set a fixed random seed for any randomized UI elements
|
|
56
|
+
|
|
57
|
+
3. **Capture baseline screenshots.** For each component in the test matrix:
|
|
58
|
+
- Render the component in each viewport and theme combination
|
|
59
|
+
- Wait for fonts, images, and lazy-loaded content to fully render
|
|
60
|
+
- Capture and save the screenshot to the baseline directory
|
|
61
|
+
|
|
62
|
+
4. **Review baselines manually.** Before committing, visually inspect every baseline screenshot. Confirm:
|
|
63
|
+
- The component renders correctly at each viewport
|
|
64
|
+
- No rendering artifacts (clipped text, missing icons, broken layouts)
|
|
65
|
+
- The screenshot captures the full component without excessive whitespace
|
|
66
|
+
|
|
67
|
+
5. **Commit baselines.** Add baseline screenshots to version control with a descriptive commit message. These baselines become the source of truth for future comparisons.
|
|
68
|
+
|
|
69
|
+
### Phase 3: COMPARE -- Run Visual Diffs Against Baselines
|
|
70
|
+
|
|
71
|
+
1. **Execute visual comparison.** Run the visual test suite, which:
|
|
72
|
+
- Renders each component in the same viewport/theme matrix
|
|
73
|
+
- Captures a new screenshot for each combination
|
|
74
|
+
- Compares the new screenshot against the stored baseline pixel-by-pixel
|
|
75
|
+
- Reports differences that exceed the configured threshold
|
|
76
|
+
|
|
77
|
+
2. **Classify each diff.** For every screenshot that exceeds the threshold:
|
|
78
|
+
- **Intentional change:** the diff corresponds to a deliberate design update in the current PR. Mark for baseline update.
|
|
79
|
+
- **Regression:** the diff is unintended and represents a visual bug. Flag for investigation.
|
|
80
|
+
- **Environmental noise:** the diff is caused by rendering differences (sub-pixel anti-aliasing, font hinting). Increase threshold or stabilize rendering.
|
|
81
|
+
|
|
82
|
+
3. **Investigate regressions.** For each regression:
|
|
83
|
+
- Identify the CSS or component change that caused the visual shift
|
|
84
|
+
- Determine if the change is localized (one component) or cascading (layout shift affecting multiple components)
|
|
85
|
+
- Check if the change is caused by a dependency update (CSS framework, icon library)
|
|
86
|
+
|
|
87
|
+
4. **Update baselines for intentional changes.** When a visual change is confirmed intentional:
|
|
88
|
+
- Re-capture the baseline for affected screenshots
|
|
89
|
+
- Review the updated baseline to confirm it matches the design intent
|
|
90
|
+
- Commit updated baselines alongside the code change
|
|
91
|
+
|
|
92
|
+
5. **Generate a diff report.** Produce a summary showing:
|
|
93
|
+
- Total screenshots compared
|
|
94
|
+
- Screenshots unchanged (passed)
|
|
95
|
+
- Screenshots with intentional changes (baselines updated)
|
|
96
|
+
- Screenshots with regressions (flagged for fix)
|
|
97
|
+
|
|
98
|
+
### Phase 4: REPORT -- Generate Visual Diff Report and Approval Workflow
|
|
99
|
+
|
|
100
|
+
1. **Create a visual diff summary for PR review.** Include:
|
|
101
|
+
- Side-by-side comparison images for each changed screenshot
|
|
102
|
+
- Diff overlay highlighting the pixels that changed
|
|
103
|
+
- Percentage of pixels changed per screenshot
|
|
104
|
+
- Grouped by component and viewport
|
|
105
|
+
|
|
106
|
+
2. **Integrate with CI pipeline.** Configure the visual test suite to:
|
|
107
|
+
- Run automatically on every pull request
|
|
108
|
+
- Block merge when unapproved visual changes are detected
|
|
109
|
+
- Provide a link to the visual diff report in the PR status check
|
|
110
|
+
|
|
111
|
+
3. **Define the approval workflow.** Establish:
|
|
112
|
+
- Who can approve visual changes (design team, frontend lead)
|
|
113
|
+
- How approvals are recorded (PR comment, Chromatic approval, Percy review)
|
|
114
|
+
- What constitutes an "auto-approve" (changes below threshold, test-only files)
|
|
115
|
+
|
|
116
|
+
4. **Run `harness validate`.** Confirm the project passes all harness checks with visual testing infrastructure in place.
|
|
117
|
+
|
|
118
|
+
5. **Document the visual testing workflow.** Record:
|
|
119
|
+
- How to run visual tests locally
|
|
120
|
+
- How to update baselines after intentional changes
|
|
121
|
+
- How to add visual tests for new components
|
|
122
|
+
- Where to find the diff report in CI
|
|
123
|
+
|
|
124
|
+
### Graph Refresh
|
|
125
|
+
|
|
126
|
+
If a knowledge graph exists at `.harness/graph/`, refresh it after code changes to keep graph queries accurate:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
harness scan [path]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Harness Integration
|
|
133
|
+
|
|
134
|
+
- **`harness validate`** -- Run in REPORT phase after visual testing infrastructure is complete. Confirms project health.
|
|
135
|
+
- **`harness check-deps`** -- Run after BASELINE phase to verify visual testing dependencies are in devDependencies.
|
|
136
|
+
- **`emit_interaction`** -- Used to present visual diff results and request human approval for baseline updates.
|
|
137
|
+
- **Glob** -- Used in DETECT phase to find Storybook stories, existing screenshots, and component files.
|
|
138
|
+
- **Grep** -- Used to search for CSS animation properties, dynamic content patterns, and non-deterministic rendering.
|
|
139
|
+
|
|
140
|
+
## Success Criteria
|
|
141
|
+
|
|
142
|
+
- Every shared design system component has visual baselines for at least mobile and desktop viewports
|
|
143
|
+
- Visual diffs are deterministic: running the same code produces the same screenshots every time
|
|
144
|
+
- No false positives: environmental noise (font rendering, anti-aliasing) does not trigger diff failures
|
|
145
|
+
- Intentional changes are distinguished from regressions in the diff report
|
|
146
|
+
- Baselines are committed to version control and updated alongside code changes
|
|
147
|
+
- CI blocks merge when unapproved visual changes are detected
|
|
148
|
+
- `harness validate` passes with visual testing infrastructure in place
|
|
149
|
+
|
|
150
|
+
## Examples
|
|
151
|
+
|
|
152
|
+
### Example: Playwright Visual Regression for a React App
|
|
153
|
+
|
|
154
|
+
**BASELINE -- Capture component screenshots:**
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// visual-tests/components.spec.ts
|
|
158
|
+
import { test, expect } from '@playwright/test';
|
|
159
|
+
|
|
160
|
+
const viewports = [
|
|
161
|
+
{ name: 'mobile', width: 375, height: 812 },
|
|
162
|
+
{ name: 'desktop', width: 1280, height: 720 },
|
|
163
|
+
];
|
|
164
|
+
|
|
165
|
+
for (const viewport of viewports) {
|
|
166
|
+
test.describe(`${viewport.name} viewport`, () => {
|
|
167
|
+
test.use({ viewport: { width: viewport.width, height: viewport.height } });
|
|
168
|
+
|
|
169
|
+
test('dashboard renders correctly', async ({ page }) => {
|
|
170
|
+
await page.goto('/dashboard');
|
|
171
|
+
await page.waitForLoadState('networkidle');
|
|
172
|
+
// Disable animations for deterministic screenshots
|
|
173
|
+
await page.addStyleTag({
|
|
174
|
+
content:
|
|
175
|
+
'*, *::before, *::after { animation: none !important; transition: none !important; }',
|
|
176
|
+
});
|
|
177
|
+
await expect(page).toHaveScreenshot(`dashboard-${viewport.name}.png`, {
|
|
178
|
+
maxDiffPixelRatio: 0.005,
|
|
179
|
+
fullPage: true,
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
test('settings page renders correctly', async ({ page }) => {
|
|
184
|
+
await page.goto('/settings');
|
|
185
|
+
await page.waitForLoadState('networkidle');
|
|
186
|
+
await page.addStyleTag({
|
|
187
|
+
content:
|
|
188
|
+
'*, *::before, *::after { animation: none !important; transition: none !important; }',
|
|
189
|
+
});
|
|
190
|
+
await expect(page).toHaveScreenshot(`settings-${viewport.name}.png`, {
|
|
191
|
+
maxDiffPixelRatio: 0.005,
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Example: Storybook with Chromatic
|
|
199
|
+
|
|
200
|
+
**DETECT output:**
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
Storybook: v7.6 detected (.storybook/main.ts)
|
|
204
|
+
Stories: 47 stories across 23 components
|
|
205
|
+
Chromatic: not configured
|
|
206
|
+
Existing baselines: none
|
|
207
|
+
Components without stories: Modal, Toast, DatePicker (3 gaps)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**BASELINE -- Configure Chromatic and run first build:**
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
// package.json (relevant scripts)
|
|
214
|
+
{
|
|
215
|
+
"scripts": {
|
|
216
|
+
"chromatic": "chromatic --project-token=${CHROMATIC_PROJECT_TOKEN}",
|
|
217
|
+
"chromatic:ci": "chromatic --project-token=${CHROMATIC_PROJECT_TOKEN} --exit-zero-on-changes --auto-accept-changes main"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
// .storybook/preview.ts -- stabilize rendering
|
|
224
|
+
import { Preview } from '@storybook/react';
|
|
225
|
+
|
|
226
|
+
const preview: Preview = {
|
|
227
|
+
parameters: {
|
|
228
|
+
chromatic: {
|
|
229
|
+
pauseAnimationAtEnd: true,
|
|
230
|
+
viewports: [375, 768, 1280],
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
decorators: [
|
|
234
|
+
(Story) => (
|
|
235
|
+
<div style={{ fontFamily: 'Arial, sans-serif' }}>
|
|
236
|
+
<Story />
|
|
237
|
+
</div>
|
|
238
|
+
),
|
|
239
|
+
],
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
export default preview;
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Gates
|
|
246
|
+
|
|
247
|
+
- **No non-deterministic screenshots.** If the same code produces different screenshots on consecutive runs, the rendering is not stabilized. Fix animations, dynamic content, and font loading before capturing baselines.
|
|
248
|
+
- **No uncommitted baselines.** Baseline screenshots must be in version control. If baselines exist only on a developer's machine, CI cannot compare against them. Commit baselines with the code that creates them.
|
|
249
|
+
- **No threshold above 1%.** A pixel diff threshold above 1% hides real regressions. If environmental noise requires a higher threshold, fix the noise source (fonts, animations) rather than raising the threshold.
|
|
250
|
+
- **No visual tests without review workflow.** Visual tests that run but whose results are never reviewed provide false confidence. Every visual diff must have a defined approval path.
|
|
251
|
+
|
|
252
|
+
## Escalation
|
|
253
|
+
|
|
254
|
+
- **When screenshots differ between local and CI environments:** This is usually caused by different font rendering, display scaling, or browser versions. Standardize by running visual tests in Docker with a fixed browser version and system fonts. Do not try to match local and CI rendering -- pick one as the source of truth.
|
|
255
|
+
- **When baseline updates flood a PR with hundreds of changed screenshots:** Group changes by root cause. If a single CSS variable change cascades to 200 screenshots, approve the root cause and batch-update baselines. Consider whether the cascade indicates a design system architecture issue.
|
|
256
|
+
- **When dynamic content (user avatars, timestamps, ads) causes false positives:** Mock or replace dynamic content in the test environment. Use Storybook args or Playwright route interception to inject stable placeholder content.
|
|
257
|
+
- **When the visual test suite takes too long (> 15 minutes):** Prioritize components by change frequency. Run the full visual suite nightly, and only test changed components on each PR using affected-story detection.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: harness-visual-regression
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Screenshot comparison, visual diff detection, and baseline management
|
|
4
|
+
cognitive_mode: meticulous-verifier
|
|
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-visual-regression
|
|
21
|
+
args:
|
|
22
|
+
- name: path
|
|
23
|
+
description: Project root path
|
|
24
|
+
required: false
|
|
25
|
+
- name: tool
|
|
26
|
+
description: "Visual testing tool: chromatic, percy, pixelmatch, or playwright. Auto-detected when omitted."
|
|
27
|
+
required: false
|
|
28
|
+
- name: update-baselines
|
|
29
|
+
description: "Update baseline screenshots instead of comparing. Defaults to false."
|
|
30
|
+
required: false
|
|
31
|
+
mcp:
|
|
32
|
+
tool: run_skill
|
|
33
|
+
input:
|
|
34
|
+
skill: harness-visual-regression
|
|
35
|
+
path: string
|
|
36
|
+
type: rigid
|
|
37
|
+
tier: 3
|
|
38
|
+
internal: false
|
|
39
|
+
keywords:
|
|
40
|
+
- visual regression
|
|
41
|
+
- screenshot
|
|
42
|
+
- visual diff
|
|
43
|
+
- Chromatic
|
|
44
|
+
- Percy
|
|
45
|
+
- Pixelmatch
|
|
46
|
+
- Storybook
|
|
47
|
+
- baseline
|
|
48
|
+
- snapshot
|
|
49
|
+
- visual testing
|
|
50
|
+
- CSS regression
|
|
51
|
+
stack_signals:
|
|
52
|
+
- "visual-tests/"
|
|
53
|
+
- ".chromatic/"
|
|
54
|
+
- "percy.yml"
|
|
55
|
+
- ".storybook/"
|
|
56
|
+
- "tests/visual/"
|
|
57
|
+
- "screenshots/"
|
|
58
|
+
phases:
|
|
59
|
+
- name: detect
|
|
60
|
+
description: Identify UI components, existing visual tests, and rendering infrastructure
|
|
61
|
+
required: true
|
|
62
|
+
- name: baseline
|
|
63
|
+
description: Capture or verify baseline screenshots for target components and viewports
|
|
64
|
+
required: true
|
|
65
|
+
- name: compare
|
|
66
|
+
description: Run visual diff against baselines and classify changes as intentional or regression
|
|
67
|
+
required: true
|
|
68
|
+
- name: report
|
|
69
|
+
description: Generate visual diff report with annotated screenshots and approval workflow
|
|
70
|
+
required: true
|
|
71
|
+
state:
|
|
72
|
+
persistent: false
|
|
73
|
+
files: []
|
|
74
|
+
depends_on: []
|