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,55 @@
1
+ # Value Patterns (Test Data Sourcing)
2
+
3
+ Reference file for the `test-design-advisor` skill and the `test-review` / `test-smell-review` agents. Where `fixture-construction.md` decides *how the fixture object is built* and `test-doubles.md` decides *what stands in for a collaborator*, this file decides the **scalar values** that go into them: the literals, computed values, and generated values a test feeds the SUT and asserts against. Choosing the wrong value source is a common, quiet cause of Obscure Test, Fragile Test, and Erratic Test.
4
+
5
+ Source: Gerard Meszaros, *xUnit Test Patterns* (xunitpatterns.com) — Ch. 27 *Value Patterns*. Language- and framework-agnostic.
6
+
7
+ Core principle: **every value in a test should reveal its intent.** A reader should see *why* a value is what it is — whether it's significant, derived from another value, or simply "some unique thing that doesn't matter." A magic literal whose meaning is lost is the Hard-Coded Values smell.
8
+
9
+ ---
10
+
11
+ ## The four value sources
12
+
13
+ | Pattern | What it is | Use when | Risk if misused |
14
+ |---------|-----------|----------|-----------------|
15
+ | **Literal Value** | A constant written directly in the test (`42`, `"ACTIVE"`) | The exact value *is* the point — a boundary, a known-pathological case, a spec example | Unexplained → Hard-Coded Values smell; reused across tests → fragile coupling |
16
+ | **Derived Value** | Computed in the test from other values via a visible expression | A value relates to another by a rule (`total = price * (1 + TAX_RATE)`); the relationship documents the requirement | Same math bug can hide in both test and SUT — pin a few cases with Literals |
17
+ | **Generated Value** | Produced at run time (sequence, UUID, faker) | The value must be **unique** (DB keys, idempotency tokens) or genuinely **doesn't affect** the outcome | Random generation → Erratic/Nondeterministic Test; only generate when uniqueness is required |
18
+ | **Dummy Object** | A do-nothing placeholder passed only to satisfy a signature | An argument is required by a method but **never used** on the path under test | If the SUT actually touches it, you need a Stub/Fake instead |
19
+
20
+ ---
21
+
22
+ ## Choosing a value source (decision flow)
23
+
24
+ ```
25
+ Does the SUT's behavior depend on this specific value?
26
+ ├─ YES → is it computed from another value by a documented rule?
27
+ │ ├─ YES → Derived Value (show the expression; name the constant, e.g. MAX_RETRIES)
28
+ │ └─ NO → Literal Value (name it for its meaning; it's a boundary or spec example)
29
+ │
30
+ └─ NO → is the value required to be unique (DB key, token, filename)?
31
+ ├─ YES → Generated Value — prefer a *Distinct* (sequence) generator over random
32
+ └─ NO → is it an object only present to fill a parameter slot?
33
+ ├─ YES → Dummy Object
34
+ └─ NO → a named Literal with an Intent-Revealing Name ("irrelevant" made explicit)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Notes that matter when evaluating tests
40
+
41
+ - **Derived vs. Literal trade-off.** Derived Values make a requirement's *relationship* explicit and survive legitimate change (raise the tax rate, the test follows). But a shared arithmetic error can appear in both the test and the SUT — so cover a few pathological cases with hand-computed **Literal** Values as a cross-check.
42
+ - **Distinct over Random.** A *Distinct Generated Value* (an incrementing sequence, reset per run) gives uniqueness **and** repeatability — the same values appear each run, so failures reproduce. A *Random Generated Value* trades reproducibility for coverage and usually creates an Erratic Test; if you must use one, log the seed/value on failure so the case can be replayed. Default to Distinct.
43
+ - **Generate only for uniqueness.** Don't reach for a generator just to avoid choosing a number. Unnecessary generation introduces nondeterminism (different values can expose different bugs — single- vs. multi-digit formatting, etc.). Prefer a named Literal when the value doesn't need to be unique.
44
+ - **Dummy ≠ Stub.** A Dummy is *never used*; if any method on it is called, the test should blow up (that's the signal you actually needed a Stub or Fake). Using a Dummy keeps Obscure Test away by stating "this argument is irrelevant" instead of constructing a real, distracting object. (Choosing between Dummy/Stub/Fake/Mock lives in `test-doubles.md`.)
45
+ - **Anonymous vs. significant.** Make the *significant* values prominent and push *irrelevant* ones behind builder defaults or a clearly-named "anonymous" helper, so the cause-and-effect the test proves isn't buried in noise (`fixture-construction.md`).
46
+
47
+ ---
48
+
49
+ ## How this connects to the rest of the toolkit
50
+
51
+ - **`test-smells.md`** — Hard-Coded Values, Irrelevant Information, Erratic Test (from random values) are the smells these patterns prevent or, misused, cause.
52
+ - **`fixture-construction.md`** — Test Data Builders carry sensible defaults so only the *significant* values surface in a test; value patterns choose those values.
53
+ - **`test-doubles.md`** — Dummy Object sits at the boundary between value patterns and doubles; the Stub/Fake/Mock decision is there.
54
+ - **`result-verification.md`** — Derived Values are the basis of a *Derived Expectation*; Generated Values often pair with a *Delta Assertion* against a shared fixture.
55
+ - **`test-automation-principles.md`** — *Communicate Intent* (no unexplained literals) and *Repeatable Test* (Distinct over Random) are the principles at stake.
@@ -0,0 +1,116 @@
1
+ # Verification-mode re-dispatch (#1628)
2
+
3
+ The single definition of what a **fix-verification** re-dispatch sends and
4
+ what it may cost. Referenced by [`skills/code-review/SKILL.md`](../skills/code-review/SKILL.md)
5
+ step 6a and [`skills/build/SKILL.md`](../skills/build/SKILL.md)'s inline
6
+ checkpoint loops — stated once here, never restated in either caller.
7
+
8
+ ## The problem
9
+
10
+ When a fix loop re-dispatches an agent to confirm a fix, that dispatch is
11
+ indistinguishable from discovery: same tier, same full context payload. But
12
+ the task is far narrower — *here is the finding, here is the fix diff:
13
+ resolved or not?* `correctness-review` (opus/`effort: high`, the most
14
+ dispatched review agent in the project's logged history at 24) pays full
15
+ discovery cost for every confirmation.
16
+
17
+ `/code-review` step 6a's deterministic-first triage (#1610) already removes
18
+ the mechanically-checkable confirmations. This contract cheapens the ones
19
+ that genuinely need semantic judgment.
20
+
21
+ ## Stage 1 — context narrowing (no routing change)
22
+
23
+ A verification re-dispatch passes **only**:
24
+
25
+ 1. The finding: its signature (#1625), original message, severity, and
26
+ confidence.
27
+ 2. The fix diff hunks, ± ~20 lines of surrounding context.
28
+ 3. The agent's own lens definition.
29
+
30
+ It does **not** pass the full target file set. Token cost of a confirmation
31
+ drops roughly with context size regardless of tier, and #1611/#1618 measured
32
+ full-file payloads as the dominant input cost.
33
+
34
+ **The `insufficient-context` escape is mandatory.** The dispatch prompt must
35
+ state the narrowed contract explicitly and grant the agent this exit:
36
+
37
+ > If the fix's correctness cannot be judged from this context, reply
38
+ > `insufficient-context` — do not guess.
39
+
40
+ An `insufficient-context` reply escalates to a **full-context re-dispatch of
41
+ that same agent**, at its discovery tier. Narrowing must never become a quiet
42
+ downgrade in review quality: an agent that says it cannot judge is answered
43
+ with more context, not with a shrug. A verification-mode prompt that omits
44
+ this escape is malformed.
45
+
46
+ ## Stage 2 — tier-down, declared per agent, never inferred
47
+
48
+ An agent may opt in to a cheaper tier **for verification dispatches only** by
49
+ declaring these in its **body** (not frontmatter — see below):
50
+
51
+ ```
52
+ Verify-model: haiku
53
+ Verify-effort: medium
54
+ ```
55
+
56
+ **Default when absent: unchanged** — verification runs at the same tier as
57
+ discovery. This default is deliberate, not conservatism for its own sake:
58
+ #1619 showed some confirmations genuinely need top-tier judgment. The
59
+ `Intl.NumberFormat.prototype.format` call — determining that a spec-bound
60
+ getter does not lose its receiver when unbound, per ECMA-402 — was a
61
+ verification-shaped question that a cheap tier would plausibly have gotten
62
+ wrong, and getting it wrong would have shipped a fixture that didn't test
63
+ what it claimed.
64
+
65
+ Resolve the pair with the shared helper, never by reading frontmatter
66
+ directly:
67
+
68
+ ```bash
69
+ python3 "$CLAUDE_PLUGIN_ROOT/scripts/verify_tier.py" --agent <name>
70
+ ```
71
+
72
+ It prints `{"agent", "model", "effort", "opted_in"}` — the tier to dispatch
73
+ this agent at in verification mode, already falling back to the discovery
74
+ tier when no opt-in is declared.
75
+
76
+ ### Why a body declaration, not frontmatter
77
+
78
+ Issue #1333 established that this plugin's own tooling metadata lives in the
79
+ agent **body**, because frontmatter is reserved for the official Claude Code
80
+ sub-agent contract recorded in
81
+ `plugins/marketplace-dev/knowledge/agent-contract.json` — a dated snapshot of
82
+ upstream documentation, not a schema this plugin may extend. `Scope:`,
83
+ `Cites:`, and `Enforcement:` all follow that rule; these two join them.
84
+ (Claude Code silently ignores unknown frontmatter keys, so putting them in
85
+ frontmatter would also have made a typo invisible.) See
86
+ [`docs/agent_info.md`](../docs/agent_info.md) § Non-standard body
87
+ declarations.
88
+
89
+ ### Initial opt-ins
90
+
91
+ | Agent | Verify tier | Why |
92
+ | --- | --- | --- |
93
+ | `structure-review` | haiku | Confirming an extracted function or a flattened nesting level is a structural read, not a judgment call |
94
+ | `naming-review` | haiku | Confirming a rename landed consistently is near-mechanical once the rename itself is applied |
95
+ | `doc-review` | haiku | Confirming a doc line now matches the code it describes is a comparison, not an inference |
96
+
97
+ `correctness-review` and `security-review` deliberately do **not** opt in.
98
+ They are the two most expensive lenses and the two most obvious candidates —
99
+ and that is exactly why the decision waits for #1624's per-agent
100
+ discovery-vs-verification data to show their verification dispatches are
101
+ low-yield. Tiering them down on intuition is the mistake this table exists to
102
+ avoid.
103
+
104
+ ## Recording
105
+
106
+ Every verification dispatch is recorded with `dispatch_purpose: "verification"`
107
+ (#1624), so per-agent cost splits by purpose. The dispatch ledger still records
108
+ it as a genuine dispatch of that agent (`subagent_type` unchanged), so gate
109
+ corroboration semantics are untouched — a tiered-down verification dispatch
110
+ corroborates the commit gate exactly as a discovery dispatch does.
111
+
112
+ ## Out of scope
113
+
114
+ - Auto-inferring the tier from a finding's severity or confidence. Needs
115
+ #1624's data first.
116
+ - Changing discovery-dispatch tiers. This contract governs verification only.
@@ -0,0 +1,75 @@
1
+ # Virtual-Service Libraries — Record-and-Replay Catalog
2
+
3
+ Reference file for the `cd-test-architecture` skill's Downstream-service
4
+ branch (`Build (Fake)` bullet — see `skills/cd-test-architecture/SKILL.md`).
5
+ Catalogs the record-and-replay virtual-service library preferred for each
6
+ profiled backend stack, with a hand-rolled Fake as backup. These are
7
+ recommended starting points, not mandates: drop items that don't apply,
8
+ add what a component clearly needs.
9
+
10
+ ## Preferred vs. backup
11
+
12
+ A record-and-replay virtual-service library is the **preferred** pre-merge
13
+ double for outbound HTTP; a hand-rolled Fake is the **backup** — used when
14
+ the operator declines the library, or when no protocol-appropriate library
15
+ exists for the component's adapter kind. See `skills/cd-test-architecture/SKILL.md`'s
16
+ Downstream-service branch (`Build (Fake)` bullet) for the full
17
+ accept/name-a-different-library/decline interaction — not restated here.
18
+
19
+ ## Catalog
20
+
21
+ | Stack | Library | Protocol scope |
22
+ |---|---|---|
23
+ | `dotnet` | WireMock.Net | HTTP |
24
+ | `node` | Nock | HTTP |
25
+ | `spring-boot` | WireMock | HTTP |
26
+ | `go` | `go-vcr` | HTTP |
27
+ | `django` | VCR.py (`vcrpy`) | HTTP |
28
+
29
+ All five catalog entries above are HTTP-focused. Message-broker
30
+ virtualization for Event Consumer/Producer components has no equally
31
+ mature per-stack tool — Mountebank is the closest general-purpose fallback — via its generic TCP
32
+ protocol support, though it has no native AMQP/Kafka/MQTT protocol — and it
33
+ is itself thinner coverage than the HTTP-focused tools above, not an
34
+ equivalent substitute.
35
+
36
+ ## Resolution order
37
+
38
+ Three-valued precedence for selecting the tool a `Build (Fake)` row
39
+ recommends:
40
+
41
+ 1. **Existing tool detected** — the target repo already depends on (or
42
+ already uses in its tests) a virtual-service/record-replay library.
43
+ That tool becomes the default; no switch is suggested.
44
+ 2. **Catalog default** — when no existing tool is detected, the stack's
45
+ entry from the table above.
46
+ 3. **Operator override or decline** — the operator names a different
47
+ library (used instead of 1 or 2), or declines (hand-rolled Fake, the
48
+ backup).
49
+
50
+ ## Recorded artifacts contain real traffic — scrub before commit
51
+
52
+ A recorded cassette or stub mapping (VCR.py/go-vcr cassettes, Nock recorder
53
+ output, WireMock/WireMock.Net stub mappings) captures a real
54
+ request/response exchange — including `Authorization`/`Cookie` headers, API
55
+ keys, and PII in the body — and, by design, gets committed to version
56
+ control alongside the test. Treat every recorded artifact as potentially
57
+ secret-bearing until reviewed, per `knowledge/deployment-pipeline.md`'s
58
+ **Secrets are not in version control** rule (Configuration management
59
+ table) — a recorded artifact heading into version control is exactly the
60
+ case that rule guards against; it just arrives via a test tool instead of a
61
+ config file.
62
+
63
+ Configure each tool's credential-filtering hook **before the first
64
+ recording** — not after:
65
+
66
+ | Tool | Filtering hook |
67
+ |---|---|
68
+ | VCR.py (`vcrpy`) | `filter_headers` / `filter_query_parameters` / `before_record_response` |
69
+ | go-vcr | its before-save hook |
70
+ | Nock | no built-in filter — manually redact the recorder's output before committing |
71
+ | WireMock / WireMock.Net | response transformers / body-capture limits |
72
+
73
+ Record against a non-prod instance of the dependency, using non-prod
74
+ credentials — scrubbing after the fact is a second line of defense, not the
75
+ first.
@@ -0,0 +1,21 @@
1
+ # Wave / Review-Agent Fan-Out Consolidation
2
+
3
+ Soft guidance for keeping a single review wave's agent count within a coordination budget. Advisory only — it never blocks dispatch and adds no new gate.
4
+
5
+ ## When it applies
6
+
7
+ When a single wave's agent-selection would dispatch **5 or more** review agents in one wave — whether the Inline Review Checkpoint dispatch table in `${CLAUDE_PLUGIN_ROOT}/knowledge/three-phase-workflow.md#inline-review-checkpoint` or Step 2 of `agents/quality-reviewer.md` selected them — note it in the phase/review output as a coordination-cost signal, not a hard block. Each agent already returns a small structured result, so the context-pollution risk is mitigated; what remains unmeasured is the coordination cost of aggregating many independent verdicts and driving one fix loop across potentially-overlapping finding sets.
8
+
9
+ ## Why five
10
+
11
+ Martin Fowler's ["The Orchestrator's Tax"](https://martinfowler.com/articles/orchestrator-tax.html) recommends 2–4 concurrent agents per wave as a default and consolidating rather than scaling past ~5. `DEV_TEAM_MAX_PARALLEL_BUILDS` already bounds *hardware* concurrency (`min(16, cores-2)`, `scripts/build_jobs.py`); this guideline adds the missing *cognitive*/coordination ceiling. A single commit touching JS/TS + tests + API surface + domain logic + UI routinely selects 7–8 agents (`naming-review`, `js-fp-review`, `test-review`, `security-review`, `domain-review`, `a11y-review`, `structure-review`, `component-architecture-review`) — well past the budget.
12
+
13
+ ## What to do
14
+
15
+ - **Surface, don't block.** Emit a one-line note in the phase/review output — e.g. `wave fan-out: 8 agents selected (>5 coordination-cost threshold)`. Dispatch proceeds unchanged.
16
+ - **Batch high-overlap agents.** Where two agents' scopes already overlap on the same lines, run them as a single combined pass instead of two. `structure-review` (baseline, every change) and `naming-review` frequently flag the same lines — `structure-review` already absorbed its other high-overlap case (`complexity-review`'s nesting and function-size charter, folded in #2093). Combining an overlapping pass cuts verdict-aggregation and fix-loop overhead without losing coverage.
17
+ - **Prefer the higher-altitude rollup.** Strategic and test-design requests already consolidate into a `qa-engineer` / `/test-design` rollup rather than firing many per-file agents (see `agents/orchestrator.md` § Test-review request routing). Apply the same instinct wherever a rollup skill already exists.
18
+
19
+ ## What this is not
20
+
21
+ Not a gate. It changes no dispatch behavior, blocks nothing, and adds no new metric or hook. It is a documented instinct for the orchestrator and quality-reviewer to weigh coordination cost when a wave's agent count is high — the cognitive analogue of the hardware ceiling `DEV_TEAM_MAX_PARALLEL_BUILDS` already provides.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: Explore
3
+ description: Fast read-only codebase exploration agent (pi port of Claude Code's built-in Explore agent). Use to search broadly and return a compressed, factual summary with file:line references.
4
+ tools: Read, Grep, Glob, Bash
5
+ model: haiku
6
+ ---
7
+
8
+ You are a read-only exploration agent. Investigate the codebase to answer the
9
+ task you are given.
10
+
11
+ - Never modify files. Bash is for read-only commands only (git log/show/diff,
12
+ ls, test runners in dry/list mode).
13
+ - Search broadly first (grep/find), then read only the relevant sections.
14
+ - Return a compressed, factual report: what you found, with `path:line`
15
+ references, and what you could not determine. No speculation presented as fact.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: general-purpose
3
+ description: General-purpose agent with the full tool set (pi port of Claude Code's built-in general-purpose agent). Use for multi-step research or implementation tasks that no specialist agent covers.
4
+ tools: Read, Grep, Glob, Bash, Edit, Write
5
+ ---
6
+
7
+ You are a general-purpose engineering agent working on a delegated task.
8
+ Complete the task end to end, verify your work (run the relevant tests or
9
+ commands), and finish with a concise report of what you did, what changed
10
+ (`path:line`), and anything left open.
@@ -0,0 +1,6 @@
1
+ ## pi port notes (read first)
2
+
3
+ - Run each unit's `/ship` in an isolated child so `DEV_TEAM_AUTO_APPROVE=1` and its cost stay scoped to that unit: use the `headless-run` skill (`DEV_TEAM_AUTO_APPROVE=1 pi --mode json -p --no-session "/ship ..."`) rather than invoking `/ship` in this conversation.
4
+ - `$CLAUDE_SESSION_ID` is set by the pi extension to the pi session id.
5
+ - The GitHub MCP fallback (`mcp__github__*`) only exists if the user configured a GitHub MCP server in `.pi/mcp.json`; otherwise `gh` is required.
6
+ - Issue and comment text follows the "GitHub text style" from the system prompt. Keep every heading, section and marker that this skill's template requires, because later steps read them. Write the prose inside them plainly and briefly. If the template itself breaks a rule (for example a required list that is longer than the limit), send the same `gh` command again unchanged: the extension blocks it only once.
@@ -0,0 +1,3 @@
1
+ ## pi port notes (read first)
2
+
3
+ - Issue and comment text follows the "GitHub text style" from the system prompt. Keep every heading, section and marker that this skill's template requires, because later steps read them. Write the prose inside them plainly and briefly. If the template itself breaks a rule (for example a required list that is longer than the limit), send the same `gh` command again unchanged: the extension blocks it only once.
@@ -0,0 +1,3 @@
1
+ ## pi port notes (read first)
2
+
3
+ - Issue and comment text follows the "GitHub text style" from the system prompt. Keep every heading, section and marker that this skill's template requires, because later steps read them. Write the prose inside them plainly and briefly. If the template itself breaks a rule (for example a required list that is longer than the limit), send the same `gh` command again unchanged: the extension blocks it only once.
@@ -0,0 +1,3 @@
1
+ ## pi port notes
2
+
3
+ - Where this skill schedules or runs `claude --print`, use `pi --mode json -p --no-session` (or the port's `claude` shim, which is on `PATH` inside pi sessions but not in cron). In a cron entry call `pi` directly.
@@ -0,0 +1,3 @@
1
+ ## pi port notes
2
+
3
+ - Scripts in this skill that shell out to `claude --print` / `claude -p` run through the pi port's `claude` CLI shim (on `PATH` inside pi), which executes `pi --mode json -p --no-session` and returns a Claude-style result envelope. `CLAUDE_BIN` / `CLAUDE_CLI` may point at it explicitly.
@@ -0,0 +1,7 @@
1
+ ## pi port notes (read first)
2
+
3
+ - Write the title and body in the "GitHub text style" from the system prompt. The extension blocks a `gh pr create` whose title or body breaks it, once.
4
+ - Body order: one sentence that says what changes and why, then `## Summary` (at most 3 bullets), then `## Test Plan`, then `## Quality Gate` with its results on one line (`Tests 42 passed · types clean · lint clean · review clean`).
5
+ - Put `## Decisions & Assumptions` and the four Evidence Bundle headers at the end, inside one `<details><summary>Decisions and evidence</summary>` block. Keep all of their content. Only the place changes.
6
+ - If the repository has `.github/PULL_REQUEST_TEMPLATE.md`, its sections come first and the same `<details>` block goes at the end.
7
+ - End the visible part with one next step for the reviewer, for example "Review: start at `src/auth.ts:42`."
@@ -0,0 +1,6 @@
1
+ ## pi port notes (read first — these override the steps below)
2
+
3
+ - **MCP servers (Step 4c):** pi reads project MCP servers from `.pi/mcp.json` (user level: `~/.pi/agent/mcp.json`), not `.mcp.json`. Register CodeGraph/Repowise there, or with `pi mcp add -l <name> -- <command>`. Tell the user to run `/reload`.
4
+ - **Settings/hook guards (Step 4c, #1367):** there is no `.claude/settings.json` hook registration in pi; the settings.json guard reports `n/a (pi)`.
5
+ - **`CLAUDE.md` guard around `graphify install`:** apply the same guard to `AGENTS.md`.
6
+ - The `claude` CLI is not required; ignore checks for it.
@@ -0,0 +1,13 @@
1
+ ## pi port notes (read first — these override the steps below)
2
+
3
+ This is the pi port of `/setup`. Follow the steps below with these substitutions:
4
+
5
+ - **Hard dependencies (Step 3):** the `claude` CLI is not required. `pi`, `python3`, `jq`, `git` and `gh` are.
6
+ - **Step 4:** run the `project-init` skill with the `skill` tool (`dev-team:project-init` and `project-init` are the same).
7
+ - **Step 7 (agent templates):** activate templates into `.claude/agents/` exactly as written. The pi `dev_team_subagent` tool loads project agents from `.pi/agents/` and `.claude/agents/`, and they take precedence over the package agents.
8
+ - **Step 8 / 8a (project CLAUDE.md):** pi loads context files from the project root and its ancestors (`AGENTS.md`, or `CLAUDE.md`), **not** from `.claude/CLAUDE.md`. Everywhere these steps say `.claude/CLAUDE.md`, use `AGENTS.md` at the repository root instead (if the repo already has a root `CLAUDE.md` and no `AGENTS.md`, use that `CLAUDE.md`). Same merge/skip and marker rules.
9
+ - **Step 9 (formatting hook):** do not write `.claude/settings.json`. Instead set `"autoFormat": true` in `.pi/dev-team.json` (create the file if missing, keep other keys). The pi extension then runs `hooks/post_format.py` (prettier / ruff / black, auto-detected) after every `write`/`edit`.
10
+ - **Step 9b (autocompact):** run `scripts/set_autocompact_env.py` exactly as written. It only merges `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` into `.claude/settings.json` (the one write to that file this port allows); the pi extension reads that value and compacts the session at that percentage of the model's window. pi's own threshold is `contextWindow - reserveTokens`, so the "values above ~83% have no effect" caveat becomes "values above pi's own threshold have no effect".
11
+ - **Step 10 (/pr):** write the generated project command to `.claude/skills/pr/SKILL.md` as written. The pi port resolves project skills in `.pi/skills/` and `.claude/skills/` before the package's own.
12
+ - **Step 11:** also add `.pi/dev-team.local.json` to the `.gitignore` block.
13
+ - **Step 12 (report):** list `AGENTS.md` and `.pi/dev-team.json` instead of `.claude/CLAUDE.md`, and list `.claude/settings.json` only for the Step 9b `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` key. Add a line recommending `/dev-team models` to map the opus/sonnet/haiku agent tiers to this user's models.
@@ -0,0 +1,3 @@
1
+ ## pi port notes (read first)
2
+
3
+ - Issue and comment text follows the "GitHub text style" from the system prompt. Keep every heading, section and marker that this skill's template requires, because later steps read them. Write the prose inside them plainly and briefly. If the template itself breaks a rule (for example a required list that is longer than the limit), send the same `gh` command again unchanged: the extension blocks it only once.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: headless-run
3
+ description: >-
4
+ Run a dev-team skill or prompt headlessly in an isolated pi subprocess
5
+ (fresh session, JSON result, timeout). Use for scripted one-shot invocations
6
+ and benchmark-harness cases, e.g. running /code-review once per case.
7
+ argument-hint: "<prompt-or-slash-command> [--cwd DIR] [--model MODEL] [--timeout SECS]"
8
+ user-invocable: true
9
+ allowed-tools: Read, Bash
10
+ ---
11
+
12
+ # Headless Run
13
+
14
+ Role: worker. Runs one prompt in a separate, non-interactive pi process and
15
+ returns its JSON result. It does not review, plan or edit by itself.
16
+
17
+ Arguments: `$ARGUMENTS`
18
+
19
+ ## Isolation
20
+
21
+ - New process, `--no-session` (nothing is written to the session store and the
22
+ parent's session id is not reused).
23
+ - Non-interactive: `DEV_TEAM_INTERACTIVE` is unset, so every human gate takes
24
+ its documented non-interactive default.
25
+ - Same packages and credentials as the parent (pi's auth store is read from
26
+ `~/.pi/agent`), so the run uses the same providers.
27
+
28
+ ## Steps
29
+
30
+ 1. Parse `--cwd` (default: current directory), `--model` (default: the
31
+ current `PI_PROVIDER/PI_MODEL`), `--timeout` (default 1800 seconds). The rest
32
+ is the prompt. A leading `/name` is a dev-team command; pass it through
33
+ unchanged, pi expands it in the child.
34
+ 2. Run:
35
+
36
+ ```bash
37
+ cd "<cwd>" && timeout <secs> env -u DEV_TEAM_INTERACTIVE \
38
+ pi --mode json -p --no-session --model "<model>" "<prompt>" > "$TMPDIR/headless-run-$$.jsonl"
39
+ ```
40
+
41
+ 3. Extract the result: the last `agent_end` event's final assistant text, its
42
+ `stopReason`, and the summed `usage` of all `message_end` assistant events.
43
+ Print one JSON object:
44
+ `{"is_error": <bool>, "result": "<text>", "stop_reason": "...", "usage": {...}, "total_cost_usd": <n>, "log": "<path>"}`.
45
+ Exit status 124 from `timeout` → `is_error: true, "result": "timeout"`.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: upgrade
3
+ description: >-
4
+ Check for and apply pi-dev-team package updates using pi's package manager.
5
+ user-invocable: true
6
+ allowed-tools: Read, Bash
7
+ ---
8
+
9
+ # Upgrade
10
+
11
+ Role: worker. Updates the pi-dev-team package through pi's own package
12
+ mechanism. Never hand-edit installed package files.
13
+
14
+ You have been invoked with the `/upgrade` command. Arguments: none.
15
+
16
+ ## Steps
17
+
18
+ 1. Report the current version: run the `/version` command's script
19
+ (`${CLAUDE_PLUGIN_ROOT}/package.json` and `UPSTREAM.json`).
20
+ 2. Find how the package is installed: `pi list` (look for `pi-dev-team`).
21
+ - **git or npm source** → run `pi update` (add `--local` if it is listed under
22
+ project settings). Report the version delta afterwards.
23
+ - **local path** (e.g. `./pi-dev-team`) → pi does not update local packages.
24
+ Tell the user to pull the package directory (`git -C <path> pull`) or, when
25
+ it is a sync of upstream, to run
26
+ `python3 <path>/sync/sync_upstream.py --upstream <agentic-dev-team checkout>`.
27
+ 3. Tell the user to run `/reload` (or restart pi) so the new extension code,
28
+ skills and agents load.
29
+
30
+ **Be concise.** Report version deltas only.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: version
3
+ description: >-
4
+ Report the installed version of the pi-dev-team package and the upstream
5
+ dev-team release it was synced from.
6
+ user-invocable: true
7
+ allowed-tools: Bash
8
+ ---
9
+
10
+ # Version
11
+
12
+ Role: worker. Purely mechanical lookup.
13
+
14
+ You have been invoked with the `/version` command. Arguments: none.
15
+
16
+ Run and report the single output line verbatim:
17
+
18
+ ```bash
19
+ node -e 'const p=require(process.env.CLAUDE_PLUGIN_ROOT+"/package.json");const u=require(process.env.CLAUDE_PLUGIN_ROOT+"/UPSTREAM.json");console.log(`${p.name} v${p.version} (upstream dev-team v${u.version} @ ${String(u.commit).slice(0,10)})`)'
20
+ ```
21
+
22
+ If `CLAUDE_PLUGIN_ROOT` is unset, report exactly:
23
+ `pi-dev-team extension is not loaded in this session.`
24
+
25
+ Do not add commentary beyond the single result line.
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "pi-dev-team",
3
+ "version": "0.2.0",
4
+ "description": "pi port of Bryan Finster's dev-team (bdfinst/agentic-dev-team): persona-driven dev team, reviewer swarm, TDD-gated /specs -> /plan -> /build -> /pr workflow, guard hooks. Works with any pi model provider, including GitHub Copilot.",
5
+ "license": "MIT",
6
+ "author": "Sanjit Roopra (https://github.com/sanjit-roopra)",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/sanjit-roopra/pi-dev-team.git"
10
+ },
11
+ "homepage": "https://github.com/sanjit-roopra/pi-dev-team#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/sanjit-roopra/pi-dev-team/issues"
14
+ },
15
+ "keywords": ["pi-package", "agents", "code-review", "tdd", "dev-team"],
16
+ "type": "module",
17
+ "pi": {
18
+ "extensions": ["./extensions/dev-team/index.ts"],
19
+ "skills": [],
20
+ "prompts": [],
21
+ "themes": []
22
+ },
23
+ "peerDependencies": {
24
+ "@earendil-works/pi-agent-core": "*",
25
+ "@earendil-works/pi-ai": "*",
26
+ "@earendil-works/pi-coding-agent": "*",
27
+ "@earendil-works/pi-tui": "*",
28
+ "typebox": "*"
29
+ },
30
+ "scripts": {
31
+ "sync": "python3 sync/sync_upstream.py --upstream ../agentic-dev-team",
32
+ "test": "node --test test/unit/*.test.ts && python3 -m unittest discover -s test/py -p 'test_*.py'",
33
+ "e2e": "node test/e2e/run.mjs"
34
+ },
35
+ "files": ["extensions", "agents", "skills", "hooks", "scripts", "knowledge", "templates", "tools", "bin", "docs", "sync", "overrides", "UPSTREAM.json", "PORTING.md", "README.md", "LICENSE"]
36
+ }
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env python3
2
+ """Build a per-diff authoring digest for the software-engineer (prototype).
3
+
4
+ Each review lens may carry a ``## Authoring checklist`` section: terse,
5
+ write-time reflexes distilled from its ``Detect`` rules. Given the files a step
6
+ will touch, this resolves the applicable lenses with ``select_lenses`` (same
7
+ ``Scope:`` rules ``/build`` already uses) and prints only those lenses'
8
+ checklists, so the engineer pays tokens only for lenses that can fire.
9
+
10
+ The lens files stay the single source of truth; nothing is copied by hand.
11
+
12
+ Lenses deliberately WITHOUT a checklist (#2208 triage) — each needs a reviewer's
13
+ independence or whole-change view, not a write-time reflex: ``arch-review`` and
14
+ ``domain-review`` (cross-module/ADR/boundary judgement), ``spec-compliance-review``
15
+ (verifies against the step's scenarios, which ``/build`` already hands the
16
+ engineer), ``doc-review`` (whole-repo drift), and the on-demand repo-wide lenses.
17
+ Framework lenses (React/Vue/Angular/a11y) are excluded by scope for other diffs.
18
+
19
+ Stdlib-only. See docs/python-hook-contract.md.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ import argparse
25
+ import re
26
+ import sys
27
+ from pathlib import Path
28
+
29
+ _HERE = Path(__file__).resolve().parent
30
+ sys.path.insert(0, str(_HERE))
31
+
32
+ import select_lenses
33
+
34
+ HEADING = "## Authoring checklist"
35
+ _H2_RE = re.compile(r"^## ")
36
+
37
+
38
+ def extract_checklist(text: str) -> list[str]:
39
+ """Bullet lines under the ``## Authoring checklist`` heading, else ``[]``."""
40
+ bullets: list[str] = []
41
+ active = False
42
+ for line in text.splitlines():
43
+ if line.startswith(HEADING):
44
+ active = True
45
+ continue
46
+ if active and _H2_RE.match(line):
47
+ break
48
+ if active and line.lstrip().startswith("- "):
49
+ bullets.append(line.rstrip())
50
+ return bullets
51
+
52
+
53
+ def build_digest(files, agents_dir: Path, registry: Path):
54
+ """Return ``(digest_text, lenses_with_checklist, warnings)``."""
55
+ roster, warnings = select_lenses.build_review_roster(agents_dir, registry)
56
+ lenses, more = select_lenses.applicable_lenses(
57
+ list(files), roster, test_files=select_lenses.test_file_subset(list(files))
58
+ )
59
+ warnings = warnings + more
60
+ sections: list[str] = []
61
+ used: list[str] = []
62
+ for name in lenses:
63
+ try:
64
+ text = (agents_dir / f"{name}.md").read_text(encoding="utf-8")
65
+ except OSError:
66
+ warnings.append(f"unreadable-agent:{name}")
67
+ continue
68
+ bullets = extract_checklist(text)
69
+ if bullets:
70
+ used.append(name)
71
+ sections.append(f"### {name}\n" + "\n".join(bullets))
72
+ if not sections:
73
+ return "", used, warnings
74
+ return "## Authoring checklist (write-time)\n\n" + "\n\n".join(sections) + "\n", used, warnings
75
+
76
+
77
+ def main(argv=None) -> int:
78
+ p = argparse.ArgumentParser(description=__doc__.splitlines()[0])
79
+ p.add_argument("--files", nargs="*", default=[], help="Files the step will touch")
80
+ p.add_argument("--agents-dir", type=Path, default=_HERE.parent / "agents")
81
+ p.add_argument(
82
+ "--registry", type=Path, default=_HERE.parent / "knowledge" / "agent-registry.md"
83
+ )
84
+ args = p.parse_args(argv)
85
+ digest, _used, warnings = build_digest(args.files, args.agents_dir, args.registry)
86
+ for w in warnings:
87
+ print(f"warning: {w}", file=sys.stderr)
88
+ sys.stdout.write(digest)
89
+ return 0
90
+
91
+
92
+ if __name__ == "__main__":
93
+ raise SystemExit(main())