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,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apply-fixes
|
|
3
|
+
description: >-
|
|
4
|
+
Apply correction prompts generated by /code-review. Use this whenever the
|
|
5
|
+
user wants to apply, fix, or action the results of a code review — phrases
|
|
6
|
+
like "apply the fixes", "fix the issues", "apply corrections", or after
|
|
7
|
+
/code-review has run and produced a corrections/ directory.
|
|
8
|
+
argument-hint: "<corrections-dir> [--dry] [--skip-tests] [--skip-build] [--skip-lint]"
|
|
9
|
+
user-invocable: true
|
|
10
|
+
allowed-tools: Read, Edit, Grep, Glob, Bash(git diff *, npm run *, npx *, yarn *, pnpm *)
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Apply Fixes
|
|
14
|
+
|
|
15
|
+
Role: implementation. This skill modifies code — it receives correction prompts and applies minimal fixes.
|
|
16
|
+
|
|
17
|
+
You have been invoked with the `/apply-fixes` skill. Load correction prompt JSON files and apply each fix.
|
|
18
|
+
|
|
19
|
+
## Implementation constraints
|
|
20
|
+
|
|
21
|
+
1. **Apply the minimal fix.** Do not refactor, reorganize, or
|
|
22
|
+
improve beyond what the correction prompt instructs.
|
|
23
|
+
2. **Validate after each fix.** Run lint/build/tests unless skipped.
|
|
24
|
+
If validation fails, report and move on — do not attempt
|
|
25
|
+
cascading fixes.
|
|
26
|
+
3. **Follow repository rules.** Read CLAUDE.md, .clinerules,
|
|
27
|
+
CONTRIBUTING.md before applying fixes.
|
|
28
|
+
4. **One concern per fix.** Each correction prompt addresses one
|
|
29
|
+
issue. Do not combine or reorder fixes.
|
|
30
|
+
5. **Be concise.** Report results in the summary table format. No
|
|
31
|
+
narration of each step — just the outcome.
|
|
32
|
+
|
|
33
|
+
## Parse Arguments
|
|
34
|
+
|
|
35
|
+
Arguments: $ARGUMENTS
|
|
36
|
+
|
|
37
|
+
Required: path to directory containing correction prompt JSON files (`$0`)
|
|
38
|
+
|
|
39
|
+
Optional:
|
|
40
|
+
|
|
41
|
+
- `--repo <path>`: Target repository path (default: current working directory)
|
|
42
|
+
- `--skip-tests`: Skip running tests after each fix
|
|
43
|
+
- `--skip-build`: Skip running build after each fix
|
|
44
|
+
- `--skip-lint`: Skip running lint after each fix
|
|
45
|
+
- `--dry`: Preview what would be applied without making changes
|
|
46
|
+
- `--verbose`: Show detailed output
|
|
47
|
+
|
|
48
|
+
## Steps
|
|
49
|
+
|
|
50
|
+
### 1. Load repository rules
|
|
51
|
+
|
|
52
|
+
Detect and read rules from the target repository:
|
|
53
|
+
|
|
54
|
+
- `CLAUDE.md`
|
|
55
|
+
- `.clinerules`
|
|
56
|
+
- `.claude/rules/index.md`
|
|
57
|
+
- `CONTRIBUTING.md`
|
|
58
|
+
|
|
59
|
+
These rules inform how fixes should be applied.
|
|
60
|
+
|
|
61
|
+
### 2. Load correction prompts
|
|
62
|
+
|
|
63
|
+
Read all `.json` files from the specified directory, sorted
|
|
64
|
+
alphabetically. Each file contains:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"priority": "high|medium|low",
|
|
69
|
+
"confidence": "high|medium",
|
|
70
|
+
"category": "<agent-name>",
|
|
71
|
+
"instruction": "<what to fix>",
|
|
72
|
+
"context": "<where>",
|
|
73
|
+
"affectedFiles": ["<path>"]
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Note: correction prompts are only generated for issues with
|
|
78
|
+
`confidence: high` or `confidence: medium`. Issues with
|
|
79
|
+
`confidence: none` are surfaced in the review report only and
|
|
80
|
+
do not produce correction prompt files.
|
|
81
|
+
|
|
82
|
+
### 3. Apply each fix by confidence tier
|
|
83
|
+
|
|
84
|
+
Copy this checklist and track progress:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
- [ ] Correction prompts loaded
|
|
88
|
+
- [ ] Fixes sorted by priority then confidence
|
|
89
|
+
- [ ] High-confidence fixes applied automatically
|
|
90
|
+
- [ ] Medium-confidence fixes confirmed and applied
|
|
91
|
+
- [ ] Validation complete
|
|
92
|
+
- [ ] Summary generated
|
|
93
|
+
- [ ] Applied prompts moved to completed/
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For each prompt, sorted by priority (high first), then by
|
|
97
|
+
confidence (high before medium):
|
|
98
|
+
|
|
99
|
+
**Check blast radius before editing.** Prefer CodeGraph/Repowise over raw
|
|
100
|
+
`Grep` on the affected symbol/file before applying the fix, to see what else
|
|
101
|
+
depends on it. See
|
|
102
|
+
[`knowledge/codegraph-vs-graphify.md`](../../knowledge/codegraph-vs-graphify.md)
|
|
103
|
+
for tool selection and the fallback contract.
|
|
104
|
+
|
|
105
|
+
**`confidence: high` — auto-apply:**
|
|
106
|
+
|
|
107
|
+
1. Read the affected file(s)
|
|
108
|
+
2. Apply the minimal fix described in the instruction
|
|
109
|
+
3. Follow all repository rules and coding conventions
|
|
110
|
+
4. Do not change anything beyond what the instruction requires
|
|
111
|
+
|
|
112
|
+
**`confidence: medium` — confirm before applying:**
|
|
113
|
+
|
|
114
|
+
1. Display the suggested diff to the user:
|
|
115
|
+
```
|
|
116
|
+
[medium confidence] <category>: <instruction>
|
|
117
|
+
File: <context>
|
|
118
|
+
Suggested fix: <suggestedFix>
|
|
119
|
+
Apply? (y/n/skip)
|
|
120
|
+
```
|
|
121
|
+
2. If approved, apply the fix
|
|
122
|
+
3. If declined or skipped, record as "skipped by user" in the summary
|
|
123
|
+
|
|
124
|
+
If running non-interactively (e.g., in CI), treat `medium`
|
|
125
|
+
confidence the same as `high` (auto-apply).
|
|
126
|
+
|
|
127
|
+
### 4. Validate after each fix
|
|
128
|
+
|
|
129
|
+
Unless skipped, run after each fix:
|
|
130
|
+
|
|
131
|
+
1. **Lint** — run the project's lint command
|
|
132
|
+
2. **Build** — run the project's build command
|
|
133
|
+
3. **Tests** — run the project's test command
|
|
134
|
+
|
|
135
|
+
If validation fails, read `${CLAUDE_PLUGIN_ROOT}/knowledge/failure-routing.md` and classify the failing output/exit code by its regex table — deterministic pattern match only, no LLM call. This skill has neither `Agent` nor `Skill` in `allowed-tools`, so a non-inline route (test-generation, security-engineer, human arbitration) is never dispatched — **annotate only**: report the failure's class and recommended route in the Fix Summary (e.g. "security-finding — route to security-engineer via orchestrator") and continue to the next fix. `unclassified` failures report exactly as before, with no added text.
|
|
136
|
+
|
|
137
|
+
### 5. Track and report
|
|
138
|
+
|
|
139
|
+
After completing all fixes, display a summary:
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
Fix Summary
|
|
143
|
+
===========
|
|
144
|
+
Total: N | Applied: N | Skipped: N | Failed: N | Validation Failed: N
|
|
145
|
+
|
|
146
|
+
--- APPLIED (high confidence) ---
|
|
147
|
+
[category] instruction (files)
|
|
148
|
+
|
|
149
|
+
--- APPLIED (medium confidence, confirmed) ---
|
|
150
|
+
[category] instruction (files)
|
|
151
|
+
|
|
152
|
+
--- SKIPPED (medium confidence, declined) ---
|
|
153
|
+
[category] instruction (reason)
|
|
154
|
+
|
|
155
|
+
--- FAILED ---
|
|
156
|
+
[category] instruction (reason) [class: <failure-class>, route: <recommended route>]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
The `[class: ..., route: ...]` tag is present only when validation failed and the failure matched a signature in `failure-routing.md`; an `unclassified` failure omits the tag, matching prior output exactly.
|
|
160
|
+
|
|
161
|
+
Move successfully applied prompt files to a `completed/` subdirectory.
|
|
162
|
+
|
|
163
|
+
### 6. Suggest alternatives
|
|
164
|
+
|
|
165
|
+
For structural issues (long functions, duplication, deep nesting,
|
|
166
|
+
unclear names), the
|
|
167
|
+
[refactoring](https://github.com/elifiner/refactoring) plugin provides
|
|
168
|
+
incremental, verified refactorings one at a time — better suited for
|
|
169
|
+
complex structural changes than batch correction prompts.
|
|
170
|
+
Install it with `claude plugin install refactoring@refactoring` (or the
|
|
171
|
+
`marketplace-dev` plugin's `/add-plugin refactoring@refactoring --repo elifiner/refactoring`).
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apply-test-doubles
|
|
3
|
+
description: >-
|
|
4
|
+
Apply `/cd-test-architecture`'s Step 4b build-vs-document decision logic
|
|
5
|
+
against an existing, saved assessment report — or, when no valid report
|
|
6
|
+
path is given, against a target to assess first — without re-running the
|
|
7
|
+
full Steps 0-6 assessment each time. Use when the user wants to revisit
|
|
8
|
+
or change a component's Build/Document choice from a saved
|
|
9
|
+
cd-test-architecture report, says "apply the test doubles", "re-run
|
|
10
|
+
Step 4b", "change the build-vs-document decision", or cites the
|
|
11
|
+
`/apply-test-doubles <path>` command from a test-double setup guide.
|
|
12
|
+
argument-hint: "[<report-path-or-target>] [--component <name>] [--yes]"
|
|
13
|
+
role: worker
|
|
14
|
+
user-invocable: true
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Apply Test Doubles
|
|
18
|
+
|
|
19
|
+
Role: worker. Applies `../cd-test-architecture/SKILL.md`'s Step 4b
|
|
20
|
+
build-vs-document decision logic against a resolved report — one already
|
|
21
|
+
saved on disk, or a fresh one produced by assessing a target — without
|
|
22
|
+
re-running the full Steps 0-6 assessment when a valid report already
|
|
23
|
+
exists.
|
|
24
|
+
|
|
25
|
+
You have been invoked with the `/apply-test-doubles` command.
|
|
26
|
+
|
|
27
|
+
## Parse Arguments
|
|
28
|
+
|
|
29
|
+
Arguments: an optional positional `<report-path-or-target>`, an optional
|
|
30
|
+
`--component <name>`, and an optional `--yes`.
|
|
31
|
+
|
|
32
|
+
- `<report-path-or-target>` — a path to a previously saved
|
|
33
|
+
`/cd-test-architecture` report, or a target application/repo path to
|
|
34
|
+
assess when no such report exists yet. May be omitted entirely — see the
|
|
35
|
+
absent-path row below.
|
|
36
|
+
- `--yes` — run non-interactively: this step's own re-entrant Step 4b
|
|
37
|
+
prompt (Step 2) is skipped, per `human-oversight-protocol`'s `--yes` /
|
|
38
|
+
`DEV_TEAM_AUTO_APPROVE=1` / no-TTY convention — see Step 2 for the exact
|
|
39
|
+
per-component behavior.
|
|
40
|
+
- `--component <name>` — scope processing to one named component. Applied
|
|
41
|
+
as a post-hoc filter over the resolved report's already-existing rows,
|
|
42
|
+
identically on both paths — **never** forwarded as `cd-test-architecture`'s
|
|
43
|
+
own `--component` argument on the target path. A single-component-scoped
|
|
44
|
+
target-path assessment can legitimately produce no report **file** at all
|
|
45
|
+
(`cd-test-architecture`'s Output is `.dev-team-reports/cd-test-architecture-<app>.md`,
|
|
46
|
+
"or chat for a single component"), which would leave this skill's own
|
|
47
|
+
fast path with nothing to read — so the target-path self-invocation
|
|
48
|
+
always assesses the full target, and `--component` narrows the result
|
|
49
|
+
afterward, identically to the fast path.
|
|
50
|
+
|
|
51
|
+
## Steps
|
|
52
|
+
|
|
53
|
+
### 1. Resolve report or target
|
|
54
|
+
|
|
55
|
+
Every invocation resolves to exactly one **report** before anything else in
|
|
56
|
+
this skill runs — either an existing one read directly (the fast path), or
|
|
57
|
+
a fresh one produced by assessing a target (the target path). This is one
|
|
58
|
+
branch point, not two independently-described procedures: whichever state
|
|
59
|
+
below applies, resolution ends at the same "read the report" step.
|
|
60
|
+
|
|
61
|
+
**Resolution states:**
|
|
62
|
+
|
|
63
|
+
| `<report-path-or-target>` | Resolves to | Path |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| Absent | the current repo, passed to `/cd-test-architecture` as an explicit resolved cwd/repo path argument — never a bare invocation, which would trigger `cd-test-architecture`'s own interactive target prompt | target |
|
|
66
|
+
| Given, non-empty, resolves to no file or directory on disk | the given string, passed to `/cd-test-architecture` as its explicit target argument | target |
|
|
67
|
+
| Given, resolves to an existing directory | the given directory, passed to `/cd-test-architecture` as its explicit target argument — a directory is not a report; there is no file there to read | target |
|
|
68
|
+
| Given, resolves to an existing file | that file, checked against the structural validity check below | fast (if valid) / target (if not) |
|
|
69
|
+
|
|
70
|
+
**Target path.** Invoke `/cd-test-architecture` against the resolved target
|
|
71
|
+
(current repo / given string / given directory) — a full-target
|
|
72
|
+
assessment, never scoped by `--component` at invocation (see Parse
|
|
73
|
+
Arguments above for why) — always forwarding `--yes` so its own inline
|
|
74
|
+
Step 4b prompt never fires; this skill's own re-entrant Step 4b step (a
|
|
75
|
+
later step of this skill) is the sole place the operator is prompted, on
|
|
76
|
+
both paths uniformly. `cd-test-architecture`'s own error handling governs
|
|
77
|
+
an unresolvable target string; this skill does not duplicate that
|
|
78
|
+
validation. Resolve the fresh report at
|
|
79
|
+
`.dev-team-reports/cd-test-architecture-<app>.md`, per
|
|
80
|
+
`../cd-test-architecture/SKILL.md`'s own Output Path rule (cited, not
|
|
81
|
+
restated), then proceed through the fast path below exactly as an
|
|
82
|
+
existing report would — including the `--component <name>` filter,
|
|
83
|
+
applied post-hoc there.
|
|
84
|
+
|
|
85
|
+
**Structural validity check (existing-file case only).** A real
|
|
86
|
+
`cd-test-architecture` report carries three markers, checked together as
|
|
87
|
+
one cohesive procedure — not three independently-worded checks that could
|
|
88
|
+
drift out of sync with each other:
|
|
89
|
+
|
|
90
|
+
1. The `# CD Test Architecture` title line.
|
|
91
|
+
2. The `### Target architecture (per component)` heading — level 3, with
|
|
92
|
+
the `(per component)` suffix.
|
|
93
|
+
3. A `Build/Document status` column in that section's table.
|
|
94
|
+
|
|
95
|
+
All three present → the fast path: read that report's Target architecture
|
|
96
|
+
table directly, and do not invoke `/cd-test-architecture`. Missing any one
|
|
97
|
+
of the three takes the target path too, treating the file's path string as
|
|
98
|
+
a target to assess — not a malformed-report error.
|
|
99
|
+
|
|
100
|
+
**Fast path: locate the companion setup guide.** Locate the companion
|
|
101
|
+
setup-guide artifact
|
|
102
|
+
(`.dev-team-reports/cd-test-architecture-<app>-test-double-setup.md`,
|
|
103
|
+
#1436) via the resolved report's own `**Target**` header field — the
|
|
104
|
+
`<app>` value recorded in the report's content — never by the report
|
|
105
|
+
file's name on disk, so a renamed or relocated report still resolves its
|
|
106
|
+
companion file correctly. This intentionally differs from how
|
|
107
|
+
`cd-test-architecture` itself names the companion file at write time (from
|
|
108
|
+
the main report's own filename, per `../cd-test-architecture/SKILL.md`'s
|
|
109
|
+
Path rule): that skill always knows the filename it is about to give the
|
|
110
|
+
main report, so deriving from it is reliable; this skill instead reads a
|
|
111
|
+
report whose file may have been renamed or relocated since it was written,
|
|
112
|
+
so it cannot trust the on-disk filename and must recover `<app>` from
|
|
113
|
+
content instead. **Before interpolating `<app>` into a path, slugify it**
|
|
114
|
+
(strip or reject `/`, `\`, `..`, and a leading `~`) and confirm the
|
|
115
|
+
resulting path still resolves inside `.dev-team-reports/`; if it would
|
|
116
|
+
not, treat the companion file as not found (the non-error cases below)
|
|
117
|
+
rather than writing outside that directory. When no companion file is
|
|
118
|
+
found at the derived path, state plainly which of two non-error cases
|
|
119
|
+
applies:
|
|
120
|
+
|
|
121
|
+
- The resolved report's Target architecture table has zero
|
|
122
|
+
off-gate-eligible rows (no row with a non-blank `Build/Document status`
|
|
123
|
+
cell) — nothing was ever expected to be written for this report; take no
|
|
124
|
+
further action.
|
|
125
|
+
- The report has eligible rows but predates #1436 (no companion file was
|
|
126
|
+
ever written for it) — state this plainly, then create the setup-guide
|
|
127
|
+
artifact fresh at the derived path, exactly as `cd-test-architecture`
|
|
128
|
+
itself would on a first run.
|
|
129
|
+
|
|
130
|
+
### 2. Apply Step 4b's decision logic
|
|
131
|
+
|
|
132
|
+
This step is the **only** place a decision is made this invocation,
|
|
133
|
+
regardless of which path produced the resolved report:
|
|
134
|
+
|
|
135
|
+
- **Fast path** — Steps 0, 1, 2, 2b, 3, 3b, 4, 5, and 6 never ran at all
|
|
136
|
+
this invocation; the resolved report was already sitting on disk and was
|
|
137
|
+
read directly, including Step 4's own recommendations — this step reads
|
|
138
|
+
what Step 4 already concluded, it does not re-derive it.
|
|
139
|
+
- **Target path** — those same steps did run, as part of producing the
|
|
140
|
+
fresh report (the `/cd-test-architecture` self-invocation in Step 1
|
|
141
|
+
above), but their own inline Step 4b was a no-op — every row defaulted to
|
|
142
|
+
`Document-only` with no prompt — because Step 1 already forwards `--yes`.
|
|
143
|
+
This step is still the first and only place the operator is actually
|
|
144
|
+
prompted.
|
|
145
|
+
|
|
146
|
+
**Cite, don't restate — the one architecturally significant decision in
|
|
147
|
+
this skill, made explicit so it survives independent of any one plan
|
|
148
|
+
document.** Apply exactly the decision procedure in
|
|
149
|
+
`../cd-test-architecture/SKILL.md`'s `### 4b. Build-vs-document decision
|
|
150
|
+
(off-gate adapter test doubles)` heading — its Database-specific branch, its
|
|
151
|
+
Downstream-service branch, and that branch's library-vs-hand-rolled
|
|
152
|
+
sub-question — as the single source of the build-vs-document branching
|
|
153
|
+
rules. That procedure is not restated here. This citation was chosen over
|
|
154
|
+
physically relocating Step 4b's content into a shared file: Step 4b's
|
|
155
|
+
already-reviewed, multi-branch prose (its Database-specific branch,
|
|
156
|
+
Downstream-service branch, and their sub-question) would otherwise need
|
|
157
|
+
extracting into a new home touching every existing
|
|
158
|
+
`cd-test-architecture` test file, for a purely organizational move this
|
|
159
|
+
skill's actual scope doesn't require; citing it in place fully satisfies
|
|
160
|
+
"don't duplicate the branching rules" without that blast radius.
|
|
161
|
+
|
|
162
|
+
**Off-gate-eligibility parsing rule — cited from `cd-test-architecture`'s
|
|
163
|
+
own Output section, not independently derived.** `../cd-test-architecture/SKILL.md`'s
|
|
164
|
+
Target architecture table documentation states that a row's
|
|
165
|
+
`Build/Document status` cell is set to one of the three enum values only
|
|
166
|
+
for a row Step 4 flagged as needing an off-gate adapter test double; an
|
|
167
|
+
unflagged row carries no value in that cell at all. A component is
|
|
168
|
+
therefore off-gate-eligible **iff** it has at least one Target
|
|
169
|
+
architecture row with a non-blank `Build/Document status` cell — this
|
|
170
|
+
skill cites that blank-vs-set convention rather than asserting it as an
|
|
171
|
+
independent rule.
|
|
172
|
+
|
|
173
|
+
**Every eligible component is re-offered, regardless of prior status.**
|
|
174
|
+
Every off-gate-eligible component is re-offered this decision on every run,
|
|
175
|
+
regardless of its currently-recorded `Build/Document status` — including a
|
|
176
|
+
component already resolved to `Build (testcontainers)` or `Build (Fake)` —
|
|
177
|
+
so the operator may change a prior decision.
|
|
178
|
+
|
|
179
|
+
**`--component <name>` scoping.** When `--component <name>` was given and it
|
|
180
|
+
matches an off-gate-eligible component (per the parsing rule above), only
|
|
181
|
+
that component's row resolves through this decision — no other component's
|
|
182
|
+
row is touched. When no `--component` was given, every off-gate-eligible
|
|
183
|
+
component in the resolved report is processed in one batched pass, mirroring
|
|
184
|
+
Step 4b's own batching rule (cited, not restated).
|
|
185
|
+
|
|
186
|
+
**Unmatched or non-eligible `--component <name>`.** Two distinct cases, both
|
|
187
|
+
stated by the exact name given, with no action taken — never a fuzzy or
|
|
188
|
+
nearest-match substitution:
|
|
189
|
+
|
|
190
|
+
1. `<name>` does not appear anywhere in the resolved report's Target
|
|
191
|
+
architecture table — state that `<name>` was not found in the resolved
|
|
192
|
+
report, and take no further action.
|
|
193
|
+
2. `<name>` appears in the report but has no Target architecture row with a
|
|
194
|
+
non-blank `Build/Document status` cell — state that `<name>` has no
|
|
195
|
+
build-vs-document decision to apply, and take no further action.
|
|
196
|
+
|
|
197
|
+
**Zero eligible components.** Same family of outcome as the two cases above,
|
|
198
|
+
just with no `--component` name to name: when the batched pass (no
|
|
199
|
+
`--component`) or the named lookup (`--component <name>`, once past the
|
|
200
|
+
unmatched/non-eligible check above) finds no off-gate-eligible component,
|
|
201
|
+
state that there is nothing to apply and take no further action.
|
|
202
|
+
|
|
203
|
+
**Non-interactive behavior for this step's own prompt.** Per
|
|
204
|
+
`human-oversight-protocol`'s `--yes` / `DEV_TEAM_AUTO_APPROVE=1` / no-TTY
|
|
205
|
+
convention (the same convention `cd-test-architecture`'s own Step 4b
|
|
206
|
+
documents at its Parse Arguments section): under any of those conditions,
|
|
207
|
+
surface no prompt for this step either. A component with **no prior
|
|
208
|
+
recorded decision** defaults to `Document-only`, exactly mirroring what a
|
|
209
|
+
non-interactive `cd-test-architecture` run would have produced; a
|
|
210
|
+
component with an **existing recorded decision** is left exactly as
|
|
211
|
+
recorded, not silently re-resolved to `Document-only` — this step never
|
|
212
|
+
reports an outcome that contradicts what the report already says. Either
|
|
213
|
+
way, no Story is proposed and no report write-back happens (see Step 3)
|
|
214
|
+
for a component this run did not actually decide.
|
|
215
|
+
|
|
216
|
+
**Version-skew advisory (non-blocking).** Resolve the currently installed
|
|
217
|
+
plugin version with the same resolver `/version` already uses:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
sh "$CLAUDE_PLUGIN_ROOT/hooks/py.sh" "$CLAUDE_PLUGIN_ROOT/hooks/lib/plugin_version.py"
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
This prints one line on success, e.g. `dev-team@bfinster v10.4.0 (scope:
|
|
224
|
+
user)` — parse the version out of the token between `v` and ` (scope:`
|
|
225
|
+
(here, `10.4.0`). If the resolver instead exits non-zero (plugin not
|
|
226
|
+
installed, or the install record is missing/malformed), prints nothing, or
|
|
227
|
+
the parsed value is the literal `unknown` (its own fallback when the
|
|
228
|
+
version field is absent), emit no advisory and proceed silently — never
|
|
229
|
+
fabricate a comparison from a value the resolver itself couldn't resolve.
|
|
230
|
+
Otherwise, compare the resolved version against the resolved report's
|
|
231
|
+
Provenance `` `dev-team` plugin version `` field (exact field name and
|
|
232
|
+
formatting per `knowledge/report-template.md`'s Provenance section). If
|
|
233
|
+
they differ, emit one non-blocking advisory line naming both versions —
|
|
234
|
+
e.g. "this report was generated by dev-team vX.Y.Z; you're running
|
|
235
|
+
vA.B.C — Step 4b's decision logic may have changed since this report was
|
|
236
|
+
written." — before applying Step 4b's current logic, then proceed
|
|
237
|
+
unchanged. This never blocks or alters the decision logic itself.
|
|
238
|
+
|
|
239
|
+
### 3. Dispatch
|
|
240
|
+
|
|
241
|
+
`cd-test-architecture` is advisory only (its own Constraints: "it proposes
|
|
242
|
+
a downstream Story, it never invokes `/build` or edits code directly") —
|
|
243
|
+
Step 4b's live invocation proposes a Story within its own report/chat
|
|
244
|
+
output (Step 6's only documented output channel), never as a separate
|
|
245
|
+
file. This step's dispatch mechanics match that exactly, plus one
|
|
246
|
+
write-back this skill's own premise requires that Step 4b's live
|
|
247
|
+
invocation has no reason to need:
|
|
248
|
+
|
|
249
|
+
1. **Write back the resolved report's `Build/Document status` cell** for
|
|
250
|
+
each component this run resolved, updating the on-disk report in place
|
|
251
|
+
so it reflects the new decision — matching the **full cell contract**
|
|
252
|
+
`../cd-test-architecture/SKILL.md`'s Output section defines (cited
|
|
253
|
+
above), not just the enum value: a `Build (Fake)` write carries that
|
|
254
|
+
branch's caveat verbatim in the same cell (the hand-rolled or
|
|
255
|
+
library-backed variant, per the Downstream-service branch, cited not
|
|
256
|
+
restated), and when the library-vs-hand-rolled sub-question resolves a
|
|
257
|
+
tool, the `Double (to run config-free)` column is updated to name it,
|
|
258
|
+
per the Output section's own tool-citation rule. A row reverting to
|
|
259
|
+
`Document-only` or `Build (testcontainers)`, or a `Build (Fake)` row
|
|
260
|
+
whose sub-question now resolves to hand-rolled, has any
|
|
261
|
+
previously-written caveat text removed from the status cell **and**
|
|
262
|
+
any previously-cited tool name removed from the `Double (to run
|
|
263
|
+
config-free)` column — both cells always reflect only the current
|
|
264
|
+
decision, never a stale one layered under it. Without this
|
|
265
|
+
write-back, the report and any Story proposed below would disagree
|
|
266
|
+
about what was just decided, and the next `/apply-test-doubles` run
|
|
267
|
+
against the same report would re-read the stale status. This
|
|
268
|
+
write-back is unique to this skill: Step 4b's live invocation writes
|
|
269
|
+
the cell once, at report-creation time, and never needs to revise it.
|
|
270
|
+
If the write fails (permission, read-only path), state that plainly
|
|
271
|
+
and surface the resolved decisions in chat instead — per
|
|
272
|
+
`knowledge/report-output-location.md`'s non-fatal-write convention,
|
|
273
|
+
never proceed as if the write succeeded. The report's own header and
|
|
274
|
+
Provenance block (`knowledge/report-template.md`) are deliberately
|
|
275
|
+
left untouched by this write-back — they continue to describe the
|
|
276
|
+
original assessment run, not this later revision; the version-skew
|
|
277
|
+
advisory (Step 2) compares against that same original-run Provenance
|
|
278
|
+
value on every subsequent invocation, which stays meaningful since a
|
|
279
|
+
write-back only ever changes a recorded outcome, never Step 4b's own
|
|
280
|
+
decision logic.
|
|
281
|
+
2. **For a component resolving to a Build outcome, propose a Story** —
|
|
282
|
+
rendered as output text, using exactly the title and description
|
|
283
|
+
conventions `../cd-test-architecture/SKILL.md`'s Database-specific
|
|
284
|
+
branch and Downstream-service branch already define (cited from Step
|
|
285
|
+
2's own citation above, not restated here). This is advisory only,
|
|
286
|
+
identical in kind to Step 4b's own live invocation — it never invokes
|
|
287
|
+
`/build` or writes a Story file itself.
|
|
288
|
+
3. **The setup-guide artifact (#1436)'s per-component *inclusion* is
|
|
289
|
+
independent of this decision; its *Classification* is not.**
|
|
290
|
+
`../cd-test-architecture/SKILL.md`'s Companion section states a
|
|
291
|
+
component's section is included regardless of whether the operator
|
|
292
|
+
chose Document-only for it (cited, not restated) — this step never
|
|
293
|
+
adds or removes a section on that basis. But that same section's
|
|
294
|
+
Classification is keyed to the resolved Build variant and, for a
|
|
295
|
+
Downstream-service `Build (Fake)` row, the library-vs-hand-rolled
|
|
296
|
+
sub-question's answer (cited from the Companion section's own
|
|
297
|
+
Classification rule, not restated) — both of which Step 2 explicitly
|
|
298
|
+
lets the operator change. When this run changes a component's
|
|
299
|
+
Classification (e.g. `Build (testcontainers)` ↔ `Build (Fake)`, or a
|
|
300
|
+
different library resolves than the guide currently records),
|
|
301
|
+
re-emit that component's setup-guide section per the Classification
|
|
302
|
+
rule so the guide never names a tool the report no longer
|
|
303
|
+
recommends. A component whose Classification is unchanged this run
|
|
304
|
+
has its setup-guide section left as-is.
|
|
305
|
+
4. **This proposed Story is advisory chat/report output only — there is
|
|
306
|
+
no automated materialization path today, the same as Step 4b's own
|
|
307
|
+
live invocation.** `../issues-from-assessment/SKILL.md` derives its
|
|
308
|
+
own Stories directly from the Target architecture table (one per
|
|
309
|
+
(component, layer), per its own Step 2), independent of the
|
|
310
|
+
Build/Document decision or this step's proposed Story text — it is
|
|
311
|
+
not a consumer of what this step just proposed, and this skill does
|
|
312
|
+
not invent a second materialization mechanism to bridge that gap. An
|
|
313
|
+
operator who wants this proposed Story tracked creates it themselves
|
|
314
|
+
from the proposed text, exactly as they would from a live
|
|
315
|
+
`cd-test-architecture` run.
|
|
316
|
+
|
|
317
|
+
**Single ready-to-run command.** Invocation is exactly `/apply-test-doubles
|
|
318
|
+
<path>` — `--component <name>` is the only other **scoping** argument
|
|
319
|
+
(`--yes`, per Parse Arguments, controls interactivity, not scope),
|
|
320
|
+
matching what #1436's setup-guide artifact already emits with the real
|
|
321
|
+
path filled in. No other argument is ever required.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: artifact-lifecycle
|
|
3
|
+
description: >-
|
|
4
|
+
Report on skill and agent usage data from ~/.claude/metrics/artifact-usage.json,
|
|
5
|
+
classifying each artifact as active, stale (>= 30 days unused), or an archive
|
|
6
|
+
candidate (>= 90 days unused). Proposes CLAUDE.md overrides for stale artifacts
|
|
7
|
+
and exclusions for archive candidates. Pinned skills are always exempt.
|
|
8
|
+
Use when the user asks to "review artifact lifecycle", "find stale skills",
|
|
9
|
+
or "/artifact-lifecycle".
|
|
10
|
+
user-invocable: true
|
|
11
|
+
allowed-tools: Read, Glob, Bash(date *), Write
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Artifact Lifecycle Management
|
|
15
|
+
|
|
16
|
+
Role: worker. Reads `~/.claude/metrics/artifact-usage.json`, classifies each tracked
|
|
17
|
+
artifact by recency, and proposes lifecycle transitions. **Never modifies files
|
|
18
|
+
under `plugins/dev-team/`** — changes land exclusively in the project `CLAUDE.md`.
|
|
19
|
+
|
|
20
|
+
You have been invoked with the `/artifact-lifecycle` command.
|
|
21
|
+
|
|
22
|
+
## Steps
|
|
23
|
+
|
|
24
|
+
### 1. Check for usage data
|
|
25
|
+
|
|
26
|
+
Read `~/.claude/metrics/artifact-usage.json` (home-scoped — never a project-scoped path).
|
|
27
|
+
|
|
28
|
+
If the file does not exist, output:
|
|
29
|
+
|
|
30
|
+
> No usage data available — enable telemetry to begin tracking (see /telemetry)
|
|
31
|
+
|
|
32
|
+
Then stop. Do not produce a report.
|
|
33
|
+
|
|
34
|
+
### 2. Load pinned skills
|
|
35
|
+
|
|
36
|
+
Read the project `CLAUDE.md` (or `.claude/CLAUDE.md`). Extract the list of skill
|
|
37
|
+
names under the `## Pinned Skills` section (if present). These names are exempt
|
|
38
|
+
from all lifecycle transitions regardless of `last_used_at`.
|
|
39
|
+
|
|
40
|
+
### 3. Classify artifacts
|
|
41
|
+
|
|
42
|
+
Get the current date:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
date -u +%Y-%m-%d
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For each entry in `~/.claude/metrics/artifact-usage.json`, compute `days_since_used` as the
|
|
49
|
+
number of calendar days between `last_used_at` and today:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
today=$(date -u +%s)
|
|
53
|
+
last=$(date -u -d "<last_used_at>" +%s 2>/dev/null \
|
|
54
|
+
|| python3 -c "import datetime; print(int(datetime.datetime.fromisoformat('<last_used_at>'.replace('Z','+00:00')).timestamp()))")
|
|
55
|
+
days_since_used=$(( (today - last) / 86400 ))
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Apply thresholds (both are inclusive):
|
|
59
|
+
|
|
60
|
+
| Threshold | Classification |
|
|
61
|
+
|-----------|----------------|
|
|
62
|
+
| `days_since_used < 30` | **active** |
|
|
63
|
+
| `days_since_used >= 30` and `< 90` | **stale** |
|
|
64
|
+
| `days_since_used >= 90` | **archive candidate** |
|
|
65
|
+
|
|
66
|
+
Skip any artifact whose name appears in the Pinned Skills list.
|
|
67
|
+
|
|
68
|
+
### 4. Produce report
|
|
69
|
+
|
|
70
|
+
#### All active
|
|
71
|
+
|
|
72
|
+
If every artifact has `days_since_used < 30` (and none are stale or archived):
|
|
73
|
+
|
|
74
|
+
> All tracked artifacts are active — no lifecycle changes needed.
|
|
75
|
+
|
|
76
|
+
Stop.
|
|
77
|
+
|
|
78
|
+
#### Stale and archive sections
|
|
79
|
+
|
|
80
|
+
Otherwise, produce a report with the following sections (only include sections
|
|
81
|
+
that have entries):
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
## Stale Skills (>= 30 days unused)
|
|
85
|
+
|
|
86
|
+
These skills have not been observed in telemetry for 30 or more days.
|
|
87
|
+
Proposal: add each to `## Disabled Skills` in CLAUDE.md to stop loading them
|
|
88
|
+
until re-enabled.
|
|
89
|
+
|
|
90
|
+
| Skill | Last used | Days since used |
|
|
91
|
+
|-------|-----------|----------------|
|
|
92
|
+
| <name> | <last_used_at> | <n> |
|
|
93
|
+
|
|
94
|
+
## Archive Candidates (>= 90 days unused)
|
|
95
|
+
|
|
96
|
+
These skills have not been observed for 90 or more days and are candidates for
|
|
97
|
+
permanent removal from the active set.
|
|
98
|
+
|
|
99
|
+
| Skill | Last used | Days since used |
|
|
100
|
+
|-------|-----------|----------------|
|
|
101
|
+
| <name> | <last_used_at> | <n> |
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5. Propose CLAUDE.md changes (interactive)
|
|
105
|
+
|
|
106
|
+
For each Stale Skill, offer to add it to the `## Disabled Skills` section in
|
|
107
|
+
the project `CLAUDE.md`. Show the proposed edit as a diff before applying.
|
|
108
|
+
|
|
109
|
+
Do **not** remove or modify any files under `plugins/dev-team/` (the plugin cache).
|
|
110
|
+
All writes go exclusively to the project `CLAUDE.md`.
|
|
111
|
+
|
|
112
|
+
For Archive Candidates, present the list for human decision — do not auto-apply.
|
|
113
|
+
|
|
114
|
+
### Pinned skills note
|
|
115
|
+
|
|
116
|
+
If any artifacts were skipped because they appear in `## Pinned Skills`, note
|
|
117
|
+
them separately:
|
|
118
|
+
|
|
119
|
+
> Pinned (excluded from all lifecycle transitions): <names>
|
|
120
|
+
|
|
121
|
+
## Constraints
|
|
122
|
+
|
|
123
|
+
- **Never delete or modify** files under `plugins/dev-team/` during or after execution.
|
|
124
|
+
All lifecycle changes land exclusively in the project `CLAUDE.md`.
|
|
125
|
+
- Report is advisory; no configuration change is applied without user approval.
|
|
126
|
+
- If `~/.claude/metrics/artifact-usage.json` contains entries with missing or unparseable
|
|
127
|
+
`last_used_at`, log a warning and skip those entries.
|