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,115 @@
|
|
|
1
|
+
# Feature File Validation — Detailed Rules
|
|
2
|
+
|
|
3
|
+
## Gherkin Syntax Checks
|
|
4
|
+
|
|
5
|
+
- Every scenario has at least one `Given`, one `When`, and one `Then` step
|
|
6
|
+
- `Background` sections contain only `Given` steps (setup, not actions)
|
|
7
|
+
- `Scenario Outline` uses `Examples` tables with at least one row
|
|
8
|
+
- No orphan steps outside a `Scenario`, `Scenario Outline`, or `Background`
|
|
9
|
+
- Feature has a descriptive name (not blank or generic like "Test" or "Feature 1")
|
|
10
|
+
|
|
11
|
+
## Determinism Patterns
|
|
12
|
+
|
|
13
|
+
Scenarios must produce the same result every time, regardless of when, where,
|
|
14
|
+
or in what order they run. Flag these patterns:
|
|
15
|
+
|
|
16
|
+
- **Time-dependent steps** — references to "today", "now", "current date",
|
|
17
|
+
"within 5 seconds", clock-based assertions. Deterministic alternative: use
|
|
18
|
+
fixed dates ("Given the date is 2024-03-15") or relative descriptions
|
|
19
|
+
("Given a date 30 days in the past").
|
|
20
|
+
- **Order-dependent scenarios** — steps that assume prior scenario state
|
|
21
|
+
("Given the user created in the previous test"). Each scenario must be
|
|
22
|
+
independently runnable.
|
|
23
|
+
- **Environment-dependent steps** — references to specific servers, ports,
|
|
24
|
+
file paths, or environment variables without parameterization.
|
|
25
|
+
- **Random or probabilistic assertions** — "should sometimes", "approximately",
|
|
26
|
+
"within a range" without fixed boundaries.
|
|
27
|
+
- **Concurrency assumptions** — "when two users simultaneously", "while the
|
|
28
|
+
batch job is running" without controlled synchronization described in the
|
|
29
|
+
scenario.
|
|
30
|
+
|
|
31
|
+
## Implementation Independence Patterns
|
|
32
|
+
|
|
33
|
+
Scenarios describe *what* the system does, not *how* it does it. Flag:
|
|
34
|
+
|
|
35
|
+
- **Technology references** — database names (PostgreSQL, MongoDB), framework
|
|
36
|
+
names (React, Spring), protocols (REST, gRPC), or infrastructure (Redis,
|
|
37
|
+
Kafka) in step text. These belong in step definitions, not scenarios.
|
|
38
|
+
- **Code-level details** — class names, method names, variable names, SQL
|
|
39
|
+
statements, API paths (`/api/v1/users`), HTTP methods, or status codes in
|
|
40
|
+
step text.
|
|
41
|
+
- **UI implementation details** — CSS selectors, element IDs, pixel
|
|
42
|
+
coordinates, or specific UI framework components. Acceptable: "the user
|
|
43
|
+
clicks the submit button." Not acceptable: "the user clicks `#btn-submit`."
|
|
44
|
+
- **Performance/timing constraints** — "completes in under 200ms", "returns
|
|
45
|
+
within 5 seconds". These are non-functional requirements that belong in
|
|
46
|
+
separate performance test specs, not behavioral scenarios.
|
|
47
|
+
- **Data structure specifics** — JSON schemas, XML structures, column names,
|
|
48
|
+
or internal data formats exposed in step text.
|
|
49
|
+
|
|
50
|
+
## Scenario Quality Checks
|
|
51
|
+
|
|
52
|
+
- **Single behavior per scenario** — flag scenarios with more than one `When`
|
|
53
|
+
step (unless using `And` to describe a multi-part action that is logically
|
|
54
|
+
one behavior).
|
|
55
|
+
- **Vague assertions** — `Then it works`, `Then the operation succeeds`,
|
|
56
|
+
`Then no errors occur`. Assertions should describe observable outcomes.
|
|
57
|
+
- **Missing negative cases** — if a feature only has happy-path scenarios,
|
|
58
|
+
suggest adding error/edge case scenarios (as a suggestion, not an error).
|
|
59
|
+
|
|
60
|
+
## Framework Detection — Step Definition Location Patterns
|
|
61
|
+
|
|
62
|
+
| Framework | Step definition location patterns |
|
|
63
|
+
|-----------|----------------------------------|
|
|
64
|
+
| Cucumber.js | `**/*.steps.{js,ts}`, `**/step_definitions/**/*.{js,ts}`, `**/steps/**/*.{js,ts}` |
|
|
65
|
+
| pytest-bdd | `**/conftest.py`, `**/test_*.py`, `**/*_test.py` containing `@given`, `@when`, `@then` |
|
|
66
|
+
| SpecFlow (C#) | `**/*Steps.cs`, `**/*StepDefinitions.cs`, `**/Steps/**/*.cs` |
|
|
67
|
+
| Cucumber (Java) | `**/*Steps.java`, `**/*StepDefs.java`, `**/steps/**/*.java` containing `@Given`, `@When`, `@Then` |
|
|
68
|
+
| Cucumber (Ruby) | `**/step_definitions/**/*.rb` |
|
|
69
|
+
| Behave (Python) | `**/steps/**/*.py`, `**/environment.py` |
|
|
70
|
+
| Karate | `**/*.feature` files are self-contained (Karate tests are feature files) |
|
|
71
|
+
| Go (godog) | `**/*_test.go` containing `godog.Step` or `ScenarioInitializer` |
|
|
72
|
+
|
|
73
|
+
## Coverage Strategies
|
|
74
|
+
|
|
75
|
+
### Strategy A: Step Definition Matching
|
|
76
|
+
|
|
77
|
+
For each `Given`/`When`/`Then` step in the scenario, search for a step
|
|
78
|
+
definition whose regex or string pattern matches the step text. A scenario is
|
|
79
|
+
covered when all its steps have matching definitions. Use the framework
|
|
80
|
+
detection table above to locate step definition files.
|
|
81
|
+
|
|
82
|
+
### Strategy B: Test File Naming Convention
|
|
83
|
+
|
|
84
|
+
Look for test files whose name corresponds to the feature file:
|
|
85
|
+
|
|
86
|
+
- `login.feature` -> `login.test.ts`, `login.spec.js`, `test_login.py`,
|
|
87
|
+
`LoginTest.java`, `LoginTests.cs`, `login_test.go`
|
|
88
|
+
- Check both the same directory and common test directory patterns
|
|
89
|
+
(`test/`, `tests/`, `spec/`, `__tests__/`, `src/test/`)
|
|
90
|
+
|
|
91
|
+
A scenario is covered if the corresponding test file exists AND contains a
|
|
92
|
+
test or describe block that references the scenario name or a close
|
|
93
|
+
paraphrase.
|
|
94
|
+
|
|
95
|
+
## Severity Mapping
|
|
96
|
+
|
|
97
|
+
| Category | Severity | Rationale |
|
|
98
|
+
|----------|----------|-----------|
|
|
99
|
+
| Missing step definitions for all steps | error | Scenario is untested — a broken promise |
|
|
100
|
+
| Non-deterministic scenario | error | Produces flaky tests that erode trust |
|
|
101
|
+
| Implementation-coupled steps | warning | Makes scenarios brittle to refactoring |
|
|
102
|
+
| Missing Given/When/Then structure | warning | Likely incomplete scenario |
|
|
103
|
+
| Vague assertions | warning | Weak regression protection |
|
|
104
|
+
| Missing negative scenarios | suggestion | Improved coverage opportunity |
|
|
105
|
+
| Partial step coverage | warning | Some steps untested |
|
|
106
|
+
|
|
107
|
+
## Confidence Mapping
|
|
108
|
+
|
|
109
|
+
| Pattern | Confidence |
|
|
110
|
+
|---------|-----------|
|
|
111
|
+
| Step text contains `Date.now`, SQL, or class names | high |
|
|
112
|
+
| Step references "today" or "current time" | high |
|
|
113
|
+
| No step definition file found anywhere in project | high |
|
|
114
|
+
| Step text mentions a technology by name | medium |
|
|
115
|
+
| Scenario has only happy paths | none (subjective) |
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feedback-learning
|
|
3
|
+
description: Capture amend/learn/remember/forget keywords from the user and update agent or skill configurations. Invoke immediately when the user issues any of these trigger words — parse the change, preview a diff, apply it, and log it to the audit trail.
|
|
4
|
+
role: orchestrator
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Feedback & Learning
|
|
9
|
+
|
|
10
|
+
Procedure for capturing user feedback, updating configurations dynamically, and maintaining an audit trail of all changes.
|
|
11
|
+
|
|
12
|
+
## Trigger Keywords
|
|
13
|
+
|
|
14
|
+
| Keyword | Intent | Example |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| **amend** | Modify existing behavior | `amend: the software engineer should prefer functional patterns` |
|
|
17
|
+
| **learn** | Teach something new | `learn: our API uses kebab-case URLs` |
|
|
18
|
+
| **remember** | Persist a preference across sessions | `remember: always run tests before completing tasks` |
|
|
19
|
+
| **forget** | Remove a previous preference | `forget: the kebab-case URL convention` |
|
|
20
|
+
|
|
21
|
+
All four follow the same processing flow. The distinction is semantic (helping the user express intent), not mechanical.
|
|
22
|
+
|
|
23
|
+
## Where Changes Are Written
|
|
24
|
+
|
|
25
|
+
The plugin ships as a read-only cache — agent and skill files inside the plugin cannot be edited. Instead, feedback is persisted to **project-local files** that the user controls and that Claude Code loads automatically.
|
|
26
|
+
|
|
27
|
+
### Resolution order
|
|
28
|
+
|
|
29
|
+
When processing a feedback keyword, determine the right destination:
|
|
30
|
+
|
|
31
|
+
| Change type | Write to | Why |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| Project convention or preference | **Project `CLAUDE.md`** (`.claude/CLAUDE.md` or repo-root `CLAUDE.md`) | Loaded every session, applies to all agents |
|
|
34
|
+
| Review context (domain knowledge, known issues, team norms) | **`REVIEW-CONTEXT.md`** in project root | Read by `/code-review` and passed to every review agent |
|
|
35
|
+
| Agent behavior override for this project | **Project `CLAUDE.md`** under a `## Agent Overrides` section | Overrides plugin defaults without editing plugin files |
|
|
36
|
+
| Cross-session memory (decisions, project state) | **`.claude/memory/`** files | Persists across context resets |
|
|
37
|
+
| Rollback a previous change | Reverse the edit in whichever file it was written to | Logged as `type: "rollback"` |
|
|
38
|
+
|
|
39
|
+
### What NOT to do
|
|
40
|
+
|
|
41
|
+
- Do not edit files inside the plugin cache (`~/.claude/plugins/cache/...`). Changes there are overwritten on plugin updates.
|
|
42
|
+
- Do not create new agent or skill files in the project. Instead, add override instructions to project `CLAUDE.md`.
|
|
43
|
+
|
|
44
|
+
### Project CLAUDE.md structure for overrides
|
|
45
|
+
|
|
46
|
+
When writing agent behavior overrides, add them under a dedicated section so they're easy to find and manage:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
## Agent Overrides
|
|
50
|
+
|
|
51
|
+
### Software Engineer
|
|
52
|
+
- Prefer functional programming patterns over OOP
|
|
53
|
+
- Always use `const` over `let` in JavaScript
|
|
54
|
+
|
|
55
|
+
### Architect
|
|
56
|
+
- Default to event-driven architecture for new services
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
These instructions are loaded into every session and take precedence over the plugin's built-in agent definitions because project `CLAUDE.md` is processed after plugin files.
|
|
60
|
+
|
|
61
|
+
## Processing Flow
|
|
62
|
+
|
|
63
|
+
1. **Parse**: Identify the trigger keyword and extract the change request
|
|
64
|
+
2. **Classify**: Determine change type using the resolution table above
|
|
65
|
+
3. **Preview**: Show the user the proposed edit as a diff before applying
|
|
66
|
+
4. **Apply**: Write the change to the target file
|
|
67
|
+
5. **Evaluate**: Eval-gate the change if it touches a fixtured review agent (see below)
|
|
68
|
+
6. **Log**: Record the change in the audit trail
|
|
69
|
+
7. **Verify**: Read back the modified section to confirm correctness
|
|
70
|
+
|
|
71
|
+
### Approval rules
|
|
72
|
+
|
|
73
|
+
- Preference and convention changes: apply after diff preview
|
|
74
|
+
- New sections or structural edits to CLAUDE.md: require explicit approval
|
|
75
|
+
- Rollbacks: apply after confirming which change to reverse
|
|
76
|
+
|
|
77
|
+
## Evaluate — the eval gate (#860)
|
|
78
|
+
|
|
79
|
+
A change that mutates a review agent's effective behavior — a direct edit to
|
|
80
|
+
`plugins/dev-team/agents/*.md` (when developing this repo) or a project-side
|
|
81
|
+
`CLAUDE.md > Agent Overrides > <agent>` / `REVIEW-CONTEXT.md` entry — is a
|
|
82
|
+
harness edit, not a preference tweak. The paper this closes a gap against
|
|
83
|
+
(*Code as Agent Harness*, §3.5.2–3.5.3) warns that a self-improving loop
|
|
84
|
+
optimizing against "the diff looked reasonable" is optimizing against a weak
|
|
85
|
+
verifier and can learn the wrong thing. `/agent-eval --agent <name>` is the
|
|
86
|
+
falsifier; this step wires it into the mutation path.
|
|
87
|
+
|
|
88
|
+
This gate sits between **Apply** and **Log**. It never blocks the edit
|
|
89
|
+
itself — the file is already written by the time this step runs. What it
|
|
90
|
+
gates is **adoption**: whether the changelog entry for this change can reach
|
|
91
|
+
`adoption_status: "adopted"`.
|
|
92
|
+
|
|
93
|
+
### 1. Determine whether the change is gated
|
|
94
|
+
|
|
95
|
+
Scan `evals/expected/*.json` for `applicableAgents` arrays. If the changed
|
|
96
|
+
agent's name (the `component` field — see Audit Trail below) appears in any
|
|
97
|
+
of them, the change is **gated**. Two graceful-degradation cases, neither of
|
|
98
|
+
which blocks:
|
|
99
|
+
|
|
100
|
+
- **No `evals/` directory at all** (the normal cache-only plugin-install
|
|
101
|
+
case — most users have the plugin as a read-only cache with no `evals/`
|
|
102
|
+
shipped). Write `eval_verdict: "not-applicable"` and tell the operator:
|
|
103
|
+
"This install has no `evals/` directory — eval-gating requires the plugin
|
|
104
|
+
repo. Run `/agent-eval --agent <name>` from a clone of
|
|
105
|
+
`bdfinst/agentic-dev-team` if you want a falsifier for this change."
|
|
106
|
+
- **`evals/` exists but the agent has no fixtures.** Write
|
|
107
|
+
`eval_verdict: "not-applicable"` and name the fixture gap in both the
|
|
108
|
+
changelog entry and the chat reply (never silent — this is the
|
|
109
|
+
documented fallback, not an error).
|
|
110
|
+
|
|
111
|
+
If ungated (the change doesn't touch a review agent, or touches one with no
|
|
112
|
+
fixtures), skip straight to **Log** with `adoption_status: "adopted"` (or
|
|
113
|
+
`not-applicable`'s equivalent — see schema below) — no eval run, no cost.
|
|
114
|
+
|
|
115
|
+
### 2. Get the pre-score
|
|
116
|
+
|
|
117
|
+
Read `evals/baseline.json`, filtered to pairs whose agent is the touched
|
|
118
|
+
one. If baseline entries exist for this agent, that is `eval_pre` —
|
|
119
|
+
`{"passed": <n>, "total": <n>, "source": "baseline"}` — no live run, no
|
|
120
|
+
cost. Only when the agent has **zero** baseline entries, dispatch a fresh
|
|
121
|
+
`/agent-eval --agent <name>` first to establish `eval_pre` (`source` becomes
|
|
122
|
+
the resulting transcript path instead of `"baseline"`).
|
|
123
|
+
|
|
124
|
+
### 3. Pause for approval, then dispatch the targeted eval
|
|
125
|
+
|
|
126
|
+
Before dispatching *any* live `/agent-eval` run (pre-run or post-run), show
|
|
127
|
+
the operator the cost estimate and wait for approval — consistent with the
|
|
128
|
+
opt-in live-eval posture (#134). Once approved, dispatch:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
/agent-eval --agent <name>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Always targeted, always cache-on. **Never** dispatch the full unfiltered
|
|
135
|
+
`/agent-eval` suite from this gate — that is a distinct, much more expensive
|
|
136
|
+
operation the operator runs deliberately, not something a single config
|
|
137
|
+
mutation should trigger.
|
|
138
|
+
|
|
139
|
+
Write the changelog entry with `adoption_status: "pending-eval"` *before*
|
|
140
|
+
this run starts (see schema below), then finalize it once the run completes.
|
|
141
|
+
|
|
142
|
+
### 4. Compare and decide adoption
|
|
143
|
+
|
|
144
|
+
| `eval_post` vs `eval_pre` | `eval_verdict` | Default `adoption_status` |
|
|
145
|
+
| --- | --- | --- |
|
|
146
|
+
| Post ≥ pre, no new pair regresses | `improved` or `unchanged` | `adopted` |
|
|
147
|
+
| Post < pre (any pair that was passing now fails) | `regressed` | `rejected` or `rolled-back` |
|
|
148
|
+
|
|
149
|
+
**Regression is always a human decision, never an automatic rollback.** The
|
|
150
|
+
default proposal to the human is `rejected`/`rolled-back`; the human may
|
|
151
|
+
instead choose `overridden`, which requires a non-empty
|
|
152
|
+
`override_rationale` (who decided, and why the regression is acceptable).
|
|
153
|
+
Auto-rollback never fires without that logged human choice — this matches
|
|
154
|
+
the plugin's Human-in-the-Loop principle and `/harness-audit`'s
|
|
155
|
+
"do not auto-edit" posture.
|
|
156
|
+
|
|
157
|
+
## Audit Trail
|
|
158
|
+
|
|
159
|
+
All changes are logged in `.claude/metrics/config-changelog.jsonl` (one JSON object per line, append-only).
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"timestamp": "2026-02-20T14:30:00Z",
|
|
164
|
+
"type": "amend",
|
|
165
|
+
"trigger": "user",
|
|
166
|
+
"description": "Updated software engineer to prefer functional patterns",
|
|
167
|
+
"file_modified": "CLAUDE.md",
|
|
168
|
+
"section_modified": "Agent Overrides > Software Engineer",
|
|
169
|
+
"previous_value": "",
|
|
170
|
+
"new_value": "- Prefer functional programming patterns over OOP",
|
|
171
|
+
"approved_by": "user",
|
|
172
|
+
"evidence": {
|
|
173
|
+
"metrics": ["rework"],
|
|
174
|
+
"direction": "decrease",
|
|
175
|
+
"window_sessions": 10
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
| Field | Required | Description |
|
|
181
|
+
| --- | --- | --- |
|
|
182
|
+
| `timestamp` | Yes | ISO 8601 |
|
|
183
|
+
| `type` | Yes | `amend`, `learn`, `remember`, `forget`, `rollback`, `validation` |
|
|
184
|
+
| `trigger` | Yes | `user` or `system` (learning loop) |
|
|
185
|
+
| `description` | Yes | Human-readable summary |
|
|
186
|
+
| `file_modified` | Yes | Path of the file changed |
|
|
187
|
+
| `section_modified` | Yes | Which section within the file |
|
|
188
|
+
| `previous_value` | Yes | Content before (empty string if new) |
|
|
189
|
+
| `new_value` | Yes | Content after (empty string if removed) |
|
|
190
|
+
| `approved_by` | Yes | `user` or `auto` |
|
|
191
|
+
| `evidence` | Yes on `amend`/`learn`/`remember` entries (#866) | Either a structured object or the literal string `"unmeasurable"` — see below. Never silently absent. |
|
|
192
|
+
|
|
193
|
+
### The `evidence` field (validated-outcome weighting, #866)
|
|
194
|
+
|
|
195
|
+
Every new `amend`/`learn`/`remember` entry names how its own effect can be
|
|
196
|
+
checked, so `/harness-audit` can later close the loop instead of letting
|
|
197
|
+
lessons accumulate on the strength of the approval that admitted them alone.
|
|
198
|
+
|
|
199
|
+
**Structured case** — the lesson is expected to move a metric in
|
|
200
|
+
`metrics/session-digest.jsonl`:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
"evidence": {
|
|
204
|
+
"metrics": ["rework"],
|
|
205
|
+
"direction": "decrease",
|
|
206
|
+
"window_sessions": 10
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
- `metrics`: one or more metric names resolvable in a `session-digest.jsonl`
|
|
211
|
+
record (e.g. `rework`, `accuracy`, `cost_usd`, or a dotted path such as
|
|
212
|
+
`rework.failed_edits`).
|
|
213
|
+
- `direction`: `"increase"` or `"decrease"` — which way the metric should move
|
|
214
|
+
if the lesson helped.
|
|
215
|
+
- `window_sessions`: integer N — how many digest records after adoption to
|
|
216
|
+
observe before judging. **Default: 10** (mirrors `/harness-audit`'s existing
|
|
217
|
+
"minimum 10 logged review runs" floor).
|
|
218
|
+
|
|
219
|
+
**Unmeasurable case** — when no digest metric can plausibly reflect the
|
|
220
|
+
lesson's effect (most prose `.claude/memory/` notes land here), write the literal
|
|
221
|
+
string instead of an object:
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
"evidence": "unmeasurable"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Default when the author names no metric**: `evidence: rework` with
|
|
228
|
+
`direction: "decrease"` and `window_sessions: 10` — most lessons aim to
|
|
229
|
+
reduce rework, so this is the default rather than refusing to log the
|
|
230
|
+
lesson. Authors can still explicitly set a different metric, direction, or
|
|
231
|
+
`"unmeasurable"`.
|
|
232
|
+
|
|
233
|
+
**Prose lessons (`.claude/memory/` notes) are in scope.** The `evidence` field
|
|
234
|
+
attaches at this changelog layer regardless of which resolution-order
|
|
235
|
+
destination the lesson was written to; a memory-note lesson typically carries
|
|
236
|
+
`"unmeasurable"`. Anything not logged to `.claude/metrics/config-changelog.jsonl`
|
|
237
|
+
is out of scope by construction.
|
|
238
|
+
|
|
239
|
+
**Legacy entries** (written before this field existed) have no `evidence`
|
|
240
|
+
key at all. `/harness-audit` surfaces them as a count — it never assigns
|
|
241
|
+
them a verdict or proposes a rollback on evidence grounds.
|
|
242
|
+
|
|
243
|
+
### Validation verdicts and rollback proposals (#866)
|
|
244
|
+
|
|
245
|
+
`/harness-audit` reads this changelog and appends new `type: "validation"`
|
|
246
|
+
entries recording a verdict (`validated` / `neutral` / `harmful` / `insufficient
|
|
247
|
+
data`) for every matured, structured-evidence lesson — see
|
|
248
|
+
[harness-audit](../harness-audit/SKILL.md) → Lesson Validation. These
|
|
249
|
+
verdict entries are **new appended lines**, never edits to the original
|
|
250
|
+
entry; the changelog stays append-only.
|
|
251
|
+
|
|
252
|
+
A `harmful` verdict produces a **rollback proposal** in the harness-audit
|
|
253
|
+
report (never an automatic rollback). To action one:
|
|
254
|
+
|
|
255
|
+
1. Locate the original entry by the proposal's `references_timestamp`.
|
|
256
|
+
2. Follow the existing [Rollback](#rollback) procedure below using that
|
|
257
|
+
entry's `file_modified` / `section_modified` / `previous_value`.
|
|
258
|
+
3. Log the rollback as usual — a new `type: "rollback"` entry.
|
|
259
|
+
|
|
260
|
+
A human always decides whether to apply a harmful-verdict rollback; the
|
|
261
|
+
validation pass only ever proposes.
|
|
262
|
+
|
|
263
|
+
### Change-contract schema extension (#860)
|
|
264
|
+
|
|
265
|
+
The nine fields below are **required only for entries that gate through
|
|
266
|
+
Evaluate above** — i.e. `component` names a review agent that has eval
|
|
267
|
+
fixtures. Older entries and entries for ungated changes remain valid as-is;
|
|
268
|
+
this is a backward-compatible, append-only extension, never a retroactive
|
|
269
|
+
rewrite of prior lines. A reference validator lives at
|
|
270
|
+
`plugins/dev-team/hooks/lib/config_changelog_schema.py`
|
|
271
|
+
(`validate_entry(entry, fixtured_agents)`).
|
|
272
|
+
|
|
273
|
+
| Field | Required (gated only) | Type | Meaning |
|
|
274
|
+
| --- | --- | --- | --- |
|
|
275
|
+
| `component` | Yes | string | Artifact whose behavior changes (e.g. `agents/security-review.md` or `CLAUDE.md > Agent Overrides > security-review`) |
|
|
276
|
+
| `failure_mode_targeted` | Yes | string | The observed failure the change intends to fix |
|
|
277
|
+
| `predicted_improvement` | Yes | string | Falsifiable prediction (e.g. "sec-xss-vulnerable stops flapping; no other pair regresses") |
|
|
278
|
+
| `eval_pre` | Yes | object | `{passed, total, source}` — `source` is `"baseline"` (`evals/baseline.json`) or a transcript path |
|
|
279
|
+
| `eval_post` | Yes | object | `{passed, total, transcript}` — transcript under `.claude/evals/transcripts/` |
|
|
280
|
+
| `eval_verdict` | Yes | string | `improved` \| `unchanged` \| `regressed` \| `not-applicable` (no fixtures) |
|
|
281
|
+
| `adoption_status` | Yes | string | `pending-eval` \| `adopted` \| `rejected` \| `rolled-back` \| `overridden` |
|
|
282
|
+
| `override_rationale` | Iff `adoption_status: "overridden"` | string | Names the human and the reason the regression was accepted |
|
|
283
|
+
| `rollback_pointer` | Yes | string | How to undo: the entry's own `previous_value` + `file_modified`/`section_modified` (existing rollback mechanics), or a git ref for direct agent-file edits |
|
|
284
|
+
|
|
285
|
+
Example gated entry (written once, after the eval completes — the
|
|
286
|
+
`pending-eval` interim state is a separate appended line, not an in-place
|
|
287
|
+
mutation):
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"timestamp": "2026-07-06T00:00:00Z",
|
|
292
|
+
"type": "amend",
|
|
293
|
+
"trigger": "system",
|
|
294
|
+
"description": "Tightened XSS detection regex",
|
|
295
|
+
"file_modified": "agents/security-review.md",
|
|
296
|
+
"section_modified": "## Detect",
|
|
297
|
+
"previous_value": "old regex",
|
|
298
|
+
"new_value": "new regex",
|
|
299
|
+
"approved_by": "user",
|
|
300
|
+
"component": "agents/security-review.md",
|
|
301
|
+
"failure_mode_targeted": "sec-xss-vulnerable flapping",
|
|
302
|
+
"predicted_improvement": "sec-xss-vulnerable stops flapping; no other pair regresses",
|
|
303
|
+
"eval_pre": { "passed": 20, "total": 21, "source": "baseline" },
|
|
304
|
+
"eval_post": { "passed": 21, "total": 21, "transcript": ".claude/evals/transcripts/x.json" },
|
|
305
|
+
"eval_verdict": "improved",
|
|
306
|
+
"adoption_status": "adopted",
|
|
307
|
+
"rollback_pointer": "previous_value above"
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Rollback
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
amend: rollback the last change to CLAUDE.md
|
|
315
|
+
amend: rollback all changes from today
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
1. Read `.claude/metrics/config-changelog.jsonl` to find the entry — fall back
|
|
319
|
+
to the legacy `metrics/config-changelog.jsonl` if the new path doesn't
|
|
320
|
+
exist (a downstream user's history may still be at the old path):
|
|
321
|
+
`log=".claude/metrics/config-changelog.jsonl"; [ -f "$log" ] || log="metrics/config-changelog.jsonl"`
|
|
322
|
+
2. Restore `previous_value` to the target file and section
|
|
323
|
+
3. Log the rollback as a new entry with `type: "rollback"`
|
|
324
|
+
|
|
325
|
+
## Learning Loop
|
|
326
|
+
|
|
327
|
+
After task completion, the orchestrator captures learnings in two ways:
|
|
328
|
+
|
|
329
|
+
### Post-task reflection
|
|
330
|
+
|
|
331
|
+
After completing a feature or fixing a complex bug, review the git diff and any review feedback and ask: "What do I wish I'd known at the start?" Classify each insight:
|
|
332
|
+
|
|
333
|
+
| Category | Example |
|
|
334
|
+
| --- | --- |
|
|
335
|
+
| **Gotcha** | "The API returns 200 with an error body" |
|
|
336
|
+
| **Pattern** | "Use factory functions for test fixtures" |
|
|
337
|
+
| **Anti-pattern** | "Don't mock the database for integration tests" |
|
|
338
|
+
| **Decision** | "Chose event sourcing over CRUD for audit trail" |
|
|
339
|
+
| **Edge case** | "Empty arrays and null are treated differently by the serializer" |
|
|
340
|
+
|
|
341
|
+
Only capture non-obvious insights — if it's clear from reading the code, skip it. Present proposals to the user; persist approved ones using the resolution table above. Log with `trigger: "system"`.
|
|
342
|
+
|
|
343
|
+
### Recurring correction detection
|
|
344
|
+
|
|
345
|
+
The orchestrator also watches for patterns across tasks:
|
|
346
|
+
|
|
347
|
+
| Signal | Possible action |
|
|
348
|
+
| --- | --- |
|
|
349
|
+
| 3+ user corrections on same topic | Propose a project CLAUDE.md update |
|
|
350
|
+
| Agent consistently defers to another | Propose collaboration protocol tweak |
|
|
351
|
+
| Skill results repeatedly rejected | Propose skill guideline override |
|
|
352
|
+
| Context summarization triggered frequently | Propose loading profile adjustment |
|
|
353
|
+
|
|
354
|
+
When a pattern is detected (minimum 3 occurrences), propose the change with rationale. User approves or rejects. If approved, apply and log with `trigger: "system"`.
|
|
355
|
+
|
|
356
|
+
## Pending-Review Queue Disposition
|
|
357
|
+
|
|
358
|
+
When `/session-review` surfaces entries from `.claude/metrics/pending-review.jsonl`, this
|
|
359
|
+
skill handles the approve or reject decision for each finding.
|
|
360
|
+
|
|
361
|
+
### Matching
|
|
362
|
+
|
|
363
|
+
Identify the queue entry by `source` + `queued_at` combination (handles duplicate-
|
|
364
|
+
content entries safely).
|
|
365
|
+
|
|
366
|
+
### Approval path
|
|
367
|
+
|
|
368
|
+
1. Apply the proposed change (following the standard Processing Flow above).
|
|
369
|
+
2. Append to `.claude/metrics/config-changelog.jsonl` as usual.
|
|
370
|
+
3. Write `reviewed_at` (ISO-8601 UTC) and `approved_by` (the user identifier from
|
|
371
|
+
`approved_by` in the existing audit schema) back into the matching entry in
|
|
372
|
+
`.claude/metrics/pending-review.jsonl`.
|
|
373
|
+
|
|
374
|
+
### Rejection path
|
|
375
|
+
|
|
376
|
+
1. Do **not** apply the proposed change.
|
|
377
|
+
2. Do **not** write to `.claude/metrics/config-changelog.jsonl`.
|
|
378
|
+
3. Write `rejected_at` (ISO-8601 UTC) and `rejected_by` (same format as
|
|
379
|
+
`approved_by`) into the matching entry in `.claude/metrics/pending-review.jsonl`.
|
|
380
|
+
|
|
381
|
+
### Queue entry schema (reference)
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
{
|
|
385
|
+
"queued_at": "2026-06-01T12:00:00Z",
|
|
386
|
+
"source": "session-learning-trigger",
|
|
387
|
+
"session_id": "abc-123",
|
|
388
|
+
"findings": [
|
|
389
|
+
{
|
|
390
|
+
"lever": "instruction-rule",
|
|
391
|
+
"evidence": "3 occurrences in last 5 sessions",
|
|
392
|
+
"target_artifact": "agents/orchestrator.md",
|
|
393
|
+
"proposed_change": "Add constraint",
|
|
394
|
+
"route": "feedback-learning"
|
|
395
|
+
}
|
|
396
|
+
],
|
|
397
|
+
"reviewed_at": "2026-06-02T09:00:00Z",
|
|
398
|
+
"approved_by": "user",
|
|
399
|
+
"rejected_at": "2026-06-02T09:00:00Z",
|
|
400
|
+
"rejected_by": "user"
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
`reviewed_at` and `approved_by` are added on approval; `rejected_at` and
|
|
405
|
+
`rejected_by` are added on rejection. A finding gains exactly one disposition.
|
|
406
|
+
|
|
407
|
+
## Constraints
|
|
408
|
+
|
|
409
|
+
- Never edit plugin cache files — all changes go to project-local files
|
|
410
|
+
- Never auto-apply without user preview for structural modifications
|
|
411
|
+
- Behavioral tweaks (tone, preferences) can be auto-applied; structural changes (new sections, removed overrides) require approval
|
|
412
|
+
- The changelog is append-only — never delete entries
|
|
413
|
+
- Every new `amend`/`learn`/`remember` entry carries an `evidence` field — a structured object or `"unmeasurable"`, never silently absent (#866)
|
|
414
|
+
- A `harmful` validation verdict from `/harness-audit` is a rollback *proposal* only — never auto-apply it without user confirmation
|