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.
Files changed (780) hide show
  1. package/LICENSE +21 -0
  2. package/PORTING.md +134 -0
  3. package/README.md +207 -0
  4. package/UPSTREAM.json +64 -0
  5. package/agents/Explore.md +15 -0
  6. package/agents/a11y-review.md +118 -0
  7. package/agents/adr-author.md +70 -0
  8. package/agents/ai-provenance-review.md +120 -0
  9. package/agents/angular-reactivity-review.md +95 -0
  10. package/agents/arch-review.md +135 -0
  11. package/agents/architect.md +78 -0
  12. package/agents/autoship-batch-proposer.md +69 -0
  13. package/agents/claude-setup-review.md +136 -0
  14. package/agents/codebase-recon.md +184 -0
  15. package/agents/component-architecture-review.md +119 -0
  16. package/agents/concurrency-review.md +109 -0
  17. package/agents/correctness-review.md +290 -0
  18. package/agents/data-flow-tracer.md +120 -0
  19. package/agents/doc-review.md +165 -0
  20. package/agents/domain-review.md +136 -0
  21. package/agents/general-purpose.md +10 -0
  22. package/agents/gherkin-quality-critic.md +113 -0
  23. package/agents/js-fp-review.md +114 -0
  24. package/agents/mutation-kill.md +684 -0
  25. package/agents/naming-review.md +142 -0
  26. package/agents/orchestrator.md +339 -0
  27. package/agents/performance-review.md +105 -0
  28. package/agents/plan-review-acceptance.md +115 -0
  29. package/agents/plan-review-design.md +90 -0
  30. package/agents/plan-review-parallelization.md +84 -0
  31. package/agents/plan-review-strategic.md +96 -0
  32. package/agents/plan-review-ux.md +110 -0
  33. package/agents/platform-engineer.md +64 -0
  34. package/agents/product-manager.md +68 -0
  35. package/agents/progress-guardian.md +79 -0
  36. package/agents/qa-engineer.md +289 -0
  37. package/agents/quality-reviewer.md +132 -0
  38. package/agents/react-reactivity-review.md +102 -0
  39. package/agents/refactor-opportunity-review.md +128 -0
  40. package/agents/security-engineer.md +60 -0
  41. package/agents/security-review.md +218 -0
  42. package/agents/session-analysis.md +95 -0
  43. package/agents/software-engineer.md +105 -0
  44. package/agents/spec-compliance-review.md +100 -0
  45. package/agents/spec-reviewer.md +114 -0
  46. package/agents/structure-review.md +146 -0
  47. package/agents/tech-writer.md +84 -0
  48. package/agents/test-review.md +246 -0
  49. package/agents/test-smell-review.md +188 -0
  50. package/agents/token-efficiency-review.md +139 -0
  51. package/agents/ui-ux-designer.md +54 -0
  52. package/agents/vue-reactivity-review.md +95 -0
  53. package/bin/__pycache__/claudecpython-314.pyc +0 -0
  54. package/bin/claude +258 -0
  55. package/docs/upstream/.pages +1 -0
  56. package/docs/upstream/CHANGELOG.md +2586 -0
  57. package/docs/upstream/README.md +155 -0
  58. package/docs/upstream/agent-architecture.md +214 -0
  59. package/docs/upstream/agent_info.md +187 -0
  60. package/docs/upstream/artifact-migration.md +124 -0
  61. package/docs/upstream/code-intelligence-nudge.md +149 -0
  62. package/docs/upstream/code-review-process.md +294 -0
  63. package/docs/upstream/concurrent-use.md +73 -0
  64. package/docs/upstream/context-management.md +111 -0
  65. package/docs/upstream/developer-notes.md +280 -0
  66. package/docs/upstream/diagrams/architecture-overview.svg +101 -0
  67. package/docs/upstream/diagrams/review-dispatch.svg +139 -0
  68. package/docs/upstream/diagrams/team-agents.svg +128 -0
  69. package/docs/upstream/diagrams/test-improve-flow.svg +166 -0
  70. package/docs/upstream/diagrams/workflow-linear.svg +66 -0
  71. package/docs/upstream/diagrams/workflow-three-phase.svg +200 -0
  72. package/docs/upstream/eval-maintenance.md +95 -0
  73. package/docs/upstream/eval-running-guide.md +147 -0
  74. package/docs/upstream/eval-system.md +291 -0
  75. package/docs/upstream/session-review-oss-complements.md +75 -0
  76. package/docs/upstream/session-review.md +212 -0
  77. package/docs/upstream/skills.md +188 -0
  78. package/docs/upstream/team-structure.md +21 -0
  79. package/docs/upstream/telemetry-ci-access.md +129 -0
  80. package/docs/upstream/telemetry-repo-security.md +120 -0
  81. package/docs/upstream/test-evaluation.md +277 -0
  82. package/docs/upstream/test-improve.md +154 -0
  83. package/docs/upstream/triage-workflow.md +282 -0
  84. package/docs/upstream/workflows.md +289 -0
  85. package/extensions/dev-team/index.ts +539 -0
  86. package/extensions/dev-team/lib/agents.ts +272 -0
  87. package/extensions/dev-team/lib/ai-credits.ts +92 -0
  88. package/extensions/dev-team/lib/autocompact.ts +81 -0
  89. package/extensions/dev-team/lib/child-run.ts +102 -0
  90. package/extensions/dev-team/lib/config.ts +236 -0
  91. package/extensions/dev-team/lib/gh-command.ts +103 -0
  92. package/extensions/dev-team/lib/github-style.ts +307 -0
  93. package/extensions/dev-team/lib/hooks.ts +350 -0
  94. package/extensions/dev-team/lib/metrics.ts +115 -0
  95. package/extensions/dev-team/lib/safe-read.ts +49 -0
  96. package/extensions/dev-team/lib/session-files.ts +57 -0
  97. package/extensions/dev-team/lib/session-spend.ts +123 -0
  98. package/extensions/dev-team/lib/shell-scan.ts +205 -0
  99. package/extensions/dev-team/lib/skills.ts +213 -0
  100. package/extensions/dev-team/lib/subagent-render.ts +245 -0
  101. package/extensions/dev-team/lib/subagent-types.ts +164 -0
  102. package/extensions/dev-team/lib/subagent.ts +596 -0
  103. package/extensions/dev-team/lib/terminal-text.ts +54 -0
  104. package/extensions/dev-team/lib/tools-misc.ts +152 -0
  105. package/extensions/dev-team/lib/transcript.ts +110 -0
  106. package/extensions/dev-team/lib/trust.ts +52 -0
  107. package/extensions/dev-team/lib/usage-breakdown.ts +176 -0
  108. package/extensions/dev-team/lib/usage-chart.ts +153 -0
  109. package/extensions/dev-team/lib/usage-command.ts +107 -0
  110. package/extensions/dev-team/lib/usage-history.ts +203 -0
  111. package/extensions/dev-team/lib/usage-render.ts +225 -0
  112. package/extensions/dev-team/lib/usage-split-bar.ts +127 -0
  113. package/extensions/dev-team/lib/usage-state.ts +116 -0
  114. package/extensions/dev-team/lib/usage-text.ts +159 -0
  115. package/extensions/dev-team/lib/usage-view.ts +109 -0
  116. package/hooks/__pycache__/refactor_test_freeze_guard.cpython-314.pyc +0 -0
  117. package/hooks/agent_dispatch_ledger.py +190 -0
  118. package/hooks/autocompact_setup_nudge.py +99 -0
  119. package/hooks/bash_retry_guard.py +228 -0
  120. package/hooks/boundary_events_write_guard.py +352 -0
  121. package/hooks/code_intelligence_nudge.py +293 -0
  122. package/hooks/code_intelligence_turn_mark.py +317 -0
  123. package/hooks/codegraph_bootstrap.py +139 -0
  124. package/hooks/contract_version_guard.py +362 -0
  125. package/hooks/cost_meter.py +106 -0
  126. package/hooks/destructive-commands.json +62 -0
  127. package/hooks/destructive_guard.py +477 -0
  128. package/hooks/eval_compliance_check.py +440 -0
  129. package/hooks/guards.json +17 -0
  130. package/hooks/hooks.json +323 -0
  131. package/hooks/internal_double_gate.py +296 -0
  132. package/hooks/js_fp_review.py +212 -0
  133. package/hooks/knowledge_index.py +119 -0
  134. package/hooks/lib/__pycache__/artifact_paths.cpython-314.pyc +0 -0
  135. package/hooks/lib/__pycache__/atomic_state.cpython-314.pyc +0 -0
  136. package/hooks/lib/__pycache__/autocompact_config.cpython-314.pyc +0 -0
  137. package/hooks/lib/__pycache__/boundary_events.cpython-314.pyc +0 -0
  138. package/hooks/lib/__pycache__/doc_classification.cpython-314.pyc +0 -0
  139. package/hooks/lib/__pycache__/gh_pr_create_detect.cpython-314.pyc +0 -0
  140. package/hooks/lib/__pycache__/git_safe_diff.cpython-314.pyc +0 -0
  141. package/hooks/lib/__pycache__/instrument_log.cpython-314.pyc +0 -0
  142. package/hooks/lib/__pycache__/metrics_query.cpython-314.pyc +0 -0
  143. package/hooks/lib/__pycache__/plugin_version.cpython-314.pyc +0 -0
  144. package/hooks/lib/__pycache__/pre_commit_doc_classifier.cpython-314.pyc +0 -0
  145. package/hooks/lib/__pycache__/review_agent_registry.cpython-314.pyc +0 -0
  146. package/hooks/lib/__pycache__/review_gate_corroboration.cpython-314.pyc +0 -0
  147. package/hooks/lib/__pycache__/review_gate_hash.cpython-314.pyc +0 -0
  148. package/hooks/lib/__pycache__/review_verdicts.cpython-314.pyc +0 -0
  149. package/hooks/lib/__pycache__/stdin_json.cpython-314.pyc +0 -0
  150. package/hooks/lib/__pycache__/stryker_invocation.cpython-314.pyc +0 -0
  151. package/hooks/lib/__pycache__/telemetry_consent.cpython-314.pyc +0 -0
  152. package/hooks/lib/__pycache__/test_file_classify.cpython-314.pyc +0 -0
  153. package/hooks/lib/__pycache__/token_efficiency_limits.cpython-314.pyc +0 -0
  154. package/hooks/lib/__pycache__/verify_guard_state.cpython-314.pyc +0 -0
  155. package/hooks/lib/__pycache__/xunit_v3_operator_gate.cpython-314.pyc +0 -0
  156. package/hooks/lib/agent_skill_hints.py +74 -0
  157. package/hooks/lib/artifact_paths.py +263 -0
  158. package/hooks/lib/atomic_state.py +557 -0
  159. package/hooks/lib/autocompact_config.py +103 -0
  160. package/hooks/lib/autoship_log.py +106 -0
  161. package/hooks/lib/banned_scripts_policy.py +51 -0
  162. package/hooks/lib/boundary_events.py +436 -0
  163. package/hooks/lib/build_knowledge_index.py +504 -0
  164. package/hooks/lib/build_skills_index.py +361 -0
  165. package/hooks/lib/build_state.py +116 -0
  166. package/hooks/lib/classify_ship_outcome.py +126 -0
  167. package/hooks/lib/config_changelog_schema.py +115 -0
  168. package/hooks/lib/cost_meter.py +955 -0
  169. package/hooks/lib/doc_classification.py +116 -0
  170. package/hooks/lib/gh_pr_create_detect.py +136 -0
  171. package/hooks/lib/git_safe_diff.py +123 -0
  172. package/hooks/lib/instrument_log.py +66 -0
  173. package/hooks/lib/iteration_journal_gate.py +197 -0
  174. package/hooks/lib/knowledge_index_paths.py +88 -0
  175. package/hooks/lib/mcp_json_repowise.py +177 -0
  176. package/hooks/lib/metrics_query.py +202 -0
  177. package/hooks/lib/minimal_yaml.py +434 -0
  178. package/hooks/lib/plugin_version.py +142 -0
  179. package/hooks/lib/pre_commit_detect.py +537 -0
  180. package/hooks/lib/pre_commit_doc_classifier.py +126 -0
  181. package/hooks/lib/pricing.py +118 -0
  182. package/hooks/lib/report_pdf.py +371 -0
  183. package/hooks/lib/review_agent_registry.py +142 -0
  184. package/hooks/lib/review_dispatch_ledger.py +101 -0
  185. package/hooks/lib/review_gate_corroboration.py +521 -0
  186. package/hooks/lib/review_gate_hash.py +252 -0
  187. package/hooks/lib/review_gate_normalized_hash.py +1115 -0
  188. package/hooks/lib/review_verdicts.py +301 -0
  189. package/hooks/lib/run_report.py +160 -0
  190. package/hooks/lib/skill_categories.yaml +125 -0
  191. package/hooks/lib/stdin_json.py +57 -0
  192. package/hooks/lib/stryker_invocation.py +102 -0
  193. package/hooks/lib/telemetry_consent.py +41 -0
  194. package/hooks/lib/telemetry_report.py +108 -0
  195. package/hooks/lib/test_file_classify.py +160 -0
  196. package/hooks/lib/token_efficiency_limits.py +51 -0
  197. package/hooks/lib/turn_identity.py +77 -0
  198. package/hooks/lib/verify_guard_state.py +110 -0
  199. package/hooks/lib/workflow_state.py +206 -0
  200. package/hooks/lib/xunit_v3_operator_gate.py +596 -0
  201. package/hooks/mcp_json_repowise_nudge.py +74 -0
  202. package/hooks/mutation_adapters/__init__.py +7 -0
  203. package/hooks/mutation_adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  204. package/hooks/mutation_adapters/__pycache__/lib.cpython-314.pyc +0 -0
  205. package/hooks/mutation_adapters/__pycache__/mutmut.cpython-314.pyc +0 -0
  206. package/hooks/mutation_adapters/__pycache__/pitest.cpython-314.pyc +0 -0
  207. package/hooks/mutation_adapters/__pycache__/stryker.cpython-314.pyc +0 -0
  208. package/hooks/mutation_adapters/__pycache__/stryker_net.cpython-314.pyc +0 -0
  209. package/hooks/mutation_adapters/lib.py +478 -0
  210. package/hooks/mutation_adapters/mutmut.py +188 -0
  211. package/hooks/mutation_adapters/pitest.py +266 -0
  212. package/hooks/mutation_adapters/stryker.py +157 -0
  213. package/hooks/mutation_adapters/stryker_net.py +264 -0
  214. package/hooks/mutation_gate.py +193 -0
  215. package/hooks/mutation_testing_smoke_gate.py +371 -0
  216. package/hooks/pending_review_notify.py +121 -0
  217. package/hooks/phase_marker.py +138 -0
  218. package/hooks/post_compact_state_reinject.py +180 -0
  219. package/hooks/post_format.py +115 -0
  220. package/hooks/pre_commit_knowledge_index.py +128 -0
  221. package/hooks/pre_commit_review.py +66 -0
  222. package/hooks/pre_pr_review.py +694 -0
  223. package/hooks/pre_tool_guard.py +405 -0
  224. package/hooks/py.sh +73 -0
  225. package/hooks/refactor-bash-write-patterns.json +29 -0
  226. package/hooks/refactor_test_bash_guard.py +253 -0
  227. package/hooks/refactor_test_freeze_guard.py +139 -0
  228. package/hooks/refactor_test_revert_guard.py +186 -0
  229. package/hooks/repo_review_nudge.py +287 -0
  230. package/hooks/review_verdict_recorder.py +464 -0
  231. package/hooks/scan_bash_command_for_banned_scripts.py +428 -0
  232. package/hooks/scan_worktree_for_banned_scripts.py +238 -0
  233. package/hooks/session_learning_trigger.py +248 -0
  234. package/hooks/skills_index.py +126 -0
  235. package/hooks/stryker_xunit_shim_guard.py +571 -0
  236. package/hooks/subagent_completion_guard.py +309 -0
  237. package/hooks/subagent_skill_context.py +139 -0
  238. package/hooks/task_completion_metrics.py +216 -0
  239. package/hooks/tdd_guard.py +229 -0
  240. package/hooks/telemetry.py +341 -0
  241. package/hooks/token_efficiency_review.py +194 -0
  242. package/hooks/verify_guard.py +183 -0
  243. package/hooks/verify_guard_edit_marker.py +73 -0
  244. package/hooks/version_check.py +173 -0
  245. package/knowledge/accepted-risks-schema.md +98 -0
  246. package/knowledge/adr-decision-criteria.md +64 -0
  247. package/knowledge/adversarial-review-protocol.md +139 -0
  248. package/knowledge/agent-registry.md +228 -0
  249. package/knowledge/agent-review-methodology.md +80 -0
  250. package/knowledge/ai-friendly-repo-guidelines.md +67 -0
  251. package/knowledge/architecture-assessment.md +96 -0
  252. package/knowledge/artifact-lifecycle.md +57 -0
  253. package/knowledge/cd-maturity-model.md +82 -0
  254. package/knowledge/cd-test-architecture.md +190 -0
  255. package/knowledge/ci-cd-file-scope.md +24 -0
  256. package/knowledge/codegraph-vs-graphify.md +192 -0
  257. package/knowledge/component-test-patterns.md +139 -0
  258. package/knowledge/database-change-management.md +80 -0
  259. package/knowledge/database-test-patterns.md +79 -0
  260. package/knowledge/decision-defaults.md +88 -0
  261. package/knowledge/dependency-breaking-techniques.md +116 -0
  262. package/knowledge/deployment-pipeline.md +86 -0
  263. package/knowledge/design-smells.md +122 -0
  264. package/knowledge/directory-enumeration.md +38 -0
  265. package/knowledge/domain-modeling.md +123 -0
  266. package/knowledge/evidence-bundle.md +90 -0
  267. package/knowledge/exploratory-testing-field-guide.md +122 -0
  268. package/knowledge/failure-routing.md +28 -0
  269. package/knowledge/fixture-construction.md +56 -0
  270. package/knowledge/frontend-component-architecture.md +139 -0
  271. package/knowledge/gherkin-quality-review-dispatch.md +135 -0
  272. package/knowledge/index.json +6766 -0
  273. package/knowledge/internal-collaborator-doubling.md +101 -0
  274. package/knowledge/legacy-test-strategy.md +71 -0
  275. package/knowledge/long-run-waiting.md +66 -0
  276. package/knowledge/microservice-testing.md +71 -0
  277. package/knowledge/model-pricing.json +23 -0
  278. package/knowledge/mutation-score-formulas.md +60 -0
  279. package/knowledge/object-calisthenics.md +147 -0
  280. package/knowledge/oracle-provenance.md +94 -0
  281. package/knowledge/orchestrator-script-implementation.md +185 -0
  282. package/knowledge/owasp-detection.md +148 -0
  283. package/knowledge/plan-review-rubric.md +56 -0
  284. package/knowledge/proxy-connectivity.md +62 -0
  285. package/knowledge/reactive-effect-patterns.md +73 -0
  286. package/knowledge/recon-inventory-excludes.txt +32 -0
  287. package/knowledge/references/bdd-value-guide.md +61 -0
  288. package/knowledge/references/csharp-http-client-testing.md +264 -0
  289. package/knowledge/release-strategies.md +74 -0
  290. package/knowledge/report-output-location.md +117 -0
  291. package/knowledge/report-pdf-integration.md +63 -0
  292. package/knowledge/report-print.css +129 -0
  293. package/knowledge/report-template.md +114 -0
  294. package/knowledge/report-to-pdf.md +69 -0
  295. package/knowledge/request-processing-flow.md +63 -0
  296. package/knowledge/result-verification.md +52 -0
  297. package/knowledge/review-agent-output-contract.md +121 -0
  298. package/knowledge/review-lens-classification.md +113 -0
  299. package/knowledge/review-rubric.md +62 -0
  300. package/knowledge/review-template.md +104 -0
  301. package/knowledge/rule-fixtures/A02.insecure-random-js/negative.js +1 -0
  302. package/knowledge/rule-fixtures/A02.insecure-random-js/positive.js +1 -0
  303. package/knowledge/rule-fixtures/A02.weak-hashing-md5/negative.py +1 -0
  304. package/knowledge/rule-fixtures/A02.weak-hashing-md5/positive.py +1 -0
  305. package/knowledge/rule-fixtures/A03.command-injection/negative.js +1 -0
  306. package/knowledge/rule-fixtures/A03.command-injection/positive.js +1 -0
  307. package/knowledge/rule-fixtures/A03.sql-injection/negative.js +1 -0
  308. package/knowledge/rule-fixtures/A03.sql-injection/positive.js +1 -0
  309. package/knowledge/rule-fixtures/A03.xss-innerhtml/negative.js +1 -0
  310. package/knowledge/rule-fixtures/A03.xss-innerhtml/positive.js +1 -0
  311. package/knowledge/rule-fixtures/A05.cors-wildcard/negative.js +1 -0
  312. package/knowledge/rule-fixtures/A05.cors-wildcard/positive.js +1 -0
  313. package/knowledge/rule-fixtures/A05.default-credentials/negative.js +1 -0
  314. package/knowledge/rule-fixtures/A05.default-credentials/positive.js +1 -0
  315. package/knowledge/rule-fixtures/A07.jwt-alg-none/negative.js +1 -0
  316. package/knowledge/rule-fixtures/A07.jwt-alg-none/positive.js +1 -0
  317. package/knowledge/rule-fixtures/A08.binary-formatter/negative.cs +1 -0
  318. package/knowledge/rule-fixtures/A08.binary-formatter/positive.cs +1 -0
  319. package/knowledge/rule-fixtures/A08.js-eval/negative.js +1 -0
  320. package/knowledge/rule-fixtures/A08.js-eval/positive.js +1 -0
  321. package/knowledge/rule-fixtures/A08.object-input-stream/negative.java +1 -0
  322. package/knowledge/rule-fixtures/A08.object-input-stream/positive.java +1 -0
  323. package/knowledge/schemas/disposition-register-v1.json +65 -0
  324. package/knowledge/schemas/recon-envelope-v1.json +198 -0
  325. package/knowledge/schemas/unified-finding-v1.json +72 -0
  326. package/knowledge/security-primitives-contract.md +301 -0
  327. package/knowledge/security-review-rule-map.yaml +107 -0
  328. package/knowledge/skills-registry.md +72 -0
  329. package/knowledge/task-size-classifier.md +103 -0
  330. package/knowledge/telemetry-schema.md +881 -0
  331. package/knowledge/test-automation-maturity.md +56 -0
  332. package/knowledge/test-automation-principles.md +71 -0
  333. package/knowledge/test-cadence-tradeoffs.md +68 -0
  334. package/knowledge/test-doubles.md +105 -0
  335. package/knowledge/test-file-indicators.md +22 -0
  336. package/knowledge/test-layer-gates.md +35 -0
  337. package/knowledge/test-matrix-examples/django-batch.md +24 -0
  338. package/knowledge/test-matrix-examples/dotnet-grpc-fronting-api.md +90 -0
  339. package/knowledge/test-matrix-examples/dotnet-http-consumer.md +131 -0
  340. package/knowledge/test-matrix-examples/react-node-spa.md +24 -0
  341. package/knowledge/test-matrix-examples/spring-boot-service.md +25 -0
  342. package/knowledge/test-matrix-examples/ssr-htmx.md +24 -0
  343. package/knowledge/test-organization.md +70 -0
  344. package/knowledge/test-pyramid.md +84 -0
  345. package/knowledge/test-refactoring.md +67 -0
  346. package/knowledge/test-review-division-of-labor.md +85 -0
  347. package/knowledge/test-smells.md +80 -0
  348. package/knowledge/test-stack-profiles/bdd-frameworks.md +235 -0
  349. package/knowledge/test-stack-profiles/django.md +13 -0
  350. package/knowledge/test-stack-profiles/dotnet.md +18 -0
  351. package/knowledge/test-stack-profiles/go.md +16 -0
  352. package/knowledge/test-stack-profiles/node.md +16 -0
  353. package/knowledge/test-stack-profiles/react.md +12 -0
  354. package/knowledge/test-stack-profiles/spring-boot.md +16 -0
  355. package/knowledge/test-stack-profiles/ssr-htmx.md +14 -0
  356. package/knowledge/test-stack-profiles/vue.md +12 -0
  357. package/knowledge/test-strategy.md +70 -0
  358. package/knowledge/testability-patterns.md +240 -0
  359. package/knowledge/testing-quadrants.md +44 -0
  360. package/knowledge/testing-techniques/approval.md +15 -0
  361. package/knowledge/testing-techniques/chaos.md +17 -0
  362. package/knowledge/testing-techniques/fuzz.md +15 -0
  363. package/knowledge/testing-techniques/property-based.md +15 -0
  364. package/knowledge/testing-techniques/schema-validation.md +15 -0
  365. package/knowledge/testing-techniques/screenshot.md +15 -0
  366. package/knowledge/three-phase-workflow.md +198 -0
  367. package/knowledge/value-patterns.md +55 -0
  368. package/knowledge/verification-mode.md +116 -0
  369. package/knowledge/virtual-service-libraries.md +75 -0
  370. package/knowledge/wave-consolidation-guidance.md +21 -0
  371. package/overrides/agents/Explore.md +15 -0
  372. package/overrides/agents/general-purpose.md +10 -0
  373. package/overrides/notes/autoship.md +6 -0
  374. package/overrides/notes/issues-from-assessment.md +3 -0
  375. package/overrides/notes/issues-from-plan.md +3 -0
  376. package/overrides/notes/mutation-night-watch.md +3 -0
  377. package/overrides/notes/mutation-testing.md +3 -0
  378. package/overrides/notes/pr.md +7 -0
  379. package/overrides/notes/project-init.md +6 -0
  380. package/overrides/notes/setup.md +13 -0
  381. package/overrides/notes/specs.md +3 -0
  382. package/overrides/skills/headless-run/SKILL.md +45 -0
  383. package/overrides/skills/upgrade/SKILL.md +30 -0
  384. package/overrides/skills/version/SKILL.md +25 -0
  385. package/package.json +36 -0
  386. package/scripts/authoring_digest.py +93 -0
  387. package/scripts/autoship_discover.py +121 -0
  388. package/scripts/autoship_group.py +409 -0
  389. package/scripts/autoship_proposals.py +494 -0
  390. package/scripts/autoship_queue.py +291 -0
  391. package/scripts/autoship_reclaim.py +495 -0
  392. package/scripts/build_jobs.py +108 -0
  393. package/scripts/build_rollback_point.py +240 -0
  394. package/scripts/build_slice_scope.py +157 -0
  395. package/scripts/build_wave.py +109 -0
  396. package/scripts/build_wave_reconcile.py +252 -0
  397. package/scripts/build_worktree_baseref.py +113 -0
  398. package/scripts/check_agent_scope.py +117 -0
  399. package/scripts/check_agent_tool_mapping.py +213 -0
  400. package/scripts/check_review_agent_mcp_tools.py +317 -0
  401. package/scripts/check_security_assessment_mcp_tools.py +165 -0
  402. package/scripts/checkpoint_abort.py +502 -0
  403. package/scripts/claude_setup_review.py +438 -0
  404. package/scripts/codebase_recon.py +556 -0
  405. package/scripts/coverage_config.py +623 -0
  406. package/scripts/coverage_delta_steering.py +330 -0
  407. package/scripts/coverage_discovery_dotnet.py +315 -0
  408. package/scripts/coverage_discovery_java.py +742 -0
  409. package/scripts/coverage_discovery_js.py +546 -0
  410. package/scripts/coverage_gap_ranking.py +556 -0
  411. package/scripts/coverage_readiness.py +455 -0
  412. package/scripts/coverage_report_parse.py +521 -0
  413. package/scripts/detect_bdd_convention.py +252 -0
  414. package/scripts/eval_ablation.py +376 -0
  415. package/scripts/gherkin_analysis_coverage_gate.py +306 -0
  416. package/scripts/gherkin_cross_feature_duplicate_titles_gate.py +173 -0
  417. package/scripts/gherkin_effectiveness_rollup.py +238 -0
  418. package/scripts/gherkin_failure_path_gate.py +206 -0
  419. package/scripts/gherkin_feature_merge.py +720 -0
  420. package/scripts/gherkin_stub_gate.py +163 -0
  421. package/scripts/gherkin_stub_merge.py +479 -0
  422. package/scripts/git_origin_host.py +88 -0
  423. package/scripts/install-java-static-analysis.py +110 -0
  424. package/scripts/issue_deps.py +74 -0
  425. package/scripts/lib/_bdd_markers.py +28 -0
  426. package/scripts/lib/_gherkin_text.py +93 -0
  427. package/scripts/lib/_vendored_tree.py +70 -0
  428. package/scripts/lib/autoship_state.py +397 -0
  429. package/scripts/lib/claude_md_guard.py +226 -0
  430. package/scripts/lib/deterministic_recon.py +446 -0
  431. package/scripts/lib/mcp_tool_grants.py +211 -0
  432. package/scripts/lib/plan_parse.py +386 -0
  433. package/scripts/lib/review_result.py +84 -0
  434. package/scripts/lib/review_roster.py +86 -0
  435. package/scripts/lib/session_log/__init__.py +34 -0
  436. package/scripts/lib/session_log/__pycache__/__init__.cpython-314.pyc +0 -0
  437. package/scripts/lib/session_log/__pycache__/records.cpython-314.pyc +0 -0
  438. package/scripts/lib/session_log/classify.py +231 -0
  439. package/scripts/lib/session_log/corrections.py +194 -0
  440. package/scripts/lib/session_log/discovery.py +108 -0
  441. package/scripts/lib/session_log/records.py +218 -0
  442. package/scripts/lib/session_log/redact.py +76 -0
  443. package/scripts/lib/session_log/signals.py +373 -0
  444. package/scripts/lib/session_report_downstream.py +614 -0
  445. package/scripts/lib/session_report_maintainer.py +1273 -0
  446. package/scripts/lib/session_report_shared.py +262 -0
  447. package/scripts/lib/settings_hook_guard.py +157 -0
  448. package/scripts/lib/slug.py +33 -0
  449. package/scripts/lib/stub_extractors/__init__.py +82 -0
  450. package/scripts/lib/stub_extractors/_common.py +328 -0
  451. package/scripts/lib/stub_extractors/csharp.py +19 -0
  452. package/scripts/lib/stub_extractors/go.py +173 -0
  453. package/scripts/lib/stub_extractors/java.py +18 -0
  454. package/scripts/lib/stub_extractors/jsts.py +126 -0
  455. package/scripts/mutation_stack_sections.py +149 -0
  456. package/scripts/mutation_yield_steering.py +345 -0
  457. package/scripts/orchestrator.py +895 -0
  458. package/scripts/plan_gherkin_export.py +227 -0
  459. package/scripts/plan_waves.py +208 -0
  460. package/scripts/pr_close_keyword_lint.py +108 -0
  461. package/scripts/progress_guardian.py +888 -0
  462. package/scripts/recon_inventory.py +273 -0
  463. package/scripts/review_findings_log.py +93 -0
  464. package/scripts/run_invariants.py +124 -0
  465. package/scripts/select_lenses.py +640 -0
  466. package/scripts/session_report.py +486 -0
  467. package/scripts/set_autocompact_env.py +221 -0
  468. package/scripts/ship_resume_guard.py +135 -0
  469. package/scripts/ship_review_gate.py +63 -0
  470. package/scripts/specs_convention_marker.py +103 -0
  471. package/scripts/test_improve_resume.py +277 -0
  472. package/scripts/test_review_mechanics.py +958 -0
  473. package/scripts/token_efficiency_review.py +322 -0
  474. package/scripts/verdict_scope.py +285 -0
  475. package/scripts/verify_gherkin_quality_critic_isolation.py +296 -0
  476. package/scripts/verify_tier.py +157 -0
  477. package/skills/adr-tools/SKILL.md +118 -0
  478. package/skills/agent-readiness/SKILL.md +105 -0
  479. package/skills/agent-readiness/ai_friendly_analyzers.py +326 -0
  480. package/skills/agent-readiness/scanner.py +441 -0
  481. package/skills/agent-readiness/scorecard.yaml +88 -0
  482. package/skills/api-design/SKILL.md +115 -0
  483. package/skills/apply-fixes/SKILL.md +171 -0
  484. package/skills/apply-test-doubles/SKILL.md +321 -0
  485. package/skills/artifact-lifecycle/SKILL.md +127 -0
  486. package/skills/autoship/SKILL.md +1124 -0
  487. package/skills/benchmark/SKILL.md +105 -0
  488. package/skills/branch-workflow/SKILL.md +89 -0
  489. package/skills/browse/SKILL.md +184 -0
  490. package/skills/browser-testing/SKILL.md +62 -0
  491. package/skills/browser-testing/references/playwright-patterns.md +216 -0
  492. package/skills/build/SKILL.md +422 -0
  493. package/skills/build/references/static-self-heal.md +245 -0
  494. package/skills/careful/SKILL.md +72 -0
  495. package/skills/cd-test-architecture/SKILL.md +371 -0
  496. package/skills/ci-debugging/SKILL.md +105 -0
  497. package/skills/co-evolution-audit/SKILL.md +269 -0
  498. package/skills/code-review/SKILL.md +1015 -0
  499. package/skills/code-review/examples/aggregated-sample.json +56 -0
  500. package/skills/code-review/examples/sample-report.md +41 -0
  501. package/skills/code-review/output-format.md +478 -0
  502. package/skills/code-review/scripts/activation.py +86 -0
  503. package/skills/code-review/scripts/change_impact.py +357 -0
  504. package/skills/code-review/scripts/change_shape.py +372 -0
  505. package/skills/code-review/scripts/change_size.py +212 -0
  506. package/skills/code-review/scripts/changed_file_list.py +141 -0
  507. package/skills/code-review/scripts/closing_pass.py +187 -0
  508. package/skills/code-review/scripts/consolidate.py +277 -0
  509. package/skills/code-review/scripts/contract_failure_report.py +185 -0
  510. package/skills/code-review/scripts/dispatch_reconcile.py +66 -0
  511. package/skills/code-review/scripts/dispatch_waves.py +164 -0
  512. package/skills/code-review/scripts/finding_signature.py +446 -0
  513. package/skills/code-review/scripts/ledger.py +283 -0
  514. package/skills/code-review/scripts/partition.py +169 -0
  515. package/skills/code-review/scripts/render_tiered_findings.py +274 -0
  516. package/skills/code-review/scripts/repo_invariants.py +1066 -0
  517. package/skills/code-review/scripts/review_context_pack.py +306 -0
  518. package/skills/code-review/scripts/review_round_log.py +345 -0
  519. package/skills/code-review/scripts/review_value_coverage.py +297 -0
  520. package/skills/code-review/scripts/validate_review_output.py +467 -0
  521. package/skills/code-review/sliced-mode.md +205 -0
  522. package/skills/competitive-analysis/SKILL.md +191 -0
  523. package/skills/context-loading-protocol/SKILL.md +157 -0
  524. package/skills/continue/SKILL.md +90 -0
  525. package/skills/cost-report/SKILL.md +178 -0
  526. package/skills/coverage-baseline/SKILL.md +335 -0
  527. package/skills/coverage-baseline/references/multi-project-discovery.md +202 -0
  528. package/skills/coverage-delta/SKILL.md +181 -0
  529. package/skills/coverage-delta/references/mutation-gate.md +70 -0
  530. package/skills/design-doc/SKILL.md +95 -0
  531. package/skills/design-interrogation/SKILL.md +89 -0
  532. package/skills/design-it-twice/SKILL.md +91 -0
  533. package/skills/docker-image-audit/SKILL.md +108 -0
  534. package/skills/docker-image-audit/references/install-guide.md +64 -0
  535. package/skills/docker-image-audit/references/report-template.md +73 -0
  536. package/skills/docker-image-create/SKILL.md +185 -0
  537. package/skills/domain-analysis/SKILL.md +183 -0
  538. package/skills/domain-driven-design/SKILL.md +194 -0
  539. package/skills/exploratory-testing/SKILL.md +108 -0
  540. package/skills/explore/SKILL.md +51 -0
  541. package/skills/farley-score/SKILL.md +165 -0
  542. package/skills/feature-file-validation/SKILL.md +78 -0
  543. package/skills/feature-file-validation/references/validation-rules.md +115 -0
  544. package/skills/feedback-learning/SKILL.md +414 -0
  545. package/skills/fix/SKILL.md +450 -0
  546. package/skills/freeze/SKILL.md +68 -0
  547. package/skills/frontend-architecture/SKILL.md +113 -0
  548. package/skills/gherkin-derive/SKILL.md +630 -0
  549. package/skills/gherkin-public/SKILL.md +266 -0
  550. package/skills/governance-compliance/SKILL.md +150 -0
  551. package/skills/guard/SKILL.md +75 -0
  552. package/skills/handoff/SKILL.md +139 -0
  553. package/skills/handoff/references/summary-templates.md +242 -0
  554. package/skills/harness-audit/SKILL.md +751 -0
  555. package/skills/harness-audit/scripts/lesson_validate.py +386 -0
  556. package/skills/harness-audit/scripts/redundancy_criterion.py +188 -0
  557. package/skills/headless-run/SKILL.md +45 -0
  558. package/skills/headless-run/scripts/isolated_dispatch.py +381 -0
  559. package/skills/help/SKILL.md +72 -0
  560. package/skills/hexagonal-architecture/SKILL.md +85 -0
  561. package/skills/human-oversight-protocol/SKILL.md +224 -0
  562. package/skills/issues-from-assessment/SKILL.md +223 -0
  563. package/skills/issues-from-plan/SKILL.md +133 -0
  564. package/skills/legacy-code/SKILL.md +132 -0
  565. package/skills/mermaid-diagramming/SKILL.md +120 -0
  566. package/skills/mutation-night-watch/SKILL.md +154 -0
  567. package/skills/mutation-night-watch/references/scheduling.md +135 -0
  568. package/skills/mutation-testing/SKILL.md +396 -0
  569. package/skills/mutation-testing/references/languages/csharp-stryker-net.md +676 -0
  570. package/skills/mutation-testing/references/languages/go-go-mutesting.md +95 -0
  571. package/skills/mutation-testing/references/languages/java-pitest.md +77 -0
  572. package/skills/mutation-testing/references/languages/javascript-stryker.md +188 -0
  573. package/skills/mutation-testing/references/languages/python-mutmut.md +97 -0
  574. package/skills/mutation-testing/references/time-estimation.md +34 -0
  575. package/skills/mutation-testing/references/tool-detection.md +15 -0
  576. package/skills/mutation-testing/references/workflow-callers.md +23 -0
  577. package/skills/mutation-testing/scripts/__pycache__/xunit_v3_feature_detector.cpython-314.pyc +0 -0
  578. package/skills/mutation-testing/scripts/csharp_stryker_net_slice_runner.py +635 -0
  579. package/skills/mutation-testing/scripts/csharp_stryker_net_status_loop.py +525 -0
  580. package/skills/mutation-testing/scripts/csharp_stryker_net_wrapper.py +681 -0
  581. package/skills/mutation-testing/scripts/mutation_baseline_reuse.py +292 -0
  582. package/skills/mutation-testing/scripts/mutation_exclude_policy.py +268 -0
  583. package/skills/mutation-testing/scripts/mutation_feasibility_gate.py +463 -0
  584. package/skills/mutation-testing/scripts/mutation_kill_headless.py +331 -0
  585. package/skills/mutation-testing/scripts/mutation_kill_insert.py +199 -0
  586. package/skills/mutation-testing/scripts/mutation_kill_insert_python.py +150 -0
  587. package/skills/mutation-testing/scripts/mutation_kill_loop.py +869 -0
  588. package/skills/mutation-testing/scripts/mutation_kill_loop_python.py +949 -0
  589. package/skills/mutation-testing/scripts/mutation_kill_retry.py +592 -0
  590. package/skills/mutation-testing/scripts/mutation_kill_shared.py +620 -0
  591. package/skills/mutation-testing/scripts/mutation_nightwatch.py +462 -0
  592. package/skills/mutation-testing/scripts/mutation_nightwatch_stacks.py +425 -0
  593. package/skills/mutation-testing/scripts/mutation_report.py +743 -0
  594. package/skills/mutation-testing/scripts/mutation_report_cli.py +175 -0
  595. package/skills/mutation-testing/scripts/mutation_safety_gate.py +69 -0
  596. package/skills/mutation-testing/scripts/stryker_shard_pipeline.py +847 -0
  597. package/skills/mutation-testing/scripts/stryker_shard_setup.py +440 -0
  598. package/skills/mutation-testing/scripts/stryker_timeout_retry.py +142 -0
  599. package/skills/mutation-testing/scripts/xunit_v3_feature_detector.py +341 -0
  600. package/skills/performance-benchmark/SKILL.md +174 -0
  601. package/skills/performance-benchmark/examples/report-format.md +43 -0
  602. package/skills/performance-benchmark/references/benchmark-script.md +169 -0
  603. package/skills/performance-metrics/SKILL.md +265 -0
  604. package/skills/plan/SKILL.md +199 -0
  605. package/skills/plan/references/gherkin-persistence.md +43 -0
  606. package/skills/plan/references/plan-template.md +182 -0
  607. package/skills/pr/SKILL.md +289 -0
  608. package/skills/pr/scripts/gate_retry_state.py +368 -0
  609. package/skills/project-init/README.md +141 -0
  610. package/skills/project-init/SKILL.md +1197 -0
  611. package/skills/project-init/evals/evals.json +200 -0
  612. package/skills/project-init/references/capability-tools.md +55 -0
  613. package/skills/project-init/references/configs.md +221 -0
  614. package/skills/property-based-testing/SKILL.md +121 -0
  615. package/skills/property-based-testing/fixtures/invariant_fixture.py +15 -0
  616. package/skills/property-based-testing/fixtures/js-roundtrip/README.md +42 -0
  617. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/LICENSE +21 -0
  618. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/README.md +263 -0
  619. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.d.ts +5165 -0
  620. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.js +12147 -0
  621. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/package.json +3 -0
  622. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/types57/fast-check.d.ts +5165 -0
  623. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.d.ts +5165 -0
  624. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.js +12011 -0
  625. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/rolldown-runtime-D7D4PA-g.js +13 -0
  626. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/types57/fast-check.d.ts +5165 -0
  627. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/package.json +94 -0
  628. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/LICENSE +21 -0
  629. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/README.md +168 -0
  630. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/RandomGenerator-DcXj09Ch.d.ts +14 -0
  631. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.d.ts +15 -0
  632. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.js +38 -0
  633. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.d.ts +15 -0
  634. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.js +18 -0
  635. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.d.ts +15 -0
  636. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.js +22 -0
  637. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.d.ts +15 -0
  638. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.js +134 -0
  639. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/RandomGenerator-DcXj09Ch.d.ts +14 -0
  640. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.d.ts +15 -0
  641. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.js +37 -0
  642. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.d.ts +15 -0
  643. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.js +17 -0
  644. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.d.ts +15 -0
  645. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.js +21 -0
  646. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.d.ts +15 -0
  647. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.js +133 -0
  648. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.d.ts +7 -0
  649. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.js +44 -0
  650. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.d.ts +7 -0
  651. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.js +90 -0
  652. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.d.ts +7 -0
  653. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.js +80 -0
  654. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.d.ts +7 -0
  655. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.js +78 -0
  656. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/package.json +3 -0
  657. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.d.ts +16 -0
  658. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.js +0 -0
  659. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.d.ts +2 -0
  660. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.js +0 -0
  661. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.d.ts +6 -0
  662. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.js +8 -0
  663. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.d.ts +12 -0
  664. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.js +9 -0
  665. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.d.ts +6 -0
  666. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.js +6 -0
  667. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.d.ts +7 -0
  668. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.js +46 -0
  669. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.d.ts +7 -0
  670. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.js +92 -0
  671. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.d.ts +7 -0
  672. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.js +82 -0
  673. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.d.ts +7 -0
  674. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.js +80 -0
  675. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.d.ts +16 -0
  676. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.js +0 -0
  677. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.d.ts +2 -0
  678. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.js +0 -0
  679. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.d.ts +6 -0
  680. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.js +9 -0
  681. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.d.ts +12 -0
  682. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.js +10 -0
  683. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.d.ts +6 -0
  684. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.js +7 -0
  685. package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/package.json +133 -0
  686. package/skills/property-based-testing/fixtures/js-roundtrip/package-lock.json +1179 -0
  687. package/skills/property-based-testing/fixtures/js-roundtrip/package.json +14 -0
  688. package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.js +29 -0
  689. package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.properties.test.js +16 -0
  690. package/skills/property-based-testing/fixtures/no_property_fixture.py +10 -0
  691. package/skills/property-based-testing/fixtures/roundtrip_fixture.py +16 -0
  692. package/skills/property-based-testing/references/languages/javascript.md +54 -0
  693. package/skills/property-based-testing/scripts/detect_and_dispatch.py +80 -0
  694. package/skills/property-based-testing/scripts/hypothesis_scaffold.py +276 -0
  695. package/skills/proxy-resilience/SKILL.md +84 -0
  696. package/skills/quality-gate-pipeline/SKILL.md +184 -0
  697. package/skills/quality-targets-converge/SKILL.md +254 -0
  698. package/skills/repo-review/SKILL.md +159 -0
  699. package/skills/report-pdf/SKILL.md +66 -0
  700. package/skills/review/SKILL.md +47 -0
  701. package/skills/review-agent/SKILL.md +152 -0
  702. package/skills/review-summary/SKILL.md +73 -0
  703. package/skills/run-report/SKILL.md +70 -0
  704. package/skills/semantic-duplication-scan/SKILL.md +337 -0
  705. package/skills/semantic-scan/SKILL.md +53 -0
  706. package/skills/semgrep-analyze/SKILL.md +139 -0
  707. package/skills/setup/SKILL.md +1122 -0
  708. package/skills/ship/SKILL.md +240 -0
  709. package/skills/source-verification/SKILL.md +210 -0
  710. package/skills/source-verification/scripts/claim_extractor.py +155 -0
  711. package/skills/specs/.size-baseline.json +4 -0
  712. package/skills/specs/SKILL.md +243 -0
  713. package/skills/specs/references/completeness-checklist.md +83 -0
  714. package/skills/specs/references/extraction.md +58 -0
  715. package/skills/specs/references/glossary.md +59 -0
  716. package/skills/specs/references/persistence.md +115 -0
  717. package/skills/specs/references/predictability-check.md +77 -0
  718. package/skills/static-analysis-integration/SKILL.md +235 -0
  719. package/skills/static-analysis-integration/adapters/_envelope.py +26 -0
  720. package/skills/static-analysis-integration/adapters/jscpd-adapter.py +66 -0
  721. package/skills/static-analysis-integration/adapters/lizard-adapter.py +81 -0
  722. package/skills/static-analysis-integration/adapters/mypy-adapter.py +50 -0
  723. package/skills/static-analysis-integration/adapters/mypy-src-layout.py +93 -0
  724. package/skills/static-analysis-integration/adapters/security-review-adapter.py +212 -0
  725. package/skills/static-analysis-integration/maintenance.md +23 -0
  726. package/skills/static-analysis-integration/references/language-setup.md +228 -0
  727. package/skills/static-analysis-integration/references/sarif-parser.md +124 -0
  728. package/skills/static-analysis-integration/references/security-review-adapter.md +118 -0
  729. package/skills/static-analysis-integration/references/tool-configs.md +617 -0
  730. package/skills/static-analysis-integration/rulesets/pmd-quickstart.xml +24 -0
  731. package/skills/stryker-xunit-v2-shim/SKILL.md +274 -0
  732. package/skills/stryker-xunit-v2-shim/references/shim-howto.md +256 -0
  733. package/skills/stryker-xunit-v2-shim/scripts/generate_shim.py +143 -0
  734. package/skills/systematic-debugging/SKILL.md +130 -0
  735. package/skills/telemetry/SKILL.md +75 -0
  736. package/skills/test-audit-disable/SKILL.md +129 -0
  737. package/skills/test-design/SKILL.md +177 -0
  738. package/skills/test-design/scripts/__pycache__/internal_double_detector.cpython-314.pyc +0 -0
  739. package/skills/test-design/scripts/internal_double_detector.py +631 -0
  740. package/skills/test-design-advisor/SKILL.md +166 -0
  741. package/skills/test-driven-development/SKILL.md +169 -0
  742. package/skills/test-health/SKILL.md +262 -0
  743. package/skills/test-improve/SKILL.md +239 -0
  744. package/skills/test-improve/references/phase-0-approach-contract.md +228 -0
  745. package/skills/test-improve/references/phase-1-analyze.md +131 -0
  746. package/skills/test-improve/references/phase-2-baseline.md +121 -0
  747. package/skills/test-improve/references/phase-3-derive-gherkin.md +53 -0
  748. package/skills/test-improve/references/phase-4-plan-fixes.md +34 -0
  749. package/skills/test-improve/references/phase-5-improve.md +215 -0
  750. package/skills/test-improve/references/phase-6-refactor-decision.md +45 -0
  751. package/skills/test-improve/references/phase-7-refactor.md +44 -0
  752. package/skills/test-improve/references/phase-8-validate.md +66 -0
  753. package/skills/test-improve/references/phase-9-close-out-prompt.md +11 -0
  754. package/skills/test-improve/references/phase-9-report.md +62 -0
  755. package/skills/test-improve/references/review-loop.md +92 -0
  756. package/skills/test-improve/templates/executive-summary.md +123 -0
  757. package/skills/threat-modeling/SKILL.md +108 -0
  758. package/skills/triage/SKILL.md +211 -0
  759. package/skills/ubiquitous-language/SKILL.md +192 -0
  760. package/skills/ubiquitous-language/scripts/collect_domain_signals.py +300 -0
  761. package/skills/unfreeze/SKILL.md +37 -0
  762. package/skills/upgrade/SKILL.md +31 -0
  763. package/skills/upgrade/scripts/check_version_drift.py +113 -0
  764. package/skills/upgrade/scripts/enable_autoupdate.py +149 -0
  765. package/skills/version/SKILL.md +25 -0
  766. package/sync/__pycache__/sync_upstream.cpython-314.pyc +0 -0
  767. package/sync/sync_upstream.py +293 -0
  768. package/templates/ACCEPTED-RISKS.md.tmpl +46 -0
  769. package/templates/agents/agent-template.md +151 -0
  770. package/templates/agents/angular-testing.md +66 -0
  771. package/templates/agents/csharp-quality.md +63 -0
  772. package/templates/agents/esm-enforcer.md +52 -0
  773. package/templates/agents/front-end-testing.md +65 -0
  774. package/templates/agents/go-quality.md +65 -0
  775. package/templates/agents/python-quality.md +62 -0
  776. package/templates/agents/react-testing.md +61 -0
  777. package/templates/agents/ts-enforcer.md +60 -0
  778. package/templates/agents/twelve-factor-audit.md +49 -0
  779. package/tools/entropy-check.py +250 -0
  780. 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.