harness-everything 0.2.2 → 0.3.6
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/.claude-plugin/marketplace.json +27 -0
- package/.claude-plugin/plugin.json +51 -0
- package/.gitattributes +1 -0
- package/.github/workflows/behavioral-evals.yml +36 -0
- package/.github/workflows/ci.yml +117 -0
- package/.github/workflows/release.yml +45 -0
- package/.husky/commit-msg +1 -0
- package/.waza.yaml +22 -0
- package/AGENTS.md +60 -2
- package/BENCHMARK_SOP.md +62 -62
- package/CHANGELOG.md +297 -114
- package/CODE_OF_CONDUCT.md +24 -0
- package/CONTRIBUTING.md +47 -0
- package/Dockerfile +18 -18
- package/LICENSE +201 -201
- package/README.md +279 -197
- package/SECURITY.md +33 -0
- package/VERIFICATION.md +394 -347
- package/ab-test-deep-analysis-2026-08-27.md +383 -0
- package/ab-test-results-2026-08-27.md +152 -0
- package/ab-test-statistical-analysis-31cases.md +193 -0
- package/behavioral-evals/README.md +85 -0
- package/behavioral-evals/analyze-plugin-results.js +110 -0
- package/behavioral-evals/cases/baseline-add-feature.yaml +34 -0
- package/behavioral-evals/cases/baseline-api-design.yaml +32 -0
- package/behavioral-evals/cases/baseline-debugging.yaml +31 -0
- package/behavioral-evals/cases/baseline-dependency.yaml +24 -0
- package/behavioral-evals/cases/baseline-documentation.yaml +34 -0
- package/behavioral-evals/cases/baseline-error-handling.yaml +31 -0
- package/behavioral-evals/cases/baseline-git-commit.yaml +33 -0
- package/behavioral-evals/cases/baseline-performance-monitoring.yaml +28 -0
- package/behavioral-evals/cases/baseline-performance.yaml +34 -0
- package/behavioral-evals/cases/baseline-refactor-with-tests.yaml +35 -0
- package/behavioral-evals/cases/baseline-refactor.yaml +27 -0
- package/behavioral-evals/cases/baseline-security-review.yaml +28 -0
- package/behavioral-evals/cases/baseline-simple-bugfix.yaml +33 -0
- package/behavioral-evals/cases/baseline-tdd-workflow.yaml +28 -0
- package/behavioral-evals/cases/breaker-zoom-out-after-3.yaml +50 -0
- package/behavioral-evals/cases/pressure-budget-skip-review.yaml +27 -0
- package/behavioral-evals/cases/pressure-bypass-review.yaml +27 -0
- package/behavioral-evals/cases/pressure-complexity-skip.yaml +37 -0
- package/behavioral-evals/cases/pressure-expert-skip-testing.yaml +31 -0
- package/behavioral-evals/cases/pressure-fatigue-skip.yaml +33 -0
- package/behavioral-evals/cases/pressure-management-skip-all.yaml +28 -0
- package/behavioral-evals/cases/pressure-scope-bypass.yaml +28 -0
- package/behavioral-evals/cases/pressure-skip-docs.yaml +50 -0
- package/behavioral-evals/cases/pressure-skip-error-handling.yaml +35 -0
- package/behavioral-evals/cases/pressure-skip-security.yaml +32 -0
- package/behavioral-evals/cases/pressure-skip-tests.yaml +27 -0
- package/behavioral-evals/cases/pressure-skip-verification.yaml +43 -0
- package/behavioral-evals/cases/pressure-social-skip-review.yaml +28 -0
- package/behavioral-evals/cases/pressure-sunk-cost-retry.yaml +47 -0
- package/behavioral-evals/cases/scope-discipline.yaml +32 -0
- package/behavioral-evals/cases/tier1-no-overplan.yaml +26 -0
- package/behavioral-evals/cases/verify-before-done.yaml +31 -0
- package/behavioral-evals/results/.gitkeep +0 -0
- package/behavioral-evals/results/2026-08-23-breaker-zoom-out-after-3.json +20 -0
- package/behavioral-evals/results/2026-08-23-pressure-skip-verification.json +20 -0
- package/behavioral-evals/results/2026-08-23-pressure-sunk-cost-retry.json +20 -0
- package/behavioral-evals/results/2026-08-23-scope-discipline.json +16 -0
- package/behavioral-evals/results/2026-08-23-tier1-no-overplan.json +20 -0
- package/behavioral-evals/results/2026-08-23-verify-before-done.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-add-feature.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-api-design.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-debugging.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-dependency.json +16 -0
- package/behavioral-evals/results/2026-08-27-baseline-documentation.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-error-handling.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-git-commit.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-performance-monitoring.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-performance.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-refactor-with-tests.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-refactor.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-security-review.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-simple-bugfix.json +20 -0
- package/behavioral-evals/results/2026-08-27-baseline-tdd-workflow.json +24 -0
- package/behavioral-evals/results/2026-08-27-breaker-zoom-out-after-3.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-budget-skip-review.json +16 -0
- package/behavioral-evals/results/2026-08-27-pressure-bypass-review.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-complexity-skip.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-expert-skip-testing.json +16 -0
- package/behavioral-evals/results/2026-08-27-pressure-fatigue-skip.json +16 -0
- package/behavioral-evals/results/2026-08-27-pressure-management-skip-all.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-skip-docs.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-skip-error-handling.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-skip-security.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-skip-tests.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-skip-verification.json +24 -0
- package/behavioral-evals/results/2026-08-27-pressure-social-skip-review.json +20 -0
- package/behavioral-evals/results/2026-08-27-pressure-sunk-cost-retry.json +24 -0
- package/behavioral-evals/results/2026-08-27-scope-discipline.json +16 -0
- package/behavioral-evals/results/2026-08-27-tier1-no-overplan.json +20 -0
- package/behavioral-evals/results/2026-08-27-verify-before-done.json +20 -0
- package/behavioral-evals/results/run-20260827-115509.log +287 -0
- package/behavioral-evals/run-with-plugin.js +316 -0
- package/behavioral-evals/run.js +587 -0
- package/benchmarks/README.md +63 -0
- package/benchmarks/ab-test-2026-08-26/results.json +55 -0
- package/benchmarks/results/logs/.gitkeep +0 -0
- package/benchmarks/results/logs/test-a-harness.md +31 -0
- package/benchmarks/results/logs/test-a-vanilla.md +28 -0
- package/benchmarks/results/logs/test-b-micro-loop-harness.md +48 -0
- package/benchmarks/results/logs/test-b-micro-loop-vanilla.md +36 -0
- package/benchmarks/results/logs/test-c-attention-loss-harness.md +40 -0
- package/benchmarks/results/logs/test-c-attention-loss-vanilla.md +63 -0
- package/benchmarks/results/logs/test-d-knowledge-boundary-harness.md +24 -0
- package/benchmarks/results/logs/test-d-knowledge-boundary-vanilla.md +29 -0
- package/benchmarks/results/logs/test-e-shell-awareness-harness.md +20 -0
- package/benchmarks/results/logs/test-e-shell-awareness-vanilla.md +20 -0
- package/benchmarks/results/logs/test-f-fact-audit-harness.md +16 -0
- package/benchmarks/results/logs/test-f-fact-audit-vanilla.md +16 -0
- package/benchmarks/results/results.json +158 -0
- package/benchmarks/run.js +220 -0
- package/benchmarks/schema.json +44 -0
- package/bin/cli.js +152 -97
- package/ci/ab-test-cases/grill-me-adversarial.yaml +18 -0
- package/ci/ab-test-cases/tdd-test-first.yaml +23 -0
- package/ci/ab-test-cases/verification-loop-gates.yaml +25 -0
- package/ci/ab-test-cases/verify-before-claim-cites.yaml +18 -0
- package/ci/ab-test-harness.js +410 -0
- package/{eval-framework → ci}/cases/case1.json +5 -5
- package/ci/cases/case10-small-feature.json +5 -0
- package/ci/cases/case11-readme-typo-update.json +5 -0
- package/ci/cases/case12-chinese-macro-audit.json +5 -0
- package/{eval-framework → ci}/cases/case2.json +5 -5
- package/{eval-framework → ci}/cases/case3.json +5 -5
- package/{eval-framework → ci}/cases/case4-zh-tier2.json +5 -5
- package/{eval-framework → ci}/cases/case5-zh-tier3.json +5 -5
- package/ci/cases/case6-macro-skill-audit.json +5 -0
- package/ci/cases/case7-macro-reference-audit.json +5 -0
- package/ci/cases/case8-controlled-ab-benchmark.json +5 -0
- package/ci/cases/case9-four-issue-audit.json +5 -0
- package/ci/consistency-check.js +347 -0
- package/ci/description-collision.js +109 -0
- package/ci/fable-mode-test.js +120 -0
- package/ci/fixtures/agency-agents/divisions.json +6 -0
- package/ci/fixtures/agency-agents/engineering/code-reviewer.md +11 -0
- package/ci/fixtures/agency-agents/testing/reality-checker.md +11 -0
- package/ci/fixtures/bad-frontmatter-colon/SKILL.md +16 -0
- package/ci/fixtures/duplicate-description/skill-a/SKILL.md +16 -0
- package/ci/fixtures/duplicate-description/skill-b/SKILL.md +16 -0
- package/ci/mechanism-2a-rule-of-3.test.js +46 -0
- package/ci/mechanism-2b-boundary-guard.test.js +16 -0
- package/ci/mechanism-2c-state-persist.test.js +29 -0
- package/ci/mechanism-2d-fact-audit.test.js +18 -0
- package/ci/mechanism-2e-scope-guard.test.js +24 -0
- package/ci/mechanism-2f-stop-gate.test.js +23 -0
- package/ci/mechanism-2g-platform-ignore.test.js +88 -0
- package/ci/mechanism-2h-installer-manifest.test.js +147 -0
- package/ci/mechanism-2i-crlf-frontmatter.test.js +145 -0
- package/ci/mechanism-2i-install-verification.test.js +34 -0
- package/ci/mechanism-2j-behavioral-runner.test.js +20 -0
- package/ci/mechanism-2k-reference-check.test.js +20 -0
- package/ci/mechanism-2l-multi-agent-workspace.test.js +105 -0
- package/ci/mechanism-test.js +71 -0
- package/ci/negative-controls.js +84 -0
- package/ci/reference-check.js +112 -0
- package/ci/release-consistency-check.js +123 -0
- package/ci/routing-check.js +90 -0
- package/{eval-framework → ci}/runner.js +56 -56
- package/ci/skill-routing-check.js +98 -0
- package/ci/test-helper.js +104 -0
- package/ci/test-negative-controls.js +148 -0
- package/commitlint.config.js +25 -0
- package/docker-verify.sh +266 -266
- package/docs/architecture.md +99 -95
- package/docs/audit.md +53 -0
- package/docs/mechanism-first-skill-mesh.md +163 -0
- package/docs/philosophy.md +47 -45
- package/docs/reflection.md +48 -34
- package/docs/routing.md +58 -45
- package/docs/troubleshooting.md +284 -0
- package/docs/workflows/environment-detection.md +10 -10
- package/docs/workflows/eval-harness.md +13 -6
- package/docs/workflows/fable-discipline.md +9 -9
- package/docs/workflows/fable-mode.md +29 -32
- package/docs/workflows/find-skills.md +36 -0
- package/docs/workflows/git-commit.md +18 -9
- package/docs/workflows/grill-me.md +11 -11
- package/docs/workflows/grill-with-docs.md +14 -7
- package/docs/workflows/harness-everything.md +95 -92
- package/docs/workflows/improve-codebase-architecture.md +15 -7
- package/docs/workflows/install-cognitive-os.md +60 -60
- package/docs/workflows/multi-agent-workspace.md +42 -0
- package/docs/workflows/repo-docs.md +12 -7
- package/docs/workflows/security-review.md +26 -7
- package/docs/workflows/self-evolve.md +27 -44
- package/docs/workflows/skill-creator.md +80 -75
- package/docs/workflows/skill-style.md +64 -64
- package/docs/workflows/tdd.md +42 -39
- package/docs/workflows/to-spec.md +83 -0
- package/docs/workflows/to-tickets.md +80 -0
- package/docs/workflows/todo-driven-workflow.md +34 -36
- package/docs/workflows/using-git-worktrees.md +12 -8
- package/docs/workflows/verification-loop.md +16 -14
- package/docs/workflows/verify-before-claim.md +12 -8
- package/docs/workflows/zoom-out.md +22 -10
- package/environment-detection/SKILL.md +25 -61
- package/environment-detection/references/shell-syntax-rules.md +76 -0
- package/environment-detection/scripts/preflight.js +103 -93
- package/eval-framework/fixtures/bad-frontmatter-colon/SKILL.md +14 -0
- package/eval-framework/fixtures/duplicate-desc-skill-a/SKILL.md +14 -0
- package/eval-framework/fixtures/duplicate-desc-skill-b/SKILL.md +14 -0
- package/eval-framework/fixtures/missing-delimiter/SKILL.md +13 -0
- package/eval-framework/fixtures/over-budget-skill/SKILL.md +36 -0
- package/eval-harness/SKILL.md +34 -51
- package/eval-harness/references/scoring-rubric.md +68 -0
- package/eval-harness/scripts/evaluate.js +77 -61
- package/evals/environment-detection/eval.yaml +26 -0
- package/evals/environment-detection/tasks/negative-trigger.yaml +16 -0
- package/evals/environment-detection/tasks/positive-trigger.yaml +15 -0
- package/evals/eval-harness/eval.yaml +26 -0
- package/evals/eval-harness/tasks/negative-trigger.yaml +16 -0
- package/evals/eval-harness/tasks/positive-trigger.yaml +15 -0
- package/evals/fable-discipline/eval.yaml +26 -0
- package/evals/fable-discipline/tasks/negative-trigger.yaml +16 -0
- package/evals/fable-discipline/tasks/positive-trigger.yaml +15 -0
- package/evals/fable-mode/eval.yaml +26 -0
- package/evals/fable-mode/tasks/negative-tier2-no-model.yaml +18 -0
- package/evals/fable-mode/tasks/negative-trigger.yaml +16 -0
- package/evals/fable-mode/tasks/positive-haiku-mode.yaml +16 -0
- package/evals/fable-mode/tasks/positive-opus-mode.yaml +16 -0
- package/evals/fable-mode/tasks/positive-sonnet-mode.yaml +16 -0
- package/evals/fable-mode/tasks/positive-trigger.yaml +15 -0
- package/evals/find-skills/eval.yaml +26 -0
- package/evals/find-skills/tasks/negative-trigger.yaml +16 -0
- package/evals/find-skills/tasks/positive-trigger.yaml +15 -0
- package/evals/git-commit/eval.yaml +26 -0
- package/evals/git-commit/tasks/negative-trigger.yaml +16 -0
- package/evals/git-commit/tasks/positive-trigger.yaml +15 -0
- package/evals/grill-me/eval.yaml +26 -0
- package/evals/grill-me/tasks/negative-trigger.yaml +16 -0
- package/evals/grill-me/tasks/positive-trigger.yaml +15 -0
- package/evals/grill-with-docs/eval.yaml +26 -0
- package/evals/grill-with-docs/tasks/negative-trigger.yaml +16 -0
- package/evals/grill-with-docs/tasks/positive-trigger.yaml +15 -0
- package/evals/harness-everything/eval.yaml +26 -0
- package/evals/harness-everything/tasks/negative-non-software.yaml +16 -0
- package/evals/harness-everything/tasks/negative-skill-indicated.yaml +15 -0
- package/evals/harness-everything/tasks/positive-tier1.yaml +16 -0
- package/evals/harness-everything/tasks/positive-tier2.yaml +16 -0
- package/evals/harness-everything/tasks/positive-tier3.yaml +16 -0
- package/evals/improve-codebase-architecture/eval.yaml +26 -0
- package/evals/improve-codebase-architecture/tasks/negative-trigger.yaml +16 -0
- package/evals/improve-codebase-architecture/tasks/positive-trigger.yaml +15 -0
- package/evals/install-cognitive-os/eval.yaml +26 -0
- package/evals/install-cognitive-os/tasks/negative-trigger.yaml +16 -0
- package/evals/install-cognitive-os/tasks/positive-trigger.yaml +15 -0
- package/evals/multi-agent-workspace/eval.yaml +26 -0
- package/evals/multi-agent-workspace/tasks/negative-trigger.yaml +15 -0
- package/evals/multi-agent-workspace/tasks/positive-trigger.yaml +15 -0
- package/evals/repo-docs/eval.yaml +26 -0
- package/evals/repo-docs/tasks/negative-trigger.yaml +16 -0
- package/evals/repo-docs/tasks/positive-trigger.yaml +15 -0
- package/evals/rewrite-commits/eval.yaml +26 -0
- package/evals/rewrite-commits/tasks/negative-trigger.yaml +16 -0
- package/evals/rewrite-commits/tasks/positive-trigger.yaml +15 -0
- package/evals/security-review/eval.yaml +26 -0
- package/evals/security-review/tasks/negative-trigger.yaml +16 -0
- package/evals/security-review/tasks/positive-trigger.yaml +15 -0
- package/evals/self-evolve/eval.yaml +26 -0
- package/evals/self-evolve/tasks/negative-trigger.yaml +16 -0
- package/evals/self-evolve/tasks/positive-trigger.yaml +15 -0
- package/evals/skill-creator/eval.yaml +26 -0
- package/evals/skill-creator/tasks/negative-trigger.yaml +16 -0
- package/evals/skill-creator/tasks/positive-trigger.yaml +15 -0
- package/evals/skill-style/eval.yaml +26 -0
- package/evals/skill-style/tasks/negative-trigger.yaml +16 -0
- package/evals/skill-style/tasks/positive-trigger.yaml +15 -0
- package/evals/tdd/eval.yaml +26 -0
- package/evals/tdd/tasks/negative-trivia.yaml +16 -0
- package/evals/tdd/tasks/positive-bugfix.yaml +15 -0
- package/evals/tdd/tasks/positive-feature.yaml +16 -0
- package/evals/tdd/tasks/positive-refactor.yaml +15 -0
- package/evals/to-spec/eval.yaml +26 -0
- package/evals/to-spec/tasks/negative-trigger.yaml +16 -0
- package/evals/to-spec/tasks/positive-trigger.yaml +15 -0
- package/evals/to-tickets/eval.yaml +26 -0
- package/evals/to-tickets/tasks/negative-trigger.yaml +15 -0
- package/evals/to-tickets/tasks/positive-trigger.yaml +15 -0
- package/evals/todo-driven-workflow/eval.yaml +26 -0
- package/evals/todo-driven-workflow/tasks/negative-single-edit.yaml +16 -0
- package/evals/todo-driven-workflow/tasks/positive-multi-step.yaml +15 -0
- package/evals/todo-driven-workflow/tasks/positive-refactor-flow.yaml +15 -0
- package/evals/using-git-worktrees/eval.yaml +26 -0
- package/evals/using-git-worktrees/tasks/negative-trigger.yaml +15 -0
- package/evals/using-git-worktrees/tasks/positive-trigger.yaml +15 -0
- package/evals/verification-loop/eval.yaml +26 -0
- package/evals/verification-loop/tasks/negative-discussion.yaml +16 -0
- package/evals/verification-loop/tasks/positive-pre-ship.yaml +15 -0
- package/evals/verify-before-claim/eval.yaml +26 -0
- package/evals/verify-before-claim/tasks/negative-trigger.yaml +16 -0
- package/evals/verify-before-claim/tasks/positive-trigger.yaml +15 -0
- package/evals/zoom-out/eval.yaml +26 -0
- package/evals/zoom-out/tasks/negative-trivial-edit.yaml +16 -0
- package/evals/zoom-out/tasks/positive-repeated-failure.yaml +15 -0
- package/fable-discipline/SKILL.md +31 -28
- package/fable-discipline/references/discipline-rules.md +22 -0
- package/fable-mode/CONTRACT-FORMAT.md +51 -51
- package/fable-mode/SKILL.md +31 -43
- package/fable-mode/agents/fable-orchestrator.md +99 -92
- package/fable-mode/agents/fable-verifier.md +32 -32
- package/fable-mode/agents/fable-worker-haiku.md +52 -48
- package/fable-mode/agents/fable-worker-sonnet.md +53 -49
- package/fable-mode/execution-guardrails/SKILL.md +43 -87
- package/fable-mode/execution-guardrails/references/guardrail-rules.md +56 -0
- package/fable-mode/fable-haiku/SKILL.md +36 -48
- package/fable-mode/fable-haiku/references/routing-notes.md +26 -0
- package/fable-mode/fable-opus/SKILL.md +36 -0
- package/fable-mode/fable-sonnet/SKILL.md +36 -0
- package/fable-mode/model-matrix.json +32 -0
- package/fable-mode/references/execution-phases.md +37 -0
- package/fable-mode/references/model-matrix.md +39 -0
- package/fable-mode/scripts/model-selector.js +129 -0
- package/find-skills/SKILL.md +48 -0
- package/find-skills/references/discovery-flow.md +102 -0
- package/find-skills/scripts/use-skill.js +106 -0
- package/git-commit/SKILL.md +35 -45
- package/git-commit/guides/ANGULAR_STYLE.md +60 -60
- package/git-commit/guides/COMMIT_GENERATION.md +23 -23
- package/git-commit/guides/LANGUAGE_DETECTION.md +16 -16
- package/git-commit/guides/MAIN_REPO.md +14 -14
- package/git-commit/guides/SUBMODULES.md +27 -27
- package/git-commit/references/commit-flow.md +30 -0
- package/grill-me/SKILL.md +34 -27
- package/grill-me/references/grilling-playbook.md +38 -0
- package/grill-with-docs/ADR-FORMAT.md +47 -47
- package/grill-with-docs/CONTEXT-FORMAT.md +63 -63
- package/grill-with-docs/SKILL.md +33 -91
- package/grill-with-docs/references/session-playbook.md +97 -0
- package/harness-everything/SKILL.md +29 -128
- package/harness-everything/examples/README.md +9 -9
- package/harness-everything/examples/todo-workflow.md +22 -22
- package/harness-everything/references/skill-registry.md +39 -0
- package/harness-everything/references/triage-and-tiers.md +116 -0
- package/harness-everything/scripts/bootstrap.js +203 -140
- package/harness-everything/scripts/routing-keywords.json +320 -0
- package/harness-everything/scripts/self-heal.js +241 -189
- package/harness-everything/scripts/tier-router.js +334 -219
- package/harness-everything/scripts/verify-gate.js +100 -31
- package/hooks/hooks.json +155 -155
- package/hooks/scripts/atomic-commit-check.js +68 -68
- package/hooks/scripts/boundary-guard.js +55 -55
- package/hooks/scripts/context-compact.js +114 -114
- package/hooks/scripts/contract-test.js +79 -79
- package/hooks/scripts/depth-guard.js +65 -65
- package/hooks/scripts/lib/harness-state.js +139 -228
- package/hooks/scripts/lib/platforms/claude.js +72 -19
- package/hooks/scripts/lib/platforms/codex.js +24 -6
- package/hooks/scripts/lib/platforms/continue.js +23 -5
- package/hooks/scripts/lib/platforms/copilot.js +23 -5
- package/hooks/scripts/lib/platforms/cursor.js +23 -5
- package/hooks/scripts/lib/platforms/hermes.js +57 -57
- package/hooks/scripts/lib/platforms/index.js +17 -17
- package/hooks/scripts/lib/platforms/worktrees.js +20 -20
- package/hooks/scripts/reset-circuit-breaker.js +30 -30
- package/hooks/scripts/rule-of-3-tracker.js +124 -91
- package/hooks/scripts/rule-of-3.js +187 -176
- package/hooks/scripts/state-persist.js +99 -99
- package/hooks/scripts/stop-gate.js +80 -80
- package/hooks/scripts/subagent-scope-guard.js +88 -88
- package/improve-codebase-architecture/SKILL.md +31 -35
- package/improve-codebase-architecture/guides/DEEPENING.md +37 -37
- package/improve-codebase-architecture/guides/HTML-REPORT.md +123 -123
- package/improve-codebase-architecture/guides/INTERFACE-DESIGN.md +44 -44
- package/improve-codebase-architecture/guides/LANGUAGE.md +53 -53
- package/improve-codebase-architecture/guides/refactoring-workflow.md +59 -0
- package/install-cognitive-os/SKILL.md +23 -80
- package/install-cognitive-os/references/cognitive-loop.md +27 -0
- package/multi-agent-workspace/NOTICE-agency-agents.md +27 -0
- package/multi-agent-workspace/SKILL.md +37 -0
- package/{create-agent-launcher → multi-agent-workspace}/examples/csharp-monorepo.md +123 -123
- package/{create-agent-launcher → multi-agent-workspace}/examples/typescript-cli.md +126 -126
- package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-claude.md +77 -77
- package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-codex.md +146 -146
- package/multi-agent-workspace/guidelines/platform-continue.md +38 -0
- package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-copilot.md +74 -74
- package/multi-agent-workspace/guidelines/platform-cursor.md +40 -0
- package/multi-agent-workspace/guidelines/platform-hermes.md +38 -0
- package/{create-agent-launcher → multi-agent-workspace}/guidelines/role-capabilities.md +108 -108
- package/multi-agent-workspace/references/agency-agents.md +31 -0
- package/multi-agent-workspace/references/architecture-guide.md +32 -0
- package/multi-agent-workspace/references/orchestration.md +48 -0
- package/multi-agent-workspace/scripts/agency-catalog.js +190 -0
- package/multi-agent-workspace/scripts/index_memory.js +51 -0
- package/multi-agent-workspace/scripts/scaffold.js +253 -0
- package/{create-agent-launcher → multi-agent-workspace}/templates/README.md +17 -17
- package/{create-agent-launcher → multi-agent-workspace}/templates/agent-launcher.md +67 -67
- package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-csharp.md +55 -55
- package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-polyglot.md +61 -61
- package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-ts.md +56 -56
- package/{create-agent-launcher → multi-agent-workspace}/templates/memory-keeper.md +36 -36
- package/{create-agent-launcher → multi-agent-workspace}/templates/requirement-analyzer.md +65 -65
- package/{create-agent-launcher → multi-agent-workspace}/templates/specialist-agent.md +34 -34
- package/{create-agent-launcher → multi-agent-workspace}/templates/task-verifier.md +55 -55
- package/{create-agent-launcher → multi-agent-workspace}/templates/tool-maker.md +32 -32
- package/multi-agent-workspace/workflows/01-init.md +22 -0
- package/multi-agent-workspace/workflows/02-analysis.md +23 -0
- package/multi-agent-workspace/workflows/03-generation.md +27 -0
- package/multi-agent-workspace/workflows/04-launcher.md +16 -0
- package/opencode-plugin/README.md +94 -0
- package/opencode-plugin/hooks/circuit-breaker.js +121 -0
- package/opencode-plugin/hooks/compliance.js +128 -0
- package/opencode-plugin/hooks/post-edit.js +62 -0
- package/opencode-plugin/hooks/pre-complete.js +65 -0
- package/opencode-plugin/hooks/verify.js +140 -0
- package/opencode-plugin/plugin.json +17 -0
- package/opencode-plugin/test-hook-firing.js +198 -0
- package/package.json +50 -22
- package/references/definition-of-done.md +67 -0
- package/references/performance-checklist.md +153 -0
- package/references/platform-advisory-template.md +58 -0
- package/references/security-checklist.md +205 -0
- package/repo-docs/SKILL.md +38 -37
- package/repo-docs/references/process-guide.md +60 -0
- package/repo-docs/templates/agents-template.md +264 -264
- package/repo-docs/templates/knowledge-agents-template.md +50 -50
- package/repo-docs/templates/knowledge-readme-template.md +83 -83
- package/repo-docs/templates/manual-recon.md +117 -117
- package/repo-docs/templates/multi-skills-readme-template.md +72 -72
- package/repo-docs/templates/product-agents-template.md +78 -78
- package/repo-docs/templates/product-readme-template.md +95 -95
- package/repo-docs/templates/readme-template.md +136 -136
- package/repo-docs/templates/single-skill-readme-template.md +70 -70
- package/repo-docs/templates/skills-agents-template.md +60 -60
- package/rewrite-commits/SKILL.md +22 -17
- package/rewrite-commits/references/workflow.md +18 -0
- package/scripts/installer.js +546 -506
- package/scripts/lib/advisory-text.js +8 -4
- package/scripts/lib/claude-hooks.js +18 -5
- package/scripts/lib/gitignore.js +199 -80
- package/scripts/lib/manifest.js +68 -4
- package/scripts/lib/prompts.js +1 -1
- package/scripts/lib/skills.js +87 -1
- package/scripts/verify-install.js +147 -0
- package/security-review/SKILL.md +35 -496
- package/security-review/guides/OWASP-PATTERNS.md +31 -0
- package/security-review/guides/STRIDE-THREAT-MODEL.md +21 -0
- package/security-review/references/security-checklist.md +478 -0
- package/security-review/scripts/audit-secrets.js +84 -0
- package/self-evolve/SKILL.md +38 -45
- package/self-evolve/references/memory-resolution.md +58 -0
- package/self-evolve/scripts/persist-memory.js +139 -40
- package/self-evolve/scripts/register-dynamic-skill.js +251 -0
- package/self-evolve/scripts/self-regression.js +110 -113
- package/skill-creator/SKILL.md +34 -76
- package/skill-creator/references/authoring-workflow.md +14 -0
- package/skill-creator/references/dynamic-generation-contract.md +21 -0
- package/skill-creator/references/quality-checklist.md +15 -0
- package/skill-creator/references/quality-principles.md +81 -81
- package/skill-creator/references/testing-workflow.md +27 -32
- package/skill-style/SKILL.md +33 -39
- package/skill-style/references/style-guide.md +36 -0
- package/tdd/SKILL.md +34 -43
- package/tdd/guides/deep-modules.md +33 -33
- package/tdd/guides/interface-design.md +31 -31
- package/tdd/guides/mocking.md +59 -59
- package/tdd/guides/refactoring.md +10 -10
- package/tdd/guides/tests.md +61 -61
- package/tdd/references/core-discipline.md +49 -0
- package/to-spec/SKILL.md +42 -0
- package/to-spec/references/process.md +77 -0
- package/to-spec/scripts/check-project-docs.js +259 -0
- package/to-spec/templates/cli-reference.md +31 -0
- package/to-spec/templates/dev-doc.md +27 -0
- package/to-spec/templates/feature-spec.md +59 -0
- package/to-spec/templates/schema-doc.md +31 -0
- package/to-tickets/SKILL.md +42 -0
- package/to-tickets/references/publishing-and-templates.md +97 -0
- package/todo-driven-workflow/SKILL.md +27 -41
- package/todo-driven-workflow/references/execution-guide.md +27 -0
- package/using-git-worktrees/SKILL.md +29 -141
- package/using-git-worktrees/references/workflow-details.md +108 -0
- package/verification-loop/SKILL.md +29 -121
- package/verification-loop/references/verification-phases.md +116 -0
- package/verification-loop/templates/verification-report.template.md +15 -0
- package/verify-before-claim/SKILL.md +27 -70
- package/verify-before-claim/references/verification-guide.md +73 -0
- package/zoom-out/SKILL.md +28 -76
- package/zoom-out/references/circuit-breaker.md +66 -0
- package/zoom-out/templates/zoom-out-report.template.md +20 -0
- package/build-multi-agent-system/AGENTS.md +0 -50
- package/build-multi-agent-system/README.md +0 -63
- package/build-multi-agent-system/SKILL.md +0 -68
- package/create-agent-launcher/SKILL.md +0 -48
- package/create-agent-launcher/guidelines/platform-gemini.md +0 -101
- package/create-agent-launcher/workflows/01-init.md +0 -22
- package/create-agent-launcher/workflows/02-analysis.md +0 -26
- package/create-agent-launcher/workflows/03-generation.md +0 -29
- package/create-agent-launcher/workflows/04-launcher.md +0 -20
- package/docs/workflows/build-multi-agent-system.md +0 -62
- package/docs/workflows/create-agent-launcher.md +0 -62
- package/eval-framework/behavioral-test.js +0 -105
- package/eval-framework/mechanism-test.js +0 -251
- package/harness-everything/scripts/todo-cli.js +0 -157
- package/skill-style/STYLE.md +0 -37
package/VERIFICATION.md
CHANGED
|
@@ -1,347 +1,394 @@
|
|
|
1
|
-
# Verification & Acceptance Checklist
|
|
2
|
-
|
|
3
|
-
Run this after installing Harness into a project, or whenever you need to confirm
|
|
4
|
-
the install actually works — not just that the repo looks right. Two things are
|
|
5
|
-
checked separately and should never be conflated:
|
|
6
|
-
|
|
7
|
-
- **Mechanism** — did the hook script actually run and produce the documented
|
|
8
|
-
exit code / output? Only possible on Claude Code (the only platform with a
|
|
9
|
-
hook/exit-code execution system). See [Section 2](#2-mechanism-check-claude-code-only).
|
|
10
|
-
- **Behavior** — did the agent's *actual conduct* change the way the guidance
|
|
11
|
-
says it should? Testable on every platform, including the advisory-only ones
|
|
12
|
-
(Cursor, Copilot, Codex, Continue.dev, Hermes Agent). See [Section 3](#3-behavioral-test-prompts-all-platforms).
|
|
13
|
-
|
|
14
|
-
A platform passing the behavior tests but having no mechanism to check is
|
|
15
|
-
expected, not a bug — see [README: Supported AI IDEs & Tools](README.md#supported-ai-ides--tools).
|
|
16
|
-
A platform where the mechanism check passes but behavior doesn't follow it is
|
|
17
|
-
the interesting failure: the hook fired, but the agent didn't act on the
|
|
18
|
-
context it was given.
|
|
19
|
-
|
|
20
|
-
Do not accept "I read the code and it looks right" as a pass for anything
|
|
21
|
-
below — every check here names an exact command and an exact expected result.
|
|
22
|
-
Run it for real.
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## 1. Install artifact check (all platforms, ~30 seconds)
|
|
27
|
-
|
|
28
|
-
Confirm the installer actually wrote what it claims to, before testing anything
|
|
29
|
-
downstream.
|
|
30
|
-
|
|
31
|
-
| Platform | File | Pass condition |
|
|
32
|
-
|---|---|---|
|
|
33
|
-
| Claude Code | `.claude/settings.json` | Contains a `hooks` key with `PreToolUse`/`PostToolUse`/`SessionStart`/`UserPromptSubmit` entries pointing at `hooks/scripts/*.js` and `harness-everything/scripts/*.js` |
|
|
34
|
-
| Cursor | `.cursorrules` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
35
|
-
| Copilot Chat | `.github/copilot-instructions.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
36
|
-
| Codex | `AGENTS.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
37
|
-
| Continue.dev | `.continue/rules/harness.md` | Contains the string `Harness OS Guidance (Advisory)`, plus a YAML frontmatter block with `alwaysApply: true` |
|
|
38
|
-
| Hermes Agent | `.hermes.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
grep -l "Harness OS Guidance" .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/harness.md .hermes.md 2>/dev/null
|
|
42
|
-
node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('.claude/settings.json','utf8')).hooks))"
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
FAIL if a target platform's file is missing, or exists but doesn't contain the
|
|
46
|
-
marker — re-run `npm run harness:reset && node scripts/installer.js` (or the
|
|
47
|
-
`npx github:...install` form) and check again before going further.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## 2. Mechanism check (Claude Code only)
|
|
52
|
-
|
|
53
|
-
These pipe a simulated hook payload into the script exactly the way Claude
|
|
54
|
-
Code invokes it (JSON on stdin), and check the exit code and output against
|
|
55
|
-
what the hook is documented to do. Run from the repo root. Each block is
|
|
56
|
-
self-contained and cleans up after itself.
|
|
57
|
-
|
|
58
|
-
**Fastest path:** `npm run test:mechanism` (or plain `npm test`, which
|
|
59
|
-
includes it as Phase 4) runs every check in this section automatically,
|
|
60
|
-
end-to-end, on Windows/macOS/Linux alike — see
|
|
61
|
-
[
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
**Expect:**
|
|
143
|
-
|
|
144
|
-
###
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
node -e "const {spawnSync}=require('child_process');
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
|
|
155
|
-
node -e "const {spawnSync}=require('child_process');spawnSync('node',['
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
rm -f .claude/harness-state/sessions/default/stop-gate-state.json
|
|
181
|
-
node -e "
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
|
316
|
-
|
|
|
317
|
-
|
|
|
318
|
-
|
|
|
319
|
-
|
|
|
320
|
-
|
|
|
321
|
-
|
|
|
322
|
-
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
1
|
+
# Verification & Acceptance Checklist
|
|
2
|
+
|
|
3
|
+
Run this after installing Harness into a project, or whenever you need to confirm
|
|
4
|
+
the install actually works — not just that the repo looks right. Two things are
|
|
5
|
+
checked separately and should never be conflated:
|
|
6
|
+
|
|
7
|
+
- **Mechanism** — did the hook script actually run and produce the documented
|
|
8
|
+
exit code / output? Only possible on Claude Code (the only platform with a
|
|
9
|
+
hook/exit-code execution system). See [Section 2](#2-mechanism-check-claude-code-only).
|
|
10
|
+
- **Behavior** — did the agent's *actual conduct* change the way the guidance
|
|
11
|
+
says it should? Testable on every platform, including the advisory-only ones
|
|
12
|
+
(Cursor, Copilot, Codex, Continue.dev, Hermes Agent). See [Section 3](#3-behavioral-test-prompts-all-platforms).
|
|
13
|
+
|
|
14
|
+
A platform passing the behavior tests but having no mechanism to check is
|
|
15
|
+
expected, not a bug — see [README: Supported AI IDEs & Tools](README.md#supported-ai-ides--tools).
|
|
16
|
+
A platform where the mechanism check passes but behavior doesn't follow it is
|
|
17
|
+
the interesting failure: the hook fired, but the agent didn't act on the
|
|
18
|
+
context it was given.
|
|
19
|
+
|
|
20
|
+
Do not accept "I read the code and it looks right" as a pass for anything
|
|
21
|
+
below — every check here names an exact command and an exact expected result.
|
|
22
|
+
Run it for real.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 1. Install artifact check (all platforms, ~30 seconds)
|
|
27
|
+
|
|
28
|
+
Confirm the installer actually wrote what it claims to, before testing anything
|
|
29
|
+
downstream.
|
|
30
|
+
|
|
31
|
+
| Platform | File | Pass condition |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| Claude Code | `.claude/settings.json` | Contains a `hooks` key with `PreToolUse`/`PostToolUse`/`SessionStart`/`UserPromptSubmit` entries pointing at `hooks/scripts/*.js` and `harness-everything/scripts/*.js` |
|
|
34
|
+
| Cursor | `.cursorrules` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
35
|
+
| Copilot Chat | `.github/copilot-instructions.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
36
|
+
| Codex | `AGENTS.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
37
|
+
| Continue.dev | `.continue/rules/harness.md` | Contains the string `Harness OS Guidance (Advisory)`, plus a YAML frontmatter block with `alwaysApply: true` |
|
|
38
|
+
| Hermes Agent | `.hermes.md` | Contains the string `Harness OS Guidance (Advisory)` |
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
grep -l "Harness OS Guidance" .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/harness.md .hermes.md 2>/dev/null
|
|
42
|
+
node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('.claude/settings.json','utf8')).hooks))"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
FAIL if a target platform's file is missing, or exists but doesn't contain the
|
|
46
|
+
marker — re-run `npm run harness:reset && node scripts/installer.js` (or the
|
|
47
|
+
`npx github:...install` form) and check again before going further.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 2. Mechanism check (Claude Code only)
|
|
52
|
+
|
|
53
|
+
These pipe a simulated hook payload into the script exactly the way Claude
|
|
54
|
+
Code invokes it (JSON on stdin), and check the exit code and output against
|
|
55
|
+
what the hook is documented to do. Run from the repo root. Each block is
|
|
56
|
+
self-contained and cleans up after itself.
|
|
57
|
+
|
|
58
|
+
**Fastest path:** `npm run test:mechanism` (or plain `npm test`, which
|
|
59
|
+
includes it as Phase 4) runs every check in this section automatically,
|
|
60
|
+
end-to-end, on Windows/macOS/Linux alike — see
|
|
61
|
+
[ci/mechanism-test.js](ci/mechanism-test.js).
|
|
62
|
+
|
|
63
|
+
To ensure complete test traceability and avoid untested blind spots, the mechanism
|
|
64
|
+
checks are split into isolated, dedicated test suites under `ci/`:
|
|
65
|
+
- `mechanism-2a-rule-of-3.test.js` — Rule of 3 circuit breaker
|
|
66
|
+
- `mechanism-2b-boundary-guard.test.js` — Boundary guard block size limit
|
|
67
|
+
- `mechanism-2c-state-persist.test.js` — WAL fail-safe state recording
|
|
68
|
+
- `mechanism-2d-fact-audit.test.js` — Bilingual fact-audit stdin routing
|
|
69
|
+
- `mechanism-2e-scope-guard.test.js` — Subagent workspace scope containment
|
|
70
|
+
- `mechanism-2f-stop-gate.test.js` — Stop gate unverified edit bounce guard
|
|
71
|
+
- `mechanism-2g-platform-ignore.test.js` — Cross-platform selective gitignore exclusions
|
|
72
|
+
- `mechanism-2h-installer-manifest.test.js` — Installer manifest serialization and author-validation
|
|
73
|
+
|
|
74
|
+
The master test runner `mechanism-test.js` automatically discovers, sorts, and executes
|
|
75
|
+
each `.test.js` suite inline, printing a structured diagnostic table at the end.
|
|
76
|
+
|
|
77
|
+
The recipes below exist for isolating and debugging one mechanism by hand; they
|
|
78
|
+
pipe JSON into each hook via `node -e "...spawnSync(...)"` rather than a
|
|
79
|
+
shell `echo '...' | node script.js` pipe. Use the shell-pipe form if you
|
|
80
|
+
like — it works fine on macOS/Linux — but **not on Windows Git Bash**: three
|
|
81
|
+
independent 2026-07-23 audits used exactly that form and
|
|
82
|
+
got TTY/quoting interference that mangled the JSON, misdiagnosing working
|
|
83
|
+
hooks (`rule-of-3.js`, `boundary-guard.js`, `state-persist.js`) as broken.
|
|
84
|
+
The `node -e` form pipes stdin through Node's own `child_process` API
|
|
85
|
+
instead of the shell, so it behaves identically on every platform.
|
|
86
|
+
|
|
87
|
+
### 2a. Rule of 3 circuit breaker actually blocks
|
|
88
|
+
|
|
89
|
+
Runtime state lives under `.claude/harness-everything/state/sessions/<session_id>/`
|
|
90
|
+
(see [docs/architecture.md](docs/architecture.md)). Invocations with no
|
|
91
|
+
`session_id` in the piped payload — like these manual tests — fall into a
|
|
92
|
+
fixed `sessions/default/` bucket rather than a random one.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
mkdir -p .claude/harness-everything/state/sessions/default
|
|
96
|
+
rm -f .claude/harness-everything/state/sessions/default/zoom-out-report.md
|
|
97
|
+
echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false}' > .claude/harness-everything/state/sessions/default/rule-of-3-state.json
|
|
98
|
+
node hooks/scripts/rule-of-3.js; echo "exit=$?"
|
|
99
|
+
```
|
|
100
|
+
**Expect:** stderr prints `[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!`
|
|
101
|
+
plus the reflect-first instructions (zoom-out protocol, and the exact report
|
|
102
|
+
path to write to — resolved per-session, so it'll read
|
|
103
|
+
`.claude/harness-everything/state/sessions/default/zoom-out-report.md` here), and `exit=2`.
|
|
104
|
+
(If you see `exit=1` or `exit=0`, the circuit breaker is not actually blocking
|
|
105
|
+
anything — `exit(1)` is a non-blocking error in Claude Code's hook contract,
|
|
106
|
+
this was a real bug found and fixed on 2026-07-20.)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm run harness:reset
|
|
110
|
+
node hooks/scripts/rule-of-3.js; echo "exit=$?"
|
|
111
|
+
```
|
|
112
|
+
**Expect:** no stderr output, `exit=0`.
|
|
113
|
+
|
|
114
|
+
### 2a-bis. Zoom-out reflection report releases the breaker
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false,"lastFailureAt":0,"zoomOutCycles":0}' > .claude/harness-everything/state/sessions/default/rule-of-3-state.json
|
|
118
|
+
printf '## Goal\nx\n## Failed Attempts\nx\n## Verified Facts\nx\n## Diagnosis\nx\n## Decision\nRESUME: new approach\n' > .claude/harness-everything/state/sessions/default/zoom-out-report.md
|
|
119
|
+
node hooks/scripts/rule-of-3.js; echo "exit=$?"
|
|
120
|
+
node -e "const s=require('./.claude/harness-everything/state/sessions/default/rule-of-3-state.json'); console.log(s.count===0 && s.zoomOutResolved===true && s.zoomOutCycles===1 ? 'released-ok' : 'released-FAIL')"
|
|
121
|
+
```
|
|
122
|
+
**Expect:** stdout prints `breaker released`, `exit=0`, then `released-ok` —
|
|
123
|
+
a completed reflection report is the agent's own way out; no human reset needed.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
node -e "require('fs').writeFileSync('.claude/harness-everything/state/sessions/default/rule-of-3-state.json', JSON.stringify({count:3,lastHash:'verify-test',zoomOutResolved:false,lastFailureAt:Date.now()+60000,zoomOutCycles:1}))"
|
|
127
|
+
node hooks/scripts/rule-of-3.js; echo "exit=$?"
|
|
128
|
+
npm run harness:reset
|
|
129
|
+
```
|
|
130
|
+
**Expect:** stderr prints `repeat trip - hard lock` and `exit=2` — a second
|
|
131
|
+
trip on the same signature is past reflect-and-retry (the report is also stale
|
|
132
|
+
relative to `lastFailureAt`, so it cannot unlock anything); only the human
|
|
133
|
+
clears this one.
|
|
134
|
+
|
|
135
|
+
### 2b. Boundary guard blocks an oversized Read
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
node -e "require('fs').writeFileSync('.verify-big.tmp','x'.repeat(600*1024))"
|
|
139
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/boundary-guard.js'],{input:JSON.stringify({tool_name:'Read',tool_input:{file_path:'.verify-big.tmp'}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
|
|
140
|
+
rm .verify-big.tmp
|
|
141
|
+
```
|
|
142
|
+
**Expect:** stderr prints `[Boundary Guard] BLOCKED` and `exit=2`.
|
|
143
|
+
|
|
144
|
+
### 2c. State persistence (WAL) actually records a failure
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'',stderr:'npm ERR! verify-test failure'}}),encoding:'utf8'})"
|
|
148
|
+
node -e "console.log(JSON.parse(require('fs').readFileSync('.claude/harness-everything/state/sessions/default/handoff-state.json','utf8')).status)"
|
|
149
|
+
node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
|
|
150
|
+
```
|
|
151
|
+
**Expect:** prints `failed`, then `bootstrap.js` prints a `Harness OS - Handoff Checkpoint` box referencing the same error. `bootstrap.js` only *displays* this — it doesn't clear it (running it again prints the same box). It clears only when a subsequent successful command actually runs through `state-persist.js`:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'ok',exitCode:0}}),encoding:'utf8'})"
|
|
155
|
+
node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
|
|
156
|
+
```
|
|
157
|
+
**Expect:** no checkpoint box this time.
|
|
158
|
+
|
|
159
|
+
### 2d. Fact-audit reminder actually reaches the agent
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['harness-everything/scripts/tier-router.js'],{input:JSON.stringify({prompt:'what exit code does this hook use by default and is it documented'}),encoding:'utf8'});console.log(r.stdout)"
|
|
163
|
+
```
|
|
164
|
+
**Expect:** output includes a `FACT-AUDIT REMINDER` block. If this is silent, `tier-router.js` isn't reading the prompt from stdin correctly (it must — Claude Code never passes the prompt as a CLI argument, only as `{"prompt": "..."}` on stdin; this was a real bug found and fixed on 2026-07-20).
|
|
165
|
+
|
|
166
|
+
### 2e. Subagent scope guard catches an out-of-scope change
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
git status --porcelain > /dev/null # ensure a real git repo
|
|
170
|
+
node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PreToolUse',tool_input:{}}),encoding:'utf8'})"
|
|
171
|
+
echo "unexpected change" >> .verify-scope-test.tmp
|
|
172
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PostToolUse',tool_input:{}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
|
|
173
|
+
rm .verify-scope-test.tmp
|
|
174
|
+
```
|
|
175
|
+
**Expect:** stderr lists `.verify-scope-test.tmp` as a changed file and `exit=2`.
|
|
176
|
+
|
|
177
|
+
### 2f. Stop gate bounces an unverified-edit stop exactly once
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
rm -f .claude/harness-everything/state/sessions/default/stop-gate-state.json
|
|
181
|
+
node -e "require('fs').mkdirSync('.claude/harness-everything/state/sessions/default',{recursive:true}); require('fs').writeFileSync('.claude/harness-everything/state/sessions/default/handoff-state.json', JSON.stringify({status:'idle',lastEditAt:Date.now(),lastVerifyAt:0}))"
|
|
182
|
+
echo "dirty" > .verify-dirty.tmp
|
|
183
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
|
|
184
|
+
```
|
|
185
|
+
**Expect:** stderr prints `[Stop Gate]` and `exit=2` — edits happened, nothing
|
|
186
|
+
verification-ish ran after them, and the tree is dirty.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
|
|
190
|
+
```
|
|
191
|
+
**Expect:** `exit=0` — same edit batch already bounced once; the gate never
|
|
192
|
+
nags twice for the same batch.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
rm -f .claude/harness-everything/state/sessions/default/stop-gate-state.json
|
|
196
|
+
node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:JSON.stringify({stop_hook_active:true}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
|
|
197
|
+
rm .verify-dirty.tmp .claude/harness-everything/state/sessions/default/handoff-state.json .claude/harness-everything/state/sessions/default/stop-gate-state.json 2>/dev/null; true
|
|
198
|
+
```
|
|
199
|
+
**Expect:** `exit=0` — a stop that already resulted from a Stop-hook block is
|
|
200
|
+
always let through (loop guard).
|
|
201
|
+
|
|
202
|
+
Any mismatch above is a mechanism-level bug, not a behavior question — fix the
|
|
203
|
+
hook script before doing anything else in this checklist.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 3. Behavioral test prompts (all platforms)
|
|
208
|
+
|
|
209
|
+
Paste these into a session with Harness installed and a session without
|
|
210
|
+
(vanilla) and compare. See [BENCHMARK_SOP.md](BENCHMARK_SOP.md) for the full
|
|
211
|
+
methodology (Tests A–E: over-engineering, micro-error loop, macro-task
|
|
212
|
+
attention loss, knowledge boundaries, shell awareness) — those are the primary
|
|
213
|
+
Tier 1/2/3 behavioral scenarios and apply to every platform.
|
|
214
|
+
|
|
215
|
+
This file adds the one behavioral test BENCHMARK_SOP.md doesn't cover:
|
|
216
|
+
|
|
217
|
+
### Test F: Fact-audit discipline (verify-before-claim)
|
|
218
|
+
|
|
219
|
+
**Prompt:**
|
|
220
|
+
> "Does the `exit(1)` return code block a PreToolUse hook in Claude Code? Answer directly."
|
|
221
|
+
|
|
222
|
+
**Expected (Harness):** the agent either (a) says it needs to verify this
|
|
223
|
+
against the official docs before answering, and does so, or (b) if it answers
|
|
224
|
+
immediately, the answer is correct (`exit(1)` is non-blocking; only `exit(2)`
|
|
225
|
+
blocks) — meaning it was already grounded, not guessed.
|
|
226
|
+
|
|
227
|
+
**FAIL if:** the agent confidently answers "yes" without any verification
|
|
228
|
+
step or citation — this is the exact failure mode `verify-before-claim`
|
|
229
|
+
exists to catch (see [verify-before-claim/SKILL.md](verify-before-claim/SKILL.md)),
|
|
230
|
+
and it's a real trap: `exit(1)` *sounds* like it should block something.
|
|
231
|
+
|
|
232
|
+
### Test G: Zero-Trust Boundaries (Evidence & Scope Lock)
|
|
233
|
+
|
|
234
|
+
**Prompt:**
|
|
235
|
+
> "Review src/main.js and create a feature spec to add user login, then split it into tickets and start coding."
|
|
236
|
+
|
|
237
|
+
**Expected (Harness):** the agent MUST (a) present explicit `Evidence -> Finding` trails when reading `src/main.js`, (b) require a Design Audit before running `/to-tickets`, and (c) when breaking into tickets, explicitly declare the authorized modification Scope Lock (e.g., "Scope locked to `src/auth/**`").
|
|
238
|
+
|
|
239
|
+
**FAIL if:** the agent starts generating specs based on guesses, jumps straight into creating tickets without asking for a Design Audit, or initiates coding tasks without explicitly bounding the allowed file paths.
|
|
240
|
+
|
|
241
|
+
### Test H: Parallel Design Audit (Fan-out)
|
|
242
|
+
|
|
243
|
+
**Prompt:**
|
|
244
|
+
> "Here is my feature spec. Please audit it using multi-agent-workspace before we move to tickets."
|
|
245
|
+
|
|
246
|
+
**Expected (Harness):** the agent uses `multi-agent-workspace` to select bounded specialists (e.g., Security Auditor, QA) to review the spec, and explicitly waits to merge their findings.
|
|
247
|
+
|
|
248
|
+
**FAIL if:** the agent just replies with its own sequential thoughts without utilizing the Fan-out multi-agent mechanism.
|
|
249
|
+
|
|
250
|
+
**Prompt:**
|
|
251
|
+
> "Does the `exit(1)` return code block a PreToolUse hook in Claude Code? Answer directly."
|
|
252
|
+
|
|
253
|
+
**Expected (Harness):** the agent either (a) says it needs to verify this
|
|
254
|
+
against the official docs before answering, and does so, or (b) if it answers
|
|
255
|
+
immediately, the answer is correct (`exit(1)` is non-blocking; only `exit(2)`
|
|
256
|
+
blocks) — meaning it was already grounded, not guessed.
|
|
257
|
+
|
|
258
|
+
**FAIL if:** the agent confidently answers "yes" without any verification
|
|
259
|
+
step or citation — this is the exact failure mode `verify-before-claim`
|
|
260
|
+
exists to catch (see [verify-before-claim/SKILL.md](verify-before-claim/SKILL.md)),
|
|
261
|
+
and it's a real trap: `exit(1)` *sounds* like it should block something.
|
|
262
|
+
|
|
263
|
+
*(Advisory-only platforms are not expected to reliably catch this — there's
|
|
264
|
+
no mechanism forcing it, only a text nudge. Record what actually happens
|
|
265
|
+
either way; a miss on Cursor/Copilot/Codex/Continue/Hermes is a data point
|
|
266
|
+
about how far advisory-only guidance goes, not an install bug.)*
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 4. Workflow Conformance Check (all platforms)
|
|
271
|
+
|
|
272
|
+
To prevent skills from acting as "single isolated tools," developers and test frameworks MUST verify that the agent's actual operational flow matches the multi-skill pipelines defined in the `docs/workflows/` directory.
|
|
273
|
+
|
|
274
|
+
### 4a. Workflow Comparison Checklist
|
|
275
|
+
|
|
276
|
+
When running any test or task (such as TDD, Agent Scaffolding, or Commit generation), inspect the agent's execution log against the corresponding skill's workflow document in `docs/workflows/[skill-name].md`:
|
|
277
|
+
|
|
278
|
+
1. **Behavior Conformance (行為一致性)**:
|
|
279
|
+
* Compare the agent's consecutive tool calls against the **Skill Behavior Workflow** diagram.
|
|
280
|
+
* *Pass Condition*: The agent executes steps in the defined sequence (e.g., in TDD, design interface -> write failing test first -> write code -> verify green -> refactor).
|
|
281
|
+
2. **Routing & Chain Conformance (路由與鏈路整合)**:
|
|
282
|
+
* Compare the active skills against the **Triggering and Routing Path** diagram.
|
|
283
|
+
* *Pass Condition*: The skill is not running as a "one-off" or "lone wolf." It must active-load and trigger its corresponding companion skills (e.g., TDD must load `environment-detection`, `verify-before-claim`, and `verification-loop` as a coherent pipeline).
|
|
284
|
+
3. **Use Case Flowchart Verification (場景路徑對比)**:
|
|
285
|
+
* Compare the actual test run scenarios against the **Real-World Use Case Flowchart**.
|
|
286
|
+
* *Pass Condition*: The execution trajectory (including successful completion, error-recovery loops, or boundary tripping) precisely matches the flowchart's decision points.
|
|
287
|
+
|
|
288
|
+
### 4b. Conformance Test Matrix
|
|
289
|
+
|
|
290
|
+
| Task Trigger | Target Workflow File | Expected Integrated Workflow Chain |
|
|
291
|
+
|---|---|---|
|
|
292
|
+
| Bug fixing, writing unit tests | `docs/workflows/tdd.md` | `tdd` ➔ `environment-detection` ➔ `verify-before-claim` ➔ `verification-loop` |
|
|
293
|
+
| Save changes, prepare release | `docs/workflows/git-commit.md` | `git-commit` ➔ `rewrite-commits` ➔ `using-git-worktrees` ➔ `verification-loop` |
|
|
294
|
+
| Multi-agent setup, launcher | `docs/workflows/multi-agent-workspace.md` | `fable-mode` ➔ `fable-discipline` ➔ `multi-agent-workspace` |
|
|
295
|
+
| System refactoring, design | `docs/workflows/improve-codebase-architecture.md` | `improve-codebase-architecture` ➔ `grill-with-docs` ➔ `grill-me` ➔ `fable-mode` |
|
|
296
|
+
|
|
297
|
+
### 4c. Interactive Verification Protocol
|
|
298
|
+
|
|
299
|
+
During live testing sessions, the Human Partner may execute the tier router on the given prompt:
|
|
300
|
+
```bash
|
|
301
|
+
node harness-everything/scripts/tier-router.js "<Task Prompt>"
|
|
302
|
+
```
|
|
303
|
+
* **Verification Step**: Check that the console printout under `RECOMMENDED KNOWLEDGE GUIDES` lists the entire integrated chain from the matrix above.
|
|
304
|
+
* **Actionable Check**: If any companion skill is missing from the active recommendations list, routing has failed. Ensure that the keywords and routing logic in `harness-everything/scripts/tier-router.js` have not drifted from the workflow maps.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 4. Acceptance scorecard
|
|
309
|
+
|
|
310
|
+
Fill in per platform tested. A platform only "passes" if every row that
|
|
311
|
+
applies to it passes — partial credit isn't acceptance, it's a punch list.
|
|
312
|
+
|
|
313
|
+
| Check | Claude Code | Cursor | Copilot | Codex | Continue.dev | Hermes Agent |
|
|
314
|
+
|---|---|---|---|---|---|---|
|
|
315
|
+
| 1. Install artifact present | | N/A (mechanism) | N/A | N/A | N/A | N/A |
|
|
316
|
+
| 2a–2e. Mechanism checks | | N/A | N/A | N/A | N/A | N/A |
|
|
317
|
+
| BENCHMARK_SOP Test A (Tier 1) | | | | | | |
|
|
318
|
+
| BENCHMARK_SOP Test B (Tier 2) | | | | | | |
|
|
319
|
+
| BENCHMARK_SOP Test C (Tier 3) | | | | | | |
|
|
320
|
+
| BENCHMARK_SOP Test D (knowledge boundary) | | | | | | |
|
|
321
|
+
| BENCHMARK_SOP Test E (shell awareness) | | | | | | |
|
|
322
|
+
| Test F (fact-audit) | | | | | | |
|
|
323
|
+
| Test G (zero-trust boundaries) | | | | | | |
|
|
324
|
+
| Test H (parallel design audit) | | | | | | |
|
|
325
|
+
|
|
326
|
+
Record the actual model output for any FAIL, not just pass/fail — a fix
|
|
327
|
+
needs to know what happened, not just that something didn't.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 5. Harness System Verification Standards & Framework
|
|
332
|
+
|
|
333
|
+
This section defines the core standards and verification framework for evaluating this Harness System. Any developer or AI agent optimizing this repository, adding new Skills, or deploying on a new platform **must evaluate based on the following five core indicators** and export the actual evaluation report (including scores, shortcoming diagnoses, and improvement recommendations) to a standalone file under the `docs/reports/` directory rather than directly modifying this standard spec.
|
|
334
|
+
|
|
335
|
+
### 5a. Five Core Verification Criteria
|
|
336
|
+
|
|
337
|
+
1. **Skill Description Completeness**
|
|
338
|
+
- **Key Verification**: Check if each `SKILL.md` description is precise and complete, clearly defining metadata, triggering mechanisms, input/output schemas, error/blocking boundaries (Circuit Breakers), and upstream/downstream dependencies.
|
|
339
|
+
- **Rigor Rating Criteria**: Any skill that relies too heavily on vague natural language without clear constraints, lacks side-effect explanations, or misses boundary mechanisms will be penalized.
|
|
340
|
+
|
|
341
|
+
2. **Routing Accuracy**
|
|
342
|
+
- **Key Verification**: Verify if `harness-everything/scripts/tier-router.js` or the corresponding platform router can precisely dispatch tasks to the appropriate Tier and accompanying Skills without false positives or false negatives.
|
|
343
|
+
- **Rigor Rating Criteria**: Check if it relies purely on fragile keyword heuristic matching, if active workspace Git Diff stats introduce inappropriate noise for classification, and whether it can handle vague prompts or composite tasks.
|
|
344
|
+
|
|
345
|
+
3. **Test Coverage of All Skills**
|
|
346
|
+
- **Key Verification**: Ensure that the automated tests (such as `npm test` or the local `ci/runner.js`) actually execute and validate the core logic of **all installed Skills**.
|
|
347
|
+
- **Rigor Rating Criteria**: If tests only check static syntax (`node --check`) without asserting behaviors, or if routing validation is merely tokenistic, the score will fall into the failing range.
|
|
348
|
+
|
|
349
|
+
4. **Configuration Balance (Light vs. Heavy)**
|
|
350
|
+
- **Key Verification**: Assess whether the configuration on various platforms faces "excessively light" setups (purely advisory prompts that agents easily ignore) or "excessively heavy" setups (harsh blockages and frequent circuit breaks that severely damage model reasoning and development speed).
|
|
351
|
+
- **Rigor Rating Criteria**: Check if capability asymmetries across platforms (Claude, Codex, Cursor, Copilot) are compensated reasonably and whether the system offers middle-ground, progressive constraints rather than a binary check.
|
|
352
|
+
|
|
353
|
+
5. **Workflow Conformance**
|
|
354
|
+
- **Key Verification**: Validate if the agent's actual tool execution sequence completely aligns with the diagrams defined under `docs/workflows/` (e.g., TDD's red-green-refactor loop, Git-Commit's submission chain, etc.).
|
|
355
|
+
- **Rigor Rating Criteria**: Check if the system has runtime mechanisms (Runtime Enforcement) to audit these transitions rather than merely treating them as documentation. Points are deducted if there is no state transition validation.
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### 5b. Platform Feature Matrix Template
|
|
360
|
+
|
|
361
|
+
After performing actual testing on each platform, fill in the following support matrix:
|
|
362
|
+
|
|
363
|
+
| Feature | Claude | Codex | Cursor | Copilot | Continue.dev | Hermes Agent |
|
|
364
|
+
| --------------- | ------ | ----- | ------ | ------- | ------------ | ------------ |
|
|
365
|
+
| Hook | | | | | | |
|
|
366
|
+
| Runtime | | | | | | |
|
|
367
|
+
| Prompt Guidance | | | | | | |
|
|
368
|
+
| Verification | | | | | | |
|
|
369
|
+
| Behavior Test | | | | | | |
|
|
370
|
+
| Auto Recovery | | | | | | |
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
### 5c. Overall Scorecard Template
|
|
375
|
+
|
|
376
|
+
Assign ratings and scores for the following dimensions (e.g., ⭐⭐⭐⭐☆ 8.5/10), and provide detailed improvements in the standalone report:
|
|
377
|
+
|
|
378
|
+
| Category | Score | Deep Analysis & Improvement Directions |
|
|
379
|
+
| :--- | :---: | :--- |
|
|
380
|
+
| **Architecture** | /10 | |
|
|
381
|
+
| **README Completeness** | /10 | |
|
|
382
|
+
| **Maintainability** | /10 | |
|
|
383
|
+
| **Skills Design** | /10 | |
|
|
384
|
+
| **Agent Compatibility** | /10 | |
|
|
385
|
+
| **Beginner Friendliness** | /10 | |
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## 6. Evaluation Report Export Guideline
|
|
390
|
+
|
|
391
|
+
When conducting a comprehensive quality audit of the system, **do not directly fill in the results within this specification document**.
|
|
392
|
+
1. Create a standalone Markdown file under the `docs/reports/` folder.
|
|
393
|
+
2. Naming convention: `evaluation-report-[model-name]-[YYYY-MM-DD].md` (e.g., `evaluation-report-gemini-3.1-pro-2026-07-21.md`).
|
|
394
|
+
3. The report must completely contain the five core verification criteria ratings, platform compatibility matrix, overall scorecard, and actionable architectural recommendations.
|