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,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-primitives-contract
|
|
3
|
+
description: Versioned cross-plugin contract defining the data envelopes passed between dev-team and security-assessment. Agent IDs, skill IDs, three JSON schemas (RECON, unified finding, disposition register), and presentational severity mapping. Consumers declare `required-primitives-contract: ^1.0.0`.
|
|
4
|
+
version: 1.3.1
|
|
5
|
+
semver-policy: |
|
|
6
|
+
PATCH (1.0.x) — clarifications, typo fixes, documentation improvements; no
|
|
7
|
+
schema changes.
|
|
8
|
+
MINOR (1.x.0) — additive schema changes (new OPTIONAL fields, new enum
|
|
9
|
+
values, new agent IDs, new skill IDs, new guidance/
|
|
10
|
+
invariants enforced downstream). Consumers on prior
|
|
11
|
+
1.x.0 continue to work; new features ignored.
|
|
12
|
+
MAJOR (x.0.0) — breaking changes (renamed or removed fields, changed
|
|
13
|
+
semantics, new REQUIRED fields, removed enum values).
|
|
14
|
+
Consumers on prior major MUST be updated.
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Security Primitives Contract v1.3.1
|
|
18
|
+
|
|
19
|
+
This file is the single source of truth for the data envelopes exchanged between `plugins/dev-team/` (producer of primitives) and `plugins/security-assessment/` (consumer). Downstream plugins declare compatibility via `required-primitives-contract: ^1.0.0` in their `plugin.json`.
|
|
20
|
+
|
|
21
|
+
**Canonical schema registry**: this file is the single registry for every JSON/JSONL artifact shape shared or emitted in the security-assessment pipeline. Producer plugins (including the companion `security-assessment`) PR into this file rather than forking per-plugin contracts, so reviewers can trace any artifact back to one authoritative schema. New envelopes arrive as MINOR releases with `## Envelope N` sections plus changelog entries; per-tool raw outputs remain out of contract (see below).
|
|
22
|
+
|
|
23
|
+
The contract covers three data envelopes, two registries, and a presentational severity mapping. Per-tool raw outputs are **explicitly not in the contract** — they are normalized into the unified finding envelope by SARIF-first adapters in `skills/static-analysis-integration/SKILL.md`. That normalization layer is an implementation detail behind the contract, free to evolve under PATCH releases.
|
|
24
|
+
|
|
25
|
+
## Bypass path
|
|
26
|
+
|
|
27
|
+
Edits to this file are guarded by `hooks/contract_version_guard.py`. A body change without a `version` field bump is blocked. Bypass is auto-granted only for release-please commits (matched by author `release-please[bot]` or commit-message prefix `chore(main): release`).
|
|
28
|
+
|
|
29
|
+
## Registries
|
|
30
|
+
|
|
31
|
+
### Agent IDs
|
|
32
|
+
|
|
33
|
+
Agents that produce or consume contract envelopes. Each ID is stable across the major version. Renames trigger a MAJOR bump.
|
|
34
|
+
|
|
35
|
+
| Agent ID | Produces | Consumes | Defined in |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| `codebase-recon` | RECON envelope | — | `plugins/dev-team/agents/codebase-recon.md` |
|
|
38
|
+
| `security-review` | unified findings | — | `plugins/dev-team/agents/security-review.md` |
|
|
39
|
+
| `fp-reduction` | disposition register | unified findings, RECON | `plugins/security-assessment/agents/fp-reduction.md` (companion plugin) |
|
|
40
|
+
| `tool-finding-narrative-annotator` | — | unified findings, RECON | `plugins/security-assessment/agents/tool-finding-narrative-annotator.md` (companion plugin) |
|
|
41
|
+
| `business-logic-domain-review` | unified findings (domain-level) | — | `plugins/security-assessment/agents/business-logic-domain-review.md` (companion plugin) |
|
|
42
|
+
| `cross-repo-synthesizer` | — | RECON, unified findings | `plugins/security-assessment/agents/cross-repo-synthesizer.md` (companion plugin) |
|
|
43
|
+
| `exec-report-generator` | — | all three envelopes | `plugins/security-assessment/agents/exec-report-generator.md` (companion plugin) |
|
|
44
|
+
|
|
45
|
+
Adding an agent ID is a MINOR bump. Removing one is a MAJOR bump.
|
|
46
|
+
|
|
47
|
+
### Skill IDs
|
|
48
|
+
|
|
49
|
+
Skills that participate in the contract (operate on envelopes or define adapter behavior).
|
|
50
|
+
|
|
51
|
+
| Skill ID | Role | Defined in |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| `static-analysis-integration` | SARIF-first adapters; produces unified findings from per-tool outputs | `plugins/dev-team/skills/static-analysis-integration/SKILL.md` |
|
|
54
|
+
| `false-positive-reduction` | Consumes unified findings, produces disposition register | `plugins/security-assessment/skills/false-positive-reduction/SKILL.md` (companion plugin) |
|
|
55
|
+
| `compliance-mapping` | Consumes unified findings, emits compliance annotations (not in contract — downstream-only) | `plugins/security-assessment/skills/compliance-mapping/SKILL.md` (companion plugin) |
|
|
56
|
+
| `security-assessment-pipeline` | Orchestrates full envelope flow end-to-end | `plugins/security-assessment/skills/security-assessment-pipeline/SKILL.md` (companion plugin) |
|
|
57
|
+
|
|
58
|
+
## Envelope 1 — RECON
|
|
59
|
+
|
|
60
|
+
Normalized reconnaissance output from `codebase-recon`. Schema: `knowledge/schemas/recon-envelope-v1.json`.
|
|
61
|
+
|
|
62
|
+
Key design notes:
|
|
63
|
+
- Superset of the `codebase-recon` v0.1 placeholder; `schema_version` bumps to `"1.0"`.
|
|
64
|
+
- Added under 1.0: `repo.vcs` object (distinguishes git from non-git repos), `architecture.notable_anti_patterns` (open-ended notes from the recon pass), `security_surface.csp_headers` (referenced in security contexts).
|
|
65
|
+
- All v0.1 field names remain stable.
|
|
66
|
+
|
|
67
|
+
### `file_inventory` (added in 1.2.0)
|
|
68
|
+
|
|
69
|
+
An authoritative enumeration of every file the recon considered in-scope at recon time. Gap 6's manifest-membership hook depends on this field — without it, consumers cannot answer "did a scan agent read a file outside the recon surface?" without their own tree walk.
|
|
70
|
+
|
|
71
|
+
The list itself ships as a **sibling file** (not embedded JSON) because mid-size repos produce 10k+ paths that bloat envelope diffs and validation cost. The main envelope carries a pointer and a count; the list lives at `.claude/memory/recon-<slug>.inventory.txt`.
|
|
72
|
+
|
|
73
|
+
**Shape** (main envelope, optional at schema level):
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
"file_inventory": {
|
|
77
|
+
"source": "git-ls-files" | "filesystem-walk",
|
|
78
|
+
"count": <integer>,
|
|
79
|
+
"sibling_ref": "recon-<slug>.inventory.txt"
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
All three sub-fields are required when the object is present. Object itself is optional so pre-1.2.0 envelopes stay schema-valid; `codebase-recon` always emits it from 1.2.0 forward.
|
|
84
|
+
|
|
85
|
+
**Sibling file contract** (`.claude/memory/recon-<slug>.inventory.txt`):
|
|
86
|
+
|
|
87
|
+
- UTF-8, LF line terminators, no BOM.
|
|
88
|
+
- One repo-relative path per line; path separator `/` on every platform; no leading `./`.
|
|
89
|
+
- Sorted lexicographically under `LC_ALL=C`; deduplicated.
|
|
90
|
+
- No blank lines. Final line is LF-terminated.
|
|
91
|
+
- No symlink entries — symlinks resolve to real-path targets; broken symlinks are skipped and recorded in the envelope's `notes` array.
|
|
92
|
+
- Plain text; not JSON; not validated by schema tooling.
|
|
93
|
+
|
|
94
|
+
**Enumeration pipeline** — canonical shippable implementation at `plugins/dev-team/scripts/recon_inventory.py` (the single source of truth per the 1.2.0 plan's decision #1). Both the `codebase-recon` agent and the test harnesses invoke this script. Excluded prefixes and filenames for the non-git branch live in `plugins/dev-team/knowledge/recon-inventory-excludes.txt`.
|
|
95
|
+
|
|
96
|
+
### Consumer error contract
|
|
97
|
+
|
|
98
|
+
Consumers that depend on `file_inventory` (e.g., Gap 6's PreToolUse hook, or any audit that wants to prove a reviewer didn't silently read outside the recon surface) **must fail-open** when any of the three branches below fires. Fail-open = emit a one-time informational notice to stderr in the exact format below, then proceed without the membership check. Never block the consumer's normal work; the inventory is a nice-to-have quality signal, not a correctness gate.
|
|
99
|
+
|
|
100
|
+
| Branch | Trigger | Stderr notice template |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| a | `file_inventory` field is absent on the envelope | `[recon-inventory] notice: file_inventory field absent on envelope; proceeding without membership check` |
|
|
103
|
+
| b | `file_inventory.sibling_ref` resolves to a file that is missing or unreadable at `.claude/memory/<sibling_ref>` | `[recon-inventory] notice: sibling file <path> missing; proceeding without membership check` |
|
|
104
|
+
| c | `file_inventory.count != wc -l <sibling>` (envelope declares N, sibling contains M, M != N) | `[recon-inventory] notice: file_inventory.count (<declared>) != wc -l <sibling> (<actual>); proceeding without membership check` |
|
|
105
|
+
|
|
106
|
+
Reference implementation: `evals/primitives-contract/fixtures/consumer-stub-fail-open.sh`. Conformance test: `evals/primitives-contract/tests/backward-compat-1.2.0.sh`.
|
|
107
|
+
|
|
108
|
+
## Envelope 2 — Unified finding
|
|
109
|
+
|
|
110
|
+
Narrow normalization over SARIF `result` objects. Schema: `knowledge/schemas/unified-finding-v1.json`.
|
|
111
|
+
|
|
112
|
+
Required fields only. Per-tool raw output is NOT part of the contract (it is accessible via the `metadata.source_ref` field for debugging but consumers must not depend on its shape).
|
|
113
|
+
|
|
114
|
+
Required fields:
|
|
115
|
+
- `rule_id` — string, format `<source>.<language?>.<rule>` (e.g. `semgrep.python.hardcoded-password`, `gitleaks.generic.aws-access-key`)
|
|
116
|
+
- `file` — repo-relative path
|
|
117
|
+
- `line` — 1-indexed integer
|
|
118
|
+
- `severity` — enum: `error | warning | suggestion | info`
|
|
119
|
+
- `message` — one-line human-readable summary
|
|
120
|
+
- `metadata` — object with `source` (string: tool name), `confidence` (enum: `high | medium | low | none`)
|
|
121
|
+
|
|
122
|
+
Optional (at schema level):
|
|
123
|
+
- `column` — 1-indexed integer
|
|
124
|
+
- `end_line`, `end_column`
|
|
125
|
+
- `cwe`, `cve`, `owasp` — string arrays
|
|
126
|
+
- `metadata.source_ref` — opaque pointer to the raw tool output (debugging aid only; not stable)
|
|
127
|
+
- `metadata.exploitability` — enum: `demonstrated | plausible | theoretical | unknown`
|
|
128
|
+
|
|
129
|
+
**Strongly recommended at schema; enforced downstream (added in v1.1.0):**
|
|
130
|
+
|
|
131
|
+
- `cwe` is **strongly recommended** for every finding with `severity: error` or `severity: warning`. The schema keeps `cwe` optional for backward compatibility with adapters that do not emit it (hadolint, actionlint, some trivy config rules). The `exec-report-generator` (Phase B Step 14) **rejects** findings without CWE from CRITICAL / HIGH sections of the exec report with a named error, and lists them in an appendix for follow-up.
|
|
132
|
+
- CRITICAL / HIGH presentational findings (see § Severity mapping below) **must** carry a reachability trace. The trace lives on the finding's disposition entry, not on the finding itself. The exec-report-generator enforces this too.
|
|
133
|
+
|
|
134
|
+
## Envelope 3 — Disposition register
|
|
135
|
+
|
|
136
|
+
Output of `fp-reduction` over unified findings. Schema: `knowledge/schemas/disposition-register-v1.json`.
|
|
137
|
+
|
|
138
|
+
One disposition entry per unified finding processed. Each entry:
|
|
139
|
+
- `finding` — the unified finding being dispositioned (embedded verbatim, not a reference)
|
|
140
|
+
- `verdict` — enum: `true_positive | likely_true_positive | uncertain | likely_false_positive | false_positive`
|
|
141
|
+
- `reachability` — object: `{ reachable: bool, rationale: string }`
|
|
142
|
+
- `reachability_source` — enum: `joern-cpg | llm-fallback` (drives exec report's fallback banner per P2 Phase B)
|
|
143
|
+
- `exploitability` — object: `{ score: 0-10, rationale: string }`
|
|
144
|
+
- `dispositioner` — string: agent ID that produced this disposition (typically `fp-reduction`)
|
|
145
|
+
- `dispositioned_at` — ISO-8601 timestamp
|
|
146
|
+
|
|
147
|
+
## Envelope 4 — Accepted-risks log (added in v1.3.0)
|
|
148
|
+
|
|
149
|
+
Per-target suppression log emitted by `scripts/apply-accepted-risks.sh` in the companion plugin. Written to `<memory-dir>/accepted-risks-<slug>.jsonl`. Source-of-truth input is `<target-dir>/ACCEPTED-RISKS.md` — see `plugins/security-assessment/docs/accepted-risks-format.md` for the input format.
|
|
150
|
+
|
|
151
|
+
Two record shapes, discriminated by the `status` field:
|
|
152
|
+
|
|
153
|
+
**Suppression record** — an active accepted-risks entry matched a finding and that finding was removed from `findings-<slug>.jsonl`:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"status": "suppressed",
|
|
158
|
+
"rule_id": "semgrep.csharp.sqli.raw-sql-concat",
|
|
159
|
+
"source_ref": "src/Legacy/Query/Foo.cs",
|
|
160
|
+
"source_ref_glob": "src/Legacy/**/*.cs",
|
|
161
|
+
"reason": "Legacy reporting module scheduled for deletion Q3 2026 (TICKET-1234).",
|
|
162
|
+
"expires": "2026-09-30",
|
|
163
|
+
"iso": "2026-04-24T17:30:39Z"
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Expired-entry record** — an ACCEPTED-RISKS.md entry's `expires` date has passed; the script logs the lapse but does NOT suppress any finding:
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"status": "expired",
|
|
172
|
+
"rule_id": "hadolint.DL3003",
|
|
173
|
+
"source_ref_glob": "docker/base/Dockerfile",
|
|
174
|
+
"reason": "Base image built in a controlled CI step; cd is intentional.",
|
|
175
|
+
"expires": "2020-01-01",
|
|
176
|
+
"iso": "2026-04-24T17:30:39Z"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Field invariants:
|
|
181
|
+
- `status` ∈ `{"suppressed", "expired"}`.
|
|
182
|
+
- `rule_id`, `source_ref_glob`, `reason`, `expires`, `iso` are required on both shapes.
|
|
183
|
+
- `source_ref` is required only on `status:"suppressed"` (it records the specific finding that matched).
|
|
184
|
+
- `expires` is `YYYY-MM-DD` UTC.
|
|
185
|
+
- `iso` is ISO-8601 UTC (second precision suffices; the log is for audit, not tracing).
|
|
186
|
+
|
|
187
|
+
Idempotency: the script rewrites (does not append to) the log file on each run, so a re-run against unchanged inputs produces a byte-identical file.
|
|
188
|
+
|
|
189
|
+
## Envelope 5 — Severity-floors log (added in v1.3.0)
|
|
190
|
+
|
|
191
|
+
Per-target floor-application log emitted by `scripts/apply-severity-floors.sh` in the companion plugin. Written to `<memory-dir>/severity-floors-log-<slug>.jsonl`. The script raises `exploitability.score` on matched disposition entries (Envelope 3) and emits one JSONL record per match.
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"id": "sec-appsettings.json-511",
|
|
196
|
+
"floor_class": "hardcoded-creds",
|
|
197
|
+
"floor": 9,
|
|
198
|
+
"original_score": 9,
|
|
199
|
+
"final_score": 9
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Field invariants:
|
|
204
|
+
- `id` matches an entry `id` in the disposition register.
|
|
205
|
+
- `floor_class` comes from the `<class> floor=<n>` pattern embedded in the entry's `exploitability.rationale` (fp-reduction agent convention) AND must appear in `plugins/security-assessment/knowledge/severity-floors.json`'s `recognized_classes`.
|
|
206
|
+
- `floor`, `original_score`, `final_score` are integers in 0..10.
|
|
207
|
+
- `final_score >= original_score` (floors only raise).
|
|
208
|
+
- `final_score >= floor` (the floor was respected).
|
|
209
|
+
- Records are emitted for every matched entry on first run, even when `original_score == final_score` (log-every-match semantics, matching the 2026-04-24 extranetapi reference).
|
|
210
|
+
|
|
211
|
+
Idempotency: the script sets `exploitability.floor_applied: true` on each mutated entry; subsequent runs skip marked entries, so the log file is append-safe across re-runs against an already-floored register.
|
|
212
|
+
|
|
213
|
+
Suppression phrase: entries whose rationale contains `floor=<n> suppressed to <m>` are skipped entirely (the fp-reduction agent signaled the default floor does not apply in context) — no log record is emitted.
|
|
214
|
+
|
|
215
|
+
## Severity mapping (added in v1.1.0)
|
|
216
|
+
|
|
217
|
+
The unified finding envelope uses a lint-grade severity scale optimized for tool output (`error | warning | suggestion | info`). The `exec-report-generator` maps these into a **presentational** CRITICAL / HIGH / MEDIUM / LOW scale for executive-audience reports. The presentational scale matches the `opus_repo_scan_test` reference and is familiar to CISO / CTO readers.
|
|
218
|
+
|
|
219
|
+
The mapping combines the finding's `severity` with its disposition-register `exploitability.score` (0–10) and `metadata.exploitability` enum. The scale is presentational only — findings remain stored at the narrower schema-level severity.
|
|
220
|
+
|
|
221
|
+
| Presentational | Definition | Driven by |
|
|
222
|
+
|---|---|---|
|
|
223
|
+
| **CRITICAL** | Immediate exploitation, data breach, or fraud bypass. Demands same-day remediation. | `severity: error` AND (`exploitability.score >= 7` OR `metadata.exploitability: demonstrated`) |
|
|
224
|
+
| **HIGH** | Exploitable with moderate effort, significant impact. Demands same-week remediation. | `severity: error` AND `exploitability.score` in `[4, 6]`; OR `severity: warning` AND `exploitability.score >= 7` |
|
|
225
|
+
| **MEDIUM** | Requires specific conditions or insider access. Addressed in normal release cycle. | `severity: warning` AND `exploitability.score` in `[3, 6]`; OR `severity: error` AND `exploitability.score < 4` |
|
|
226
|
+
| **LOW** | Informational or defence-in-depth. No immediate action. | `severity: suggestion`, or `severity: warning`/`error` with `exploitability.score < 3`, or `severity: info` |
|
|
227
|
+
|
|
228
|
+
Tie-breaks:
|
|
229
|
+
- A finding with `verdict: false_positive` never reaches the presentational scale; suppressed from the report.
|
|
230
|
+
- `verdict: likely_false_positive` downgrades one presentational level (CRITICAL → HIGH → MEDIUM → LOW).
|
|
231
|
+
- A finding without a disposition entry (happens when FP-reduction is bypassed) is presented at one level lower than the mechanical mapping would give, with a footnote noting FP-reduction was skipped.
|
|
232
|
+
|
|
233
|
+
### Downstream invariants
|
|
234
|
+
|
|
235
|
+
The `exec-report-generator` enforces these invariants and rejects (with named errors) any finding that violates them from CRITICAL / HIGH sections. LOW findings can bypass all three:
|
|
236
|
+
|
|
237
|
+
1. **CWE required** on CRITICAL and HIGH. Findings without CWE appear in an appendix labelled "Findings missing CWE — investigate" for the audit trail.
|
|
238
|
+
2. **Reachability trace required** on CRITICAL and HIGH. The trace comes from the disposition entry's `reachability.rationale` (min 20 chars per schema). Missing → same appendix.
|
|
239
|
+
3. **Dedup applied**. One credential appearing in N config variants is one finding with N locations, not N findings.
|
|
240
|
+
|
|
241
|
+
## Out of contract
|
|
242
|
+
|
|
243
|
+
Explicitly NOT part of this contract:
|
|
244
|
+
|
|
245
|
+
- Per-tool raw outputs (SARIF documents, JSON outputs from bespoke adapters). These flow through the adapter layer and are normalized into unified findings. Consumers treat adapters as opaque — the unified finding envelope is the contract boundary.
|
|
246
|
+
- Internal adapter configuration (`skills/static-analysis-integration/references/tool-configs.md` layouts, matcher regexes). These are implementation details of `skills/static-analysis-integration`.
|
|
247
|
+
- Compliance mapping outputs. These are a downstream product of the companion plugin, not shared cross-plugin primitives.
|
|
248
|
+
- Report templates (executive report sections, Mermaid diagrams). These are presentation concerns.
|
|
249
|
+
- Red-team harness artifacts. The harness ships its own schemas under `plugins/security-assessment/harness/redteam/schemas/` — separate lifecycle, separate versioning.
|
|
250
|
+
|
|
251
|
+
## Conformance
|
|
252
|
+
|
|
253
|
+
Schemas live at `plugins/dev-team/knowledge/schemas/{recon-envelope,unified-finding,disposition-register}-v1.json` and must validate using any Draft 2020-12 JSON Schema validator.
|
|
254
|
+
|
|
255
|
+
Conformance fixtures at `evals/primitives-contract/fixtures/` exercise each envelope against positive and negative cases. The `/agent-audit` command validates references to this file (agent IDs cited elsewhere in the plugin must match the registry above).
|
|
256
|
+
|
|
257
|
+
A mutation test alters a field in a conformance fixture; CI must fail. A version-mismatch mock (producer 2.0.0 vs. consumer `^1.0.0`) exercises the `install.sh` refusal path.
|
|
258
|
+
|
|
259
|
+
## Versioning lifecycle
|
|
260
|
+
|
|
261
|
+
- Clarifications and typos → open a PR with `version: 1.0.X` (PATCH).
|
|
262
|
+
- New optional fields, new enum values, new agent or skill IDs, new guidance or invariants enforced downstream → `version: 1.X.0` (MINOR). Update the relevant schema file; add a fixture; document the addition under `## Changelog`.
|
|
263
|
+
- Removing a field, renaming a field, changing a field's semantics, or adding a REQUIRED field → `version: X.0.0` (MAJOR). Publish a migration note; downstream plugins' `required-primitives-contract` constraints force them to update before installing.
|
|
264
|
+
|
|
265
|
+
## Changelog
|
|
266
|
+
|
|
267
|
+
### 1.3.1 (2026-07-25)
|
|
268
|
+
|
|
269
|
+
Clarification only — no schema or field changes. Consumers on `^1.0.0` are unaffected.
|
|
270
|
+
|
|
271
|
+
- **Path clarification.** Envelope 1's `file_inventory` sibling-file location updated from bare `memory/recon-<slug>.inventory.txt` to `.claude/memory/recon-<slug>.inventory.txt`, matching the `.claude/`-scoped runtime-artifact convention adopted repo-wide (#1405/#1406). The `sibling_ref` field itself remains a bare filename (`"recon-<slug>.inventory.txt"`); only the directory it resolves under changed. Historical entries below are left as originally written for the version they describe.
|
|
272
|
+
|
|
273
|
+
### 1.3.0 (2026-04-24)
|
|
274
|
+
|
|
275
|
+
Additive schema release. Consumers on `^1.0.0` continue to install unmodified.
|
|
276
|
+
|
|
277
|
+
- **New Envelope 4 — Accepted-risks log.** Registers the `<memory-dir>/accepted-risks-<slug>.jsonl` artifact emitted by the companion plugin's new `scripts/apply-accepted-risks.sh` (Phase 1c). Two record shapes: `status:"suppressed"` and `status:"expired"`. Input format reference lives at `plugins/security-assessment/docs/accepted-risks-format.md`.
|
|
278
|
+
- **New Envelope 5 — Severity-floors log.** Registers the `<memory-dir>/severity-floors-log-<slug>.jsonl` artifact emitted by the companion plugin's new `scripts/apply-severity-floors.sh` (Phase 2b). Schema matches the 2026-04-24 extranetapi reference byte-for-byte.
|
|
279
|
+
- **New canonical-registry paragraph** in the preamble making explicit that this file is the single registry for artifacts shared between the two plugins. Addresses an architecture-review observation during the helper-scripts PR that producers should PR into this file rather than fork per-plugin contracts.
|
|
280
|
+
- **Backward compatibility:** pre-1.3.0 plugin installations continue to work — the new envelopes have no producers outside the new helper scripts, and the existing envelopes are unchanged.
|
|
281
|
+
|
|
282
|
+
### 1.2.0 (2026-04-24)
|
|
283
|
+
|
|
284
|
+
Additive schema release. Consumers on `^1.0.0` continue to install unmodified.
|
|
285
|
+
|
|
286
|
+
- **New field:** Envelope 1 now carries an optional `file_inventory` object (`source` enum, `count` integer, `sibling_ref` string). The actual path list ships as a sibling file `memory/recon-<slug>.inventory.txt` to keep JSON diffs small on large repos.
|
|
287
|
+
- **New subsection:** `### Consumer error contract` under Envelope 1 documents the three fail-open branches (field absent, sibling absent, count mismatch) with exact stderr notice templates. Reference implementation at `evals/primitives-contract/fixtures/consumer-stub-fail-open.sh`.
|
|
288
|
+
- **New canonical enumeration pipeline:** `plugins/dev-team/scripts/recon_inventory.py` is the single source of truth for both the git-ls-files branch and the filesystem-walk branch; excludes for the non-git branch live in `plugins/dev-team/knowledge/recon-inventory-excludes.txt`.
|
|
289
|
+
- **Backward compatibility:** pre-1.2.0 envelopes continue to validate. Consumers that need the field (Gap 6's manifest-membership hook) follow the fail-open contract documented above.
|
|
290
|
+
|
|
291
|
+
### 1.1.0 (2026-04-21)
|
|
292
|
+
|
|
293
|
+
Additive guidance release. Schema files unchanged; consumers on `^1.0.0` work unmodified.
|
|
294
|
+
|
|
295
|
+
- **New section:** Severity mapping from unified `severity` + disposition `exploitability` into presentational CRITICAL / HIGH / MEDIUM / LOW. Matches the `opus_repo_scan_test` reference's severity framework so executive-audience reports are comparable.
|
|
296
|
+
- **New invariants (enforced by `exec-report-generator`, not by schema):** CWE required on CRITICAL / HIGH; reachability trace required on CRITICAL / HIGH; dedup applied before reporting. Findings violating these are reported in a dedicated appendix rather than silently dropped.
|
|
297
|
+
- **Backward compatibility:** adapters that do not emit CWE (hadolint, actionlint, some trivy config rules) continue to work; their findings land at MEDIUM or LOW unless FP-reduction's exploitability scoring elevates them — in which case the CWE-missing appendix notifies reviewers.
|
|
298
|
+
|
|
299
|
+
### 1.0.0 (2026-04-21)
|
|
300
|
+
|
|
301
|
+
Initial contract. Finalizes the RECON envelope v0.1 placeholder from `codebase-recon`. Defines unified finding envelope as a narrow SARIF `result` normalization. Defines disposition register as the FP-reduction output envelope. Registers initial agent and skill IDs.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# security-review category -> unified-finding rule_id mapping
|
|
2
|
+
#
|
|
3
|
+
# Single source of truth for agent-emitted rule_ids. The adapter at
|
|
4
|
+
# plugins/dev-team/skills/static-analysis-integration/adapters/security-review-adapter.py
|
|
5
|
+
# reads this file. See skills/static-analysis-integration/references/security-review-adapter.md for the contract.
|
|
6
|
+
#
|
|
7
|
+
# Versioning is independent of the primitives-contract. Bump on any semantic change:
|
|
8
|
+
# - patch: renumber / rename a rule_id that aliases an upstream rename
|
|
9
|
+
# - minor: add a new mapping
|
|
10
|
+
# - major: remove or move a mapping
|
|
11
|
+
version: 1.1.0
|
|
12
|
+
mappings:
|
|
13
|
+
# Pattern-visible classes — adopt upstream rule_ids (rules-vs-prompts policy Q4).
|
|
14
|
+
A02.weak-hashing-md5: semgrep.generic.weak-hash-md5
|
|
15
|
+
A03.sql-injection: semgrep.generic.sql-injection
|
|
16
|
+
A03.xss-innerhtml: semgrep.javascript.xss-innerhtml
|
|
17
|
+
A03.command-injection: semgrep.generic.command-injection
|
|
18
|
+
A08.binary-formatter: semgrep.csharp.binary-formatter
|
|
19
|
+
A08.object-input-stream: semgrep.java.deserialization-object-input-stream
|
|
20
|
+
A08.js-eval: semgrep.javascript.eval-injection
|
|
21
|
+
A05.cors-wildcard: semgrep.generic.cors-wildcard
|
|
22
|
+
A07.jwt-alg-none: semgrep.generic.jwt-alg-none
|
|
23
|
+
A02.insecure-random-js: semgrep.javascript.weak-random
|
|
24
|
+
A05.default-credentials: semgrep.generic.default-credentials
|
|
25
|
+
|
|
26
|
+
# Judgment-only classes — security-review namespace.
|
|
27
|
+
A01.idor: security-review.a01.idor
|
|
28
|
+
A01.missing-auth-middleware: security-review.a01.missing-auth-middleware
|
|
29
|
+
A01.missing-authorize-csharp: security-review.a01.missing-authorize-csharp
|
|
30
|
+
A04.no-rate-limiting: security-review.a04.no-rate-limiting
|
|
31
|
+
A04.no-brute-force-protection: security-review.a04.no-brute-force-protection
|
|
32
|
+
A07.jwt-no-exp: security-review.a07.jwt-no-exp
|
|
33
|
+
A07.session-fixation: security-review.a07.session-fixation
|
|
34
|
+
A09.pii-in-logs: security-review.a09.pii-in-logs
|
|
35
|
+
A05.verbose-errors-prod: security-review.a05.verbose-errors-prod
|
|
36
|
+
A09.no-auth-event-logging: security-review.a09.no-auth-event-logging
|
|
37
|
+
|
|
38
|
+
# Policy-as-data: the rules-vs-prompts boundary, made structural (issue #118).
|
|
39
|
+
# This replaces the prose "classes that move to rules / stay in prompt / both"
|
|
40
|
+
# lists from the removed rules-vs-prompts-policy.md. The boundary is now
|
|
41
|
+
# queryable here and enforced by scripts/audit-rules-vs-prompts.sh.
|
|
42
|
+
#
|
|
43
|
+
# surface: rule — pattern-stable, detected by a semgrep rule; the agent does
|
|
44
|
+
# NOT re-detect (only assesses exploitability on tool findings)
|
|
45
|
+
# surface: prompt — judgment class; detection needs cross-file/architectural
|
|
46
|
+
# reasoning, lives in the agent prompt + owasp-detection.md
|
|
47
|
+
# surface: both — a rule detects the pattern AND the agent assesses impact
|
|
48
|
+
#
|
|
49
|
+
# rule/both classes MUST carry a measured `fp_rate` (≤ 0.10 policy threshold)
|
|
50
|
+
# and a `fixtures` dir with ≥1 positive and ≥1 negative fixture.
|
|
51
|
+
classes:
|
|
52
|
+
# --- rule-surface (pattern-visible; adopt upstream semgrep rule_ids) ---------
|
|
53
|
+
A02.weak-hashing-md5:
|
|
54
|
+
surface: rule
|
|
55
|
+
fp_rate: 0.0
|
|
56
|
+
fixtures: knowledge/rule-fixtures/A02.weak-hashing-md5
|
|
57
|
+
A02.insecure-random-js:
|
|
58
|
+
surface: rule
|
|
59
|
+
fp_rate: 0.0
|
|
60
|
+
fixtures: knowledge/rule-fixtures/A02.insecure-random-js
|
|
61
|
+
A03.sql-injection:
|
|
62
|
+
surface: rule
|
|
63
|
+
fp_rate: 0.05
|
|
64
|
+
fixtures: knowledge/rule-fixtures/A03.sql-injection
|
|
65
|
+
A03.xss-innerhtml:
|
|
66
|
+
surface: rule
|
|
67
|
+
fp_rate: 0.0
|
|
68
|
+
fixtures: knowledge/rule-fixtures/A03.xss-innerhtml
|
|
69
|
+
A03.command-injection:
|
|
70
|
+
surface: rule
|
|
71
|
+
fp_rate: 0.05
|
|
72
|
+
fixtures: knowledge/rule-fixtures/A03.command-injection
|
|
73
|
+
A08.binary-formatter:
|
|
74
|
+
surface: rule
|
|
75
|
+
fp_rate: 0.0
|
|
76
|
+
fixtures: knowledge/rule-fixtures/A08.binary-formatter
|
|
77
|
+
A08.object-input-stream:
|
|
78
|
+
surface: rule
|
|
79
|
+
fp_rate: 0.0
|
|
80
|
+
fixtures: knowledge/rule-fixtures/A08.object-input-stream
|
|
81
|
+
A08.js-eval:
|
|
82
|
+
surface: rule
|
|
83
|
+
fp_rate: 0.05
|
|
84
|
+
fixtures: knowledge/rule-fixtures/A08.js-eval
|
|
85
|
+
A05.cors-wildcard:
|
|
86
|
+
surface: rule
|
|
87
|
+
fp_rate: 0.0
|
|
88
|
+
fixtures: knowledge/rule-fixtures/A05.cors-wildcard
|
|
89
|
+
A07.jwt-alg-none:
|
|
90
|
+
surface: rule
|
|
91
|
+
fp_rate: 0.0
|
|
92
|
+
fixtures: knowledge/rule-fixtures/A07.jwt-alg-none
|
|
93
|
+
A05.default-credentials:
|
|
94
|
+
surface: rule
|
|
95
|
+
fp_rate: 0.1
|
|
96
|
+
fixtures: knowledge/rule-fixtures/A05.default-credentials
|
|
97
|
+
# --- prompt-surface (judgment classes; no fixtures/fp_rate required) ---------
|
|
98
|
+
A01.idor: { surface: prompt }
|
|
99
|
+
A01.missing-auth-middleware: { surface: prompt }
|
|
100
|
+
A01.missing-authorize-csharp: { surface: prompt }
|
|
101
|
+
A04.no-rate-limiting: { surface: prompt }
|
|
102
|
+
A04.no-brute-force-protection: { surface: prompt }
|
|
103
|
+
A07.jwt-no-exp: { surface: prompt }
|
|
104
|
+
A07.session-fixation: { surface: prompt }
|
|
105
|
+
A09.pii-in-logs: { surface: prompt }
|
|
106
|
+
A05.verbose-errors-prod: { surface: prompt }
|
|
107
|
+
A09.no-auth-event-logging: { surface: prompt }
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<!-- Extracted from CLAUDE.md ## Skills Registry — do not duplicate here, edit the source -->
|
|
2
|
+
|
|
3
|
+
# Skills Registry
|
|
4
|
+
|
|
5
|
+
> This file is extracted from `plugins/dev-team/CLAUDE.md` → Skills Registry. Edit the source table there; this file is a standalone reference copy for agents that need to load only the skills catalog.
|
|
6
|
+
|
|
7
|
+
User-invocable workflows in `.claude/skills/`. All review skills are executed under orchestrator direction. Every agent declares its own `model:`/`effort:` frontmatter — the native Claude Code sub-agent contract the harness resolves directly (see **Model/Effort Resolution** in `agents/orchestrator.md`).
|
|
8
|
+
|
|
9
|
+
> **Moved to the `marketplace-dev` plugin.** The plugin-authoring skills `agent-create`, `agent-skill-authoring`, `agent-add`, `agent-remove`, and `add-plugin` are no longer part of dev-team. They — plus a generalized `/plugin-audit` — now live in the companion `marketplace-dev` plugin, which builds and audits Claude Code plugins for any marketplace. Install it from the `bfinster` marketplace.
|
|
10
|
+
|
|
11
|
+
## Command Table
|
|
12
|
+
|
|
13
|
+
| Command | File | Role | What It Does |
|
|
14
|
+
| --------- | ------ | ------ | -------------- |
|
|
15
|
+
| `/agent-audit` | `skills/agent-audit/SKILL.md` | orchestrator | Audit agents/skills/hooks for structural compliance (self-audits this plugin's own agents/skills — largely repo-checkout-relative, see ADR 0032) |
|
|
16
|
+
| `/agent-eval` | `skills/agent-eval/SKILL.md` | orchestrator | Run eval fixtures, grade accuracy, detect regressions (operates on this repo's own `evals/` corpus — monorepo-checkout-only, see ADR 0032) |
|
|
17
|
+
| `/agent-readiness` | `skills/agent-readiness/SKILL.md` | worker | Score how agent-ready the current project repo is against the Agent-Readiness Scorecard; emits a tiered JSON/Markdown report (scores your project, not the plugin — use `/harness-audit` for that) |
|
|
18
|
+
| `/apply-fixes` | `skills/apply-fixes/SKILL.md` | implementation | Apply correction prompts from `/code-review` output |
|
|
19
|
+
| `/apply-test-doubles` | `skills/apply-test-doubles/SKILL.md` | worker | Apply `/cd-test-architecture`'s Step 4b build-vs-document decision logic against an existing, saved assessment report — or, when no valid report path is given, against a target to assess first — without re-running the full Steps 0-6 assessment each time |
|
|
20
|
+
| `/autoship` | `skills/autoship/SKILL.md` | orchestrator | Bounded automated issue-dispatch round: reclaim orphaned in-progress issues, discover `autoship:ready` issues, invoke `/ship --no-auto-merge` sequentially for each, detect stakeholder-input blockers, classify outcomes, and log a round summary to `.claude/metrics/autoship-log.jsonl`. Requires `--max-issues` and `--max-cost-usd` |
|
|
21
|
+
| `/benchmark` | `skills/benchmark/SKILL.md` | worker | Capture runtime performance metrics (Core Web Vitals, resource sizes) and compare against baselines |
|
|
22
|
+
| `/browse` | `skills/browse/SKILL.md` | worker | Browser-based QA: navigate, screenshot, click, fill forms via Playwright |
|
|
23
|
+
| `/build` | `skills/build/SKILL.md` | orchestrator | Execute an approved plan in small per-behavior batches (Code-First Small Batches) with inline reviews and verification evidence; ends with a Farley Score for the branch's tests before prompting for `/pr` |
|
|
24
|
+
| `/careful` | `skills/careful/SKILL.md` | worker | Toggle destructive command blocking (rm -rf, force-push, DROP TABLE, etc.) |
|
|
25
|
+
| `/co-evolution-audit` | `skills/co-evolution-audit/SKILL.md` | worker | Flag production files that churn repeatedly while their paired test files do not — the "Red Queen" co-evolution gap. Uses git log --stat, language-aware pairing heuristics (Python, JS/TS, Go, Java, C#), and produces a ranked table of stale-coverage pairs as prioritization input for /test-improve and /mutation-testing |
|
|
26
|
+
| `/code-review` | `skills/code-review/SKILL.md` | orchestrator | Run review agents, auto-fix actionable issues, re-run until clean (up to 5 iterations). Short-circuits documentation-only changesets (skips review; `--force` overrides) |
|
|
27
|
+
| `/continue` | `skills/continue/SKILL.md` | orchestrator | Resume work from a prior session using phase progress files |
|
|
28
|
+
| `/cost-report` | `skills/cost-report/SKILL.md` | worker | Report actual token spend and dollar cost of dispatched work — per agent and total — and flag cost regressions |
|
|
29
|
+
| `/coverage-baseline` | `skills/coverage-baseline/SKILL.md` | worker | Phase-2 of `/test-improve` — detect the repo's coverage tool, capture line+branch percentages as the pre-improvement baseline, post to the parent issue or local FEATURE.md |
|
|
30
|
+
| `/coverage-delta` | `skills/coverage-delta/SKILL.md` | worker | Phase-5 of `/test-improve` — re-run coverage and post Δ vs. baseline after each Story closes; when `--story-files` is supplied, also runs scoped mutation testing on those files and emits a structured status (`ok | net_new_survivors | first_measurement | tool_unavailable | skipped_empty_scope`) for the orchestrator to act on; never halts and never overwrites history (atomic temp-file-then-rename writes to`mutation-history.json`) |
|
|
31
|
+
| `/explore` | `skills/explore/SKILL.md` | worker | Charter-driven exploratory testing of a running target (Chaos Specialist mode): structured heuristics + adversarial expansion, auto-triages critical defects, writes an incremental report |
|
|
32
|
+
| `/fix` | `skills/fix/SKILL.md` | orchestrator | Investigate a bug via `/triage` (or reuse an existing triage record), prove the defect reproduces, implement the record's TDD Fix Plan one RED/GREEN cycle at a time with a regression check after each cycle, close the record, and delegate to `/pr` for a reviewed pull request |
|
|
33
|
+
| `/freeze` | `skills/freeze/SKILL.md` | worker | Scope-lock editing to a glob pattern; blocks edits outside the pattern |
|
|
34
|
+
| `/frontend-architecture` | `skills/frontend-architecture/SKILL.md` | orchestrator | Dispatch `component-architecture-review` over the frontend component files to catch reusable components that should be extracted, duplicated UI patterns, prop drilling, granularity problems, and inconsistent component APIs (advisory) |
|
|
35
|
+
| `/gherkin-derive` | `skills/gherkin-derive/SKILL.md` | worker | Standalone Gherkin derivation from code — discovers the public surface (OpenAPI → routes → tests → signatures), recommends a BDD binding mode via the value rubric, writes `.feature` files and (bdd-runner) pending step stubs; no tracker Stories. Phase 3 of `/test-improve` |
|
|
36
|
+
| `/gherkin-public` | `skills/gherkin-public/SKILL.md` | worker | Standalone worker — author Gherkin scenarios for the entire public interface (API endpoints, UI flows, batch-job entry points, library exports, event types) at the observable boundary. Standalone; not part of the current `/test-improve` orchestrator flow |
|
|
37
|
+
| `/guard` | `skills/guard/SKILL.md` | worker | Combined `/careful` + `/freeze` for production-critical sessions |
|
|
38
|
+
| `/harness-audit` | `skills/harness-audit/SKILL.md` | orchestrator | Analyze harness effectiveness and flag stale components (audits this plugin's own agents/skills/hooks — not your project, see ADR 0032; contrast `/agent-readiness`, which scores your project) |
|
|
39
|
+
| `/harness-e2e-check` | `skills/harness-e2e-check/SKILL.md` | worker | On-demand end-to-end integration check of the harness's own mechanisms (failure-class routing, dead-end detection, evidence bundles, invariants/rollback, refactor-freeze guard family, lesson-validation weighting, handoff rename) — originated as issue #907's post-merge test plan, kept repeatable via `skills/harness-e2e-check/references/watchlist.md`'s regression tracking |
|
|
40
|
+
| `/headless-run` | `skills/headless-run/SKILL.md` | worker | Run a Claude Code skill/command headlessly in an isolated subprocess (fresh `--session-id`, clean HOME/config, scrubbed env, JSON result, timeout) so a benchmark harness (e.g. #821 running `/code-review` per case) doesn't inherit the parent Remote session identity/tool surface — the reusable #842 workaround |
|
|
41
|
+
| `/help` | `skills/help/SKILL.md` | worker | List the main dev-team workflows, with `--all` to show every user command |
|
|
42
|
+
| `/issues-from-assessment` | `skills/issues-from-assessment/SKILL.md` | worker | Convert a `/cd-test-architecture` assessment into a parent + Phase-tagged child issues via the tracker CLI resolved from the parent URL host (gh / az / glab / acli). Falls back to local plan files when no URL is given or the CLI is missing |
|
|
43
|
+
| `/issues-from-plan` | `skills/issues-from-plan/SKILL.md` | orchestrator | Break a plan into independently-grabbable GitHub issues |
|
|
44
|
+
| `/orchestration-benchmark` | `skills/orchestration-benchmark/SKILL.md` | orchestrator | Pre-registered 3-arm solo-vs-orchestration A/B benchmark at matched verification rigor; reports per-class medians + spread, the mandatory mechanism check, and the delegation crossover threshold |
|
|
45
|
+
| `/plan` | `skills/plan/SKILL.md` | orchestrator | Decompose a feature into vertical slices — each with its Gherkin scenarios and TDD steps; persists slice Gherkin to `.feature` files when the project has a BDD convention |
|
|
46
|
+
| `/pr` | `skills/pr/SKILL.md` | orchestrator | Run quality gates and create a pull request (enables auto-merge by default) |
|
|
47
|
+
| `/project-init` | `skills/project-init/SKILL.md` | worker | Get a repo ready for the dev-team toolchain: detect the stack (JS/TS, Python, C#, Java), inventory existing tools, confirm a three-column plan, install only what's missing repo-level; full JS scaffold for greenfield JS; also offers detection-gated capability tools (semgrep, Playwright, adr, gh, docker scanners) and the opt-in all-or-none code-lookup group (CodeGraph — user-level only, never committed; Repowise — local keyless index + MCP server; graphify — repo-level native integration with a CLAUDE.md corruption guard) |
|
|
48
|
+
| `/property-based-testing` | `skills/property-based-testing/SKILL.md` | worker | Generate a runnable property-based test for a target function — a round-trip test for an encode/decode pair, or an invariant test for a documented postcondition ("returns sorted", "is idempotent"); Hypothesis for Python, fast-check for JS/TS |
|
|
49
|
+
| `/quality-targets-converge` | `skills/quality-targets-converge/SKILL.md` | worker | Phase-8 of `/test-improve` — loop that picks the largest gap to the four quality targets (coverage / mutants / determinism / speed) and dispatches the smallest action to close it |
|
|
50
|
+
| `/report-pdf` | `skills/report-pdf/SKILL.md` | worker | Render a dev-team Markdown report (any `.dev-team-reports/*.md` or `reports/*.md`) to a styled, shareable PDF via the shared `report_pdf.py` module; graceful engine fallback (pandoc + headless Chrome → weasyprint → wkhtmltopdf → md-to-pdf), skips with an install hint when no engine is present |
|
|
51
|
+
| `/repo-review` | `skills/repo-review/SKILL.md` | orchestrator | Whole-repository drift review for `token-efficiency-review`, `ai-provenance-review`, `claude-setup-review`, and `component-architecture-review` — agents whose findings are properties of accumulated drift or the full codebase, not any single diff, so they were removed from `/code-review`'s per-diff panel (#1733) and run here instead, on demand. Report-only — never gates a commit |
|
|
52
|
+
| `/review` | `skills/review/SKILL.md` | orchestrator | Alias for `/code-review` — same arguments, same behavior |
|
|
53
|
+
| `/review-agent` | `skills/review-agent/SKILL.md` | worker | Run a single review agent (used for inline checkpoints) |
|
|
54
|
+
| `/review-summary` | `skills/review-summary/SKILL.md` | orchestrator | Generate compact session summary for context continuity |
|
|
55
|
+
| `/run-report` | `skills/run-report/SKILL.md` | worker | Report one orchestrated run's timeline joined from `boundary-events.jsonl`, `cost-metering.jsonl`, and `workflow-states.jsonl` for a given `session_id` (default: most recent) — per-state dwell time, rejection count, hook denials/bypasses by cause, and best-effort cost |
|
|
56
|
+
| `/semantic-scan` | `skills/semantic-scan/SKILL.md` | worker | Build computation register and detect semantic duplicates across architectural layers |
|
|
57
|
+
| `/semgrep-analyze` | `skills/semgrep-analyze/SKILL.md` | worker | Run Semgrep SAST and return structured findings |
|
|
58
|
+
| `/session-review` | `skills/session-review/SKILL.md` | orchestrator | Mine real session transcripts (via the deterministic `session_report.py --profile maintainer`) and dispatch `session-analysis` to suggest token/rework/accuracy improvements; suggests, never auto-applies |
|
|
59
|
+
| `/setup` | `skills/setup/SKILL.md` | orchestrator | Provision a repo for the dev-team plugin end to end: install plugin prerequisites (jq, python3, per-language mutation tooling — Stryker, pitest, Stryker.NET), then generate dev-team-specific project config (CLAUDE.md, PostToolUse formatting hook, agent template activation, generated `/pr` command) from the stack signal `/project-init` establishes; invokes `/project-init` for all stack detection/toolchain install |
|
|
60
|
+
| `/ship` | `skills/ship/SKILL.md` | orchestrator | Run the full spec→plan→build (Code-First Small Batches)→code-review→PR(auto-merge) pipeline as one command, pausing at the existing human gates |
|
|
61
|
+
| `/source-verification` | `skills/source-verification/SKILL.md` | worker | Extract and verify factual claims in generated content against this repo's own code and, where needed, external sources — flags each claim verified/contradicted/unverifiable, never silently drops or defaults one to "verified" |
|
|
62
|
+
| `/telemetry` | `skills/telemetry/SKILL.md` | worker | Manage and report the opt-in, privacy-clean usage telemetry beacon (on/off/status/report) |
|
|
63
|
+
| `/test-audit-disable` | `skills/test-audit-disable/SKILL.md` | worker | Standalone worker — detect tests that cannot fail (no assertions, tautologies, self-equality, swallowed exceptions) and disable each by skip-and-tag with the reason; never deletes. Not part of the current `/test-improve` orchestrator flow |
|
|
64
|
+
| `/test-design` | `skills/test-design/SKILL.md` | orchestrator | Deep test-design review: dispatch test-review + test-smell-review, score all existing tests (Farley Score), then run test-design-advisor for testability/refactor recommendations (advisory) |
|
|
65
|
+
| `/test-health` | `skills/test-health/SKILL.md` | orchestrator | Project-wide test-strategy audit: shape vs. architecture fit, quadrant coverage, flaky/automation maturity, ordered plan. Runs `/test-design` (Farley Score + smell themes) and `mutation-testing` and folds their results in; delegates pipeline assessment to cd-test-architecture (advisory) |
|
|
66
|
+
| `/test-improve` | `skills/test-improve/SKILL.md` | orchestrator | Consolidated analyze-then-improve test orchestrator — 10 phases (0-9): Phase-0 approach contract → coverage + mutation baseline → optional `/gherkin-derive` → `/test-health` analyze → `/issues-from-assessment` plan fixes → `/build` + `/coverage-delta --workflow test-improve` + `mutation-kill` per Story (no-refactor) → refactor decision → optional refactor-for-testability → `/quality-targets-converge` → 10-section executive-summary report. Defaults to lightweight ceremony; opts into heavier capabilities only when the operator asks; Go-aware (mutation advisory); local-first with `--parent <url>` opt-in for tracker sinks |
|
|
67
|
+
| `/triage` | `skills/triage/SKILL.md` | worker | Investigate a bug and write a triage record to `.dev-team-reports/triage/<slug>.md` with a TDD fix plan |
|
|
68
|
+
| `/unfreeze` | `skills/unfreeze/SKILL.md` | worker | Lift the scope lock set by `/freeze` |
|
|
69
|
+
| `/upgrade` | `skills/upgrade/SKILL.md` | worker | Check for and apply plugin updates from within a session |
|
|
70
|
+
| `/version` | `skills/version/SKILL.md` | worker | Report the installed plugin version |
|
|
71
|
+
|
|
72
|
+
Referenced from: `plugins/dev-team/CLAUDE.md` → Skills Registry
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Task Size Classifier
|
|
2
|
+
|
|
3
|
+
Objective task-size signal that feeds the `trivial | standard | complex` vocabulary
|
|
4
|
+
used by `/plan` (step 5a tier), `/build` (per-step review depth), and the
|
|
5
|
+
orchestrator's no-plan fast path. **Never re-classify using a fresh LLM judgement** —
|
|
6
|
+
derive the tier from the objective signals below.
|
|
7
|
+
|
|
8
|
+
Calibrated from `docs/experiments/agentic-workflow-evidence/data/3sizes-3arms-summary.json`.
|
|
9
|
+
Routing rationale: Rec 2 of `docs/experiments/RECOMMENDATIONS.md` — the full
|
|
10
|
+
pipeline's cost premium shrinks as tasks grow (4.74× small, 2.57× medium,
|
|
11
|
+
1.33× large), so small, well-specified work routes to direct single-agent
|
|
12
|
+
dispatch and the pipeline is reserved for large, multi-file work.
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
Collect these signals before classifying. When a signal is unavailable (e.g. no
|
|
17
|
+
plan yet exists), omit it and classify conservatively.
|
|
18
|
+
|
|
19
|
+
| Signal | How to obtain |
|
|
20
|
+
|--------|---------------|
|
|
21
|
+
| `files_changed` | `git diff --name-only HEAD` or the plan's slice file lists (deduplicated) |
|
|
22
|
+
| `loc_delta` | `git diff --stat HEAD \| awk '/files? changed/ {print $4+$6}'` — net insertions + deletions |
|
|
23
|
+
| `slice_count` | `plan-waves.sh` JSON `.slices \| length` — or 1 when no plan exists |
|
|
24
|
+
| `wave_count` | `plan-waves.sh` JSON `.waves \| length` — or 1 when no plan exists |
|
|
25
|
+
| `has_complex_step` | Any step in the plan with `**Complexity**: complex` |
|
|
26
|
+
| `decision_axis_triggered` | Any high-reversal-cost axis in `knowledge/decision-defaults.md` raised by this task (checked during discovery) |
|
|
27
|
+
| `single_module` | True when every changed file (from the plan's slice file lists, or `git diff --name-only HEAD`) lives in one module — a single top-level source directory/package plus its test mirror. False when files span modules or the file set is unknown. |
|
|
28
|
+
|
|
29
|
+
## Classification Rules
|
|
30
|
+
|
|
31
|
+
Apply in order; the first match wins.
|
|
32
|
+
|
|
33
|
+
### Trivial (no-plan fast path eligible)
|
|
34
|
+
|
|
35
|
+
**ALL** of the following must hold:
|
|
36
|
+
|
|
37
|
+
- `files_changed` ≤ 1
|
|
38
|
+
- `loc_delta` ≤ 50
|
|
39
|
+
- `slice_count` ≤ 1
|
|
40
|
+
- `wave_count` ≤ 1
|
|
41
|
+
- `has_complex_step` = false
|
|
42
|
+
- `decision_axis_triggered` = false ← decision-axis guardrail: never skips plan for high-reversal-cost work
|
|
43
|
+
|
|
44
|
+
Expected saving vs full pipeline: ~65% fewer turns, ~45% lower cost (small-kata data; see calibration file).
|
|
45
|
+
|
|
46
|
+
### Complex
|
|
47
|
+
|
|
48
|
+
**ANY** of the following:
|
|
49
|
+
|
|
50
|
+
- `files_changed` ≥ 6
|
|
51
|
+
- `loc_delta` ≥ 300
|
|
52
|
+
- `wave_count` ≥ 2
|
|
53
|
+
- `has_complex_step` = true
|
|
54
|
+
- `decision_axis_triggered` = true
|
|
55
|
+
- Security-sensitive or cross-cutting concern (cross-module invariant, auth, data schema)
|
|
56
|
+
|
|
57
|
+
### Standard
|
|
58
|
+
|
|
59
|
+
Everything between trivial and complex.
|
|
60
|
+
|
|
61
|
+
## Route (1:1 with classification — this file is the single source of truth)
|
|
62
|
+
|
|
63
|
+
| Classification | Route |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `trivial` | No-plan fast path |
|
|
66
|
+
| `standard`, **fast-path eligible** (below) | No-plan fast path |
|
|
67
|
+
| `standard`, otherwise | Full three-phase workflow |
|
|
68
|
+
| `complex` | Full three-phase workflow |
|
|
69
|
+
|
|
70
|
+
**Fast-path eligibility for `standard`** (Rec 2): a well-specified
|
|
71
|
+
single-module `standard` task routes to the no-plan fast path when **ALL** of
|
|
72
|
+
the following hold:
|
|
73
|
+
|
|
74
|
+
- `single_module` = true
|
|
75
|
+
- `slice_count` ≤ 1
|
|
76
|
+
- `has_complex_step` = false
|
|
77
|
+
- `decision_axis_triggered` = false ← decision-axis guardrail: a triggered axis always excludes the fast path
|
|
78
|
+
|
|
79
|
+
Any exclusion failing — files spanning modules, more than one slice, any
|
|
80
|
+
`complex` step, or any triggered decision axis — sends the task to the full
|
|
81
|
+
three-phase workflow. When `single_module` cannot be determined, treat it as
|
|
82
|
+
false (bias rule below).
|
|
83
|
+
|
|
84
|
+
## Bias rule
|
|
85
|
+
|
|
86
|
+
When signals are ambiguous or a signal is missing, **classify up** (standard rather
|
|
87
|
+
than trivial, complex rather than standard). The fast path is an optimisation — the
|
|
88
|
+
cost of a false-trivial (wrong route, rework) is higher than the cost of a false-standard
|
|
89
|
+
(unnecessary planning).
|
|
90
|
+
|
|
91
|
+
## Decision log entry
|
|
92
|
+
|
|
93
|
+
After classifying, append to `.claude/memory/decisions.md`:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
**ID**: DEC-<date>-SIZE
|
|
97
|
+
**Date**: <date>
|
|
98
|
+
**Agent**: orchestrator
|
|
99
|
+
**Task**: <task slug>
|
|
100
|
+
**Decision**: Classified as <trivial|standard|complex> → route <fast path|full workflow>
|
|
101
|
+
**Inputs**: files_changed=<N>, loc_delta=<N>, slice_count=<N>, wave_count=<N>, has_complex_step=<bool>, decision_axis_triggered=<bool>, single_module=<bool>
|
|
102
|
+
**Rationale**: <which rule fired>
|
|
103
|
+
```
|