pi-dev-team 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/PORTING.md +134 -0
- package/README.md +207 -0
- package/UPSTREAM.json +64 -0
- package/agents/Explore.md +15 -0
- package/agents/a11y-review.md +118 -0
- package/agents/adr-author.md +70 -0
- package/agents/ai-provenance-review.md +120 -0
- package/agents/angular-reactivity-review.md +95 -0
- package/agents/arch-review.md +135 -0
- package/agents/architect.md +78 -0
- package/agents/autoship-batch-proposer.md +69 -0
- package/agents/claude-setup-review.md +136 -0
- package/agents/codebase-recon.md +184 -0
- package/agents/component-architecture-review.md +119 -0
- package/agents/concurrency-review.md +109 -0
- package/agents/correctness-review.md +290 -0
- package/agents/data-flow-tracer.md +120 -0
- package/agents/doc-review.md +165 -0
- package/agents/domain-review.md +136 -0
- package/agents/general-purpose.md +10 -0
- package/agents/gherkin-quality-critic.md +113 -0
- package/agents/js-fp-review.md +114 -0
- package/agents/mutation-kill.md +684 -0
- package/agents/naming-review.md +142 -0
- package/agents/orchestrator.md +339 -0
- package/agents/performance-review.md +105 -0
- package/agents/plan-review-acceptance.md +115 -0
- package/agents/plan-review-design.md +90 -0
- package/agents/plan-review-parallelization.md +84 -0
- package/agents/plan-review-strategic.md +96 -0
- package/agents/plan-review-ux.md +110 -0
- package/agents/platform-engineer.md +64 -0
- package/agents/product-manager.md +68 -0
- package/agents/progress-guardian.md +79 -0
- package/agents/qa-engineer.md +289 -0
- package/agents/quality-reviewer.md +132 -0
- package/agents/react-reactivity-review.md +102 -0
- package/agents/refactor-opportunity-review.md +128 -0
- package/agents/security-engineer.md +60 -0
- package/agents/security-review.md +218 -0
- package/agents/session-analysis.md +95 -0
- package/agents/software-engineer.md +105 -0
- package/agents/spec-compliance-review.md +100 -0
- package/agents/spec-reviewer.md +114 -0
- package/agents/structure-review.md +146 -0
- package/agents/tech-writer.md +84 -0
- package/agents/test-review.md +246 -0
- package/agents/test-smell-review.md +188 -0
- package/agents/token-efficiency-review.md +139 -0
- package/agents/ui-ux-designer.md +54 -0
- package/agents/vue-reactivity-review.md +95 -0
- package/bin/__pycache__/claudecpython-314.pyc +0 -0
- package/bin/claude +258 -0
- package/docs/upstream/.pages +1 -0
- package/docs/upstream/CHANGELOG.md +2586 -0
- package/docs/upstream/README.md +155 -0
- package/docs/upstream/agent-architecture.md +214 -0
- package/docs/upstream/agent_info.md +187 -0
- package/docs/upstream/artifact-migration.md +124 -0
- package/docs/upstream/code-intelligence-nudge.md +149 -0
- package/docs/upstream/code-review-process.md +294 -0
- package/docs/upstream/concurrent-use.md +73 -0
- package/docs/upstream/context-management.md +111 -0
- package/docs/upstream/developer-notes.md +280 -0
- package/docs/upstream/diagrams/architecture-overview.svg +101 -0
- package/docs/upstream/diagrams/review-dispatch.svg +139 -0
- package/docs/upstream/diagrams/team-agents.svg +128 -0
- package/docs/upstream/diagrams/test-improve-flow.svg +166 -0
- package/docs/upstream/diagrams/workflow-linear.svg +66 -0
- package/docs/upstream/diagrams/workflow-three-phase.svg +200 -0
- package/docs/upstream/eval-maintenance.md +95 -0
- package/docs/upstream/eval-running-guide.md +147 -0
- package/docs/upstream/eval-system.md +291 -0
- package/docs/upstream/session-review-oss-complements.md +75 -0
- package/docs/upstream/session-review.md +212 -0
- package/docs/upstream/skills.md +188 -0
- package/docs/upstream/team-structure.md +21 -0
- package/docs/upstream/telemetry-ci-access.md +129 -0
- package/docs/upstream/telemetry-repo-security.md +120 -0
- package/docs/upstream/test-evaluation.md +277 -0
- package/docs/upstream/test-improve.md +154 -0
- package/docs/upstream/triage-workflow.md +282 -0
- package/docs/upstream/workflows.md +289 -0
- package/extensions/dev-team/index.ts +539 -0
- package/extensions/dev-team/lib/agents.ts +272 -0
- package/extensions/dev-team/lib/ai-credits.ts +92 -0
- package/extensions/dev-team/lib/autocompact.ts +81 -0
- package/extensions/dev-team/lib/child-run.ts +102 -0
- package/extensions/dev-team/lib/config.ts +236 -0
- package/extensions/dev-team/lib/gh-command.ts +103 -0
- package/extensions/dev-team/lib/github-style.ts +307 -0
- package/extensions/dev-team/lib/hooks.ts +350 -0
- package/extensions/dev-team/lib/metrics.ts +115 -0
- package/extensions/dev-team/lib/safe-read.ts +49 -0
- package/extensions/dev-team/lib/session-files.ts +57 -0
- package/extensions/dev-team/lib/session-spend.ts +123 -0
- package/extensions/dev-team/lib/shell-scan.ts +205 -0
- package/extensions/dev-team/lib/skills.ts +213 -0
- package/extensions/dev-team/lib/subagent-render.ts +245 -0
- package/extensions/dev-team/lib/subagent-types.ts +164 -0
- package/extensions/dev-team/lib/subagent.ts +596 -0
- package/extensions/dev-team/lib/terminal-text.ts +54 -0
- package/extensions/dev-team/lib/tools-misc.ts +152 -0
- package/extensions/dev-team/lib/transcript.ts +110 -0
- package/extensions/dev-team/lib/trust.ts +52 -0
- package/extensions/dev-team/lib/usage-breakdown.ts +176 -0
- package/extensions/dev-team/lib/usage-chart.ts +153 -0
- package/extensions/dev-team/lib/usage-command.ts +107 -0
- package/extensions/dev-team/lib/usage-history.ts +203 -0
- package/extensions/dev-team/lib/usage-render.ts +225 -0
- package/extensions/dev-team/lib/usage-split-bar.ts +127 -0
- package/extensions/dev-team/lib/usage-state.ts +116 -0
- package/extensions/dev-team/lib/usage-text.ts +159 -0
- package/extensions/dev-team/lib/usage-view.ts +109 -0
- package/hooks/__pycache__/refactor_test_freeze_guard.cpython-314.pyc +0 -0
- package/hooks/agent_dispatch_ledger.py +190 -0
- package/hooks/autocompact_setup_nudge.py +99 -0
- package/hooks/bash_retry_guard.py +228 -0
- package/hooks/boundary_events_write_guard.py +352 -0
- package/hooks/code_intelligence_nudge.py +293 -0
- package/hooks/code_intelligence_turn_mark.py +317 -0
- package/hooks/codegraph_bootstrap.py +139 -0
- package/hooks/contract_version_guard.py +362 -0
- package/hooks/cost_meter.py +106 -0
- package/hooks/destructive-commands.json +62 -0
- package/hooks/destructive_guard.py +477 -0
- package/hooks/eval_compliance_check.py +440 -0
- package/hooks/guards.json +17 -0
- package/hooks/hooks.json +323 -0
- package/hooks/internal_double_gate.py +296 -0
- package/hooks/js_fp_review.py +212 -0
- package/hooks/knowledge_index.py +119 -0
- package/hooks/lib/__pycache__/artifact_paths.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/atomic_state.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/autocompact_config.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/boundary_events.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/doc_classification.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/gh_pr_create_detect.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/git_safe_diff.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/instrument_log.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/metrics_query.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/plugin_version.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/pre_commit_doc_classifier.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_agent_registry.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_gate_corroboration.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_gate_hash.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_verdicts.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/stdin_json.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/stryker_invocation.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/telemetry_consent.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/test_file_classify.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/token_efficiency_limits.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/verify_guard_state.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/xunit_v3_operator_gate.cpython-314.pyc +0 -0
- package/hooks/lib/agent_skill_hints.py +74 -0
- package/hooks/lib/artifact_paths.py +263 -0
- package/hooks/lib/atomic_state.py +557 -0
- package/hooks/lib/autocompact_config.py +103 -0
- package/hooks/lib/autoship_log.py +106 -0
- package/hooks/lib/banned_scripts_policy.py +51 -0
- package/hooks/lib/boundary_events.py +436 -0
- package/hooks/lib/build_knowledge_index.py +504 -0
- package/hooks/lib/build_skills_index.py +361 -0
- package/hooks/lib/build_state.py +116 -0
- package/hooks/lib/classify_ship_outcome.py +126 -0
- package/hooks/lib/config_changelog_schema.py +115 -0
- package/hooks/lib/cost_meter.py +955 -0
- package/hooks/lib/doc_classification.py +116 -0
- package/hooks/lib/gh_pr_create_detect.py +136 -0
- package/hooks/lib/git_safe_diff.py +123 -0
- package/hooks/lib/instrument_log.py +66 -0
- package/hooks/lib/iteration_journal_gate.py +197 -0
- package/hooks/lib/knowledge_index_paths.py +88 -0
- package/hooks/lib/mcp_json_repowise.py +177 -0
- package/hooks/lib/metrics_query.py +202 -0
- package/hooks/lib/minimal_yaml.py +434 -0
- package/hooks/lib/plugin_version.py +142 -0
- package/hooks/lib/pre_commit_detect.py +537 -0
- package/hooks/lib/pre_commit_doc_classifier.py +126 -0
- package/hooks/lib/pricing.py +118 -0
- package/hooks/lib/report_pdf.py +371 -0
- package/hooks/lib/review_agent_registry.py +142 -0
- package/hooks/lib/review_dispatch_ledger.py +101 -0
- package/hooks/lib/review_gate_corroboration.py +521 -0
- package/hooks/lib/review_gate_hash.py +252 -0
- package/hooks/lib/review_gate_normalized_hash.py +1115 -0
- package/hooks/lib/review_verdicts.py +301 -0
- package/hooks/lib/run_report.py +160 -0
- package/hooks/lib/skill_categories.yaml +125 -0
- package/hooks/lib/stdin_json.py +57 -0
- package/hooks/lib/stryker_invocation.py +102 -0
- package/hooks/lib/telemetry_consent.py +41 -0
- package/hooks/lib/telemetry_report.py +108 -0
- package/hooks/lib/test_file_classify.py +160 -0
- package/hooks/lib/token_efficiency_limits.py +51 -0
- package/hooks/lib/turn_identity.py +77 -0
- package/hooks/lib/verify_guard_state.py +110 -0
- package/hooks/lib/workflow_state.py +206 -0
- package/hooks/lib/xunit_v3_operator_gate.py +596 -0
- package/hooks/mcp_json_repowise_nudge.py +74 -0
- package/hooks/mutation_adapters/__init__.py +7 -0
- package/hooks/mutation_adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/lib.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/mutmut.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/pitest.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/stryker.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/stryker_net.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/lib.py +478 -0
- package/hooks/mutation_adapters/mutmut.py +188 -0
- package/hooks/mutation_adapters/pitest.py +266 -0
- package/hooks/mutation_adapters/stryker.py +157 -0
- package/hooks/mutation_adapters/stryker_net.py +264 -0
- package/hooks/mutation_gate.py +193 -0
- package/hooks/mutation_testing_smoke_gate.py +371 -0
- package/hooks/pending_review_notify.py +121 -0
- package/hooks/phase_marker.py +138 -0
- package/hooks/post_compact_state_reinject.py +180 -0
- package/hooks/post_format.py +115 -0
- package/hooks/pre_commit_knowledge_index.py +128 -0
- package/hooks/pre_commit_review.py +66 -0
- package/hooks/pre_pr_review.py +694 -0
- package/hooks/pre_tool_guard.py +405 -0
- package/hooks/py.sh +73 -0
- package/hooks/refactor-bash-write-patterns.json +29 -0
- package/hooks/refactor_test_bash_guard.py +253 -0
- package/hooks/refactor_test_freeze_guard.py +139 -0
- package/hooks/refactor_test_revert_guard.py +186 -0
- package/hooks/repo_review_nudge.py +287 -0
- package/hooks/review_verdict_recorder.py +464 -0
- package/hooks/scan_bash_command_for_banned_scripts.py +428 -0
- package/hooks/scan_worktree_for_banned_scripts.py +238 -0
- package/hooks/session_learning_trigger.py +248 -0
- package/hooks/skills_index.py +126 -0
- package/hooks/stryker_xunit_shim_guard.py +571 -0
- package/hooks/subagent_completion_guard.py +309 -0
- package/hooks/subagent_skill_context.py +139 -0
- package/hooks/task_completion_metrics.py +216 -0
- package/hooks/tdd_guard.py +229 -0
- package/hooks/telemetry.py +341 -0
- package/hooks/token_efficiency_review.py +194 -0
- package/hooks/verify_guard.py +183 -0
- package/hooks/verify_guard_edit_marker.py +73 -0
- package/hooks/version_check.py +173 -0
- package/knowledge/accepted-risks-schema.md +98 -0
- package/knowledge/adr-decision-criteria.md +64 -0
- package/knowledge/adversarial-review-protocol.md +139 -0
- package/knowledge/agent-registry.md +228 -0
- package/knowledge/agent-review-methodology.md +80 -0
- package/knowledge/ai-friendly-repo-guidelines.md +67 -0
- package/knowledge/architecture-assessment.md +96 -0
- package/knowledge/artifact-lifecycle.md +57 -0
- package/knowledge/cd-maturity-model.md +82 -0
- package/knowledge/cd-test-architecture.md +190 -0
- package/knowledge/ci-cd-file-scope.md +24 -0
- package/knowledge/codegraph-vs-graphify.md +192 -0
- package/knowledge/component-test-patterns.md +139 -0
- package/knowledge/database-change-management.md +80 -0
- package/knowledge/database-test-patterns.md +79 -0
- package/knowledge/decision-defaults.md +88 -0
- package/knowledge/dependency-breaking-techniques.md +116 -0
- package/knowledge/deployment-pipeline.md +86 -0
- package/knowledge/design-smells.md +122 -0
- package/knowledge/directory-enumeration.md +38 -0
- package/knowledge/domain-modeling.md +123 -0
- package/knowledge/evidence-bundle.md +90 -0
- package/knowledge/exploratory-testing-field-guide.md +122 -0
- package/knowledge/failure-routing.md +28 -0
- package/knowledge/fixture-construction.md +56 -0
- package/knowledge/frontend-component-architecture.md +139 -0
- package/knowledge/gherkin-quality-review-dispatch.md +135 -0
- package/knowledge/index.json +6766 -0
- package/knowledge/internal-collaborator-doubling.md +101 -0
- package/knowledge/legacy-test-strategy.md +71 -0
- package/knowledge/long-run-waiting.md +66 -0
- package/knowledge/microservice-testing.md +71 -0
- package/knowledge/model-pricing.json +23 -0
- package/knowledge/mutation-score-formulas.md +60 -0
- package/knowledge/object-calisthenics.md +147 -0
- package/knowledge/oracle-provenance.md +94 -0
- package/knowledge/orchestrator-script-implementation.md +185 -0
- package/knowledge/owasp-detection.md +148 -0
- package/knowledge/plan-review-rubric.md +56 -0
- package/knowledge/proxy-connectivity.md +62 -0
- package/knowledge/reactive-effect-patterns.md +73 -0
- package/knowledge/recon-inventory-excludes.txt +32 -0
- package/knowledge/references/bdd-value-guide.md +61 -0
- package/knowledge/references/csharp-http-client-testing.md +264 -0
- package/knowledge/release-strategies.md +74 -0
- package/knowledge/report-output-location.md +117 -0
- package/knowledge/report-pdf-integration.md +63 -0
- package/knowledge/report-print.css +129 -0
- package/knowledge/report-template.md +114 -0
- package/knowledge/report-to-pdf.md +69 -0
- package/knowledge/request-processing-flow.md +63 -0
- package/knowledge/result-verification.md +52 -0
- package/knowledge/review-agent-output-contract.md +121 -0
- package/knowledge/review-lens-classification.md +113 -0
- package/knowledge/review-rubric.md +62 -0
- package/knowledge/review-template.md +104 -0
- package/knowledge/rule-fixtures/A02.insecure-random-js/negative.js +1 -0
- package/knowledge/rule-fixtures/A02.insecure-random-js/positive.js +1 -0
- package/knowledge/rule-fixtures/A02.weak-hashing-md5/negative.py +1 -0
- package/knowledge/rule-fixtures/A02.weak-hashing-md5/positive.py +1 -0
- package/knowledge/rule-fixtures/A03.command-injection/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.command-injection/positive.js +1 -0
- package/knowledge/rule-fixtures/A03.sql-injection/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.sql-injection/positive.js +1 -0
- package/knowledge/rule-fixtures/A03.xss-innerhtml/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.xss-innerhtml/positive.js +1 -0
- package/knowledge/rule-fixtures/A05.cors-wildcard/negative.js +1 -0
- package/knowledge/rule-fixtures/A05.cors-wildcard/positive.js +1 -0
- package/knowledge/rule-fixtures/A05.default-credentials/negative.js +1 -0
- package/knowledge/rule-fixtures/A05.default-credentials/positive.js +1 -0
- package/knowledge/rule-fixtures/A07.jwt-alg-none/negative.js +1 -0
- package/knowledge/rule-fixtures/A07.jwt-alg-none/positive.js +1 -0
- package/knowledge/rule-fixtures/A08.binary-formatter/negative.cs +1 -0
- package/knowledge/rule-fixtures/A08.binary-formatter/positive.cs +1 -0
- package/knowledge/rule-fixtures/A08.js-eval/negative.js +1 -0
- package/knowledge/rule-fixtures/A08.js-eval/positive.js +1 -0
- package/knowledge/rule-fixtures/A08.object-input-stream/negative.java +1 -0
- package/knowledge/rule-fixtures/A08.object-input-stream/positive.java +1 -0
- package/knowledge/schemas/disposition-register-v1.json +65 -0
- package/knowledge/schemas/recon-envelope-v1.json +198 -0
- package/knowledge/schemas/unified-finding-v1.json +72 -0
- package/knowledge/security-primitives-contract.md +301 -0
- package/knowledge/security-review-rule-map.yaml +107 -0
- package/knowledge/skills-registry.md +72 -0
- package/knowledge/task-size-classifier.md +103 -0
- package/knowledge/telemetry-schema.md +881 -0
- package/knowledge/test-automation-maturity.md +56 -0
- package/knowledge/test-automation-principles.md +71 -0
- package/knowledge/test-cadence-tradeoffs.md +68 -0
- package/knowledge/test-doubles.md +105 -0
- package/knowledge/test-file-indicators.md +22 -0
- package/knowledge/test-layer-gates.md +35 -0
- package/knowledge/test-matrix-examples/django-batch.md +24 -0
- package/knowledge/test-matrix-examples/dotnet-grpc-fronting-api.md +90 -0
- package/knowledge/test-matrix-examples/dotnet-http-consumer.md +131 -0
- package/knowledge/test-matrix-examples/react-node-spa.md +24 -0
- package/knowledge/test-matrix-examples/spring-boot-service.md +25 -0
- package/knowledge/test-matrix-examples/ssr-htmx.md +24 -0
- package/knowledge/test-organization.md +70 -0
- package/knowledge/test-pyramid.md +84 -0
- package/knowledge/test-refactoring.md +67 -0
- package/knowledge/test-review-division-of-labor.md +85 -0
- package/knowledge/test-smells.md +80 -0
- package/knowledge/test-stack-profiles/bdd-frameworks.md +235 -0
- package/knowledge/test-stack-profiles/django.md +13 -0
- package/knowledge/test-stack-profiles/dotnet.md +18 -0
- package/knowledge/test-stack-profiles/go.md +16 -0
- package/knowledge/test-stack-profiles/node.md +16 -0
- package/knowledge/test-stack-profiles/react.md +12 -0
- package/knowledge/test-stack-profiles/spring-boot.md +16 -0
- package/knowledge/test-stack-profiles/ssr-htmx.md +14 -0
- package/knowledge/test-stack-profiles/vue.md +12 -0
- package/knowledge/test-strategy.md +70 -0
- package/knowledge/testability-patterns.md +240 -0
- package/knowledge/testing-quadrants.md +44 -0
- package/knowledge/testing-techniques/approval.md +15 -0
- package/knowledge/testing-techniques/chaos.md +17 -0
- package/knowledge/testing-techniques/fuzz.md +15 -0
- package/knowledge/testing-techniques/property-based.md +15 -0
- package/knowledge/testing-techniques/schema-validation.md +15 -0
- package/knowledge/testing-techniques/screenshot.md +15 -0
- package/knowledge/three-phase-workflow.md +198 -0
- package/knowledge/value-patterns.md +55 -0
- package/knowledge/verification-mode.md +116 -0
- package/knowledge/virtual-service-libraries.md +75 -0
- package/knowledge/wave-consolidation-guidance.md +21 -0
- package/overrides/agents/Explore.md +15 -0
- package/overrides/agents/general-purpose.md +10 -0
- package/overrides/notes/autoship.md +6 -0
- package/overrides/notes/issues-from-assessment.md +3 -0
- package/overrides/notes/issues-from-plan.md +3 -0
- package/overrides/notes/mutation-night-watch.md +3 -0
- package/overrides/notes/mutation-testing.md +3 -0
- package/overrides/notes/pr.md +7 -0
- package/overrides/notes/project-init.md +6 -0
- package/overrides/notes/setup.md +13 -0
- package/overrides/notes/specs.md +3 -0
- package/overrides/skills/headless-run/SKILL.md +45 -0
- package/overrides/skills/upgrade/SKILL.md +30 -0
- package/overrides/skills/version/SKILL.md +25 -0
- package/package.json +36 -0
- package/scripts/authoring_digest.py +93 -0
- package/scripts/autoship_discover.py +121 -0
- package/scripts/autoship_group.py +409 -0
- package/scripts/autoship_proposals.py +494 -0
- package/scripts/autoship_queue.py +291 -0
- package/scripts/autoship_reclaim.py +495 -0
- package/scripts/build_jobs.py +108 -0
- package/scripts/build_rollback_point.py +240 -0
- package/scripts/build_slice_scope.py +157 -0
- package/scripts/build_wave.py +109 -0
- package/scripts/build_wave_reconcile.py +252 -0
- package/scripts/build_worktree_baseref.py +113 -0
- package/scripts/check_agent_scope.py +117 -0
- package/scripts/check_agent_tool_mapping.py +213 -0
- package/scripts/check_review_agent_mcp_tools.py +317 -0
- package/scripts/check_security_assessment_mcp_tools.py +165 -0
- package/scripts/checkpoint_abort.py +502 -0
- package/scripts/claude_setup_review.py +438 -0
- package/scripts/codebase_recon.py +556 -0
- package/scripts/coverage_config.py +623 -0
- package/scripts/coverage_delta_steering.py +330 -0
- package/scripts/coverage_discovery_dotnet.py +315 -0
- package/scripts/coverage_discovery_java.py +742 -0
- package/scripts/coverage_discovery_js.py +546 -0
- package/scripts/coverage_gap_ranking.py +556 -0
- package/scripts/coverage_readiness.py +455 -0
- package/scripts/coverage_report_parse.py +521 -0
- package/scripts/detect_bdd_convention.py +252 -0
- package/scripts/eval_ablation.py +376 -0
- package/scripts/gherkin_analysis_coverage_gate.py +306 -0
- package/scripts/gherkin_cross_feature_duplicate_titles_gate.py +173 -0
- package/scripts/gherkin_effectiveness_rollup.py +238 -0
- package/scripts/gherkin_failure_path_gate.py +206 -0
- package/scripts/gherkin_feature_merge.py +720 -0
- package/scripts/gherkin_stub_gate.py +163 -0
- package/scripts/gherkin_stub_merge.py +479 -0
- package/scripts/git_origin_host.py +88 -0
- package/scripts/install-java-static-analysis.py +110 -0
- package/scripts/issue_deps.py +74 -0
- package/scripts/lib/_bdd_markers.py +28 -0
- package/scripts/lib/_gherkin_text.py +93 -0
- package/scripts/lib/_vendored_tree.py +70 -0
- package/scripts/lib/autoship_state.py +397 -0
- package/scripts/lib/claude_md_guard.py +226 -0
- package/scripts/lib/deterministic_recon.py +446 -0
- package/scripts/lib/mcp_tool_grants.py +211 -0
- package/scripts/lib/plan_parse.py +386 -0
- package/scripts/lib/review_result.py +84 -0
- package/scripts/lib/review_roster.py +86 -0
- package/scripts/lib/session_log/__init__.py +34 -0
- package/scripts/lib/session_log/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/lib/session_log/__pycache__/records.cpython-314.pyc +0 -0
- package/scripts/lib/session_log/classify.py +231 -0
- package/scripts/lib/session_log/corrections.py +194 -0
- package/scripts/lib/session_log/discovery.py +108 -0
- package/scripts/lib/session_log/records.py +218 -0
- package/scripts/lib/session_log/redact.py +76 -0
- package/scripts/lib/session_log/signals.py +373 -0
- package/scripts/lib/session_report_downstream.py +614 -0
- package/scripts/lib/session_report_maintainer.py +1273 -0
- package/scripts/lib/session_report_shared.py +262 -0
- package/scripts/lib/settings_hook_guard.py +157 -0
- package/scripts/lib/slug.py +33 -0
- package/scripts/lib/stub_extractors/__init__.py +82 -0
- package/scripts/lib/stub_extractors/_common.py +328 -0
- package/scripts/lib/stub_extractors/csharp.py +19 -0
- package/scripts/lib/stub_extractors/go.py +173 -0
- package/scripts/lib/stub_extractors/java.py +18 -0
- package/scripts/lib/stub_extractors/jsts.py +126 -0
- package/scripts/mutation_stack_sections.py +149 -0
- package/scripts/mutation_yield_steering.py +345 -0
- package/scripts/orchestrator.py +895 -0
- package/scripts/plan_gherkin_export.py +227 -0
- package/scripts/plan_waves.py +208 -0
- package/scripts/pr_close_keyword_lint.py +108 -0
- package/scripts/progress_guardian.py +888 -0
- package/scripts/recon_inventory.py +273 -0
- package/scripts/review_findings_log.py +93 -0
- package/scripts/run_invariants.py +124 -0
- package/scripts/select_lenses.py +640 -0
- package/scripts/session_report.py +486 -0
- package/scripts/set_autocompact_env.py +221 -0
- package/scripts/ship_resume_guard.py +135 -0
- package/scripts/ship_review_gate.py +63 -0
- package/scripts/specs_convention_marker.py +103 -0
- package/scripts/test_improve_resume.py +277 -0
- package/scripts/test_review_mechanics.py +958 -0
- package/scripts/token_efficiency_review.py +322 -0
- package/scripts/verdict_scope.py +285 -0
- package/scripts/verify_gherkin_quality_critic_isolation.py +296 -0
- package/scripts/verify_tier.py +157 -0
- package/skills/adr-tools/SKILL.md +118 -0
- package/skills/agent-readiness/SKILL.md +105 -0
- package/skills/agent-readiness/ai_friendly_analyzers.py +326 -0
- package/skills/agent-readiness/scanner.py +441 -0
- package/skills/agent-readiness/scorecard.yaml +88 -0
- package/skills/api-design/SKILL.md +115 -0
- package/skills/apply-fixes/SKILL.md +171 -0
- package/skills/apply-test-doubles/SKILL.md +321 -0
- package/skills/artifact-lifecycle/SKILL.md +127 -0
- package/skills/autoship/SKILL.md +1124 -0
- package/skills/benchmark/SKILL.md +105 -0
- package/skills/branch-workflow/SKILL.md +89 -0
- package/skills/browse/SKILL.md +184 -0
- package/skills/browser-testing/SKILL.md +62 -0
- package/skills/browser-testing/references/playwright-patterns.md +216 -0
- package/skills/build/SKILL.md +422 -0
- package/skills/build/references/static-self-heal.md +245 -0
- package/skills/careful/SKILL.md +72 -0
- package/skills/cd-test-architecture/SKILL.md +371 -0
- package/skills/ci-debugging/SKILL.md +105 -0
- package/skills/co-evolution-audit/SKILL.md +269 -0
- package/skills/code-review/SKILL.md +1015 -0
- package/skills/code-review/examples/aggregated-sample.json +56 -0
- package/skills/code-review/examples/sample-report.md +41 -0
- package/skills/code-review/output-format.md +478 -0
- package/skills/code-review/scripts/activation.py +86 -0
- package/skills/code-review/scripts/change_impact.py +357 -0
- package/skills/code-review/scripts/change_shape.py +372 -0
- package/skills/code-review/scripts/change_size.py +212 -0
- package/skills/code-review/scripts/changed_file_list.py +141 -0
- package/skills/code-review/scripts/closing_pass.py +187 -0
- package/skills/code-review/scripts/consolidate.py +277 -0
- package/skills/code-review/scripts/contract_failure_report.py +185 -0
- package/skills/code-review/scripts/dispatch_reconcile.py +66 -0
- package/skills/code-review/scripts/dispatch_waves.py +164 -0
- package/skills/code-review/scripts/finding_signature.py +446 -0
- package/skills/code-review/scripts/ledger.py +283 -0
- package/skills/code-review/scripts/partition.py +169 -0
- package/skills/code-review/scripts/render_tiered_findings.py +274 -0
- package/skills/code-review/scripts/repo_invariants.py +1066 -0
- package/skills/code-review/scripts/review_context_pack.py +306 -0
- package/skills/code-review/scripts/review_round_log.py +345 -0
- package/skills/code-review/scripts/review_value_coverage.py +297 -0
- package/skills/code-review/scripts/validate_review_output.py +467 -0
- package/skills/code-review/sliced-mode.md +205 -0
- package/skills/competitive-analysis/SKILL.md +191 -0
- package/skills/context-loading-protocol/SKILL.md +157 -0
- package/skills/continue/SKILL.md +90 -0
- package/skills/cost-report/SKILL.md +178 -0
- package/skills/coverage-baseline/SKILL.md +335 -0
- package/skills/coverage-baseline/references/multi-project-discovery.md +202 -0
- package/skills/coverage-delta/SKILL.md +181 -0
- package/skills/coverage-delta/references/mutation-gate.md +70 -0
- package/skills/design-doc/SKILL.md +95 -0
- package/skills/design-interrogation/SKILL.md +89 -0
- package/skills/design-it-twice/SKILL.md +91 -0
- package/skills/docker-image-audit/SKILL.md +108 -0
- package/skills/docker-image-audit/references/install-guide.md +64 -0
- package/skills/docker-image-audit/references/report-template.md +73 -0
- package/skills/docker-image-create/SKILL.md +185 -0
- package/skills/domain-analysis/SKILL.md +183 -0
- package/skills/domain-driven-design/SKILL.md +194 -0
- package/skills/exploratory-testing/SKILL.md +108 -0
- package/skills/explore/SKILL.md +51 -0
- package/skills/farley-score/SKILL.md +165 -0
- package/skills/feature-file-validation/SKILL.md +78 -0
- package/skills/feature-file-validation/references/validation-rules.md +115 -0
- package/skills/feedback-learning/SKILL.md +414 -0
- package/skills/fix/SKILL.md +450 -0
- package/skills/freeze/SKILL.md +68 -0
- package/skills/frontend-architecture/SKILL.md +113 -0
- package/skills/gherkin-derive/SKILL.md +630 -0
- package/skills/gherkin-public/SKILL.md +266 -0
- package/skills/governance-compliance/SKILL.md +150 -0
- package/skills/guard/SKILL.md +75 -0
- package/skills/handoff/SKILL.md +139 -0
- package/skills/handoff/references/summary-templates.md +242 -0
- package/skills/harness-audit/SKILL.md +751 -0
- package/skills/harness-audit/scripts/lesson_validate.py +386 -0
- package/skills/harness-audit/scripts/redundancy_criterion.py +188 -0
- package/skills/headless-run/SKILL.md +45 -0
- package/skills/headless-run/scripts/isolated_dispatch.py +381 -0
- package/skills/help/SKILL.md +72 -0
- package/skills/hexagonal-architecture/SKILL.md +85 -0
- package/skills/human-oversight-protocol/SKILL.md +224 -0
- package/skills/issues-from-assessment/SKILL.md +223 -0
- package/skills/issues-from-plan/SKILL.md +133 -0
- package/skills/legacy-code/SKILL.md +132 -0
- package/skills/mermaid-diagramming/SKILL.md +120 -0
- package/skills/mutation-night-watch/SKILL.md +154 -0
- package/skills/mutation-night-watch/references/scheduling.md +135 -0
- package/skills/mutation-testing/SKILL.md +396 -0
- package/skills/mutation-testing/references/languages/csharp-stryker-net.md +676 -0
- package/skills/mutation-testing/references/languages/go-go-mutesting.md +95 -0
- package/skills/mutation-testing/references/languages/java-pitest.md +77 -0
- package/skills/mutation-testing/references/languages/javascript-stryker.md +188 -0
- package/skills/mutation-testing/references/languages/python-mutmut.md +97 -0
- package/skills/mutation-testing/references/time-estimation.md +34 -0
- package/skills/mutation-testing/references/tool-detection.md +15 -0
- package/skills/mutation-testing/references/workflow-callers.md +23 -0
- package/skills/mutation-testing/scripts/__pycache__/xunit_v3_feature_detector.cpython-314.pyc +0 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_slice_runner.py +635 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_status_loop.py +525 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_wrapper.py +681 -0
- package/skills/mutation-testing/scripts/mutation_baseline_reuse.py +292 -0
- package/skills/mutation-testing/scripts/mutation_exclude_policy.py +268 -0
- package/skills/mutation-testing/scripts/mutation_feasibility_gate.py +463 -0
- package/skills/mutation-testing/scripts/mutation_kill_headless.py +331 -0
- package/skills/mutation-testing/scripts/mutation_kill_insert.py +199 -0
- package/skills/mutation-testing/scripts/mutation_kill_insert_python.py +150 -0
- package/skills/mutation-testing/scripts/mutation_kill_loop.py +869 -0
- package/skills/mutation-testing/scripts/mutation_kill_loop_python.py +949 -0
- package/skills/mutation-testing/scripts/mutation_kill_retry.py +592 -0
- package/skills/mutation-testing/scripts/mutation_kill_shared.py +620 -0
- package/skills/mutation-testing/scripts/mutation_nightwatch.py +462 -0
- package/skills/mutation-testing/scripts/mutation_nightwatch_stacks.py +425 -0
- package/skills/mutation-testing/scripts/mutation_report.py +743 -0
- package/skills/mutation-testing/scripts/mutation_report_cli.py +175 -0
- package/skills/mutation-testing/scripts/mutation_safety_gate.py +69 -0
- package/skills/mutation-testing/scripts/stryker_shard_pipeline.py +847 -0
- package/skills/mutation-testing/scripts/stryker_shard_setup.py +440 -0
- package/skills/mutation-testing/scripts/stryker_timeout_retry.py +142 -0
- package/skills/mutation-testing/scripts/xunit_v3_feature_detector.py +341 -0
- package/skills/performance-benchmark/SKILL.md +174 -0
- package/skills/performance-benchmark/examples/report-format.md +43 -0
- package/skills/performance-benchmark/references/benchmark-script.md +169 -0
- package/skills/performance-metrics/SKILL.md +265 -0
- package/skills/plan/SKILL.md +199 -0
- package/skills/plan/references/gherkin-persistence.md +43 -0
- package/skills/plan/references/plan-template.md +182 -0
- package/skills/pr/SKILL.md +289 -0
- package/skills/pr/scripts/gate_retry_state.py +368 -0
- package/skills/project-init/README.md +141 -0
- package/skills/project-init/SKILL.md +1197 -0
- package/skills/project-init/evals/evals.json +200 -0
- package/skills/project-init/references/capability-tools.md +55 -0
- package/skills/project-init/references/configs.md +221 -0
- package/skills/property-based-testing/SKILL.md +121 -0
- package/skills/property-based-testing/fixtures/invariant_fixture.py +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/README.md +42 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/LICENSE +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/README.md +263 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.js +12147 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/package.json +3 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/types57/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.js +12011 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/rolldown-runtime-D7D4PA-g.js +13 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/types57/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/package.json +94 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/LICENSE +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/README.md +168 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/RandomGenerator-DcXj09Ch.d.ts +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.js +38 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.js +18 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.js +22 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.js +134 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/RandomGenerator-DcXj09Ch.d.ts +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.js +37 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.js +17 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.js +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.js +133 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.js +44 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.js +90 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.js +80 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.js +78 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/package.json +3 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.d.ts +16 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.d.ts +2 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.js +8 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.d.ts +12 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.js +9 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.js +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.js +46 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.js +92 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.js +82 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.js +80 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.d.ts +16 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.d.ts +2 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.js +9 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.d.ts +12 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.js +10 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.js +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/package.json +133 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/package-lock.json +1179 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/package.json +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.js +29 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.properties.test.js +16 -0
- package/skills/property-based-testing/fixtures/no_property_fixture.py +10 -0
- package/skills/property-based-testing/fixtures/roundtrip_fixture.py +16 -0
- package/skills/property-based-testing/references/languages/javascript.md +54 -0
- package/skills/property-based-testing/scripts/detect_and_dispatch.py +80 -0
- package/skills/property-based-testing/scripts/hypothesis_scaffold.py +276 -0
- package/skills/proxy-resilience/SKILL.md +84 -0
- package/skills/quality-gate-pipeline/SKILL.md +184 -0
- package/skills/quality-targets-converge/SKILL.md +254 -0
- package/skills/repo-review/SKILL.md +159 -0
- package/skills/report-pdf/SKILL.md +66 -0
- package/skills/review/SKILL.md +47 -0
- package/skills/review-agent/SKILL.md +152 -0
- package/skills/review-summary/SKILL.md +73 -0
- package/skills/run-report/SKILL.md +70 -0
- package/skills/semantic-duplication-scan/SKILL.md +337 -0
- package/skills/semantic-scan/SKILL.md +53 -0
- package/skills/semgrep-analyze/SKILL.md +139 -0
- package/skills/setup/SKILL.md +1122 -0
- package/skills/ship/SKILL.md +240 -0
- package/skills/source-verification/SKILL.md +210 -0
- package/skills/source-verification/scripts/claim_extractor.py +155 -0
- package/skills/specs/.size-baseline.json +4 -0
- package/skills/specs/SKILL.md +243 -0
- package/skills/specs/references/completeness-checklist.md +83 -0
- package/skills/specs/references/extraction.md +58 -0
- package/skills/specs/references/glossary.md +59 -0
- package/skills/specs/references/persistence.md +115 -0
- package/skills/specs/references/predictability-check.md +77 -0
- package/skills/static-analysis-integration/SKILL.md +235 -0
- package/skills/static-analysis-integration/adapters/_envelope.py +26 -0
- package/skills/static-analysis-integration/adapters/jscpd-adapter.py +66 -0
- package/skills/static-analysis-integration/adapters/lizard-adapter.py +81 -0
- package/skills/static-analysis-integration/adapters/mypy-adapter.py +50 -0
- package/skills/static-analysis-integration/adapters/mypy-src-layout.py +93 -0
- package/skills/static-analysis-integration/adapters/security-review-adapter.py +212 -0
- package/skills/static-analysis-integration/maintenance.md +23 -0
- package/skills/static-analysis-integration/references/language-setup.md +228 -0
- package/skills/static-analysis-integration/references/sarif-parser.md +124 -0
- package/skills/static-analysis-integration/references/security-review-adapter.md +118 -0
- package/skills/static-analysis-integration/references/tool-configs.md +617 -0
- package/skills/static-analysis-integration/rulesets/pmd-quickstart.xml +24 -0
- package/skills/stryker-xunit-v2-shim/SKILL.md +274 -0
- package/skills/stryker-xunit-v2-shim/references/shim-howto.md +256 -0
- package/skills/stryker-xunit-v2-shim/scripts/generate_shim.py +143 -0
- package/skills/systematic-debugging/SKILL.md +130 -0
- package/skills/telemetry/SKILL.md +75 -0
- package/skills/test-audit-disable/SKILL.md +129 -0
- package/skills/test-design/SKILL.md +177 -0
- package/skills/test-design/scripts/__pycache__/internal_double_detector.cpython-314.pyc +0 -0
- package/skills/test-design/scripts/internal_double_detector.py +631 -0
- package/skills/test-design-advisor/SKILL.md +166 -0
- package/skills/test-driven-development/SKILL.md +169 -0
- package/skills/test-health/SKILL.md +262 -0
- package/skills/test-improve/SKILL.md +239 -0
- package/skills/test-improve/references/phase-0-approach-contract.md +228 -0
- package/skills/test-improve/references/phase-1-analyze.md +131 -0
- package/skills/test-improve/references/phase-2-baseline.md +121 -0
- package/skills/test-improve/references/phase-3-derive-gherkin.md +53 -0
- package/skills/test-improve/references/phase-4-plan-fixes.md +34 -0
- package/skills/test-improve/references/phase-5-improve.md +215 -0
- package/skills/test-improve/references/phase-6-refactor-decision.md +45 -0
- package/skills/test-improve/references/phase-7-refactor.md +44 -0
- package/skills/test-improve/references/phase-8-validate.md +66 -0
- package/skills/test-improve/references/phase-9-close-out-prompt.md +11 -0
- package/skills/test-improve/references/phase-9-report.md +62 -0
- package/skills/test-improve/references/review-loop.md +92 -0
- package/skills/test-improve/templates/executive-summary.md +123 -0
- package/skills/threat-modeling/SKILL.md +108 -0
- package/skills/triage/SKILL.md +211 -0
- package/skills/ubiquitous-language/SKILL.md +192 -0
- package/skills/ubiquitous-language/scripts/collect_domain_signals.py +300 -0
- package/skills/unfreeze/SKILL.md +37 -0
- package/skills/upgrade/SKILL.md +31 -0
- package/skills/upgrade/scripts/check_version_drift.py +113 -0
- package/skills/upgrade/scripts/enable_autoupdate.py +149 -0
- package/skills/version/SKILL.md +25 -0
- package/sync/__pycache__/sync_upstream.cpython-314.pyc +0 -0
- package/sync/sync_upstream.py +293 -0
- package/templates/ACCEPTED-RISKS.md.tmpl +46 -0
- package/templates/agents/agent-template.md +151 -0
- package/templates/agents/angular-testing.md +66 -0
- package/templates/agents/csharp-quality.md +63 -0
- package/templates/agents/esm-enforcer.md +52 -0
- package/templates/agents/front-end-testing.md +65 -0
- package/templates/agents/go-quality.md +65 -0
- package/templates/agents/python-quality.md +62 -0
- package/templates/agents/react-testing.md +61 -0
- package/templates/agents/ts-enforcer.md +60 -0
- package/templates/agents/twelve-factor-audit.md +49 -0
- package/tools/entropy-check.py +250 -0
- package/tools/model-hash-verify.py +213 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Report Template
|
|
2
|
+
|
|
3
|
+
Shared header/footer/empty-section contract for dev-team's ~15
|
|
4
|
+
report-writing skills (`test-health`, `cd-test-architecture`,
|
|
5
|
+
`competitive-analysis`, `docker-image-audit`, `test-improve`,
|
|
6
|
+
`harness-audit`, `session-review`, `explore`, `test-design`,
|
|
7
|
+
`frontend-architecture`, `agent-eval`, and others) to adopt over time.
|
|
8
|
+
Generalized from `test-improve`'s Phase 9 template
|
|
9
|
+
(`skills/test-improve/templates/executive-summary.md`), the most complete
|
|
10
|
+
existing example in the plugin — same role as `knowledge/review-template.md`
|
|
11
|
+
plays for code-review agents, but for standalone reports rather than the
|
|
12
|
+
review aggregation step.
|
|
13
|
+
|
|
14
|
+
**Adoption status**: only `test-health`, `cd-test-architecture`, and
|
|
15
|
+
`competitive-analysis` have migrated onto this contract so far. Every other
|
|
16
|
+
skill named above — including `docker-image-audit`, which still uses its own
|
|
17
|
+
unrelated local template at `skills/docker-image-audit/references/report-template.md`
|
|
18
|
+
(same filename, different, non-conforming structure), and `test-improve`,
|
|
19
|
+
which keeps its own local `skills/test-improve/templates/executive-summary.md`
|
|
20
|
+
body — has **not** adopted this contract yet; being named above is a
|
|
21
|
+
statement of intended scope, not current compliance.
|
|
22
|
+
|
|
23
|
+
**Scope**: this file defines the shared header, closing Provenance section,
|
|
24
|
+
and empty-section rule only. Skill-specific body content — findings tables,
|
|
25
|
+
per-skill scoring, detail sections — stays local to each skill's own Output
|
|
26
|
+
section. A skill's Output section references this file for the shared parts
|
|
27
|
+
instead of inlining its own; see the Reference sentence below.
|
|
28
|
+
|
|
29
|
+
## Reference sentence
|
|
30
|
+
|
|
31
|
+
Every report-writing skill that adopts this contract points at it with this
|
|
32
|
+
exact sentence, so the reference reads identically across skills instead of
|
|
33
|
+
being reworded per skill:
|
|
34
|
+
|
|
35
|
+
> For the header block and closing Provenance section, follow
|
|
36
|
+
> `knowledge/report-template.md`; the sections below are this skill's own
|
|
37
|
+
> body.
|
|
38
|
+
|
|
39
|
+
## Header block
|
|
40
|
+
|
|
41
|
+
Every report opens with:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
# <Report Title> — <target> (<date>)
|
|
45
|
+
|
|
46
|
+
**Date**: <ISO 8601>
|
|
47
|
+
**Target**: <repo / image / component / scope of comparison>
|
|
48
|
+
**Tool versions**: <relevant tool versions, e.g. coverage tool, mutation tool — omit fields with no applicable tool>
|
|
49
|
+
**Scope**: <what was analyzed — full repo, --path <dir>, single component, etc.>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Skills with an existing single-line summary convention (e.g. `## Test Health
|
|
53
|
+
— <repo> (<date>)`, `**Shape**: ... **Fit**: ...`) keep that line as their
|
|
54
|
+
own body content — it is not replaced by this header block, only preceded
|
|
55
|
+
by it.
|
|
56
|
+
|
|
57
|
+
## Empty-section rule
|
|
58
|
+
|
|
59
|
+
Scope: **header/footer fields only** — the fields in the Header block above
|
|
60
|
+
and the Provenance section below. A header/footer field with no value
|
|
61
|
+
renders `_Not applicable — <reason>._` rather than being silently omitted
|
|
62
|
+
(e.g. `**Tool versions**: _Not applicable — no coverage tool detected._`).
|
|
63
|
+
|
|
64
|
+
This rule does not govern skill-specific body content. A skill's own
|
|
65
|
+
body-level empty-value conventions are unaffected and are not required to
|
|
66
|
+
follow this rule — for example, `test-health`'s Farley Score row uses its
|
|
67
|
+
own convention (verbatim scope-labelled value, or the literal `no in-scope
|
|
68
|
+
test files`) rather than the generic `_Not applicable_` phrasing.
|
|
69
|
+
|
|
70
|
+
## Default section ordering
|
|
71
|
+
|
|
72
|
+
For a **new** report-writing skill with no established structure of its own,
|
|
73
|
+
default to this ordering:
|
|
74
|
+
|
|
75
|
+
1. Header block
|
|
76
|
+
2. Executive Summary
|
|
77
|
+
3. Findings / Detail (skill-specific)
|
|
78
|
+
4. Next Actions
|
|
79
|
+
5. Provenance (closing section, below)
|
|
80
|
+
|
|
81
|
+
This ordering is **illustrative guidance for new skills only**. It is not
|
|
82
|
+
grounds to rename an existing report-writing skill's established section
|
|
83
|
+
headings (e.g. `cd-test-architecture`'s `### Next steps`, `competitive-
|
|
84
|
+
analysis`'s `## Next Steps`) to match this ordering's example names when
|
|
85
|
+
migrating that skill onto this shared contract — a migrated skill's body
|
|
86
|
+
stays exactly as it already is.
|
|
87
|
+
|
|
88
|
+
## Provenance (closing section)
|
|
89
|
+
|
|
90
|
+
Every report closes with a Provenance section, generalized from
|
|
91
|
+
`test-improve`'s Phase 9 §10:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
## Provenance
|
|
95
|
+
|
|
96
|
+
- Repository: `<repo path>`
|
|
97
|
+
- Branch / SHA: `<branch>` / `<sha>`
|
|
98
|
+
- Run parameters: `<flags, scope, or other invocation parameters>`
|
|
99
|
+
- `dev-team` plugin version: `<plugin_version>`
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Omit fields that don't apply to a given skill (e.g. a skill with no
|
|
103
|
+
run-scoping flags), applying the empty-section rule above rather than
|
|
104
|
+
deleting the field.
|
|
105
|
+
|
|
106
|
+
## Related
|
|
107
|
+
|
|
108
|
+
- `knowledge/review-template.md` — the equivalent shared contract for
|
|
109
|
+
code-review agents' aggregation step.
|
|
110
|
+
- `knowledge/report-to-pdf.md` — rendering any report produced under this
|
|
111
|
+
contract to PDF.
|
|
112
|
+
- `skills/test-improve/templates/executive-summary.md` — the precedent this
|
|
113
|
+
contract generalizes from; `test-improve` keeps its own local template body
|
|
114
|
+
unchanged and is not required to migrate onto this file.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Rendering a report to PDF
|
|
2
|
+
|
|
3
|
+
**Prefer the built-in command.** `/report-pdf <path.md> [--out <path>]` renders
|
|
4
|
+
any dev-team Markdown report (`.dev-team-reports/*.md` or `reports/*.md`) to a
|
|
5
|
+
styled PDF, and the `--pdf` flag on `/code-review`, `/test-health`,
|
|
6
|
+
`/cd-test-architecture`, `/triage`, and `/harness-audit` renders the report
|
|
7
|
+
that run just wrote. Both share `hooks/lib/report_pdf.py`, which bundles the
|
|
8
|
+
print stylesheet (`knowledge/report-print.css`), detects an engine with
|
|
9
|
+
graceful fallback, and skips with an install hint when none is present — see
|
|
10
|
+
[`report-pdf-integration.md`](report-pdf-integration.md). The recipe below is
|
|
11
|
+
the underlying mechanism, kept for reference and manual use.
|
|
12
|
+
|
|
13
|
+
A copy-pasteable recipe for turning any markdown report produced under
|
|
14
|
+
`knowledge/report-template.md`'s contract into a shareable PDF, without
|
|
15
|
+
assuming a LaTeX engine (`pdflatex`, `xelatex`) or a headless-rendering
|
|
16
|
+
package (`wkhtmltopdf`, `weasyprint`) is installed. Requires only:
|
|
17
|
+
|
|
18
|
+
- `pandoc` (`brew install pandoc` on macOS, `apt-get install pandoc` on
|
|
19
|
+
Debian/Ubuntu)
|
|
20
|
+
- A Chrome or Chromium install (already present on most developer machines)
|
|
21
|
+
|
|
22
|
+
This is an on-request recipe, not automation — no hook runs it
|
|
23
|
+
automatically on every report write.
|
|
24
|
+
|
|
25
|
+
**Security note.** `report_pdf.py` hardens this recipe for report content that
|
|
26
|
+
may embed snippets from a repo under review: it runs pandoc with `--sandbox`
|
|
27
|
+
(no build-time resource fetches — blocks SSRF via a remote URL in the content),
|
|
28
|
+
injects the stylesheet in Python rather than via `--css` (sandbox blocks that
|
|
29
|
+
read), and invokes headless Chrome with `--disable-javascript`. The manual
|
|
30
|
+
recipe below omits these; use the command for untrusted content.
|
|
31
|
+
|
|
32
|
+
## Recipe
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 1. Markdown -> standalone HTML (self-contained: styling inlined, no external assets)
|
|
36
|
+
pandoc report.md -o report.html --standalone --embed-resources --metadata title="Report"
|
|
37
|
+
|
|
38
|
+
# 2. Standalone HTML -> PDF via headless Chrome's native print-to-pdf
|
|
39
|
+
# macOS:
|
|
40
|
+
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
|
|
41
|
+
--headless --disable-gpu --no-pdf-header-footer \
|
|
42
|
+
--print-to-pdf="report.pdf" "$(pwd)/report.html"
|
|
43
|
+
|
|
44
|
+
# Linux (path varies by distro/package: google-chrome, google-chrome-stable, chromium, chromium-browser):
|
|
45
|
+
google-chrome --headless --disable-gpu --no-pdf-header-footer \
|
|
46
|
+
--print-to-pdf="report.pdf" "$(pwd)/report.html"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`report.pdf` is written to the current directory.
|
|
50
|
+
|
|
51
|
+
## Why this toolchain
|
|
52
|
+
|
|
53
|
+
- **No LaTeX assumption.** `pdflatex`/`xelatex` are not installed by default
|
|
54
|
+
on most developer machines and are a heavy dependency to add just for
|
|
55
|
+
occasional PDF export; `wkhtmltopdf`/`weasyprint` have their own native
|
|
56
|
+
dependency chains (Qt WebKit, Cairo/Pango) that are equally not guaranteed
|
|
57
|
+
present.
|
|
58
|
+
- **Chrome and pandoc are already common.** Both are already installed on
|
|
59
|
+
most developer machines for unrelated reasons, so this recipe typically
|
|
60
|
+
requires zero new installs.
|
|
61
|
+
- **`--embed-resources`** (pandoc ≥ 3.0; use `--self-contained` on older
|
|
62
|
+
pandoc) inlines any CSS/images into the HTML so the print-to-pdf step has
|
|
63
|
+
no external asset dependency, keeping the recipe reproducible from the
|
|
64
|
+
markdown file alone.
|
|
65
|
+
|
|
66
|
+
## Related
|
|
67
|
+
|
|
68
|
+
- `knowledge/report-template.md` — the shared header/footer/empty-section
|
|
69
|
+
contract most reports rendered with this recipe will already follow.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!-- Extracted from CLAUDE.md — do not duplicate here -->
|
|
2
|
+
|
|
3
|
+
This file contains the orchestration workflow details extracted from CLAUDE.md to keep the main config file lean.
|
|
4
|
+
|
|
5
|
+
## Request Processing Flow
|
|
6
|
+
|
|
7
|
+
For trivial tasks (typo fix, simple query), the Orchestrator routes directly to a single agent. For non-trivial tasks, the Orchestrator follows the **Research → Plan → Implement** workflow:
|
|
8
|
+
|
|
9
|
+
### Three-Phase Workflow
|
|
10
|
+
|
|
11
|
+
1. **Research** — Understand the system: find relevant files, trace data flows, identify the problem surface area. Sub-agents explore the codebase and return concise findings to keep the parent context clean. For non-trivial features, produce a **design document** at `docs/specs/` with problem statement, approach, alternatives, and scope boundaries. Optionally run **Design Interrogation** to stress-test the design and surface unresolved decisions before planning. For module boundaries, use **Design It Twice** to generate parallel alternative interfaces via sub-agents. Output: research progress file + design doc written to `.claude/memory/`.
|
|
12
|
+
2. **Human Review Gate** — Human reviews research findings and design doc. Catching a misunderstanding here prevents hundreds of bad lines of code.
|
|
13
|
+
3. **Plan** — Decompose the feature into **vertical slices**, author each slice's **Gherkin scenarios** (the behavioral contract), then specify every change: files, snippets, TDD steps, verification. Before the human sees the plan, **plan review personas** run in parallel as critical outside reviewers — the reviewer set scales to plan tier; see the plan skill's [Run plan review personas step](../skills/plan/SKILL.md#5-run-plan-review-personas) for the tier classification (that table is the single source of truth — do not re-duplicate the reviewer set here, it drifts). See `${CLAUDE_PLUGIN_ROOT}/knowledge/three-phase-workflow.md#phase-2-plan` for how an unresolved `needs-revision` verdict is handled before the human gate — that statement is the single source of truth, not restated here. The plan is the primary review artifact — 200 lines of plan is far more reviewable than 2,000 lines of code. After approval, optionally run `/issues-from-plan` to create GitHub issues for team distribution. Output: implementation plan progress file written to `.claude/memory/`.
|
|
14
|
+
4. **Human Review Gate** — Human reviews the plan. This replaces traditional line-by-line code review as the primary quality gate.
|
|
15
|
+
5. **Implement** — Execute the plan by dispatching the `software-engineer` agent (by `subagent_type`) for each step. All code is built in **small per-behavior batches** with **vertical slices** — **Code-First Small Batches** (IMPLEMENT → TEST → REFACTOR), the sole build cadence, refactoring on every green (`docs/experiments/RECOMMENDATIONS.md`). The build runs **wave by wave** (the plan's `## Parallelization` schedule): independent slices in a wave build concurrently in **worktree isolation** (`isolation: "worktree"`), then a barrier reconciles the wave and gates on the full suite before the next wave. Worktree isolation requires Claude Code's `worktree.baseRef` setting to be `"head"` — set it in `.claude/settings.json` or `~/.claude/settings.json` (plugin- and project-local-scope settings are not honored for this key per issue #553's Slice 0 spike; full evidence: `docs/spikes/worktree-baseref-head-spike.md`). Effective concurrency is `min(--jobs, DEV_TEAM_MAX_PARALLEL_BUILDS, wave width)` — parallel fan-out is opt-in: when neither `--jobs` nor the env var **`DEV_TEAM_MAX_PARALLEL_BUILDS`** is set the default is sequential (effective 1), and you opt into fan-out with `--jobs N` or the env var, each capped by wave width (#1515). A fully-dependent plan degrades to today's one-slice-at-a-time behavior. A **three-stage inline review** runs at a granularity that scales with step complexity — per step for `complex` steps, batched once at the slice boundary for `standard`/`trivial` steps: a deterministic static self-heal pass (scoped static analysis with a capped fix loop, `skills/build/references/static-self-heal.md`) runs to pass-or-cap first, then (1) spec-compliance-review checks code matches spec, (2) quality review agents check code quality, (3) browser verification for UI changes. Each checkpoint's find/fix/no-op outcome is logged to `.claude/metrics/review-value.jsonl` so the overhead is measurable. Actionable issues (error/warning severity with high/medium confidence) are **auto-fixed and re-reviewed** in a loop (up to 5 iterations) — only issues requiring human judgment are escalated. Run `/code-review` before committing (which auto-scopes to uncommitted changes and runs its own fix loop). Then invoke `dev-team:tech-writer` to verify all affected documentation is current. All agents must provide **verification evidence** (fresh test output) before claiming completion. Output: working code + test results + code review pass + docs verified.
|
|
16
|
+
6. **Human Review Gate** — Human reviews the final output. Lightweight if the plan was correct.
|
|
17
|
+
7. **Branch Workflow** — Create PR, choose merge strategy, clean up branch (see Branch Workflow skill).
|
|
18
|
+
8. **Learning loop** — Update configs if needed, log metrics, refine routing.
|
|
19
|
+
|
|
20
|
+
### Skills by Phase
|
|
21
|
+
|
|
22
|
+
| Phase | Skills Used | Purpose |
|
|
23
|
+
|-------|-----------|---------|
|
|
24
|
+
| **Research** | Design Doc, Domain Analysis, Domain-Driven Design, Threat Modeling, Design Interrogation, Design It Twice, Competitive Analysis | Understand the system, explore alternatives, stress-test designs |
|
|
25
|
+
| **Plan** | Specs, API Design, Hexagonal Architecture, Legacy Code | Define what to build, specify interfaces and test strategy |
|
|
26
|
+
| **Plan → Team** | `/issues-from-plan` | Break plan into GitHub issues for team distribution |
|
|
27
|
+
| **Implement** | Test-Driven Development (advisory, on request), Systematic Debugging, Mutation Testing, Browser Testing, Performance Benchmark, CI Debugging | Build in small per-behavior batches (Code-First Small Batches), debug issues (reproduce defects with a failing test first), validate quality, measure performance |
|
|
28
|
+
| **Bug Triage** | `/triage` (Systematic Debugging + file-based triage record in `.dev-team-reports/triage/`) | Investigate bugs and write actionable triage records |
|
|
29
|
+
| **Review** | Quality Gate Pipeline, Farley Score | Validate output before delivery |
|
|
30
|
+
| **Cross-phase** | Context Loading Protocol, Context Summarization, Feedback & Learning, Human Oversight Protocol, Performance Metrics, Governance & Compliance, Branch Workflow | Orchestration, context management, learning |
|
|
31
|
+
|
|
32
|
+
### Phase Transitions
|
|
33
|
+
|
|
34
|
+
Each phase runs in a fresh context window. The output of each phase is a structured progress file in `.claude/memory/` that onboards the next phase. See the Orchestrator agent for the full protocol.
|
|
35
|
+
|
|
36
|
+
## Multi-Agent Collaboration Protocol
|
|
37
|
+
|
|
38
|
+
### Sub-Agents as Context Isolation
|
|
39
|
+
|
|
40
|
+
The primary value of sub-agents is **context isolation**, not persona specialization. When a parent agent dispatches a sub-agent to explore, search, or analyze, the sub-agent absorbs the context burden of reading files and tracing code flows. Only a concise, structured finding returns to the parent — keeping the parent's context clean and focused on the actual task.
|
|
41
|
+
|
|
42
|
+
**Design sub-agent calls for minimal context return**:
|
|
43
|
+
|
|
44
|
+
- Send the sub-agent a specific question ("Where is user authentication handled? Return file paths and line numbers.")
|
|
45
|
+
- The sub-agent reads 20 files; the parent receives 10 lines of structured findings
|
|
46
|
+
- The parent can get right to work without the context burden of exploration
|
|
47
|
+
|
|
48
|
+
Persona specialization (Software Engineer, Architect, etc.) provides behavioral guardrails and domain expertise, but context isolation is what makes multi-agent workflows scale.
|
|
49
|
+
|
|
50
|
+
### Multi-Agent Coordination
|
|
51
|
+
|
|
52
|
+
When a task requires multiple agents:
|
|
53
|
+
|
|
54
|
+
1. Orchestrator identifies multi-agent task and assigns the three-phase workflow
|
|
55
|
+
2. Load primary agent + sub-agents for the current phase only
|
|
56
|
+
3. Sub-agents explore and return concise findings (context isolation)
|
|
57
|
+
4. Primary agent coordinates (defines interfaces, manages dependencies, resolves conflicts)
|
|
58
|
+
5. Phase output is written to `.claude/memory/` as a progress file
|
|
59
|
+
6. Human reviews before next phase begins
|
|
60
|
+
7. Integration and validation (QA validates, Architect reviews if architectural changes)
|
|
61
|
+
8. Unified result delivery
|
|
62
|
+
|
|
63
|
+
Referenced from: `plugins/dev-team/CLAUDE.md`
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Result Verification
|
|
2
|
+
|
|
3
|
+
Reference file for `test-review`, `test-smell-review`, and the `test-design-advisor` skill. This file covers the **Verify** phase — how a test asserts the outcome — and the patterns that make a failure point straight at its cause. Where `test-doubles.md` chooses the collaborator stand-in, this file chooses the *assertion*.
|
|
4
|
+
|
|
5
|
+
Source: Gerard Meszaros, *xUnit Test Patterns* (xunitpatterns.com) — Result Verification chapter. Language- and framework-agnostic — described by role, not any assertion library's API.
|
|
6
|
+
|
|
7
|
+
Core principle: **verify one logical condition per test, and make every assertion say what it expected and why** — so a red test localizes the defect instead of hiding it.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Verification style: state vs behavior
|
|
12
|
+
|
|
13
|
+
| Style | What it checks | Use when |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **State verification** | The SUT's resulting state / return value after exercise | **Default.** The outcome is observable as a value or state |
|
|
16
|
+
| **Behavior verification** | That the SUT *called* a collaborator a certain way | Only at a true side-effect boundary with no observable state (e.g. a message was published) |
|
|
17
|
+
|
|
18
|
+
Prefer state verification; reach for behavior verification only when there is no state to assert. The *double* that enables behavior verification (spy/mock) is chosen in `test-doubles.md`; here, decide *whether* behavior verification is even the right approach.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Assertion patterns
|
|
23
|
+
|
|
24
|
+
| Pattern | What it is | Use when | Fixes |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| **Assertion Method** | A single primitive assert on one value, with a message | A single expected value | baseline |
|
|
27
|
+
| **Expected Object** | Build the whole expected object and assert equality in **one** comparison | Asserting many fields of one result | **Assertion Roulette**, field-by-field clutter |
|
|
28
|
+
| **Custom Assertion** | A domain-named assertion encapsulating a comparison **and** an intent-revealing failure message (`assertIsOverdue(account)`) | The same non-trivial comparison recurs, or the default failure message is opaque | duplication + poor diagnostics |
|
|
29
|
+
| **Verification Method** | A named sequence of assertions reused across tests | A multi-assertion check repeats with the same meaning | Test Code Duplication in the Verify phase |
|
|
30
|
+
| **Guard Assertion** | Assert a precondition **before** the main assertion, so a missing precondition fails clearly | The main assertion would otherwise throw a cryptic null/empty error | misleading failures |
|
|
31
|
+
| **Delta Assertion** | Assert the *change* relative to a captured baseline, not an absolute value | Working against a Shared/persistent fixture whose absolute state you don't control | brittle absolute assertions on shared fixtures |
|
|
32
|
+
| **Unfinished Test Assertion** | A deliberate `fail("not yet implemented")` placeholder that keeps a stubbed-out test **red** until it's written | You've named a test condition you intend to cover but haven't implemented it yet | a silently-passing empty test that masquerades as coverage (a Buggy Test) |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Rules
|
|
37
|
+
|
|
38
|
+
- **One logical condition per test.** Several unrelated assertions in one method is an Eager Test — split it (`test-organization.md` / `test-refactoring.md`).
|
|
39
|
+
- **Locatable intent.** Every assertion carries a message or is self-describing, so a failure names the expectation.
|
|
40
|
+
- **No magic values.** Don't assert against unexplained literals; name the expected value or derive it visibly (avoid hard-coded values whose meaning is lost).
|
|
41
|
+
|
|
42
|
+
**Decision flow:** single value → Assertion Method with a message → multi-field object → **Expected Object** → repeated/complex domain comparison → **Custom Assertion** / **Verification Method** → precondition that would fail cryptically → **Guard Assertion** → outcome relative to a shared fixture → **Delta Assertion**.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## How this connects to the rest of the toolkit
|
|
47
|
+
|
|
48
|
+
- **`test-smells.md`** — the smells these fix: Assertion Roulette, Obscure Test, Fragile/Overspecified Test, Hard-Coded Values.
|
|
49
|
+
- **`test-doubles.md`** — behavior verification with mocks/spies; choose the double there, decide the verification approach here.
|
|
50
|
+
- **`test-strategy.md`** — Delta Assertion is the verification counterpart of a Shared/persistent Fixture.
|
|
51
|
+
- **`test-organization.md`** — Verify is the third of the Four-Phase Test.
|
|
52
|
+
- **`test-refactoring.md`** — the moves that get an existing test here: Introduce Expected Object, Extract Custom Assertion / Verification Method, Add Guard Assertion, Split Test.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Review-agent output contract
|
|
2
|
+
|
|
3
|
+
The JSON shape every read-only `*-review` agent emits. This is the single
|
|
4
|
+
source of truth — agent files cite this instead of inlining the schema, so
|
|
5
|
+
the contract can't drift between the ~20 agents that share it.
|
|
6
|
+
|
|
7
|
+
## Canonical schema
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{"status": "pass|warn|fail|skip", "issues": [{"category": "", "severity": "error|warning|suggestion", "confidence": "high|medium|none", "file": "", "line": 0, "message": "", "suggestedFix": ""}], "summary": ""}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`category` is optional per finding — omit it rather than emit an empty
|
|
14
|
+
string when a finding genuinely has no natural taxonomy tag.
|
|
15
|
+
|
|
16
|
+
## `category` (#1639)
|
|
17
|
+
|
|
18
|
+
A short, stable tag identifying the *kind* of finding within an agent's own
|
|
19
|
+
taxonomy — not a cross-agent enum, and not required to be a strict
|
|
20
|
+
linter-style rule ID. Its purpose is round-to-round finding identity:
|
|
21
|
+
`skills/code-review/scripts/finding_signature.py`'s `signature()` hashes
|
|
22
|
+
`(agent, file, category, normalized-message)`, with the finding's `line`
|
|
23
|
+
compared separately at a `±3` tolerance by `same_finding()` rather than
|
|
24
|
+
folded into the hash. The `category` component of that hash is resolved
|
|
25
|
+
from a fallback chain — `category` → `smell` → `rule` → `ruleId` (#1692) —
|
|
26
|
+
so an agent that spells its taxonomy tag `smell` (`test-smell-review`) gets
|
|
27
|
+
the same round-to-round identity protection as an agent that spells it
|
|
28
|
+
`category`. Message normalization strips quoted spans and numbers
|
|
29
|
+
by design, so two genuinely *different* findings from the same agent, same
|
|
30
|
+
file, and within a few lines of each other can normalize to the same text
|
|
31
|
+
(e.g. two distinct missing-guard-clause defects a couple of lines apart
|
|
32
|
+
whose messages differ only in the quoted identifier that normalization
|
|
33
|
+
strips). Without `category` to tell them apart, those collide into one
|
|
34
|
+
signature, and — because they also fall inside the `±3` proximity window —
|
|
35
|
+
a later round's genuinely new defect matches a prior round's key and reads
|
|
36
|
+
as `carried` rather than new, silently suppressing a fix round the
|
|
37
|
+
loop-until-dry/severity-floor termination rules #1625 added were supposed to
|
|
38
|
+
run.
|
|
39
|
+
|
|
40
|
+
Each agent defines its own taxonomy in its own body — see each agent's
|
|
41
|
+
`## Detect` (or equivalent) section for its specific category values. Three
|
|
42
|
+
worked examples already shipping on this contract (kept in sync with the
|
|
43
|
+
named agent files by `tests/repo/test_review_agent_output_contract_examples.py`):
|
|
44
|
+
|
|
45
|
+
- **`security-review`**: `"category": "A<NN>.<slug>"` (the OWASP category the
|
|
46
|
+
finding maps to), e.g. `"A03.sql-injection"`.
|
|
47
|
+
- **`ai-provenance-review`**: `"category": "verification-debt|regeneration-risk"`.
|
|
48
|
+
- **`spec-compliance-review`**: `"category": "unmet-criterion|uncovered-scenario|scope-violation|plan-deviation"`.
|
|
49
|
+
|
|
50
|
+
Four more agents converge on the same field name independently: the
|
|
51
|
+
`plan-review-*` critics (`plan-review-design`, `plan-review-parallelization`,
|
|
52
|
+
`plan-review-strategic`, `plan-review-ux`) each emit their own `category`
|
|
53
|
+
values too, on a different `{"verdict", "issues"}` schema dispatched by
|
|
54
|
+
`/plan` rather than this contract's `{"status", "issues"}` shape — not a
|
|
55
|
+
fourth spelling to reconcile, but further evidence the name reads naturally
|
|
56
|
+
across this repo's own review agents.
|
|
57
|
+
|
|
58
|
+
A new agent that reports findings across more than one natural taxonomy
|
|
59
|
+
bucket should add its own `category` values the same way — a short,
|
|
60
|
+
lower-case, hyphenated tag per bucket, documented in the agent's own body —
|
|
61
|
+
rather than leaving the field unset.
|
|
62
|
+
|
|
63
|
+
**Not the same `category` as `apply-fixes`'s correction-prompt schema.**
|
|
64
|
+
`skills/apply-fixes/SKILL.md`'s correction-prompt `category` field holds the
|
|
65
|
+
*reporting agent's name* (e.g. `"structure-review"`), grouping fixes for
|
|
66
|
+
display — a different concept that happens to share this field name in a
|
|
67
|
+
downstream artifact generated *from* findings. Do not assume a correction
|
|
68
|
+
prompt's `category` carries a finding's taxonomy tag through unchanged.
|
|
69
|
+
|
|
70
|
+
## Status values
|
|
71
|
+
|
|
72
|
+
- **pass**: zero issues
|
|
73
|
+
- **warn**: issues found, none are errors
|
|
74
|
+
- **fail**: at least one error-severity issue
|
|
75
|
+
- **skip**: agent had nothing to review this run — no files in scope (e.g.,
|
|
76
|
+
no JS/TS files for `js-fp-review`), or excluded by a pre-flight gate.
|
|
77
|
+
Canonical definition — `output-format.md` and `SKILL.md` cite this rather
|
|
78
|
+
than restate it.
|
|
79
|
+
|
|
80
|
+
**Documented per-agent status exception:** `doc-review` and `naming-review`
|
|
81
|
+
escalate a `warning`-severity finding to `fail` as well as `error` — for
|
|
82
|
+
these two, a misleading name or a stale/incomplete doc is high-cost enough
|
|
83
|
+
on its own that it doesn't wait for a second, error-severity finding to
|
|
84
|
+
raise the tier. Every other agent uses the default rule above.
|
|
85
|
+
|
|
86
|
+
## `severity` values
|
|
87
|
+
|
|
88
|
+
`error` (must fix), `warning` (should fix), `suggestion` (could improve).
|
|
89
|
+
|
|
90
|
+
## `confidence` values
|
|
91
|
+
|
|
92
|
+
| Value | Meaning | `apply-fixes` behavior |
|
|
93
|
+
|-------|---------|----------------------|
|
|
94
|
+
| `high` | Mechanical fix; correct with high certainty | Auto-apply |
|
|
95
|
+
| `medium` | Direction right; tradeoffs possible | Present as suggested diff — require confirmation |
|
|
96
|
+
| `none` | Requires human judgment | Present finding only; do not generate correction prompt |
|
|
97
|
+
|
|
98
|
+
## Documented per-agent extensions
|
|
99
|
+
|
|
100
|
+
A handful of agents extend the canonical schema with extra fields specific
|
|
101
|
+
to their domain, beyond the canonical `category` documented above. These are
|
|
102
|
+
intentional, documented exceptions — not drift:
|
|
103
|
+
|
|
104
|
+
- **`test-smell-review`**: adds `"smell": ""` and
|
|
105
|
+
`"remedyFamily": "fixture-construction|result-verification|test-organization|test-refactoring|null"`
|
|
106
|
+
to each issue. `smell` is this agent's own taxonomy tag; `signature()`'s
|
|
107
|
+
fallback chain is `category` → `smell` → `rule` → `ruleId` (#1692), so its
|
|
108
|
+
findings hash with `smell` as their taxonomy component instead of an empty
|
|
109
|
+
segment.
|
|
110
|
+
|
|
111
|
+
An agent that needs a new field beyond these documents it here rather than
|
|
112
|
+
drifting silently.
|
|
113
|
+
|
|
114
|
+
## Aggregation
|
|
115
|
+
|
|
116
|
+
`/code-review` wraps each agent's raw result with `agentName` and
|
|
117
|
+
`modelTier` when assembling the panel-wide report — see
|
|
118
|
+
[`skills/code-review/output-format.md`](../skills/code-review/output-format.md)
|
|
119
|
+
for the aggregated `--json` shape, the per-slice section artifact, and the
|
|
120
|
+
progress-ledger/consolidation formats sliced mode adds on top of this
|
|
121
|
+
per-agent contract.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Review Roster: Discovery Lens vs. Verification Gate (#2007)
|
|
2
|
+
|
|
3
|
+
Two classes of review agent need two different value metrics, and pricing
|
|
4
|
+
both the same way misreads one of them:
|
|
5
|
+
|
|
6
|
+
- **Discovery lens** — scans an open-ended set of possible defects across a
|
|
7
|
+
domain (SRP violations, race conditions, N+1 queries, ...). `$/finding` is
|
|
8
|
+
a meaningful cost signal for this class: a lens that consistently costs a
|
|
9
|
+
lot per finding is a real tier-down/removal candidate.
|
|
10
|
+
- **Verification gate** — confirms one specific, fixed thing (does the
|
|
11
|
+
implementation match the spec, does the diff follow the plan). `$/finding`
|
|
12
|
+
is the **wrong** metric here: a verification gate that mostly passes is a
|
|
13
|
+
gate doing its job, not evidence of low value (see #2007's own framing —
|
|
14
|
+
pricing silence as waste is the mirror image of the "gate that cannot
|
|
15
|
+
fail" failure `CLAUDE.md` warns about). The meaningful measure for this
|
|
16
|
+
class is **escape rate**: how often something the gate should have caught
|
|
17
|
+
reached a later stage anyway.
|
|
18
|
+
|
|
19
|
+
This file is the durable record of that classification, per issue #2007's
|
|
20
|
+
acceptance criterion ("every roster agent classified ... with the
|
|
21
|
+
classification recorded"). The roster itself is
|
|
22
|
+
[`agent-registry.md`](agent-registry.md)'s Review Agents table — this file
|
|
23
|
+
classifies it, it does not duplicate the roster.
|
|
24
|
+
|
|
25
|
+
**Scope note.** This is a classification, not a routing decision. No entry
|
|
26
|
+
here tiers down, removes, or reweights any agent — see #2007's own scope
|
|
27
|
+
("Coordinate with #1980 and #1982 ... you're building the classification
|
|
28
|
+
and attempting the recomputation, not acting on either yet").
|
|
29
|
+
|
|
30
|
+
## Classification
|
|
31
|
+
|
|
32
|
+
| Agent | Class | Rationale |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| a11y-review | discovery-lens | Scans WCAG/ARIA/keyboard-nav for an open set of possible violations — no single fixed contract to confirm against. |
|
|
35
|
+
| ai-provenance-review | discovery-lens | Surfaces unverified AI-authored assertions and regeneration-risk candidates — an open detection surface. |
|
|
36
|
+
| arch-review | discovery-lens | Scans layer boundaries, dependency direction, and pattern consistency broadly; its ADR-compliance sub-check is verification-flavored, but the majority of its surface is open-ended discovery. |
|
|
37
|
+
| claude-setup-review | discovery-lens | Scans for an open set of CLAUDE.md/rule/path gaps, not one pass/fail check. |
|
|
38
|
+
| component-architecture-review | discovery-lens | Scans for reusable-component extraction, duplication, and prop-drilling — open-ended. |
|
|
39
|
+
| concurrency-review | discovery-lens | Scans for race conditions, async pitfalls, shared state — open-ended. |
|
|
40
|
+
| correctness-review | discovery-lens | Named explicitly as discovery in `skills/code-review/SKILL.md` ("an inverted assertion is exactly its subject"). |
|
|
41
|
+
| data-flow-tracer | discovery-lens (analysis-only) | Surfaces data-flow traces with no pass/fail verdict — `$/finding` needs adapting to "value per trace surfaced," but it is a discovery tool, not a gate. |
|
|
42
|
+
| doc-review | discovery-lens | Scans README/API-doc/ADR drift across an open set of possible staleness. |
|
|
43
|
+
| domain-review | discovery-lens | Scans domain-boundary and abstraction-leak violations — open-ended. |
|
|
44
|
+
| js-fp-review | discovery-lens | Scans array-mutation and impure-pattern violations — open-ended. |
|
|
45
|
+
| mutation-kill | **not applicable** | Explicitly documented in `agent-registry.md` as "Not a reviewer" — an autonomous survivor-reduction loop, not a panel lens. Neither `$/finding` nor escape rate applies; excluded from this classification rather than force-fit. |
|
|
46
|
+
| naming-review | discovery-lens | Scans naming-convention and magic-value violations — open-ended. |
|
|
47
|
+
| performance-review | discovery-lens | Scans resource leaks, N+1 queries, unbounded growth — open-ended. |
|
|
48
|
+
| progress-guardian | verification-gate | Checks plan adherence and commit discipline against one fixed contract (the plan itself) — `docs/team-structure.md` names it "a process gate-keeper, not a code reviewer," not part of the standard review-dispatch fan-out. |
|
|
49
|
+
| quality-reviewer | verification-gate (coordinator caveat) | Coordinates the Inline Review Checkpoint's fix loop to convergence rather than producing its own domain findings — its meaningful measure is "did the checkpoint converge," closer to a gate's pass/fail than a lens's per-finding cost. |
|
|
50
|
+
| refactor-opportunity-review | discovery-lens | Scans for post-GREEN refactoring opportunities — open-ended. |
|
|
51
|
+
| security-review | discovery-lens | Named explicitly as a discovery lens in `skills/code-review/SKILL.md`, and explicitly excluded from the test-only-diff skip candidates precisely because it finds real issues (credentials, injection payloads) across every diff shape. |
|
|
52
|
+
| session-analysis | discovery-lens (analysis-only) | Surfaces ranked improvement suggestions from a session digest — no pass/fail verdict, but an open discovery surface, not a fixed-contract check. |
|
|
53
|
+
| spec-compliance-review | **verification-gate** | The paradigm case named directly in #2007: confirms the implementation matches the spec. A gate that usually passes ("145 of 248 runs are pure pass") is doing its job — `$/finding` prices that silence as waste, which is the wrong metric for this class. |
|
|
54
|
+
| spec-reviewer | verification-gate | Same family as `spec-compliance-review`, narrower — spec-to-diff matching for a single freshly-implemented unit (Stage 1 of the three-stage inline review). |
|
|
55
|
+
| structure-review | discovery-lens | Scans SRP violations, DRY, coupling, file organization, nesting depth, cognitive load, and async-pattern pitfalls (folds `complexity-review`, retired #2093) — open-ended. |
|
|
56
|
+
| angular-reactivity-review | discovery-lens | Scans Zone.js change-detection pitfalls, OnPush/immutability violations, RxJS leaks — open-ended. |
|
|
57
|
+
| react-reactivity-review | discovery-lens | Scans hook-rule violations, stale closures, missing dependency arrays, subscription leaks — open-ended. |
|
|
58
|
+
| vue-reactivity-review | discovery-lens | Scans ref/reactive unwrapping pitfalls and watchEffect dependency tracking — open-ended. |
|
|
59
|
+
| test-review | discovery-lens | Scans coverage gaps, assertion quality, test hygiene — open-ended. |
|
|
60
|
+
| test-smell-review | discovery-lens | Scans xUnit test smells, test-double selection, test-pyramid placement — open-ended. |
|
|
61
|
+
| token-efficiency-review | discovery-lens | Scans file/function size and LLM anti-patterns for token cost — open-ended. |
|
|
62
|
+
|
|
63
|
+
**Tally:** 24 discovery-lens (2 of them analysis-only, noted), 4
|
|
64
|
+
verification-gate, 1 not-applicable — 29 agents total, matching
|
|
65
|
+
`agent-registry.md`'s Review Agents table row count exactly.
|
|
66
|
+
|
|
67
|
+
## Applying the two metrics
|
|
68
|
+
|
|
69
|
+
- **Discovery lenses**: `$/finding` from `metrics/review-value.jsonl` (per
|
|
70
|
+
`skills/harness-audit/SKILL.md` Step 4) remains the right cost signal.
|
|
71
|
+
Tier-down/removal candidates are agents with a consistently high
|
|
72
|
+
`$/finding` **and** a low finding-rate, per that step's existing
|
|
73
|
+
drop-candidate logic.
|
|
74
|
+
- **Verification gates** (`spec-compliance-review`, `spec-reviewer`,
|
|
75
|
+
`progress-guardian`): the meaningful measure is **escape rate** — how
|
|
76
|
+
often a defect the gate should have caught was instead caught later (a
|
|
77
|
+
subsequent review round, a production incident, a later gate). No
|
|
78
|
+
instrumentation for escape rate exists yet; this is a gap this
|
|
79
|
+
classification surfaces, not one it closes. A future slice would need a
|
|
80
|
+
way to trace "the gate passed, but the defect it should have caught
|
|
81
|
+
surfaced anyway" — out of scope for #2007 itself.
|
|
82
|
+
|
|
83
|
+
## `$/finding` recomputation attempt (#2007, post-#1998)
|
|
84
|
+
|
|
85
|
+
#1998 (the 18.2% silent-drop fix) has merged, so recomputation is no longer
|
|
86
|
+
blocked on principle. Attempted here against whatever data this checkout
|
|
87
|
+
actually has:
|
|
88
|
+
|
|
89
|
+
- `.claude/metrics/review-value.jsonl` — **absent**. No `/build`/`/code-review`
|
|
90
|
+
review rounds have been logged in this checkout.
|
|
91
|
+
- `.claude/metrics/contract-failures.jsonl` (#1998's own instrumentation,
|
|
92
|
+
the repaired denominator `$/finding` needs) — **absent**. No JSON-contract
|
|
93
|
+
failures have been logged either.
|
|
94
|
+
- `.claude/metrics/boundary-events.jsonl` — present, but 17 lines, all
|
|
95
|
+
`hook: "pre-commit-gate"` records from this session's own git commits (the
|
|
96
|
+
#2051/#1983 work above). Zero `dispatch-evidence-*`/`agent_dispatch_ledger`
|
|
97
|
+
records for any review agent.
|
|
98
|
+
|
|
99
|
+
**Verdict: no recomputation is possible from this checkout's data — not "a
|
|
100
|
+
thin sample," an empty one.** `.claude/metrics/` is deny-by-default
|
|
101
|
+
gitignored (`**/metrics/*`, with an explicit allowlist for a handful of
|
|
102
|
+
files that does not include `review-value.jsonl` or
|
|
103
|
+
`contract-failures.jsonl`), so a fresh checkout or worktree starts with
|
|
104
|
+
none of this history regardless of what a maintainer's long-running local
|
|
105
|
+
clone has accumulated. Per the epic's evidence-first constraint and #2007's
|
|
106
|
+
own instruction ("say so explicitly rather than presenting a thin number as
|
|
107
|
+
authoritative"), no `$/finding` figure is reported here. The next
|
|
108
|
+
recomputation attempt needs to run from a checkout that has actually
|
|
109
|
+
accumulated post-#1998 `/code-review`/`/build` sessions — most likely a
|
|
110
|
+
maintainer's own long-running local clone, not a fresh worktree — and
|
|
111
|
+
should re-run `skills/harness-audit/SKILL.md` Step 4 (which already gates
|
|
112
|
+
on `review_value_coverage.py`'s sample-validity verdict) rather than
|
|
113
|
+
re-deriving the query here.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Code Review Scoring Rubric
|
|
2
|
+
|
|
3
|
+
The orchestrator reads this file during Step 5 to compute the overall
|
|
4
|
+
health score from individual agent results.
|
|
5
|
+
|
|
6
|
+
## The review-agent panel is the primary quality gate
|
|
7
|
+
|
|
8
|
+
The review-agent panel is the primary quality gate for structural quality
|
|
9
|
+
(Rec 5, `docs/experiments/RECOMMENDATIONS.md`). Coverage, mutation score, and
|
|
10
|
+
the informational Farley Score are **saturating metrics**: every workflow
|
|
11
|
+
shape drives them to near-identical values, so they cannot rank structural
|
|
12
|
+
quality and must never gate or rank workflows. A higher mutation score must
|
|
13
|
+
never be treated as evidence that a costlier workflow — or the code it
|
|
14
|
+
produced — is better; in the experiment line the losing arms posted the
|
|
15
|
+
higher mutation scores. Score health from the agent verdicts below, nothing
|
|
16
|
+
else.
|
|
17
|
+
|
|
18
|
+
## Health Score Calculation
|
|
19
|
+
|
|
20
|
+
Collect the status from each agent: `pass`, `warn`, `fail`, `skip`.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
🟢 HEALTHY = 0 fail AND ≤2 warn
|
|
24
|
+
🟠 NEEDS ATTENTION = 1-2 fail OR 3+ warn
|
|
25
|
+
🔴 CRITICAL = 3+ fail OR any security-review fail
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Agents that returned `skip` are excluded from scoring.
|
|
29
|
+
|
|
30
|
+
## Category Weights
|
|
31
|
+
|
|
32
|
+
Not all agent failures carry equal weight. Security and domain
|
|
33
|
+
integrity failures escalate faster than style or naming issues.
|
|
34
|
+
|
|
35
|
+
| Category | Agents | Escalation |
|
|
36
|
+
|----------|--------|------------|
|
|
37
|
+
| Security | security-review | Any fail → 🔴 overall |
|
|
38
|
+
| Architecture | arch-review, domain-review | 2+ fail → 🔴 overall |
|
|
39
|
+
| Correctness | test-review, concurrency-review | Normal scoring |
|
|
40
|
+
| Quality | structure-review, js-fp-review, naming-review | Normal scoring |
|
|
41
|
+
| Accessibility | a11y-review | Normal scoring |
|
|
42
|
+
| Ops | doc-review, performance-review | Normal scoring |
|
|
43
|
+
|
|
44
|
+
This table is not exhaustive — an agent absent from every row above (e.g. `correctness-review`, `spec-compliance-review`, `component-architecture-review`) still scores under the general pass/warn/fail rule, it just carries no category escalation. `claude-setup-review`, `token-efficiency-review`, and `ai-provenance-review` are the specific case worth calling out: none are dispatched by `/code-review`'s panel at all (#1733) — `claude-setup-review` runs on demand via the `/claude-setup-review` command, and all three run unconditionally in the whole-tree `/repo-review` skill (#1735) — so none ever contributes to a code-review verdict, in any row or under the general rule.
|
|
45
|
+
|
|
46
|
+
## Issue Severity Mapping
|
|
47
|
+
|
|
48
|
+
Agent issues map to the report as follows:
|
|
49
|
+
|
|
50
|
+
| Agent severity | Report display | Correction prompt priority |
|
|
51
|
+
|----------------|---------------|---------------------------|
|
|
52
|
+
| error | 🔴 error | high |
|
|
53
|
+
| warning | 🟠 warning | medium |
|
|
54
|
+
| suggestion | 💡 suggestion | low |
|
|
55
|
+
|
|
56
|
+
## Confidence and Actionability
|
|
57
|
+
|
|
58
|
+
| Confidence | Meaning | Auto-fixable |
|
|
59
|
+
|------------|---------|--------------|
|
|
60
|
+
| high | Mechanical fix, single correct answer | Yes |
|
|
61
|
+
| medium | Direction clear, implementation varies | Yes (with review) |
|
|
62
|
+
| none | Requires human judgment | No — report only |
|