@harness-engineering/cli 1.23.0 → 1.23.2
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/harness/add-harness-component/SKILL.md +21 -12
- package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +5 -15
- package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +5 -15
- package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +10 -0
- package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +5 -15
- package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +18 -10
- package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +10 -0
- package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +10 -1
- package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +5 -15
- package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +20 -1
- package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +10 -0
- package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +9 -0
- package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +8 -0
- package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +22 -13
- package/dist/agents/commands/cursor/harness/add-harness-component.mdc +12 -12
- package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +10 -10
- package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +1 -1
- package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +13 -13
- package/dist/agents/skills/claude-code/add-harness-component/SKILL.md +21 -12
- package/dist/agents/skills/claude-code/align-documentation/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/check-mechanical-constraints/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/cleanup-dead-code/SKILL.md +11 -0
- package/dist/agents/skills/claude-code/detect-doc-drift/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/enforce-architecture/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-auth/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-caching/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +11 -0
- package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-database/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-debugging/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-dependency-health/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-design/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-design-mobile/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-design-system/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-design-web/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-diagnostics/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-docs-pipeline/SKILL.md +11 -0
- package/dist/agents/skills/claude-code/harness-dx/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-execution/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-hotspot-detector/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-i18n/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-i18n-process/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-i18n-workflow/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-impact-analysis/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-integrity/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-knowledge-mapper/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-observability/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-onboarding/SKILL.md +18 -10
- package/dist/agents/skills/claude-code/harness-parallel-agents/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-perf/SKILL.md +11 -0
- package/dist/agents/skills/claude-code/harness-perf-tdd/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-refactoring/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-release-readiness/SKILL.md +11 -0
- package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +10 -1
- package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +8 -0
- package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-security-review/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +5 -15
- package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +29 -1
- package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-state-management/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-supply-chain-audit/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-tdd/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-test-advisor/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-verification/SKILL.md +9 -0
- package/dist/agents/skills/claude-code/harness-verify/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +22 -13
- package/dist/agents/skills/claude-code/validate-context-engineering/SKILL.md +9 -0
- package/dist/agents/skills/codex/add-harness-component/SKILL.md +21 -12
- package/dist/agents/skills/codex/align-documentation/SKILL.md +9 -0
- package/dist/agents/skills/codex/check-mechanical-constraints/SKILL.md +9 -0
- package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +11 -0
- package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +9 -0
- package/dist/agents/skills/codex/enforce-architecture/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-api-design/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-auth/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-autopilot/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-caching/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-chaos/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +11 -0
- package/dist/agents/skills/codex/harness-compliance/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-containerization/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-data-pipeline/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-data-validation/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-database/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-debugging/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-deployment/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-design/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-design-mobile/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-design-system/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-design-web/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-diagnostics/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-docs-pipeline/SKILL.md +11 -0
- package/dist/agents/skills/codex/harness-dx/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-e2e/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-event-driven/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-execution/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-feature-flags/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-hotspot-detector/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-i18n/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-i18n-process/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-i18n-workflow/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-incident-response/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-infrastructure-as-code/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-integration-test/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-integrity/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-knowledge-mapper/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-load-testing/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-ml-ops/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-mobile-patterns/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-mutation-test/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-observability/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-onboarding/SKILL.md +18 -10
- package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-perf/SKILL.md +11 -0
- package/dist/agents/skills/codex/harness-perf-tdd/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-planning/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-product-spec/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-property-test/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-refactoring/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +11 -0
- package/dist/agents/skills/codex/harness-resilience/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-roadmap/SKILL.md +10 -1
- package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +8 -0
- package/dist/agents/skills/codex/harness-secrets/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-security-review/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-security-scan/SKILL.md +5 -15
- package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +29 -1
- package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-sql-review/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-state-management/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-supply-chain-audit/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-tdd/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-test-data/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-ux-copy/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-verification/SKILL.md +9 -0
- package/dist/agents/skills/codex/harness-verify/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-visual-regression/SKILL.md +10 -0
- package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +22 -13
- package/dist/agents/skills/codex/validate-context-engineering/SKILL.md +9 -0
- package/dist/agents/skills/cursor/add-harness-component/SKILL.md +21 -12
- package/dist/agents/skills/cursor/align-documentation/SKILL.md +9 -0
- package/dist/agents/skills/cursor/check-mechanical-constraints/SKILL.md +9 -0
- package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +11 -0
- package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +9 -0
- package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-api-design/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-auth/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-caching/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-chaos/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +11 -0
- package/dist/agents/skills/cursor/harness-compliance/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-containerization/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-data-pipeline/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-data-validation/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-database/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-debugging/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-deployment/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-design/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-design-mobile/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-design-system/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-design-web/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-diagnostics/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-docs-pipeline/SKILL.md +11 -0
- package/dist/agents/skills/cursor/harness-dx/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-e2e/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-event-driven/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-execution/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-feature-flags/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-hotspot-detector/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-i18n/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-i18n-process/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-i18n-workflow/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-incident-response/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-infrastructure-as-code/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-integration-test/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-integrity/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-knowledge-mapper/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-load-testing/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-ml-ops/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-mobile-patterns/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-mutation-test/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-observability/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +18 -10
- package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-perf/SKILL.md +11 -0
- package/dist/agents/skills/cursor/harness-perf-tdd/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-product-spec/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-property-test/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +11 -0
- package/dist/agents/skills/cursor/harness-resilience/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +10 -1
- package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +8 -0
- package/dist/agents/skills/cursor/harness-secrets/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-security-review/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +5 -15
- package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +29 -1
- package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-sql-review/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-state-management/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-supply-chain-audit/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-tdd/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-test-data/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-ux-copy/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-verification/SKILL.md +9 -0
- package/dist/agents/skills/cursor/harness-verify/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-visual-regression/SKILL.md +10 -0
- package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +22 -13
- package/dist/agents/skills/cursor/validate-context-engineering/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/add-harness-component/SKILL.md +21 -12
- package/dist/agents/skills/gemini-cli/align-documentation/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/check-mechanical-constraints/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/cleanup-dead-code/SKILL.md +11 -0
- package/dist/agents/skills/gemini-cli/detect-doc-drift/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +11 -0
- package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-debugging/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-dependency-health/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-design/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-design-mobile/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-design-system/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-design-web/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-diagnostics/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-docs-pipeline/SKILL.md +11 -0
- package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-hotspot-detector/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-i18n/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-i18n-process/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-i18n-workflow/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-impact-analysis/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-integrity/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-onboarding/SKILL.md +18 -10
- package/dist/agents/skills/gemini-cli/harness-parallel-agents/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-perf/SKILL.md +11 -0
- package/dist/agents/skills/gemini-cli/harness-perf-tdd/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-refactoring/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-release-readiness/SKILL.md +11 -0
- package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +10 -1
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +8 -0
- package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +5 -15
- package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +29 -1
- package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-state-management/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-tdd/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-test-advisor/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +9 -0
- package/dist/agents/skills/gemini-cli/harness-verify/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +22 -13
- package/dist/agents/skills/gemini-cli/validate-context-engineering/SKILL.md +9 -0
- package/dist/agents-md-HCCCO5PK.js +9 -0
- package/dist/{architecture-EDSBAGR4.js → architecture-S2H624W7.js} +5 -5
- package/dist/{assess-project-CEDY4JU3.js → assess-project-XSGK44S5.js} +1 -1
- package/dist/bin/harness-mcp.js +18 -18
- package/dist/bin/harness.js +124 -35
- package/dist/{check-phase-gate-N3DTKFCZ.js → check-phase-gate-UGBJ237T.js} +5 -5
- package/dist/{chunk-AIBAYANF.js → chunk-2DHX6TAP.js} +4 -4
- package/dist/{chunk-ENA4O4WD.js → chunk-2GT3HO2T.js} +3 -3
- package/dist/{chunk-TJ6NLLAY.js → chunk-2YA4XRI3.js} +5 -5
- package/dist/{chunk-GZKSBLQL.js → chunk-35EQ5UEI.js} +1 -1
- package/dist/{chunk-T5QWCVGK.js → chunk-4FHBPA3E.js} +11 -3
- package/dist/{chunk-ERS5EVUZ.js → chunk-5LMZA5LZ.js} +10 -10
- package/dist/{chunk-SM22U22L.js → chunk-BK52Z6DR.js} +869 -419
- package/dist/{chunk-5SWE24IG.js → chunk-CLD4KL7O.js} +342 -72
- package/dist/{chunk-OD3S2NHN.js → chunk-E2GTL3YS.js} +1 -1
- package/dist/{chunk-YLN34N65.js → chunk-FP53DDB5.js} +1 -1
- package/dist/{chunk-TLDCCPUZ.js → chunk-I47JLISV.js} +1 -1
- package/dist/{chunk-AKVG4MMZ.js → chunk-KC5CTCEL.js} +9 -9
- package/dist/{chunk-26AUZBV4.js → chunk-KTL3PHNQ.js} +6445 -6222
- package/dist/{chunk-DBSOCI3G.js → chunk-KV4M6Y5J.js} +1 -1
- package/dist/{chunk-FIAPHX37.js → chunk-LM5Z2WCA.js} +1 -1
- package/dist/{chunk-SD3SQOZ2.js → chunk-LOUH2LIC.js} +1 -1
- package/dist/{chunk-QUKH6QCJ.js → chunk-MHOO7NLG.js} +11 -11
- package/dist/{chunk-HT4VPPB4.js → chunk-MZAHE4DK.js} +12 -12
- package/dist/{chunk-A4AI3H3R.js → chunk-NKL53UBL.js} +6 -6
- package/dist/{chunk-GJRUIXUK.js → chunk-PGF44T2D.js} +6 -6
- package/dist/{chunk-H7Y5CKTM.js → chunk-Q3XYV5UC.js} +1 -1
- package/dist/{chunk-TD6MQUV2.js → chunk-S5ZXT3TZ.js} +1 -1
- package/dist/{chunk-6KWBH4EO.js → chunk-UGD37ECK.js} +5 -5
- package/dist/{chunk-XDAIFVGC.js → chunk-V27WDRYV.js} +603 -525
- package/dist/{chunk-YQ6KC6TE.js → chunk-YDRB55Q4.js} +1 -1
- package/dist/{chunk-2LAEDVOC.js → chunk-ZRYDYDB2.js} +6 -6
- package/dist/{chunk-LIWGCYON.js → chunk-ZYJJUPNE.js} +1 -1
- package/dist/ci-workflow-I3V7FZNV.js +9 -0
- package/dist/{create-skill-U3XCFRZN.js → create-skill-AO25CJFM.js} +2 -2
- package/dist/{dist-USY2C5JL.js → dist-666AAZQ6.js} +1 -1
- package/dist/{dist-DZ63LLUD.js → dist-KQSTRP36.js} +1 -1
- package/dist/{dist-YIKUBJLQ.js → dist-MKWF5CXR.js} +7 -3
- package/dist/{dist-OEXTQQZC.js → dist-WU3TVNNG.js} +7 -1
- package/dist/{docs-F5G7NAFF.js → docs-R7UVQBMQ.js} +5 -5
- package/dist/engine-JGI3MWAC.js +9 -0
- package/dist/{entropy-A5Q2USYX.js → entropy-IDHIG7HS.js} +4 -4
- package/dist/{feedback-2EU25RIW.js → feedback-JZETY4UR.js} +1 -1
- package/dist/{generate-agent-definitions-HNJHO5YQ.js → generate-agent-definitions-D7B25YTM.js} +6 -6
- package/dist/{graph-loader-XULF5QF7.js → graph-loader-BJULJYGG.js} +1 -1
- package/dist/index.d.ts +20 -16
- package/dist/index.js +54 -54
- package/dist/loader-E4KNTOP2.js +11 -0
- package/dist/mcp-67I2DBNM.js +37 -0
- package/dist/{performance-YAY2A6A6.js → performance-744OSR6P.js} +5 -5
- package/dist/{review-pipeline-YD4WI3JM.js → review-pipeline-HIO7HBW4.js} +1 -1
- package/dist/runtime-JXQ26U4Z.js +10 -0
- package/dist/{security-IBSUKMVD.js → security-GDKHVFUC.js} +1 -1
- package/dist/{validate-NHXWKMCR.js → validate-2IUR3OWX.js} +5 -5
- package/dist/validate-cross-check-AM4T6P2K.js +9 -0
- package/package.json +5 -5
- package/dist/agents-md-GLKJSGKT.js +0 -9
- package/dist/ci-workflow-LE3QF4FP.js +0 -9
- package/dist/engine-LX5RVGXN.js +0 -9
- package/dist/loader-GWIEW4HM.js +0 -11
- package/dist/mcp-ID3LR6JB.js +0 -37
- package/dist/runtime-UJ4YO4CA.js +0 -10
- package/dist/validate-cross-check-R3GV2MLM.js +0 -9
- package/dist/{chunk-CJDVBBPB.js → chunk-3ISINLYT.js} +1 -1
|
@@ -253,6 +253,16 @@ def test_admin_can_delete_any_project():
|
|
|
253
253
|
assert admin.has_perm('delete_project', project)
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
+
## Rationalizations to Reject
|
|
257
|
+
|
|
258
|
+
| Rationalization | Reality |
|
|
259
|
+
| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
260
|
+
| "The test only needs one user — I'll just hardcode `userId: 1` rather than building a factory." | Hardcoded IDs cause silent test failures when the database is reset, when tests run in parallel, or when another test creates a conflicting record. Factories with sequences or UUIDs exist precisely to avoid this class of failure. One hardcoded ID is how fragile test suites start. |
|
|
261
|
+
| "The factory produces objects that are close enough to valid — the test just needs to override two fields anyway." | A factory that requires overrides to produce a valid object has wrong defaults. The factory's zero-override output must pass model validation. If it does not, the factory is documenting the wrong defaults and tests that rely on overrides will break when the model changes. |
|
|
262
|
+
| "Cleanup is handled by rolling back the test transaction — I don't need explicit teardown." | Transaction rollback works until it does not: tests that span multiple connections, tests that call external APIs, or tests that write to a queue or file system all escape the transaction. Explicit cleanup is the only strategy that covers all cases, including tests that use features you have not built yet. |
|
|
263
|
+
| "We can share the same seeded dataset across all integration tests to avoid the overhead of per-test factories." | Shared mutable data means test A's side effect becomes test B's precondition. When tests fail intermittently based on execution order, the root cause is always shared state. The overhead of per-test factory creation is small compared to the cost of debugging order-dependent failures. |
|
|
264
|
+
| "The model only has three fields — writing a factory is more overhead than just constructing the object inline." | Today's three-field model becomes tomorrow's ten-field model with required foreign keys. Inline construction scales linearly with model complexity. A factory written once absorbs all future field additions in one place. The overhead argument inverts as the codebase grows. |
|
|
265
|
+
|
|
256
266
|
## Gates
|
|
257
267
|
|
|
258
268
|
- **No hardcoded IDs in factories.** Factories must generate unique IDs per instance. Hardcoded IDs cause collision failures when tests run in parallel. Use sequences or UUIDs.
|
|
@@ -256,6 +256,16 @@ Phase 4: VALIDATE
|
|
|
256
256
|
Result: NEEDS_ATTENTION -- 3 errors requiring translator coordination
|
|
257
257
|
```
|
|
258
258
|
|
|
259
|
+
## Rationalizations to Reject
|
|
260
|
+
|
|
261
|
+
| Rationalization | Reality |
|
|
262
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
263
|
+
| "There's no voice guide, but the existing strings have a consistent tone — I can infer the voice from them and skip generating `VOICE.md`." | Inferring voice from existing strings that may themselves have quality problems is circular. The GUIDE phase must produce a `VOICE.md` draft when none exists. Without a written guide, the audit has no stable reference for subsequent runs. |
|
|
264
|
+
| "This error message says 'Invalid credentials' — the rewrite is obvious, so I'll apply it without waiting for confirmation." | The gates require no semantic changes and no bulk changes without confirmation. Even obvious rewrites must be presented in the structured report format with the `UXC-ERR` code, current string, recommendation, rule, and rationale — not applied directly. |
|
|
265
|
+
| "The `{count}` interpolation variable is in the original string — my rewrite restructured the sentence so the variable moved to a different position. That's still compatible." | Rewrites must preserve interpolation variables exactly as they appear. If restructuring a sentence moves a variable to a position where the resulting translation would be grammatically wrong in target locales, the rewrite is invalid. Flag it for translator review instead. |
|
|
266
|
+
| "There are 8 occurrences of 'Sign in' and 3 of 'Log in' — I'll just update all 11 to 'Sign in' since that's clearly the majority term." | Terminology standardization affecting more than 5 files requires presenting the full change list and waiting for human confirmation before recommending. The majority term is a reasonable default recommendation, but the human must approve the batch. |
|
|
267
|
+
| "This empty state just says 'No results' — that's a warning, not an error, so I can deprioritize it and skip the rewrite." | Every warning finding requires a specific rewrite, not just a note that one is needed. The GUIDE phase produces rewrites for all error and warning findings. Skipping the rewrite for any classified finding produces an incomplete report. |
|
|
268
|
+
|
|
259
269
|
## Gates
|
|
260
270
|
|
|
261
271
|
- **No rewrite may change semantic meaning.** If a recommended rewrite alters what the user understands about the situation or available actions, it is rejected. Rewrites improve clarity and tone, not content.
|
|
@@ -359,6 +359,15 @@ For behavioral verification (did the agent follow a convention, did the output m
|
|
|
359
359
|
|
|
360
360
|
If a behavioral convention fails more than 40% of the time, the convention needs rewriting. Blame the instruction, not the executor.
|
|
361
361
|
|
|
362
|
+
## Rationalizations to Reject
|
|
363
|
+
|
|
364
|
+
| Rationalization | Reality |
|
|
365
|
+
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
366
|
+
| "The tests passed when I ran them earlier, so I do not need to re-run them now" | The Iron Law forbids cached results. All verification evidence must be collected fresh in THIS session. |
|
|
367
|
+
| "The file exists and has code in it, so I can skip reading it thoroughly for Level 2" | Level 2 (SUBSTANTIVE) requires reading the file content thoroughly. Scanning for TODO, throw new Error, empty functions, and hardcoded return values catches stubs that look like real implementations. |
|
|
368
|
+
| "This artifact is tested by a file that imports it, so it passes Level 3 WIRED" | Being imported is necessary but not sufficient for WIRED. The test must actually make assertions about the artifact's behavior and not be skipped. |
|
|
369
|
+
| "The verification report probably looks fine based on what I remember" | The words "should", "probably", "seems to", and "I believe" are forbidden in verification reports. Replace with "verified: [evidence]" or "not verified: [what is missing]." |
|
|
370
|
+
|
|
362
371
|
## Examples
|
|
363
372
|
|
|
364
373
|
### Example: Verifying a New Service Module
|
|
@@ -125,6 +125,16 @@ This skill is entirely deterministic. There are no LLM judgment calls anywhere i
|
|
|
125
125
|
- [ ] Overall verdict correctly reflects individual results
|
|
126
126
|
- [ ] Failed checks include error output summary
|
|
127
127
|
|
|
128
|
+
## Rationalizations to Reject
|
|
129
|
+
|
|
130
|
+
These are common rationalizations that sound reasonable but lead to incorrect results. When you catch yourself thinking any of these, stop and follow the documented process instead.
|
|
131
|
+
|
|
132
|
+
| Rationalization | Why It Is Wrong |
|
|
133
|
+
| -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
134
|
+
| "The lint command is slow and the code looks clean, so I will skip it" | No skipping. If a command is detected, it runs. Period. There is no "looks clean" judgment call. |
|
|
135
|
+
| "The typecheck failed but it is just a missing type declaration, so I will interpret it as a pass" | The exit code is the only signal. No judgment calls. Exit code non-zero equals FAIL, always. |
|
|
136
|
+
| "I will fix the lint error I found and re-run, since it is a quick fix" | No file modifications. This skill is read-only plus command execution. Fixing errors is the responsibility of the skill that produced the code. |
|
|
137
|
+
|
|
128
138
|
## Examples
|
|
129
139
|
|
|
130
140
|
### Example: Node.js Project
|
|
@@ -242,6 +242,16 @@ const preview: Preview = {
|
|
|
242
242
|
export default preview;
|
|
243
243
|
```
|
|
244
244
|
|
|
245
|
+
## Rationalizations to Reject
|
|
246
|
+
|
|
247
|
+
| Rationalization | Reality |
|
|
248
|
+
| -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
249
|
+
| "The baseline screenshots are committed locally but not pushed — CI can capture its own baselines on the first run." | CI baselines captured without human review become the source of truth for a rendering state nobody verified. Every baseline must be manually inspected before committing. A CI-generated baseline for a broken layout will pass every future comparison until someone notices the visual bug manually. |
|
|
250
|
+
| "The diff is only 0.3% of pixels — it's probably just font rendering noise, not a real regression." | "Probably" is not a classification. Investigate the diff to determine if it is environmental noise or a real change before dismissing it. If it is noise, fix the source (fonts, animations) and lower the threshold. If it is a real change, update the baseline with intent. Skipping investigation means regressions hide behind noise tolerance. |
|
|
251
|
+
| "We have 300 components — it's not practical to have baselines for all of them." | Start with shared design system components (buttons, inputs, modals) and page-level layouts. Partial coverage is better than none, and it is easier to add coverage incrementally than to audit an entire codebase for visual regressions after the fact. Prioritize high-visibility, high-change-frequency surfaces first. |
|
|
252
|
+
| "The visual test suite takes 20 minutes — let's just run it manually before releases instead of in CI." | Manual pre-release checks are skipped under deadline pressure. Visual regression is most valuable on every PR, where the author is still in context and the fix is immediate. A 20-minute suite is a signal to optimize (affected-story detection, parallelization), not to remove CI integration. |
|
|
253
|
+
| "The component changed intentionally — I'll just auto-accept the diff without reviewing the new screenshot." | Auto-accepting without review permanently resets the baseline to whatever was rendered, correct or not. Every baseline update requires a human to look at the new screenshot and confirm it matches design intent. The review is not a formality — it is the entire point of the approval workflow. |
|
|
254
|
+
|
|
245
255
|
## Gates
|
|
246
256
|
|
|
247
257
|
- **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.
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
### Phase 1: ASSESS — Determine Current State
|
|
18
18
|
|
|
19
|
-
1. **Check for existing harness configuration.** Look for `.harness/` directory, `AGENTS.md`, `harness.
|
|
19
|
+
1. **Check for existing harness configuration.** Look for `.harness/` directory, `AGENTS.md`, `harness.config.json`, and any skill definitions. Their presence determines whether this is a new project or a migration.
|
|
20
20
|
|
|
21
21
|
2. **For new projects:** Gather project context — language, framework, test runner, build tool. Ask the human if any of these are undecided. Do not assume defaults.
|
|
22
22
|
|
|
23
23
|
2b. **For existing projects with detectable frameworks:** Run `harness init` without flags first. The command auto-detects frameworks (FastAPI, Django, Gin, Axum, Spring Boot, Next.js, React+Vite, Vue, Express, NestJS) by scanning project files. Present the detection result to the human and ask for confirmation before proceeding. If detection fails, ask the human to specify `--framework` manually.
|
|
24
24
|
|
|
25
25
|
3. **For existing projects:** Run `harness validate` to see what is already configured and what is missing. Read `AGENTS.md` if it exists. Identify the current adoption level:
|
|
26
|
-
- **Basic:** Has `AGENTS.md` and `harness.
|
|
26
|
+
- **Basic:** Has `AGENTS.md` and `harness.config.json` with project metadata. No layers, no skills, no dependency constraints.
|
|
27
27
|
- **Intermediate:** Has layers defined, dependency constraints between layers, at least one custom skill. `harness check-deps` runs and passes.
|
|
28
28
|
- **Advanced:** Has full persona configuration, custom skills for the team's workflows, state management, learnings capture, and CI integration for `harness validate`.
|
|
29
29
|
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
**Supported languages:** typescript, python, go, rust, java
|
|
45
45
|
|
|
46
46
|
2. **Review generated files.** `harness init` creates:
|
|
47
|
-
- `harness.
|
|
47
|
+
- `harness.config.json` — Project configuration (name, stack, adoption level)
|
|
48
48
|
- `.harness/` directory — State and learnings storage
|
|
49
49
|
- `AGENTS.md` — Agent instructions (template, needs customization)
|
|
50
50
|
- Layer definitions (intermediate and above)
|
|
51
51
|
- Dependency constraints (intermediate and above)
|
|
52
52
|
|
|
53
|
-
3. **Do not blindly accept generated content.** Read the generated `AGENTS.md` and `harness.
|
|
53
|
+
3. **Do not blindly accept generated content.** Read the generated `AGENTS.md` and `harness.config.json`. Flag anything that looks wrong or incomplete. The scaffolded output is a starting point, not a finished product.
|
|
54
54
|
|
|
55
55
|
### Phase 3: CONFIGURE — Customize for the Project
|
|
56
56
|
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
- Known constraints and forbidden patterns
|
|
64
64
|
- Links to relevant documentation
|
|
65
65
|
|
|
66
|
-
3. **For intermediate and above:** Define layer boundaries. Which modules belong to which layers? What are the allowed import directions? Document these in `harness.
|
|
66
|
+
3. **For intermediate and above:** Define layer boundaries. Which modules belong to which layers? What are the allowed import directions? Document these in `harness.config.json` and ensure they match the actual codebase structure.
|
|
67
67
|
|
|
68
68
|
4. **For advanced:** Configure state management (`.harness/state.json` schema), learnings capture (`.harness/learnings.md` conventions), and CI integration hooks.
|
|
69
69
|
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
### Phase 4: VALIDATE — Confirm Everything Works
|
|
76
76
|
|
|
77
77
|
1. **Run `harness validate`** to verify the full configuration. This checks:
|
|
78
|
-
- `harness.
|
|
78
|
+
- `harness.config.json` schema validity
|
|
79
79
|
- `AGENTS.md` presence and required sections
|
|
80
80
|
- Layer definitions (if intermediate+)
|
|
81
81
|
- Dependency constraints (if intermediate+)
|
|
@@ -111,7 +111,7 @@ This creates the `.harness/graph/` directory and populates it with the project's
|
|
|
111
111
|
|
|
112
112
|
## Success Criteria
|
|
113
113
|
|
|
114
|
-
- `harness.
|
|
114
|
+
- `harness.config.json` exists and passes schema validation
|
|
115
115
|
- `AGENTS.md` exists with project-specific content (not just the template)
|
|
116
116
|
- `.harness/` directory exists with appropriate state files
|
|
117
117
|
- `harness validate` passes with zero errors
|
|
@@ -121,6 +121,15 @@ This creates the `.harness/graph/` directory and populates it with the project's
|
|
|
121
121
|
- All generated files are committed in a single atomic commit
|
|
122
122
|
- i18n configuration is set if the human chose to enable it during init
|
|
123
123
|
|
|
124
|
+
## Rationalizations to Reject
|
|
125
|
+
|
|
126
|
+
| Rationalization | Why It Is Wrong |
|
|
127
|
+
| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
128
|
+
| "The generated AGENTS.md template looks fine -- no need to customize it" | Phase 3 says do not blindly accept generated content. Without project-specific descriptions, agents receive generic instructions. |
|
|
129
|
+
| "We should start at the advanced level since we want full coverage" | The skill recommends basic for new projects. Each level builds on the previous. Jumping to advanced creates misconfigured rules. |
|
|
130
|
+
| "I will skip the i18n question to keep setup fast" | Phase 3 requires asking about i18n and recording the decision. Skipping creates ambiguity about whether the omission was intentional. |
|
|
131
|
+
| "Validation passed, so the project is ready" | Phase 4 includes harness check-deps for intermediate+ projects and knowledge graph initialization. Validation alone is not sufficient. |
|
|
132
|
+
|
|
124
133
|
## Examples
|
|
125
134
|
|
|
126
135
|
### Example: New TypeScript Project (Basic Level)
|
|
@@ -138,7 +147,7 @@ Human confirms: "Basic is fine for now."
|
|
|
138
147
|
|
|
139
148
|
```bash
|
|
140
149
|
harness init --level basic --framework express
|
|
141
|
-
# Creates: harness.
|
|
150
|
+
# Creates: harness.config.json, .harness/, AGENTS.md (template)
|
|
142
151
|
```
|
|
143
152
|
|
|
144
153
|
**CONFIGURE:**
|
|
@@ -159,7 +168,7 @@ Edit AGENTS.md:
|
|
|
159
168
|
|
|
160
169
|
```bash
|
|
161
170
|
harness validate # Pass — basic level checks satisfied
|
|
162
|
-
git add harness.
|
|
171
|
+
git add harness.config.json .harness/ AGENTS.md
|
|
163
172
|
git commit -m "feat: initialize harness project at basic level"
|
|
164
173
|
```
|
|
165
174
|
|
|
@@ -168,7 +177,7 @@ git commit -m "feat: initialize harness project at basic level"
|
|
|
168
177
|
**ASSESS:**
|
|
169
178
|
|
|
170
179
|
```
|
|
171
|
-
Read harness.
|
|
180
|
+
Read harness.config.json — level: basic
|
|
172
181
|
Read AGENTS.md — exists, has project-specific content
|
|
173
182
|
Run: harness validate — passes at basic level
|
|
174
183
|
Recommend: intermediate (add layers and dependency constraints)
|
|
@@ -179,14 +188,14 @@ Human confirms: "Yes, we're ready for layers."
|
|
|
179
188
|
|
|
180
189
|
```bash
|
|
181
190
|
harness init --level intermediate --migrate
|
|
182
|
-
# Preserves existing harness.
|
|
191
|
+
# Preserves existing harness.config.json and AGENTS.md
|
|
183
192
|
# Adds: layer definitions template, dependency constraints template
|
|
184
193
|
```
|
|
185
194
|
|
|
186
195
|
**CONFIGURE:**
|
|
187
196
|
|
|
188
197
|
```
|
|
189
|
-
Define layers in harness.
|
|
198
|
+
Define layers in harness.config.json:
|
|
190
199
|
- presentation: src/routes/, src/middleware/
|
|
191
200
|
- business: src/services/, src/models/
|
|
192
201
|
- data: src/repositories/, src/db/
|
|
@@ -214,7 +223,7 @@ git commit -m "feat: migrate harness project to intermediate level with layers"
|
|
|
214
223
|
**Basic (start here):**
|
|
215
224
|
|
|
216
225
|
- `AGENTS.md` with project context
|
|
217
|
-
- `harness.
|
|
226
|
+
- `harness.config.json` with metadata
|
|
218
227
|
- `harness validate` runs in development
|
|
219
228
|
|
|
220
229
|
**Intermediate (add structure):**
|
|
@@ -101,6 +101,15 @@ Good context engineering treats AGENTS.md as a **dynamic knowledge base**, not a
|
|
|
101
101
|
- AGENTS.md sections accurately describe current module purposes, constraints, and relationships
|
|
102
102
|
- A new AI agent reading AGENTS.md can navigate the codebase and make correct decisions without additional guidance
|
|
103
103
|
|
|
104
|
+
## Rationalizations to Reject
|
|
105
|
+
|
|
106
|
+
| Rationalization | Why It Is Wrong |
|
|
107
|
+
| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
+
| "The automated checks passed, so AGENTS.md is accurate" | Phase 1 says automated tools catch structural issues but miss semantic drift. Manual review of each section is required. |
|
|
109
|
+
| "This module is small and internal -- it does not need an AGENTS.md entry" | Undocumented files are the highest priority finding. Even small internal modules need at least a purpose statement. |
|
|
110
|
+
| "AGENTS.md is severely outdated -- let me rewrite it from scratch" | Do not attempt to fix everything at once when there are >20 issues. Prioritize: broken links first, then undocumented public APIs. |
|
|
111
|
+
| "I will add the file paths and leave the descriptions for later" | Purpose-first descriptions, relationship mapping, and gotchas are what make context engineering useful. A file listing without context is marginally better than nothing. |
|
|
112
|
+
|
|
104
113
|
## Examples
|
|
105
114
|
|
|
106
115
|
### Example: New module added but not documented
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
- **Component:** Name, which layer it belongs to, what it depends on, what will depend on it
|
|
30
30
|
- **Skill:** Name, purpose, type (rigid or flexible), triggers
|
|
31
31
|
|
|
32
|
-
3. **Check prerequisites.** The project must already be initialized with harness. If `harness.
|
|
32
|
+
3. **Check prerequisites.** The project must already be initialized with harness. If `harness.config.json` does not exist, stop and run initialize-harness-project first.
|
|
33
33
|
|
|
34
34
|
### Phase 2: VALIDATE — Check Against Existing Constraints
|
|
35
35
|
|
|
36
|
-
1. **Read the current configuration.** Load `harness.
|
|
36
|
+
1. **Read the current configuration.** Load `harness.config.json` and `AGENTS.md` to understand existing layers, constraints, and architecture.
|
|
37
37
|
|
|
38
38
|
2. **Verify the new component does not conflict:**
|
|
39
39
|
- Does the layer name already exist?
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
- Component: `harness add component <name> --layer <layer-name>`
|
|
54
54
|
- Skill: `harness add skill <name> --type <rigid|flexible>`
|
|
55
55
|
|
|
56
|
-
2. **Review generated files and configuration changes.** `harness add` modifies `harness.
|
|
56
|
+
2. **Review generated files and configuration changes.** `harness add` modifies `harness.config.json` and may generate template files. Check that the changes look correct.
|
|
57
57
|
|
|
58
58
|
3. **Create the actual code or content.** `harness add` creates the configuration entry but not necessarily the implementation. Create the directories, files, and initial code as needed.
|
|
59
59
|
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
|
|
64
64
|
2. **Update `AGENTS.md`.** Add the new component to the architecture section. Document its purpose, boundaries, and relationships to other components. This keeps agent instructions accurate.
|
|
65
65
|
|
|
66
|
-
3. **Update layer configuration** if the new component changes dependency relationships. Ensure `harness.
|
|
66
|
+
3. **Update layer configuration** if the new component changes dependency relationships. Ensure `harness.config.json` reflects the actual import graph.
|
|
67
67
|
|
|
68
68
|
4. **For new skills:** Write the `skill.yaml` and `SKILL.md` files following the harness skill format. Use harness-skill-authoring for guidance on writing good skill content.
|
|
69
69
|
|
|
@@ -84,7 +84,7 @@ harness scan [path]
|
|
|
84
84
|
Skipping this step means subsequent graph queries (impact analysis, dependency health, test advisor) may return stale results.
|
|
85
85
|
|
|
86
86
|
3. **If validation fails,** fix the issues before committing. Common causes:
|
|
87
|
-
- New layer not properly registered in `harness.
|
|
87
|
+
- New layer not properly registered in `harness.config.json`
|
|
88
88
|
- Component placed in wrong directory for its declared layer
|
|
89
89
|
- Imports from forbidden layers
|
|
90
90
|
- `AGENTS.md` references outdated architecture
|
|
@@ -102,7 +102,7 @@ Skipping this step means subsequent graph queries (impact analysis, dependency h
|
|
|
102
102
|
|
|
103
103
|
## Success Criteria
|
|
104
104
|
|
|
105
|
-
- The new component is properly registered in `harness.
|
|
105
|
+
- The new component is properly registered in `harness.config.json`
|
|
106
106
|
- The component's files exist in the correct directories for its declared layer
|
|
107
107
|
- `AGENTS.md` is updated to reflect the new component
|
|
108
108
|
- `harness validate` passes after the addition
|
|
@@ -110,6 +110,15 @@ Skipping this step means subsequent graph queries (impact analysis, dependency h
|
|
|
110
110
|
- No circular dependencies were introduced
|
|
111
111
|
- The addition is committed as a single atomic commit
|
|
112
112
|
|
|
113
|
+
## Rationalizations to Reject
|
|
114
|
+
|
|
115
|
+
| Rationalization | Why It Is Wrong |
|
|
116
|
+
| ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
117
|
+
| "I will add the component and fix any constraint violations later" | Phase 2 requires running harness check-deps for a clean baseline BEFORE adding. Phase 5 requires it to pass AFTER adding. |
|
|
118
|
+
| "AGENTS.md does not need updating for a small internal component" | Phase 4 explicitly requires updating AGENTS.md for every new component. Without it, AI agents have no context. |
|
|
119
|
+
| "The new layer imports are obvious, so I do not need to check for circularity" | Phase 2 checks whether new dependency relationships create circular imports. Circular dependencies are invisible until they cause runtime failures. |
|
|
120
|
+
| "I will commit the config change and the code separately for cleaner history" | The success criteria require a single atomic commit. Splitting creates a window where config references a nonexistent component. |
|
|
121
|
+
|
|
113
122
|
## Examples
|
|
114
123
|
|
|
115
124
|
### Example: Adding a New Layer
|
|
@@ -122,7 +131,7 @@ DETERMINE: Adding a layer. Name: infrastructure. Dirs: src/infrastructure/.
|
|
|
122
131
|
Imported by: business layer (services call external APIs through infrastructure).
|
|
123
132
|
|
|
124
133
|
VALIDATE:
|
|
125
|
-
Read harness.
|
|
134
|
+
Read harness.config.json — existing layers: presentation, business, data.
|
|
126
135
|
No conflict with "infrastructure" name.
|
|
127
136
|
Run: harness check-deps — passes (clean baseline).
|
|
128
137
|
|
|
@@ -131,13 +140,13 @@ ADD:
|
|
|
131
140
|
mkdir -p src/infrastructure
|
|
132
141
|
|
|
133
142
|
WIRE:
|
|
134
|
-
Update harness.
|
|
143
|
+
Update harness.config.json: allow business → infrastructure imports.
|
|
135
144
|
Update AGENTS.md: document infrastructure layer purpose and boundaries.
|
|
136
145
|
|
|
137
146
|
VERIFY:
|
|
138
147
|
harness validate # Pass
|
|
139
148
|
harness check-deps # Pass
|
|
140
|
-
git add harness.
|
|
149
|
+
git add harness.config.json AGENTS.md src/infrastructure/
|
|
141
150
|
git commit -m "feat: add infrastructure layer for external API clients"
|
|
142
151
|
```
|
|
143
152
|
|
|
@@ -157,7 +166,7 @@ WIRE:
|
|
|
157
166
|
|
|
158
167
|
VERIFY:
|
|
159
168
|
harness validate # Pass
|
|
160
|
-
git add harness.
|
|
169
|
+
git add harness.config.json AGENTS.md
|
|
161
170
|
git commit -m "feat: track API spec for documentation drift detection"
|
|
162
171
|
```
|
|
163
172
|
|
|
@@ -170,7 +179,7 @@ DETERMINE: Adding a component. Name: notification-service. Layer: business.
|
|
|
170
179
|
Depends on: data layer (notification repository). Depended on by: presentation layer (routes).
|
|
171
180
|
|
|
172
181
|
VALIDATE:
|
|
173
|
-
Read harness.
|
|
182
|
+
Read harness.config.json — business layer exists, maps to src/services/.
|
|
174
183
|
No existing notification-service directory.
|
|
175
184
|
business → data is an allowed import. Presentation → business is allowed.
|
|
176
185
|
Run: harness check-deps — passes.
|
|
@@ -187,6 +196,6 @@ WIRE:
|
|
|
187
196
|
VERIFY:
|
|
188
197
|
harness validate # Pass
|
|
189
198
|
harness check-deps # Pass
|
|
190
|
-
git add harness.
|
|
199
|
+
git add harness.config.json AGENTS.md src/services/notification-service.*
|
|
191
200
|
git commit -m "feat: add notification service to business layer"
|
|
192
201
|
```
|
|
@@ -160,6 +160,15 @@ Skipping this step means subsequent graph queries (impact analysis, dependency h
|
|
|
160
160
|
- Documentation updates are committed with clear references to the triggering code change
|
|
161
161
|
- No orphaned references to old names, paths, or deleted features remain
|
|
162
162
|
|
|
163
|
+
## Rationalizations to Reject
|
|
164
|
+
|
|
165
|
+
| Rationalization | Why It Is Wrong |
|
|
166
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
167
|
+
| "The code change is small, so docs probably do not need updating" | A single function signature change changes the contract for every consumer. Map every code change to its documentation impact regardless of diff size. |
|
|
168
|
+
| "I updated the main reference -- the other mentions can wait" | Orphaned references in AGENTS.md and tutorials actively mislead agents and developers. Phase 4 requires verifying no orphaned references remain. |
|
|
169
|
+
| "I will match the new documentation to what I think the code does" | Phase 4 requires cross-checking each update against the actual code. Documentation that is wrong is worse than documentation that is missing. |
|
|
170
|
+
| "The existing doc style is inconsistent, so I will improve it while aligning" | Follow the existing style. Documentation alignment is about accuracy, not style improvement. Style changes should be a separate effort. |
|
|
171
|
+
|
|
163
172
|
## Examples
|
|
164
173
|
|
|
165
174
|
### Example: Syncing docs after a module rename
|
|
@@ -116,6 +116,15 @@ For each violation that was not auto-fixed, report:
|
|
|
116
116
|
- Auto-fixed changes are verified by running the test suite
|
|
117
117
|
- No violations are suppressed without explicit team approval and a documented reason
|
|
118
118
|
|
|
119
|
+
## Rationalizations to Reject
|
|
120
|
+
|
|
121
|
+
| Rationalization | Why It Is Wrong |
|
|
122
|
+
| ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
123
|
+
| "This forbidden import is just for one utility function -- I will suppress it inline" | The gate says no suppressing rules without documentation. Undocumented suppressions accumulate and erode the constraint system. |
|
|
124
|
+
| "The auto-fix looks right, so I do not need to re-run tests" | The gate says no auto-fix without test verification. Even import reordering can break code that depends on module initialization order. |
|
|
125
|
+
| "This is just a Tier 2 warning -- it can wait until after merge" | Tier 2 violations must be resolved before merge to main. Warnings that accumulate on main become the new baseline. |
|
|
126
|
+
| "The linter rule does not make sense for this project, so I will just disable it" | Propose a config change with justification, do not disable the rule inline. Fix it at the configuration level. |
|
|
127
|
+
|
|
119
128
|
## Examples
|
|
120
129
|
|
|
121
130
|
### Example: Forbidden import detected
|
|
@@ -191,6 +191,17 @@ Code behind feature flags or environment checks may appear dead in the default c
|
|
|
191
191
|
- No dynamically-imported, type-only, or side-effect code was accidentally deleted
|
|
192
192
|
- Each cleanup commit is atomic and has a descriptive message explaining what was removed and why
|
|
193
193
|
|
|
194
|
+
## Rationalizations to Reject
|
|
195
|
+
|
|
196
|
+
These are common rationalizations that sound reasonable but lead to incorrect results. When you catch yourself thinking any of these, stop and follow the documented process instead.
|
|
197
|
+
|
|
198
|
+
| Rationalization | Why It Is Wrong |
|
|
199
|
+
| ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
200
|
+
| "This export has zero static imports, so it is definitely dead and safe to remove" | Zero static imports does not mean zero consumers. Dynamic imports, type-only imports, side-effect imports, and package entry points all create false positives. |
|
|
201
|
+
| "I removed the dead code and the tests pass, so I do not need to run harness validate and check-deps" | Both harness validate and harness check-deps must pass after every cleanup. Dead code removal can introduce dependency violations. |
|
|
202
|
+
| "The convergence loop found new dead code after my fixes, but it is probably just noise from the tool" | Removing dead code creates more dead code. The convergence loop exists to catch these cascades. If the issue count decreased, loop back. |
|
|
203
|
+
| "The entropy report has 60 items but I can clean them all up in one pass to be thorough" | When the report is very large (>50 items), pick the highest-confidence dead code first. Attempting everything at once risks compound errors. |
|
|
204
|
+
|
|
194
205
|
## Examples
|
|
195
206
|
|
|
196
207
|
### Example: Removing unused utility functions
|
|
@@ -127,6 +127,15 @@ Group findings by documentation file so that fixes can be applied file-by-file.
|
|
|
127
127
|
- No documentation references deleted files, functions, or features
|
|
128
128
|
- Drift findings are prioritized and assigned to the appropriate fix cycle
|
|
129
129
|
|
|
130
|
+
## Rationalizations to Reject
|
|
131
|
+
|
|
132
|
+
| Rationalization | Why It Is Wrong |
|
|
133
|
+
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
134
|
+
| "The docs are close enough -- a renamed function is obvious from context" | Renamed references in AGENTS.md cause AI agents to hallucinate about non-existent code. Precision matters. |
|
|
135
|
+
| "We only changed internal code, so the docs do not need checking" | Internal API docs with wrong signatures waste developer debugging time. Changed-behavior-not-reflected drift is High priority. |
|
|
136
|
+
| "There are too many findings to deal with right now, so skip the scan" | The escalation protocol exists for this case: focus on Critical and High items, create a tracking issue for the rest. |
|
|
137
|
+
| "We can rely on code review to catch stale docs" | Code reviewers focus on code correctness, not documentation cross-references. harness check-docs catches what humans routinely miss. |
|
|
138
|
+
|
|
130
139
|
## Examples
|
|
131
140
|
|
|
132
141
|
### Example: Renamed function detected
|
|
@@ -272,21 +272,11 @@ These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
|
272
272
|
|
|
273
273
|
## Rationalizations to Reject
|
|
274
274
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
281
|
-
confirm it applies to this codebase.
|
|
282
|
-
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
283
|
-
with a concrete follow-up plan.
|
|
284
|
-
|
|
285
|
-
### Domain-Specific
|
|
286
|
-
|
|
287
|
-
- **"The violation is minor — just one import"** — One violation sets a precedent. Enforce the constraint or document an explicit exception with rationale.
|
|
288
|
-
- **"It works, so the architecture must be fine"** — Working code with bad architecture is technical debt with compound interest. Correct function does not excuse structural violations.
|
|
289
|
-
- **"This is a legacy module, different rules apply"** — Legacy does not mean exempt. Either the constraint applies or it needs an explicit documented exception.
|
|
275
|
+
| Rationalization | Reality |
|
|
276
|
+
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
277
|
+
| "The violation is minor — just one import" | One violation sets a precedent. Enforce the constraint or document an explicit exception with rationale. |
|
|
278
|
+
| "It works, so the architecture must be fine" | Working code with bad architecture is technical debt with compound interest. Correct function does not excuse structural violations. |
|
|
279
|
+
| "This is a legacy module, different rules apply" | Legacy does not mean exempt. Either the constraint applies or it needs an explicit documented exception. |
|
|
290
280
|
|
|
291
281
|
## Escalation
|
|
292
282
|
|
|
@@ -261,6 +261,16 @@ A11Y-030 [info] Hardcoded color value not from design token set
|
|
|
261
261
|
- `A11Y-031`: Contrast failure -- fix requires choosing a darker color. Escalate to design tokens or get human input on replacement color.
|
|
262
262
|
- `A11Y-001`: The `alt=""` fix assumes decorative. If the icon conveys meaning, human must write descriptive alt text.
|
|
263
263
|
|
|
264
|
+
## Rationalizations to Reject
|
|
265
|
+
|
|
266
|
+
| Rationalization | Reality |
|
|
267
|
+
| --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
268
|
+
| "The contrast ratio is 4.4:1 — that's essentially 4.5:1 and the difference is imperceptible. I'll mark it passing." | WCAG AA requires exactly 4.5:1 for normal text. 4.4:1 fails. There is no rounding or visual perception exception in the standard. Flag the failure with the actual ratio and let the user decide how to remediate. |
|
|
269
|
+
| "This `<div onClick>` already has good visual styling — adding `role='button'` and a keyboard handler is unnecessary clutter." | A clickable `<div>` without `role="button"` and `onKeyDown` is inaccessible to keyboard-only users and screen reader users. Visual styling has no bearing on ARIA semantics or keyboard reachability. This is A11Y-012, always flagged. |
|
|
270
|
+
| "The automated fix for this `<img>` alt attribute is obvious — I'll apply it without showing the diff since it's just adding `alt=''`." | Every automated fix must be presented as a before/after diff before being written to disk. This is a hard gate. The correct alt value for non-decorative images requires human judgment, and even `alt=""` makes a semantic claim about decorativeness that must be confirmed. |
|
|
271
|
+
| "I18n is enabled, so I'll skip the `lang` and `dir` attribute checks entirely — harness-i18n will catch them." | Deferral to harness-i18n is conditional on `i18n.enabled: true` in config. If i18n is not configured, these checks remain part of this skill's scan. Always read the config before skipping any check category. |
|
|
272
|
+
| "There are 15 findings in this component — I'll fix the easy ones automatically and leave the rest without reporting them explicitly." | All findings must be reported, regardless of whether they are auto-fixable. The report is the primary deliverable of the REPORT phase. Selectively reporting only fixable violations hides the full accessibility debt from the team. |
|
|
273
|
+
|
|
264
274
|
## Gates
|
|
265
275
|
|
|
266
276
|
These are hard stops. Violating any gate means the process has broken down.
|
|
@@ -332,21 +332,11 @@ These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
|
332
332
|
|
|
333
333
|
## Rationalizations to Reject
|
|
334
334
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
341
|
-
confirm it applies to this codebase.
|
|
342
|
-
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
343
|
-
with a concrete follow-up plan.
|
|
344
|
-
|
|
345
|
-
### Domain-Specific
|
|
346
|
-
|
|
347
|
-
- **"It's an internal API, breaking changes are fine"** — Internal consumers break too. Version the change or coordinate the migration explicitly.
|
|
348
|
-
- **"The field name is obvious enough"** — API field names are a public contract. Follow existing naming conventions and document the semantics.
|
|
349
|
-
- **"Nobody uses that endpoint anyway"** — Verify with access logs or usage data. Assumptions about usage without evidence lead to silent breakages.
|
|
335
|
+
| Rationalization | Reality |
|
|
336
|
+
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
337
|
+
| "It's an internal API, breaking changes are fine" | Internal consumers break too. Version the change or coordinate the migration explicitly. |
|
|
338
|
+
| "The field name is obvious enough" | API field names are a public contract. Follow existing naming conventions and document the semantics. |
|
|
339
|
+
| "Nobody uses that endpoint anyway" | Verify with access logs or usage data. Assumptions about usage without evidence lead to silent breakages. |
|
|
350
340
|
|
|
351
341
|
## Escalation
|
|
352
342
|
|
|
@@ -309,21 +309,11 @@ These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
|
309
309
|
|
|
310
310
|
## Rationalizations to Reject
|
|
311
311
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
318
|
-
confirm it applies to this codebase.
|
|
319
|
-
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
320
|
-
with a concrete follow-up plan.
|
|
321
|
-
|
|
322
|
-
### Domain-Specific
|
|
323
|
-
|
|
324
|
-
- **"This will be easier to maintain"** — Easier for whom, and compared to what? Cite the maintenance burden with evidence from the codebase.
|
|
325
|
-
- **"It's the modern approach"** — Modernity is not a design criterion. Fitness for purpose is. State the specific benefit.
|
|
326
|
-
- **"Other teams do it this way"** — Other teams have different constraints. Evaluate the option on this codebase's specific merits.
|
|
312
|
+
| Rationalization | Reality |
|
|
313
|
+
| --------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
314
|
+
| "This will be easier to maintain" | Easier for whom, and compared to what? Cite the maintenance burden with evidence from the codebase. |
|
|
315
|
+
| "It's the modern approach" | Modernity is not a design criterion. Fitness for purpose is. State the specific benefit. |
|
|
316
|
+
| "Other teams do it this way" | Other teams have different constraints. Evaluate the option on this codebase's specific merits. |
|
|
327
317
|
|
|
328
318
|
## Escalation
|
|
329
319
|
|
|
@@ -307,21 +307,11 @@ These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
|
307
307
|
|
|
308
308
|
## Rationalizations to Reject
|
|
309
309
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
316
|
-
confirm it applies to this codebase.
|
|
317
|
-
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
318
|
-
with a concrete follow-up plan.
|
|
319
|
-
|
|
320
|
-
### Domain-Specific
|
|
321
|
-
|
|
322
|
-
- **"No one would guess this token format"** — Security by obscurity. Tokens must be cryptographically secure regardless of format predictability.
|
|
323
|
-
- **"This is an internal service, auth is less critical"** — Internal services are lateral movement targets. Authenticate all service boundaries.
|
|
324
|
-
- **"The frontend validates permissions, so the backend doesn't need to"** — Client-side checks are bypassable. Server-side authorization is the only real enforcement.
|
|
310
|
+
| Rationalization | Reality |
|
|
311
|
+
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
312
|
+
| "No one would guess this token format" | Security by obscurity. Tokens must be cryptographically secure regardless of format predictability. |
|
|
313
|
+
| "This is an internal service, auth is less critical" | Internal services are lateral movement targets. Authenticate all service boundaries. |
|
|
314
|
+
| "The frontend validates permissions, so the backend doesn't need to" | Client-side checks are bypassable. Server-side authorization is the only real enforcement. |
|
|
325
315
|
|
|
326
316
|
## Escalation
|
|
327
317
|
|
|
@@ -720,6 +720,16 @@ INIT → ASSESS → PLAN → APPROVE_PLAN → EXECUTE → VERIFY → REVIEW →
|
|
|
720
720
|
- Checkpoint commits fire after every passing checkpoint; recovery commits fire on retry budget exhaustion
|
|
721
721
|
- Rigor level persists across session resume — set once during INIT, never changed mid-session
|
|
722
722
|
|
|
723
|
+
## Rationalizations to Reject
|
|
724
|
+
|
|
725
|
+
| Rationalization | Reality |
|
|
726
|
+
| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
727
|
+
| "This phase is low complexity, so I can skip the APPROVE_PLAN gate entirely" | Low complexity only means auto-approval when no concern signals fire. If the planner flagged concerns, produced a complexity override, or the task count exceeds 15, the gate pauses regardless of the spec annotation. |
|
|
728
|
+
| "I can write the planning logic inline instead of dispatching to the harness-planner persona agent" | The Iron Law is explicit: autopilot delegates, never reimplements. Using a general-purpose agent or inlining planning logic bypasses the harness methodology. |
|
|
729
|
+
| "The retry budget is exhausted but I can try one more approach before stopping" | The 3-attempt retry budget exists because each failed attempt degrades context and compounds risk. Exceeding the budget without human input turns a recoverable failure into an unrecoverable one. |
|
|
730
|
+
| "I will skip the scratchpad since keeping research in conversation is faster" | Scratchpad is gated by rigor level. At standard or thorough, bulky research (>500 words) must go to scratchpad to keep agent conversation focused on decisions. |
|
|
731
|
+
| "The plan auto-approved, so I can skip recording the decision in the decisions array" | Every plan approval -- auto or manual -- must be recorded with its signal evaluation. The decisions array is the audit trail that explains why a plan was approved. |
|
|
732
|
+
|
|
723
733
|
## Examples
|
|
724
734
|
|
|
725
735
|
### Example: 3-Phase Security Scanner
|
|
@@ -326,6 +326,15 @@ These patterns make requirements testable and unambiguous. Apply them when the o
|
|
|
326
326
|
- `harness validate` passes after the spec is written
|
|
327
327
|
- If scope was too large, it was decomposed into sub-projects with the human's approval
|
|
328
328
|
|
|
329
|
+
## Rationalizations to Reject
|
|
330
|
+
|
|
331
|
+
| Rationalization | Reality |
|
|
332
|
+
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
333
|
+
| "I already understand the problem well enough to skip the question phase" | The Gates section is explicit: you must ask at least one clarifying question before proposing approaches. Skipping questions means making untested assumptions. |
|
|
334
|
+
| "There is only one viable approach, so presenting alternatives would be contrived" | The gate requires at least 2 approaches with tradeoffs. A single approach is a recommendation disguised as a decision -- the human has no real choice. |
|
|
335
|
+
| "I will draft the full spec and present it for review all at once to save time" | Section-dump specs are explicitly forbidden. Presenting section by section with feedback between each catches misunderstandings early. |
|
|
336
|
+
| "This future capability is low-cost to include now, so we should build it in" | YAGNI is a gate, not a suggestion. Every capability must trace to a stated requirement. "We might need this later" is the exact rationalization that turns focused specs into bloated ones. |
|
|
337
|
+
|
|
329
338
|
## Examples
|
|
330
339
|
|
|
331
340
|
### Example: Designing a Notification System
|