@harness-engineering/cli 1.23.1 → 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-FVERI7BQ.js → architecture-S2H624W7.js} +5 -5
- package/dist/{assess-project-UGL5KLBV.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-C7JPPKMX.js → check-phase-gate-UGBJ237T.js} +5 -5
- package/dist/{chunk-RQ3AKUJB.js → chunk-2DHX6TAP.js} +4 -4
- package/dist/{chunk-7XZSHTYZ.js → chunk-2GT3HO2T.js} +3 -3
- package/dist/{chunk-ZLTFDTK7.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-L57RL7MC.js → chunk-BK52Z6DR.js} +869 -419
- package/dist/{chunk-EUCASOD7.js → chunk-CLD4KL7O.js} +341 -71
- package/dist/{chunk-OD3S2NHN.js → chunk-E2GTL3YS.js} +1 -1
- package/dist/{chunk-YLN34N65.js → chunk-FP53DDB5.js} +1 -1
- package/dist/{chunk-7V5Y2L67.js → chunk-I47JLISV.js} +1 -1
- package/dist/{chunk-LAKMOIU6.js → chunk-KC5CTCEL.js} +9 -9
- package/dist/{chunk-UJHNGRS6.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-FNVAW5NG.js → chunk-MHOO7NLG.js} +11 -11
- package/dist/{chunk-HRUCT5YX.js → chunk-MZAHE4DK.js} +12 -12
- package/dist/{chunk-WKLLNUAT.js → chunk-NKL53UBL.js} +6 -6
- package/dist/{chunk-AQN7GFKU.js → chunk-PGF44T2D.js} +6 -6
- package/dist/{chunk-H7Y5CKTM.js → chunk-Q3XYV5UC.js} +1 -1
- package/dist/{chunk-KIR5PQX5.js → chunk-S5ZXT3TZ.js} +1 -1
- package/dist/{chunk-6KWBH4EO.js → chunk-UGD37ECK.js} +5 -5
- package/dist/{chunk-QBATHQXU.js → chunk-V27WDRYV.js} +540 -490
- package/dist/{chunk-YQ6KC6TE.js → chunk-YDRB55Q4.js} +1 -1
- package/dist/{chunk-CZEPCYVX.js → chunk-ZRYDYDB2.js} +6 -6
- package/dist/{chunk-7DMF3VT5.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-LPGVPYOZ.js → dist-MKWF5CXR.js} +7 -3
- package/dist/{dist-K56VJ4UJ.js → dist-WU3TVNNG.js} +7 -1
- package/dist/{docs-CGUBALYL.js → docs-R7UVQBMQ.js} +5 -5
- package/dist/engine-JGI3MWAC.js +9 -0
- package/dist/{entropy-H5OOCI57.js → entropy-IDHIG7HS.js} +4 -4
- package/dist/{feedback-XTDR7E3R.js → feedback-JZETY4UR.js} +1 -1
- package/dist/{generate-agent-definitions-RBI7Z4RY.js → generate-agent-definitions-D7B25YTM.js} +6 -6
- package/dist/{graph-loader-GRXDUWXO.js → graph-loader-BJULJYGG.js} +1 -1
- package/dist/index.d.ts +12 -8
- package/dist/index.js +54 -54
- package/dist/loader-E4KNTOP2.js +11 -0
- package/dist/mcp-67I2DBNM.js +37 -0
- package/dist/{performance-FSXEQJYB.js → performance-744OSR6P.js} +5 -5
- package/dist/{review-pipeline-VLKL7NV2.js → review-pipeline-HIO7HBW4.js} +1 -1
- package/dist/runtime-JXQ26U4Z.js +10 -0
- package/dist/{security-B76X5RL7.js → security-GDKHVFUC.js} +1 -1
- package/dist/{validate-KN6A2GN3.js → validate-2IUR3OWX.js} +5 -5
- package/dist/validate-cross-check-AM4T6P2K.js +9 -0
- package/package.json +5 -5
- package/dist/agents-md-FJXDMZPJ.js +0 -9
- package/dist/ci-workflow-S7VY625R.js +0 -9
- package/dist/engine-PEHFAFOT.js +0 -9
- package/dist/loader-IOC5L7NL.js +0 -11
- package/dist/mcp-7RPKBGIR.js +0 -37
- package/dist/runtime-3X2MV6R4.js +0 -10
- package/dist/validate-cross-check-LITTM24O.js +0 -9
- package/dist/{chunk-CJDVBBPB.js → chunk-3ISINLYT.js} +1 -1
|
@@ -268,6 +268,16 @@ Phase 4: VALIDATE
|
|
|
268
268
|
Result: WARN -- 3 instrumentation gaps, alerting needs SLO alignment
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
+
## Rationalizations to Reject
|
|
272
|
+
|
|
273
|
+
| Rationalization | Reality |
|
|
274
|
+
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
275
|
+
| "We can see what's happening in CloudWatch logs — we don't need structured logging" | Unstructured log lines cannot be queried, aggregated, or correlated across services. When an incident spans three services, searching for a request ID across unstructured logs is manual forensics. Structured logging is not a nicety — it is the foundation for incident response. |
|
|
276
|
+
| "We'll add alerting once we've seen a few incidents and know what to alert on" | The first incident is the worst time to define alerting. SLO-based burn rate alerts can be defined from traffic patterns before any incidents occur. Waiting for incidents to define thresholds means every early failure goes undetected. |
|
|
277
|
+
| "User ID is a useful label for the latency metric — it helps us debug per-user issues" | User ID as a metric label creates one time series per user, which at 100,000 users means 100,000 label combinations. High-cardinality labels exhaust metric storage, cause query timeouts, and make the entire metrics system unstable. Use logs for per-user debugging; use metrics for aggregate signals. |
|
|
278
|
+
| "The tracing library is initialized, so we have distributed tracing" | Initializing the library creates root spans but does not propagate context across HTTP boundaries, instrument database calls, or connect traces to logs. Trace initialization without verified end-to-end propagation produces disconnected, useless traces. |
|
|
279
|
+
| "We have alerts — they're just not linked to runbooks yet" | An alert that fires at 3am without a runbook link requires the on-call engineer to start debugging from scratch. The absence of a runbook is not a documentation gap; it is a mean-time-to-recover multiplier. |
|
|
280
|
+
|
|
271
281
|
## Gates
|
|
272
282
|
|
|
273
283
|
- **No sensitive data in logs.** If PII, credentials, or tokens are detected in log output, it is a blocking finding. The logging configuration must sanitize or redact sensitive fields before any other improvements are made.
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
- Constraints and forbidden patterns
|
|
24
24
|
- Any special instructions or warnings
|
|
25
25
|
|
|
26
|
-
2. **Read `harness.
|
|
26
|
+
2. **Read `harness.config.json`.** Extract:
|
|
27
27
|
- Project name and stack
|
|
28
28
|
- Adoption level (basic, intermediate, advanced)
|
|
29
29
|
- Layer definitions and their directory mappings
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
2. **Map the architecture.** Walk the directory structure and identify:
|
|
49
49
|
- Top-level organization pattern (monorepo, single package, workspace)
|
|
50
50
|
- Source code location and entry points
|
|
51
|
-
- Layer boundaries (from `harness.
|
|
51
|
+
- Layer boundaries (from `harness.config.json` and actual directory structure)
|
|
52
52
|
- Shared utilities or common modules
|
|
53
53
|
- Configuration files and their purposes
|
|
54
54
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
- Code formatting (detect from config files: `.prettierrc`, `.eslintrc`, `biome.json`)
|
|
62
62
|
|
|
63
63
|
4. **Map the constraints.** Identify what is restricted:
|
|
64
|
-
- Forbidden imports (from `harness.
|
|
64
|
+
- Forbidden imports (from `harness.config.json` dependency constraints)
|
|
65
65
|
- Layer boundary rules (which layers can import from which)
|
|
66
66
|
- Linting rules that encode architectural decisions
|
|
67
67
|
- Any constraints documented in `AGENTS.md` that are not yet automated
|
|
@@ -95,8 +95,8 @@ Graph queries produce a complete architecture map in seconds, including transiti
|
|
|
95
95
|
|
|
96
96
|
### Phase 3: ORIENT — Identify Adoption Level and Maturity
|
|
97
97
|
|
|
98
|
-
1. **Confirm the adoption level** matches what `harness.
|
|
99
|
-
- Basic: `AGENTS.md` and `harness.
|
|
98
|
+
1. **Confirm the adoption level** matches what `harness.config.json` declares:
|
|
99
|
+
- Basic: `AGENTS.md` and `harness.config.json` exist but no layers or constraints
|
|
100
100
|
- Intermediate: Layers defined, dependency constraints enforced, at least one custom skill
|
|
101
101
|
- Advanced: Personas, state management, learnings, CI integration
|
|
102
102
|
|
|
@@ -184,21 +184,29 @@ Graph queries produce a complete architecture map in seconds, including transiti
|
|
|
184
184
|
- **`harness check-deps`** — Run to verify dependency constraints are passing, which confirms layer boundaries are respected.
|
|
185
185
|
- **`harness state show`** — View current state to understand where the last session left off.
|
|
186
186
|
- **`AGENTS.md`** — Primary source of project context and agent instructions.
|
|
187
|
-
- **`harness.
|
|
187
|
+
- **`harness.config.json`** — Source of structural configuration (layers, constraints, skills).
|
|
188
188
|
- **`.harness/learnings.md`** — Historical context and institutional knowledge.
|
|
189
189
|
|
|
190
190
|
## Success Criteria
|
|
191
191
|
|
|
192
|
-
- All four configuration sources were read (`AGENTS.md`, `harness.
|
|
192
|
+
- All four configuration sources were read (`AGENTS.md`, `harness.config.json`, `.harness/learnings.md`, `.harness/state.json`)
|
|
193
193
|
- Technology stack is accurately identified (language, framework, test runner, build tool)
|
|
194
194
|
- Architecture is mapped with correct layer boundaries and dependency directions
|
|
195
195
|
- Conventions are identified from actual code patterns, not assumed
|
|
196
|
-
- Constraints are enumerated from both `harness.
|
|
196
|
+
- Constraints are enumerated from both `harness.config.json` and `AGENTS.md`
|
|
197
197
|
- Adoption level is confirmed (not just declared — validated)
|
|
198
198
|
- A structured orientation summary is produced with all sections filled
|
|
199
199
|
- The "Getting Started" section is actionable and tailored to the audience
|
|
200
200
|
- `harness validate` was run and results are reported
|
|
201
201
|
|
|
202
|
+
## Rationalizations to Reject
|
|
203
|
+
|
|
204
|
+
| Rationalization | Reality |
|
|
205
|
+
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
206
|
+
| "I can skip reading .harness/learnings.md since it is just historical notes" | Learnings contain hard-won insights from previous sessions -- decisions made, gotchas discovered, patterns that worked or failed. Skipping them means repeating mistakes already diagnosed. |
|
|
207
|
+
| "The harness.config.json says intermediate, so I can report that without validation" | Declared adoption level must be confirmed, not assumed. A project that declares intermediate but fails harness validate is not truly intermediate. |
|
|
208
|
+
| "I will map the architecture by reading the directory names since that is faster than checking conventions in actual code" | Conventions must be identified from actual code patterns, not assumed from directory structure. File naming, import style, and error handling can only be verified by reading real source files. |
|
|
209
|
+
|
|
202
210
|
## Examples
|
|
203
211
|
|
|
204
212
|
### Example: Onboarding to an Intermediate TypeScript Project
|
|
@@ -211,7 +219,7 @@ Read AGENTS.md:
|
|
|
211
219
|
- Stack: TypeScript, Express, Vitest, PostgreSQL
|
|
212
220
|
- Conventions: zod validation, repository pattern, kebab-case files
|
|
213
221
|
|
|
214
|
-
Read harness.
|
|
222
|
+
Read harness.config.json:
|
|
215
223
|
- Level: intermediate
|
|
216
224
|
- Layers: presentation (src/routes/), business (src/services/), data (src/repositories/)
|
|
217
225
|
- Constraints: presentation → business OK, business → data OK, data → presentation FORBIDDEN
|
|
@@ -258,7 +266,7 @@ Produce orientation with all sections. Getting Started for this context:
|
|
|
258
266
|
|
|
259
267
|
```
|
|
260
268
|
Read AGENTS.md — exists, minimal content
|
|
261
|
-
Read harness.
|
|
269
|
+
Read harness.config.json — level: basic, no layers defined
|
|
262
270
|
No .harness/learnings.md
|
|
263
271
|
No .harness/state.json
|
|
264
272
|
```
|
|
@@ -159,6 +159,15 @@ For each independent task, write a focused agent brief:
|
|
|
159
159
|
- `harness validate` passes after integration
|
|
160
160
|
- No agent modified files outside its declared scope
|
|
161
161
|
|
|
162
|
+
## Rationalizations to Reject
|
|
163
|
+
|
|
164
|
+
| Rationalization | Why It Is Wrong |
|
|
165
|
+
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
166
|
+
| "These two tasks touch different functions in the same file, so they are independent enough" | If both tasks write to the same file, they are NOT independent. Even different functions in the same file creates merge conflicts. |
|
|
167
|
+
| "I verified independence manually -- no need to run check_task_independence" | Manual verification misses transitive dependency overlap. check_task_independence with graph-expanded analysis catches transitive conflicts. |
|
|
168
|
+
| "There are only 2 independent tasks, but parallelism would save time" | NOT when there are fewer than 3 independent tasks. Coordination overhead outweighs parallelism benefit for 2 tasks. |
|
|
169
|
+
| "Each agent's tests pass, so integration is fine" | Step 4 requires running the FULL test suite after integration. Parallel changes can cause integration failures that individual test runs miss. |
|
|
170
|
+
|
|
162
171
|
## Examples
|
|
163
172
|
|
|
164
173
|
### Example: Parallel Implementation of Three Independent Services
|
|
@@ -187,6 +187,17 @@ This phase runs only when `.bench.ts` files exist in the project. If none are fo
|
|
|
187
187
|
- Gate decision is recorded in state
|
|
188
188
|
- `harness validate` passes after enforcement
|
|
189
189
|
|
|
190
|
+
## Rationalizations to Reject
|
|
191
|
+
|
|
192
|
+
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.
|
|
193
|
+
|
|
194
|
+
| Rationalization | Why It Is Wrong |
|
|
195
|
+
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
196
|
+
| "The cyclomatic complexity is 16 but the function is straightforward, so I can override the Tier 1 threshold" | Tier 1 violations are non-negotiable blockers. No merge with Tier 1 performance violations. If a threshold needs adjustment, reconfigure with documented justification. |
|
|
197
|
+
| "The benchmark regression is only 6% and it is probably just noise" | The noise margin (default 3%) is applied before flagging. A 6% regression on a perf-critical path exceeds the Tier 1 threshold even after noise consideration. |
|
|
198
|
+
| "The working tree has a small uncommitted change but it should not affect benchmark results" | No running benchmarks with a dirty working tree. Uncommitted changes invalidate benchmark results. |
|
|
199
|
+
| "I will update the baselines to match the new performance numbers rather than fixing the regression" | Baselines must come from fresh runs against committed code. Silently moving the goalposts defeats the purpose of performance gates. |
|
|
200
|
+
|
|
190
201
|
## Examples
|
|
191
202
|
|
|
192
203
|
### Example: PR with High Complexity Function
|
|
@@ -235,6 +235,16 @@ harness check-perf — complexity reduced from 12 to 8 (improvement)
|
|
|
235
235
|
harness perf baselines update — new baseline saved
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
+
## Rationalizations to Reject
|
|
239
|
+
|
|
240
|
+
| Rationalization | Reality |
|
|
241
|
+
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
242
|
+
| "The correctness test is green, I'll add the benchmark later when we know performance is an issue." | The benchmark is not optional — it is the mechanism that defines "performance issue." Without a baseline captured at implementation time, you have nothing to compare against when a regression appears months later. Later never comes. |
|
|
243
|
+
| "I'll skip the REFACTOR phase since the spec doesn't mention performance requirements." | The spec not mentioning a requirement means there is no user-facing SLO, not that performance is irrelevant. The benchmark still captures the baseline that future work must not regress from. Phase 3 is optional; the benchmark file is not. |
|
|
244
|
+
| "The benchmark results vary too much between runs to be meaningful — I'll just omit it." | Variance is a signal, not a reason to skip. High variance means the benchmark needs warmup iterations, more samples, or isolation from I/O. Fix the benchmark, do not delete it. An absent benchmark offers zero protection against regressions. |
|
|
245
|
+
| "This function is only called during startup, so its performance doesn't matter at runtime." | Startup performance determines deployment speed, lambda cold-start latency, and test suite duration. "Not in the hot path at runtime" does not mean performance is free to ignore. Measure it so the baseline exists if startup behavior changes. |
|
|
246
|
+
| "We already have an integration test that covers this — writing a separate benchmark would be redundant." | Integration tests verify correctness under realistic conditions. Benchmarks measure isolated performance with precise input control. An integration test that passes in 2 seconds tells you nothing about whether the function itself takes 1ms or 800ms. |
|
|
247
|
+
|
|
238
248
|
## Gates
|
|
239
249
|
|
|
240
250
|
- **No code before test AND benchmark.** Both must exist before implementation begins.
|
|
@@ -468,6 +468,16 @@ When `docs/changes/` exists in the project, produce `docs/changes/<feature>/delt
|
|
|
468
468
|
- When `rigorLevel` is `standard` and task count < 8, the skeleton is skipped
|
|
469
469
|
- The skeleton format is lightweight (~200 tokens): numbered groups with task count and time estimates
|
|
470
470
|
|
|
471
|
+
## Rationalizations to Reject
|
|
472
|
+
|
|
473
|
+
| Rationalization | Reality |
|
|
474
|
+
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
475
|
+
| "The task is conceptually clear so I do not need to include exact code in the plan" | Every task must have exact file paths, exact code, and exact commands. If you cannot write the code in the plan, you do not understand the task well enough to plan it. |
|
|
476
|
+
| "This task touches 5 files but it is logically one unit of work, so splitting it would add overhead" | Tasks touching more than 3 files must be split. The overhead of splitting is far less than the cost of a failed oversized task. |
|
|
477
|
+
| "Tests for this task can be added in a follow-up task since the implementation is straightforward" | No skipping TDD in tasks. Every code-producing task must start with writing a test. "Add tests later" is explicitly forbidden. |
|
|
478
|
+
| "The spec does not cover this edge case, but I can fill in the gap during planning" | When the spec is missing information, do not fill in the gaps yourself. Escalate. Filling gaps silently creates undocumented design decisions that no one reviewed. |
|
|
479
|
+
| "I discovered we need an additional file during decomposition, but updating the file map is just bookkeeping" | The file map must be complete. Every file that will be created or modified must appear in the file map before task decomposition. |
|
|
480
|
+
|
|
471
481
|
## Examples
|
|
472
482
|
|
|
473
483
|
### Example: Planning a User Notification Feature
|
|
@@ -284,6 +284,15 @@ fi
|
|
|
284
284
|
- [ ] AI review focused on high-signal issues only (no style nits)
|
|
285
285
|
- [ ] Report follows the structured format exactly
|
|
286
286
|
|
|
287
|
+
## Rationalizations to Reject
|
|
288
|
+
|
|
289
|
+
| Rationalization | Why It Is Wrong |
|
|
290
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
291
|
+
| "The lint errors are just warnings, so I can proceed to AI review" | The gate is absolute: any mechanical check failure means STOP. AI review does not run until lint, typecheck, and tests all pass. |
|
|
292
|
+
| "This is a docs-only change but let me run AI review anyway for thoroughness" | The fast path is mandatory. If only docs/config files changed, AI review is skipped. Running it anyway wastes tokens. |
|
|
293
|
+
| "The AI found a style issue, so I should block the commit" | AI review observations are advisory only. Only mechanical check failures block the commit. |
|
|
294
|
+
| "I will skip the security scan since this is an internal endpoint" | Phase 3 runs the security scanner against all staged source files regardless of exposure. Hardcoded secrets and injection are blocking even in internal code. |
|
|
295
|
+
|
|
287
296
|
## Examples
|
|
288
297
|
|
|
289
298
|
### Example: Clean Commit
|
|
@@ -197,6 +197,16 @@
|
|
|
197
197
|
- Output format matches existing project conventions when they exist
|
|
198
198
|
- Generated PRD is saved to the correct directory with consistent naming
|
|
199
199
|
|
|
200
|
+
## Rationalizations to Reject
|
|
201
|
+
|
|
202
|
+
| Rationalization | Why It Is Wrong |
|
|
203
|
+
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
204
|
+
| "The feature request is clear enough -- I can skip the ambiguity check and start writing stories" | The gate: no generating specs from ambiguous input without clarification. Missing actors or undefined triggers lead to untestable acceptance criteria. |
|
|
205
|
+
| "This acceptance criterion is understood by the team, so it does not need to be formally testable" | No untestable acceptance criteria is a hard gate. Every criterion must be verifiable by an automated test or specific manual procedure. |
|
|
206
|
+
| "The happy path scenarios are enough -- edge cases are unlikely" | The skill requires at least one unwanted-behavior criterion for every user-facing action. Edge cases are where production bugs live. |
|
|
207
|
+
| "The existing PRD is outdated, so I will just replace it with a fresh one" | No overwriting existing specs is a gate. Present the diff rather than replacing the file. |
|
|
208
|
+
| "We can figure out the success metrics later during implementation" | Every success metric must be measurable, time-bound, and specific at spec time. |
|
|
209
|
+
|
|
200
210
|
## Examples
|
|
201
211
|
|
|
202
212
|
### Example: GitHub Issue to PRD for Team Notifications
|
|
@@ -266,6 +266,16 @@ def test_sort_handles_floats(xs):
|
|
|
266
266
|
assert result[i] <= result[i + 1]
|
|
267
267
|
```
|
|
268
268
|
|
|
269
|
+
## Rationalizations to Reject
|
|
270
|
+
|
|
271
|
+
| Rationalization | Reality |
|
|
272
|
+
| ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
273
|
+
| "We already have example-based tests that cover the edge cases — property tests would just be redundant." | Example-based tests cover the cases the author thought of. Property tests cover the cases they did not. The entire value of generative testing is that it explores regions of the input space that human intuition misses — off-by-one errors, Unicode combining characters, signed integer overflow at boundaries. |
|
|
274
|
+
| "The generator keeps producing rejected inputs, so I'll just filter more aggressively to make the test pass faster." | Heavy `filter` usage is a symptom of a broken generator, not a solution. Each rejected sample wastes an iteration, and `filter` destroys the shrinking chain, leaving you with an unhelpful counterexample when a bug is found. Rewrite the generator using `map` and `flatMap` to construct valid inputs directly. |
|
|
275
|
+
| "The counterexample is too strange to be a real-world case — I'll just increase the iteration count so it appears less often." | A shrunk counterexample that triggers a property failure is a real bug by definition. "Unlikely in practice" is not a property of correctness — the question is whether the invariant holds. If the counterexample is a valid input the function might receive, fix the function. If it is not a valid input, constrain the generator. |
|
|
276
|
+
| "This function has too many invariants to specify — I'll just skip property testing and trust the unit tests." | Complex functions with many invariants are exactly the functions most in need of property testing. High complexity means a larger bug-hiding surface. Start with the most important invariants (no-crash, round-trip, idempotence) rather than attempting to encode all properties at once. |
|
|
277
|
+
| "Property tests are too slow — they'll block CI for 10 minutes." | Run 100 iterations on PR, 10,000 iterations nightly. The CI time argument justifies reducing iteration count, never eliminating property tests entirely. A suite that runs 0 property tests found 0 edge cases. |
|
|
278
|
+
|
|
269
279
|
## Gates
|
|
270
280
|
|
|
271
281
|
- **No property tests without shrinking.** If the framework's automatic shrinking is disabled or the generator uses patterns that break shrinking (excessive `filter`), counterexamples will be unhelpfully large. Fix the generator to support shrinking.
|
|
@@ -134,6 +134,15 @@ Skipping this step means subsequent graph queries (impact analysis, dependency h
|
|
|
134
134
|
- No behavioral changes were introduced (the test suite is the proof)
|
|
135
135
|
- No dead code was left behind (run `harness cleanup` to verify)
|
|
136
136
|
|
|
137
|
+
## Rationalizations to Reject
|
|
138
|
+
|
|
139
|
+
| Rationalization | Reality |
|
|
140
|
+
| ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
141
|
+
| "The tests are mostly passing, so I can start refactoring and fix the remaining failures as I go" | All tests must pass BEFORE refactoring starts. If tests are not green before you start, you are not refactoring -- you are debugging. |
|
|
142
|
+
| "This refactoring changes a small amount of behavior, but it is a clear improvement" | Refactoring must not change behavior. The test suite is the proof. If the refactoring requires changing tests, you may be changing behavior. |
|
|
143
|
+
| "I will make several changes at once and run tests at the end since each change is small" | Tests must run after EVERY single change. If a test breaks, you must undo the LAST change immediately. |
|
|
144
|
+
| "The refactoring did not produce a measurable improvement, but the code is different so it must be somewhat better" | If the refactoring introduced no measurable improvement, revert the entire sequence. Refactoring for its own sake is churn. |
|
|
145
|
+
|
|
137
146
|
## Examples
|
|
138
147
|
|
|
139
148
|
### Example: Moving business logic out of a UI component
|
|
@@ -537,6 +537,17 @@ This framing is informational — it does not block anything. It gives the team
|
|
|
537
537
|
8. Monorepo support: each package is audited independently with per-package results in the report
|
|
538
538
|
9. `harness validate` passes after the skill's SKILL.md and skill.yaml are written
|
|
539
539
|
|
|
540
|
+
## Rationalizations to Reject
|
|
541
|
+
|
|
542
|
+
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.
|
|
543
|
+
|
|
544
|
+
| Rationalization | Why It Is Wrong |
|
|
545
|
+
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
546
|
+
| "The MAINTAIN phase takes too long, so I will skip dispatching the 4 maintenance agents" | No skipping the MAINTAIN phase. Maintenance checks catch issues that release-specific checks miss. |
|
|
547
|
+
| "This auto-fix is obviously correct, so I can apply it without prompting the user" | No auto-fix without prompting. Every fix must be presented to the human before being applied. |
|
|
548
|
+
| "Most checks pass and only a few warnings remain, so the release is ready" | A "mostly passing" report is not a passing report. The result is PASS only when zero failures exist across all categories. |
|
|
549
|
+
| "The previous run found these issues and I fixed them, so I can trust the cached results" | Session resumption requires re-running all checks. Code may have changed since the last run. |
|
|
550
|
+
|
|
540
551
|
## Examples
|
|
541
552
|
|
|
542
553
|
### Example: First Run on a Monorepo with Gaps
|
|
@@ -240,6 +240,16 @@ Phase 4: VALIDATE
|
|
|
240
240
|
Redis fallback serves from LRU when Redis is down
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
+
## Rationalizations to Reject
|
|
244
|
+
|
|
245
|
+
| Rationalization | Reality |
|
|
246
|
+
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
247
|
+
| "That third-party API has 99.99% uptime — we don't need a circuit breaker" | 99.99% uptime means 52 minutes of downtime per year. That downtime will not occur as one predictable window — it will happen as degraded responses and timeouts during a traffic spike. Without a circuit breaker, every caller blocks for the full timeout duration, exhausting thread pools and cascading across the system. |
|
|
248
|
+
| "We have retry logic, so failures are handled" | Retry logic without a circuit breaker amplifies failures. When the downstream service is degraded, retries multiply the load on an already struggling system. Circuit breakers and retries are complementary controls, not alternatives. |
|
|
249
|
+
| "The fallback adds complexity — we'll add it if the circuit breaker actually opens" | A circuit breaker without a fallback is a different kind of failure mode, not resilience. When the circuit opens, users see an error instead of a degraded-but-functional experience. Fallbacks must be designed and tested before the circuit ever opens in production. |
|
|
250
|
+
| "Our database connection pool is 100 connections — that's plenty" | Connection pool size without query timeouts means slow queries hold connections indefinitely. A single slow query spike can exhaust the pool, causing every subsequent request to wait. Pool sizing and query timeouts are both required. |
|
|
251
|
+
| "The service is internal — it doesn't need rate limiting" | Internal services are often called by automated processes, CI pipelines, and batch jobs that can spike traffic in ways user-facing services do not. Missing rate limiting on internal services is a common cause of self-inflicted outages during deployments and data migrations. |
|
|
252
|
+
|
|
243
253
|
## Gates
|
|
244
254
|
|
|
245
255
|
- **No retry on non-idempotent operations without idempotency keys.** Retrying a POST or DELETE that lacks an idempotency mechanism can cause data duplication or data loss. This is a blocking finding. The operation must be made idempotent before retry logic is added.
|
|
@@ -42,7 +42,7 @@ If the human has not seen and approved the milestone groupings and feature list,
|
|
|
42
42
|
- Has spec + plan but no implementation -> `planned`
|
|
43
43
|
- Has spec but no plan -> `backlog`
|
|
44
44
|
- Has plan but no spec -> `planned` (unusual, flag for human review)
|
|
45
|
-
6. Detect project name from `harness.
|
|
45
|
+
6. Detect project name from `harness.config.json` `project` field, or `package.json` `name` field, or directory name as fallback.
|
|
46
46
|
|
|
47
47
|
Present scan summary:
|
|
48
48
|
|
|
@@ -457,6 +457,15 @@ Choice?
|
|
|
457
457
|
19. `--query` filters features by status or milestone and displays results with milestone context
|
|
458
458
|
20. `--query` errors gracefully when no roadmap exists, directing the user to `--create`
|
|
459
459
|
|
|
460
|
+
## Rationalizations to Reject
|
|
461
|
+
|
|
462
|
+
| Rationalization | Reality |
|
|
463
|
+
| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
464
|
+
| "The feature list looks correct, so I can skip the PROPOSE phase and write the roadmap directly" | The Iron Law: never write docs/roadmap.md without the human confirming the proposed structure first. |
|
|
465
|
+
| "This sync detected a status change and the inference is clearly correct, so I can apply it without confirmation" | The sync PROPOSE phase requires presenting proposed changes and waiting for human confirmation. The human-always-wins rule applies. |
|
|
466
|
+
| "The existing roadmap is outdated, so I will recreate it with --create to get a fresh start" | No overwriting an existing roadmap without explicit user consent. Silent overwrites destroy prior manual edits and status tracking. |
|
|
467
|
+
| "There is no roadmap yet but the user asked me to add a feature, so I will create one as a side effect of --add" | When the roadmap does not exist, --add must error with a clear message directing the user to --create. |
|
|
468
|
+
|
|
460
469
|
## Examples
|
|
461
470
|
|
|
462
471
|
### Example: `--create` -- Bootstrap a Roadmap from Existing Artifacts
|
|
@@ -150,6 +150,14 @@ Proceed with Feature A? (y/n/pick another)
|
|
|
150
150
|
7. Transition routes to brainstorming (no spec) or autopilot (spec exists)
|
|
151
151
|
8. `harness validate` passes after all changes
|
|
152
152
|
|
|
153
|
+
## Rationalizations to Reject
|
|
154
|
+
|
|
155
|
+
| Rationalization | Reality |
|
|
156
|
+
| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
157
|
+
| "The top-scored candidate is obviously correct, so I can assign it without asking the human" | The Iron Law: never assign or transition without the human confirming the recommendation first. |
|
|
158
|
+
| "Affinity data is not available so the scoring is degraded -- I should just pick the first planned item" | Proceed without affinity scoring by zeroing out the affinity weight. Position and dependents signals still produce meaningful rankings. |
|
|
159
|
+
| "The feature has no spec, but I can skip brainstorming and jump straight to planning since the summary is clear enough" | No spec routes to brainstorming, spec exists routes to autopilot. A one-line roadmap summary is not a spec. |
|
|
160
|
+
|
|
153
161
|
## Examples
|
|
154
162
|
|
|
155
163
|
### Example: Pick Next Item from a Multi-Milestone Roadmap
|
|
@@ -278,6 +278,16 @@ Phase 4: VALIDATE
|
|
|
278
278
|
Result: FAIL -- rotation required before deployment, history rewrite recommended
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
+
## Rationalizations to Reject
|
|
282
|
+
|
|
283
|
+
| Rationalization | Reality |
|
|
284
|
+
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
285
|
+
| "That key is read-only so it's not a big deal if it leaks" | Read-only credentials still enable data exfiltration, reconnaissance, and discovery of other vulnerabilities. A leaked read-only database credential exposes every row in the database. Scope does not eliminate risk. |
|
|
286
|
+
| "We removed it from the file — it's cleaned up now" | Removing a secret from the current tree does not remove it from git history. Anyone with a clone of the repository can recover the secret with `git log -p`. Rotation is required regardless of file deletion. |
|
|
287
|
+
| "That's a test environment key, not production" | Test environment credentials are frequently reused, shared informally, and rotated less often. Leaked test keys also reveal credential patterns and naming conventions that help attackers guess production secrets. |
|
|
288
|
+
| "It's in a private repo so only our team can see it" | Private repos are accessed by CI/CD systems, third-party integrations, contractors, and former employees. Repository access controls are not a substitute for secret externalization. Breaches routinely originate from compromised internal access. |
|
|
289
|
+
| "We'll move it to an environment variable before we deploy" | Intent does not prevent exposure. The secret is in the codebase now and may already be in commit history, CI logs, or developer machine caches. Remediation must happen at the moment of detection, not at deployment time. |
|
|
290
|
+
|
|
281
291
|
## Gates
|
|
282
292
|
|
|
283
293
|
- **No CRITICAL findings may remain unaddressed.** Production credentials exposed in source code are blocking. Execution halts until the credential is rotated and the code is remediated.
|
|
@@ -174,6 +174,16 @@ Threat Model:
|
|
|
174
174
|
- **`query_graph` / `get_relationships`** — Used in threat modeling phase for data flow tracing
|
|
175
175
|
- **`get_impact`** — Understand blast radius of security-sensitive changes
|
|
176
176
|
|
|
177
|
+
## Rationalizations to Reject
|
|
178
|
+
|
|
179
|
+
| Rationalization | Reality |
|
|
180
|
+
| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
181
|
+
| "The scanner didn't flag it so it must be fine" | Mechanical scanners catch pattern-level issues. They cannot trace user input across multiple function calls to a dangerous sink, detect authorization logic flaws, or evaluate whether a fallback chain fails open. The AI review phase exists precisely because scanners miss semantic vulnerabilities. |
|
|
182
|
+
| "This endpoint is behind authentication so we don't need to validate input" | Authentication and input validation are orthogonal controls. Authenticated users can still send malicious payloads. Authenticated SQL injection, SSRF, and path traversal are well-documented attack patterns against internal-only endpoints. |
|
|
183
|
+
| "The vulnerability requires knowing our internal schema to exploit" | Security through obscurity is not a control. Internal schema details leak through error messages, API responses, documentation, and employee turnover. Rate the vulnerability based on its impact assuming the attacker knows the system. |
|
|
184
|
+
| "We'll add rate limiting and input validation later once the feature ships" | Security controls added after deployment require re-testing and re-review. Shipping without them creates an exposure window and establishes technical debt that is systematically deprioritized once the feature is live. |
|
|
185
|
+
| "That's an OWASP theoretical risk — our app isn't targeted by sophisticated attackers" | OWASP findings are exploited by automated scanners, not just sophisticated attackers. Opportunistic bots continuously probe for SQL injection, XSS, and auth bypass. Unpatched OWASP Top 10 issues are routinely exploited within hours of exposure. |
|
|
186
|
+
|
|
177
187
|
## Gates
|
|
178
188
|
|
|
179
189
|
- **Mechanical scanner must run before AI review.** The scanner catches what patterns can catch; AI reviews what remains.
|
|
@@ -94,21 +94,11 @@ These apply to ALL skills. If you catch yourself doing any of these, STOP.
|
|
|
94
94
|
|
|
95
95
|
## Rationalizations to Reject
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- **"This is best practice"** — Best practice in what context? Cite the source and
|
|
103
|
-
confirm it applies to this codebase.
|
|
104
|
-
- **"We can fix it later"** — If it is worth flagging, it is worth documenting now
|
|
105
|
-
with a concrete follow-up plan.
|
|
106
|
-
|
|
107
|
-
### Domain-Specific
|
|
108
|
-
|
|
109
|
-
- **"No attacker would find this"** — Security by obscurity. If the code is wrong, flag it regardless of discoverability.
|
|
110
|
-
- **"We're behind a firewall"** — Network boundaries change. Code should be secure at every layer regardless of deployment topology.
|
|
111
|
-
- **"The framework handles this for us"** — Verify the framework's actual behavior. Misuse of a secure framework is still insecure.
|
|
97
|
+
| Rationalization | Reality |
|
|
98
|
+
| ----------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
99
|
+
| "No attacker would find this" | Security by obscurity. If the code is wrong, flag it regardless of discoverability. |
|
|
100
|
+
| "We're behind a firewall" | Network boundaries change. Code should be secure at every layer regardless of deployment topology. |
|
|
101
|
+
| "The framework handles this for us" | Verify the framework's actual behavior. Misuse of a secure framework is still insecure. |
|
|
112
102
|
|
|
113
103
|
## Escalation
|
|
114
104
|
|
|
@@ -121,11 +121,29 @@ depends_on:
|
|
|
121
121
|
|
|
122
122
|
8. **For rigid skills, write `## Escalation`.** Define when to stop and ask for help. Each escalation condition should describe the symptom, the likely cause, and what to report.
|
|
123
123
|
|
|
124
|
+
9. **Write `## Rationalizations to Reject`.** Every user-facing skill must include this section. It contains domain-specific rationalizations that prevent agents from skipping steps with plausible-sounding excuses. Format requirements:
|
|
125
|
+
- **Table format:** `| Rationalization | Reality |` with a header separator row
|
|
126
|
+
- **3-8 entries** per skill, each specific to the skill's domain
|
|
127
|
+
- **No generic filler.** Every entry must address a rationalization that is plausible in the context of this specific skill
|
|
128
|
+
- **Do not repeat universal rationalizations.** The following three are always in effect for all skills and must NOT appear in individual skill tables:
|
|
129
|
+
|
|
130
|
+
| Rationalization | Reality |
|
|
131
|
+
| ----------------------- | --------------------------------------------------------------------------- |
|
|
132
|
+
| "It's probably fine" | "Probably" is not evidence. Verify before asserting. |
|
|
133
|
+
| "This is best practice" | Best practice in what context? Cite the source and confirm it applies here. |
|
|
134
|
+
| "We can fix it later" | If worth flagging, document now with a concrete follow-up plan. |
|
|
135
|
+
|
|
136
|
+
Example of a good domain-specific entry (for a code review skill):
|
|
137
|
+
|
|
138
|
+
| Rationalization | Reality |
|
|
139
|
+
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
140
|
+
| "The tests pass so the logic must be correct" | Passing tests prove the tested paths work. They say nothing about untested paths, edge cases, or whether the tests themselves are correct. |
|
|
141
|
+
|
|
124
142
|
### Phase 5: VALIDATE — Verify the Skill
|
|
125
143
|
|
|
126
144
|
1. **Run `harness skill validate`** to check:
|
|
127
145
|
- `skill.yaml` has all required fields and valid values
|
|
128
|
-
- `SKILL.md` has all required sections (`## When to Use`, `## Process`, `## Harness Integration`, `## Success Criteria`, `## Examples`)
|
|
146
|
+
- `SKILL.md` has all required sections (`## When to Use`, `## Process`, `## Harness Integration`, `## Success Criteria`, `## Examples`, `## Rationalizations to Reject`)
|
|
129
147
|
- Rigid skills have `## Gates` and `## Escalation` sections
|
|
130
148
|
- The `name` in `skill.yaml` matches the directory name
|
|
131
149
|
- Referenced tools exist
|
|
@@ -174,6 +192,16 @@ Use this checklist as a final quality gate before declaring a skill complete.
|
|
|
174
192
|
- Rigid skills include Gates and Escalation sections with specific conditions and consequences
|
|
175
193
|
- The skill can be loaded and run with `harness skill run <name>`
|
|
176
194
|
|
|
195
|
+
## Rationalizations to Reject
|
|
196
|
+
|
|
197
|
+
| Rationalization | Reality |
|
|
198
|
+
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
199
|
+
| "This skill is too simple to need all required sections" | Every section exists for a reason. A short section is fine; a missing section means the skill was not fully thought through. |
|
|
200
|
+
| "The process section covers it — no need for explicit success criteria" | Process describes what to do. Success criteria describe how to know it worked. They serve different purposes. |
|
|
201
|
+
| "Rationalizations to Reject is meta — this skill does not need it" | This section is required for all user-facing skills, including this one. No exceptions. |
|
|
202
|
+
| "I will add examples later once the skill is proven" | Examples are a required section. A skill without examples forces the agent to guess at correct behavior. Write at least one example now. |
|
|
203
|
+
| "The When to Use section is obvious from the name" | Negative conditions (when NOT to use) prevent misapplication. The skill name conveys nothing about boundary conditions. |
|
|
204
|
+
|
|
177
205
|
## Examples
|
|
178
206
|
|
|
179
207
|
### Example: Creating a Flexible Skill for Database Migration Review
|
|
@@ -1147,6 +1147,16 @@ These criteria validate the skill implementation artifacts. The behavioral succe
|
|
|
1147
1147
|
7. `harness validate` passes after all files are written
|
|
1148
1148
|
8. The skill test suite passes (structure, schema, platform-parity, references)
|
|
1149
1149
|
|
|
1150
|
+
## Rationalizations to Reject
|
|
1151
|
+
|
|
1152
|
+
| Rationalization | Reality |
|
|
1153
|
+
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1154
|
+
| "The spec looks coherent to me, so I can skip running the S1 internal coherence check" | Every check in the mode must run. S1 detects contradictions between decisions, technical design, and success criteria that human review frequently misses. |
|
|
1155
|
+
| "This unstated assumption is obvious, so documenting it would be pedantic" | S3 exists because "obvious" assumptions cause the most damage when they turn out to be wrong. Obvious assumptions are the cheapest to document and the most expensive to miss. |
|
|
1156
|
+
| "The success criterion is somewhat vague but the team will know what it means" | S7 flags vague criteria like "should be fast" because they are untestable. Vague criteria survive brainstorming and planning only to fail at verification. |
|
|
1157
|
+
| "This auto-fixable finding is minor, so I will just note it rather than applying the fix" | Auto-fixable findings should be applied silently -- that is the design intent. Skipping them means the spec ships with known inferrable gaps. |
|
|
1158
|
+
| "The feasibility check found a signature mismatch but the code can probably be adapted during execution" | S5 feasibility red flags are always severity "error" and always surface to the user. A spec that references nonexistent modules will produce a broken plan. |
|
|
1159
|
+
|
|
1150
1160
|
## Examples
|
|
1151
1161
|
|
|
1152
1162
|
### Example: Spec Mode Invocation
|
|
@@ -300,6 +300,16 @@ Phase 4: VALIDATE
|
|
|
300
300
|
Report: NEEDS_ATTENTION (1 N+1 error, 1 missing index, 1 query rewrite)
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
+
## Rationalizations to Reject
|
|
304
|
+
|
|
305
|
+
| Rationalization | Reality |
|
|
306
|
+
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
307
|
+
| "The ORM handles query optimization automatically" | ORMs generate syntactically correct queries but do not detect N+1 patterns, choose optimal join strategies, or add missing indexes. The ORM executes what the code asks for. A `findMany` followed by per-item `findUnique` calls in a loop is an N+1 regardless of which ORM executes it. |
|
|
308
|
+
| "That endpoint is only called by admins so performance doesn't matter" | Admin endpoints frequently become user-facing as products grow. An N+1 query on a 10-row table becomes a crisis when the table grows to 100,000 rows. Query correctness should not be conditional on current data volume. |
|
|
309
|
+
| "We can add indexes later if performance becomes a problem" | Adding indexes to large production tables requires exclusive locks or online rebuild procedures that carry risk. Identifying and adding the correct index during development, before the table grows, costs minutes instead of hours of planned maintenance. |
|
|
310
|
+
| "That DELETE without a WHERE clause is wrapped in application logic that only calls it correctly" | Application logic has bugs. A missing WHERE clause is a single misrouted request away from deleting the entire table. Database safety constraints must not depend on application-layer correctness. |
|
|
311
|
+
| "The query is fast in development — the test database only has 100 rows" | Development databases do not represent production query plans. Full table scans, missing indexes, and N+1 patterns only manifest at production data volumes. Static analysis catches these issues regardless of local data size. |
|
|
312
|
+
|
|
303
313
|
## Gates
|
|
304
314
|
|
|
305
315
|
- **No approving N+1 queries in user-facing hot paths.** An N+1 query in an endpoint called per page load is always an error. It must be fixed with eager loading, batching, or a JOIN before the PR can merge.
|
|
@@ -218,6 +218,16 @@ Treat learnings as a first-class project artifact. They are as valuable as tests
|
|
|
218
218
|
- State is saved before session end with an accurate session summary
|
|
219
219
|
- State files are committed to git separately from code changes
|
|
220
220
|
|
|
221
|
+
## Rationalizations to Reject
|
|
222
|
+
|
|
223
|
+
| Rationalization | Reality |
|
|
224
|
+
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
225
|
+
| "The session is short — I'll update state at the end rather than after each task." | Context resets happen without warning. A session that ends mid-task with no state update forces the next session to reconstruct position by reading git history and code, which takes longer and produces an inaccurate picture. State is updated after each task, not at the end of the session. |
|
|
226
|
+
| "This decision is obvious from the code — I don't need to record the rationale in state." | What is obvious to the agent that made the decision is opaque to the agent that resumes three weeks later with no memory of the session. Decisions are recorded because the context that made them obvious does not survive a context reset. The rationale is exactly what needs to be saved. |
|
|
227
|
+
| "The learnings file is getting long — I'll trim old entries that are no longer relevant." | Learnings are append-only by design. An entry that seems irrelevant may become relevant when a related pattern resurfaces. Trimming destroys the chronological record and the ability to understand why earlier decisions were made. Entries are never deleted, only supplemented with corrections. |
|
|
228
|
+
| "I can re-read the plan to figure out where I am — I don't need to update the position in state." | The plan describes what to do; state records what has been done. Re-reading the plan without state requires the next session to infer progress from code, which produces uncertain position. Uncertain position leads to re-executing completed tasks or skipping tasks that appear complete but are not. |
|
|
229
|
+
| "The stream auto-resolves from the branch — I don't need to explicitly verify which stream is active before writing." | Auto-resolution works when branch names match stream names and the index is current. When branches are renamed, stale, or when multiple streams exist for the same feature, auto-resolution can write to the wrong stream silently. Always announce the resolved stream before writing state. |
|
|
230
|
+
|
|
221
231
|
## Examples
|
|
222
232
|
|
|
223
233
|
### Example: Starting a New Session (Resuming Work)
|
|
@@ -222,6 +222,16 @@ Do not assert risk scores without citing the specific data point that generated
|
|
|
222
222
|
- **If the npm or GitHub API is unavailable:** Note which factors were skipped with "unknown" scores. Do not fail the audit — partial results are better than none.
|
|
223
223
|
- **If the user asks for a verdict ("is this safe?"):** Decline to give a binary answer. Supply chain risk is probabilistic. Present the risk signals and let the human decide.
|
|
224
224
|
|
|
225
|
+
## Rationalizations to Reject
|
|
226
|
+
|
|
227
|
+
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.
|
|
228
|
+
|
|
229
|
+
| Rationalization | Why It Is Wrong |
|
|
230
|
+
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
231
|
+
| "This package has high risk signals but it is widely used, so it must be safe" | The Iron Law: present findings as flags for human review, never as verdicts. Popularity does not eliminate bus-factor risk or maintenance abandonment. |
|
|
232
|
+
| "The npm API returned an error for this package, so I will skip it and move on" | API failures produce "unknown" scores with a note, not skips. Partial results with noted gaps are always better than incomplete audits. |
|
|
233
|
+
| "The install script is probably just native addon compilation, so I do not need to flag it" | Every install script must be flagged in the report. "Probably legitimate" is exactly the assumption that supply chain attacks exploit. |
|
|
234
|
+
|
|
225
235
|
## Examples
|
|
226
236
|
|
|
227
237
|
```
|
|
@@ -114,6 +114,15 @@ Repeat the 4 phases for each new behavior. A typical feature requires 3-10 cycle
|
|
|
114
114
|
- No test tests implementation details (only observable behavior)
|
|
115
115
|
- No production code exists that was not demanded by a failing test
|
|
116
116
|
|
|
117
|
+
## Rationalizations to Reject
|
|
118
|
+
|
|
119
|
+
| Rationalization | Reality |
|
|
120
|
+
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
121
|
+
| "I know exactly what the implementation should be, so I will write it first and add the test after" | Code before test equals delete it. The gate is explicit: if production code is written before a failing test exists, delete the production code and start correctly. |
|
|
122
|
+
| "The test passed on the first run, so TDD is working" | If the test passed without implementing the production code, either the behavior already exists or the test is wrong. You must watch the test FAIL for the right reason before proceeding to GREEN. |
|
|
123
|
+
| "I will test multiple behaviors in this one test to be efficient" | One test, one assertion, one behavior. Multi-behavior tests make it impossible to pinpoint which behavior broke when the test fails. |
|
|
124
|
+
| "Harness validate can wait until the end of the feature since it slows down the cycle" | No skipping VALIDATE. Every cycle must end with harness check-deps and harness validate. A passing test with a failing validation means the implementation violated a project constraint. |
|
|
125
|
+
|
|
117
126
|
## Examples
|
|
118
127
|
|
|
119
128
|
### Example: Adding a `calculateTotal` function
|
|
@@ -126,6 +126,16 @@ npx vitest run tests/services/auth.test.ts tests/types/user.test.ts tests/routes
|
|
|
126
126
|
- Report follows the structured output format
|
|
127
127
|
- All findings are backed by graph query evidence (with graph) or systematic static analysis (without graph)
|
|
128
128
|
|
|
129
|
+
## Rationalizations to Reject
|
|
130
|
+
|
|
131
|
+
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.
|
|
132
|
+
|
|
133
|
+
| Rationalization | Why It Is Wrong |
|
|
134
|
+
| -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
135
|
+
| "Only the Tier 1 direct tests matter -- Tier 2 and Tier 3 are probably unnecessary" | Tier 2 tests catch indirect breakage one hop away. A change to auth.ts breaks login.ts which breaks login.test.ts. Skipping Tier 2 misses exactly the regressions hardest to debug. |
|
|
136
|
+
| "The changed file has no tests, but that is not my concern -- I just advise on which tests to run" | Coverage gaps must be flagged. When a changed file has no test coverage, the advisor reports it. Silently producing an empty test list gives false confidence. |
|
|
137
|
+
| "The graph is stale but I will use it anyway since some data is better than no data" | If the graph is more than 10 commits behind, refresh before proceeding. Staleness sensitivity is Medium for test advisor. |
|
|
138
|
+
|
|
129
139
|
## Examples
|
|
130
140
|
|
|
131
141
|
### Example: Selecting Tests for a Services Change
|