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,56 @@
1
+ {
2
+ "overall": "warn",
3
+ "timestamp": "2026-07-05T12:00:00Z",
4
+ "targetFiles": 8,
5
+ "preFlightPassed": true,
6
+ "agents": [
7
+ {
8
+ "agentName": "structure-review",
9
+ "status": "warn",
10
+ "modelTier": "mid",
11
+ "issues": [
12
+ {
13
+ "severity": "warning",
14
+ "confidence": "high",
15
+ "file": "src/api/handler.ts",
16
+ "line": 15,
17
+ "message": "God object: handler mixes routing, validation, and persistence",
18
+ "suggestedFix": "Split routing, validation, and persistence into focused modules"
19
+ },
20
+ {
21
+ "severity": "warning",
22
+ "confidence": "medium",
23
+ "file": "src/api/handler.ts",
24
+ "line": 15,
25
+ "message": "Nesting depth 5 in the validation branch exceeds threshold of 3",
26
+ "suggestedFix": "Extract guard clauses into helper predicates"
27
+ }
28
+ ],
29
+ "summary": "2 issues found: 2 warnings"
30
+ },
31
+ {
32
+ "agentName": "test-review",
33
+ "status": "pass",
34
+ "modelTier": "mid",
35
+ "issues": [],
36
+ "summary": "No issues found"
37
+ }
38
+ ],
39
+ "totals": {"errors": 0, "warnings": 2, "suggestions": 0},
40
+ "tokenEstimate": {
41
+ "totalInputFiles": 12000,
42
+ "agentCount": 2,
43
+ "contextStrategy": "full-file"
44
+ },
45
+ "dispatchFailures": [],
46
+ "topFindings": [
47
+ {
48
+ "severity": "warning",
49
+ "agents": ["structure-review"],
50
+ "file": "src/api/handler.ts",
51
+ "line": 15,
52
+ "message": "handler mixes too many concerns and exceeds the nesting threshold"
53
+ }
54
+ ],
55
+ "summary": "WARN (1 agent passed, 1 warned, 0 failed). 2 total issues."
56
+ }
@@ -0,0 +1,41 @@
1
+ # Sample Code Review Report
2
+
3
+ ```text
4
+ # Code Review Summary
5
+
6
+ | Agent | Status | Issues |
7
+ |--------------------|--------|--------|
8
+ | test-review | PASS | 0 |
9
+ | structure-review | FAIL | 3 |
10
+ | naming-review | PASS | 0 |
11
+ | domain-review | PASS | 0 |
12
+ | security-review | PASS | 0 |
13
+ | js-fp-review | WARN | 3 |
14
+
15
+ Overall: FAIL (4 passed, 1 warned, 1 failed)
16
+ Total issues: 6 (1 error, 3 warnings, 2 suggestions)
17
+ ```
18
+
19
+ ## Issues by file
20
+
21
+ ### src/api/handler.ts
22
+
23
+ - **ERROR** [structure-review] Line 15: Function `processRequest` nests 5 levels deep validating input before touching business logic
24
+ - Fix: Extract validation, transformation, and persistence into separate functions
25
+
26
+ - **WARNING** [structure-review] Line 15: Function handles validation, business logic, and DB writes
27
+ - Fix: Apply SRP — separate into validate(), transform(), persist()
28
+
29
+ - **WARNING** [js-fp-review] Line 42: `results.push(item)` — array mutation
30
+ - Fix: Use `results = [...results, item]` or build with `.map()`
31
+
32
+ ### src/utils/config.ts
33
+
34
+ - **WARNING** [js-fp-review] Line 8: `global.appConfig = merged` — global state mutation
35
+ - Fix: Export a module-level getter instead
36
+
37
+ - **SUGGESTION** [structure-review] Line 1: File mixes config loading and validation
38
+ - Fix: Split into config-loader.ts and config-validator.ts
39
+
40
+ - **SUGGESTION** [js-fp-review] Line 22: `let count` never reassigned
41
+ - Fix: Use `const count`
@@ -0,0 +1,478 @@
1
+ # Output Format Reference
2
+
3
+ ## Per-agent JSON result
4
+
5
+ ```json
6
+ {
7
+ "agentName": "structure-review",
8
+ "status": "pass|warn|fail|skip",
9
+ "modelTier": "mid",
10
+ "issues": [
11
+ {
12
+ "severity": "error|warning|suggestion",
13
+ "confidence": "high|medium|none",
14
+ "file": "src/auth/login.ts",
15
+ "line": 42,
16
+ "message": "God object: AuthController handles login, registration, and password reset",
17
+ "suggestedFix": "Split into LoginController, RegistrationController, and PasswordResetController"
18
+ }
19
+ ],
20
+ "summary": "2 issues found: 1 error, 1 warning"
21
+ }
22
+ ```
23
+
24
+ ### `confidence` field values
25
+
26
+ | Value | Meaning | `apply-fixes` behavior |
27
+ |-------|---------|----------------------|
28
+ | `high` | Mechanical fix; correct with high certainty | Auto-apply |
29
+ | `medium` | Direction right; tradeoffs possible | Present as suggested diff — require confirmation |
30
+ | `none` | Requires human judgment | Present finding only; do not generate correction prompt |
31
+
32
+ ## Aggregated JSON result (`--json` flag)
33
+
34
+ ```json
35
+ {
36
+ "overall": "pass|warn|fail",
37
+ "timestamp": "2026-03-01T12:00:00Z",
38
+ "targetFiles": 42,
39
+ "preFlightPassed": true,
40
+ "agents": [
41
+ {"agentName": "test-review", "status": "pass", "modelTier": "mid", "issues": [], "summary": "..."}
42
+ ],
43
+ "totals": {"errors": 0, "warnings": 2, "suggestions": 1},
44
+ "tokenEstimate": {
45
+ "totalInputFiles": 15000,
46
+ "agentCount": 11,
47
+ "contextStrategy": "diff-only|full-file|mixed"
48
+ },
49
+ "topFindings": [
50
+ {
51
+ "severity": "error|warning|suggestion",
52
+ "agents": ["structure-review", "correctness-review"],
53
+ "file": "src/api/handler.ts",
54
+ "line": 15,
55
+ "message": "God object: handler mixes routing, validation, and persistence"
56
+ }
57
+ ],
58
+ "dispatchFailures": [
59
+ {"agentName": "arch-review", "attempts": 2, "error": "Tool result missing due to internal error", "shape": null, "extraction": null}
60
+ ],
61
+ "ledgerSkipped": [
62
+ {"lens": "doc-review", "file": "src/api/handler.ts", "verdict": {"lens": "doc-review", "file_path": "src/api/handler.ts", "ts": "2026-03-01T11:58:00Z", "file_content_hash": "9f2c...", "outcome": "pass", "plugin_version": "1.42.0"}}
63
+ ],
64
+ "summary": "FAIL (N agents passed, N warned, N failed). N total issues. 1 lens never ran (dispatch failure)."
65
+ }
66
+ ```
67
+
68
+ The `tokenEstimate` field provides rough cost observability:
69
+
70
+ - `totalInputFiles`: approximate character count of all input files passed to agents
71
+ - `agentCount`: number of agents that actually reviewed content this run —
72
+ excludes `skip` (contract-shaped, but nothing was reviewed) and
73
+ `dispatchFailures` (never ran)
74
+ - `contextStrategy`: whether diff-only, full-file, or a mix was used
75
+
76
+ The `topFindings` array is the consolidated cross-agent view — one entry per
77
+ distinct `file:line`, so a finding surfaced by several agents appears once:
78
+
79
+ - `severity` is the **single highest** enum (`error` > `warning` > `suggestion`)
80
+ for that finding — never a slash- or comma-joined string.
81
+ - `agents` is an explicit array of the reporting agents. Multi-agent
82
+ attribution lives here; never join multiple values into `severity` or an
83
+ `agent` scalar.
84
+
85
+ `dispatchFailures` (issue #1752, always present, empty array when none):
86
+ agents whose `Agent` tool dispatch failed and then failed a single individual
87
+ retry — the lens never actually ran. Distinct from an `agents[]` entry with
88
+ `status: "skip"` (agent had nothing to review this run — see
89
+ [`knowledge/review-agent-output-contract.md`](../../knowledge/review-agent-output-contract.md#status-values))
90
+ and from `status: "fail"` (agent ran and found error-severity issues). A
91
+ non-empty `dispatchFailures` list is never omitted because the rest of the
92
+ panel returned cleanly.
93
+
94
+ `ledgerSkipped` (issue #2167, always present, empty array when none): one
95
+ `{"lens", "file", "verdict"}` entry per `(lens, file)` pair
96
+ `scripts/verdict_scope.py` matched to an exact, current-content `pass` row
97
+ in `.claude/metrics/review-verdicts.jsonl` — that lens was never dispatched
98
+ against that file this run because an earlier dispatch already cleared this
99
+ exact content. `verdict` is the matched ledger row verbatim (its own
100
+ snake_case fields — `ts`/`file_content_hash`/`plugin_version`/`outcome`/
101
+ `lens`/`file_path`, exactly as `hooks/lib/review_verdicts.py` writes them —
102
+ never renamed to camelCase), named here so a reader can verify the skip
103
+ against the ledger directly rather than trust it blindly. An
104
+ agent entirely absent from `agents[]` with every one of its candidate files
105
+ listed here is a *fully* ledger-skipped lens (`verdict_scope.py`'s own
106
+ `fullySkippedLenses`) — not a coverage gap, but never silent either: `summary`
107
+ states the count of fully-skipped lenses whenever `ledgerSkipped` is
108
+ non-empty, the same way it already states dispatch-failure counts. Skipped
109
+ files contribute no new findings to `topFindings`/`totals`, so `overall`
110
+ reflects exactly the same aggregate a from-scratch full-panel run over this
111
+ content would reach — a fully ledger-skipped panel is never `fail`/`warn` on
112
+ that basis alone.
113
+
114
+ `shape`/`extraction` (issue #1998, both `null` when the dispatch never
115
+ returned at all — a transport failure, not a contract failure): when the
116
+ retry DID return but failed `validate_review_output.py`'s contract check,
117
+ these carry that check's classification — `shape` is one of its five failure
118
+ shapes (`empty`/`truncated`/`malformed-json`/`schema-drift`/`not-json`),
119
+ `extraction` is set alongside `shape: "schema-drift"` or `shape:
120
+ "malformed-json"` and names which extraction path (`clean`/`fenced`/
121
+ `prose-preamble`) recovered the object before it failed. `error` always
122
+ carries the human-readable reason either way (the transport error text, or
123
+ `validate_review_output.py`'s parse/schema error, redacted and capped at 256
124
+ characters the same way `raw_prefix` is) — `shape`/`extraction` add the
125
+ machine-readable classification alongside it rather than replacing it.
126
+
127
+ **A non-empty `dispatchFailures` forces `overall: "fail"`**, unconditionally,
128
+ regardless of what the per-agent results alone would compute — the coverage
129
+ gap is enforced by this DTO itself, not by each caller re-deriving it from
130
+ `dispatchFailures` separately. This matters because `SKILL.md` step 9 (the
131
+ `.pr-review-passed` gate) never runs under `--json` — without this rule, a
132
+ `--json` caller (e.g. `/pr`, which reads only `overall`/`status`) could see
133
+ `overall: "pass"` and proceed despite a lens that never ran, exactly the
134
+ silent-gap failure mode #1752 exists to close.
135
+
136
+ **A step 6a fix-loop exit via escalation also forces `overall: "fail"`**
137
+ (issue #1880), for the same reason and by the same mechanism as the
138
+ `dispatchFailures` rule above: `SKILL.md` step 6a's own exit-conditions table
139
+ already treats a round-cap exit, an iteration-limit exit, and a
140
+ "same issues persist" exit as fail-equivalent — but only for step 9's
141
+ `.pr-review-passed` gate-write condition, and step 9 never runs under `--json`.
142
+ Without this second rule, an escalated review whose only remaining issues are
143
+ `warning`-severity would compute `overall: "warn"` from the per-agent totals
144
+ alone and a `--json` caller (e.g. `/pr`'s internal `/code-review --since
145
+ <base> --json` call) would see a passing-looking `"warn"` and proceed —
146
+ silently missing the escalation, exactly the gap the `dispatchFailures` rule
147
+ above already closed for dispatch coverage. A **clean** `converged` exit
148
+ (zero actionable issues, or the round ledger reporting `converged`) is
149
+ **not** an escalation and does not trigger this rule. Apply both override
150
+ rules — `dispatchFailures` and fix-loop escalation — after the totals-based
151
+ `overall` computation, so either one always wins regardless of the per-agent
152
+ severity mix.
153
+
154
+ **`--json` output contract.** When `--json` is set, the object above is the
155
+ run's *only* output: printed to stdout, and no `corrections/*.json` files or
156
+ `.pr-review-passed` gate file are written — regardless of scope (`--path`,
157
+ `--since`, `--all`, auto-scope) or how many issues were found. This holds
158
+ whether `--json` was reached directly or via `/pr`'s call into `/code-review
159
+ --json` (see SKILL.md steps 7–9).
160
+
161
+ ## Per-slice section artifact (sliced mode)
162
+
163
+ Written by `scripts/ledger.py` → `write_section` to
164
+ `.dev-team-reports/code-review/raw/section-<id>.json` as each slice completes,
165
+ then dropped from orchestrator context (persist-and-drop). `scripts/consolidate.py`
166
+ reads these back for the final report.
167
+
168
+ ```json
169
+ {
170
+ "schema": "code-review-section/v1",
171
+ "id": "0001",
172
+ "files": ["src/auth/login.ts", "src/auth/session.ts"],
173
+ "is_declarative": false,
174
+ "panel": ["correctness-review", "structure-review"],
175
+ "findings": [
176
+ {"severity": "warning", "confidence": "medium", "agent": "structure-review", "file": "src/auth/login.ts", "line": 42, "message": "..."}
177
+ ],
178
+ "dispatchFailures": []
179
+ }
180
+ ```
181
+
182
+ - `id` is the slice id; the filename is `section-<id>.json`.
183
+ - `dispatchFailures` (issue #1762, always present, empty array when none): this
184
+ slice's own unrecovered dispatch failures — same shape as the legacy path's
185
+ field (below). `scripts/consolidate.py` concatenates every slice's list into
186
+ the consolidated aggregate's own `dispatchFailures` field (see below).
187
+ - `panel` lists the agents that **actually ran** for this slice — a reduced-panel
188
+ (declarative) slice lists only `correctness-review` and `structure-review`, so
189
+ a reader can tell "fewer findings" from "fewer reviewers ran".
190
+ - `findings` use the per-agent `issues[]` shape above **plus an `agent` field**
191
+ naming the review dimension that reported each one. Because a slice's whole
192
+ panel writes into one flat `findings[]` list, that `agent` tag is what lets
193
+ `consolidate.py` merge reporting agents per `file:line` and roll up recurring
194
+ themes — omitting it yields empty `agents[]` arrays and no themes.
195
+
196
+ ### Schema-drift tolerance (#1261)
197
+
198
+ Real review-agent output drifts from this schema — agents return the native
199
+ `{status, issues, summary}` shape, key the list as `issues` (the per-agent key)
200
+ instead of `findings` (the section key), or add extra top-level keys. The
201
+ aggregator absorbs these variants deterministically rather than miscounting:
202
+
203
+ - `consolidate.py`'s `consolidate()` reads a section's findings from `findings`
204
+ **or** `issues` (canonical first), so a mis-keyed list is aggregated, never
205
+ silently counted as zero. A value present but not a list degrades to "no
206
+ findings" rather than crashing.
207
+ - `consolidate.normalize_agent_result(raw, agent_name=None)` is the extraction
208
+ contract for folding one agent's raw result into a section's flat `findings[]`:
209
+ it pulls the list from either key, ignores extra keys (`status`, `summary`),
210
+ and tags each finding with its reporting `agent` (`raw["agentName"]`, else the
211
+ passed `agent_name`). Non-dict input degrades to `[]`; it never raises.
212
+
213
+ This tolerance is a safety net for silent drift, **not** a licence to emit the
214
+ wrong shape — the per-agent contract above (`issues[]`) remains authoritative.
215
+
216
+ ## Progress ledger (sliced mode)
217
+
218
+ Written by `init_ledger` to `.dev-team-reports/code-review/ledger.json`, updated to
219
+ `done` as each slice's section artifact lands. Inspectable/interruptible — a
220
+ partial ledger is always valid JSON.
221
+
222
+ ```json
223
+ {
224
+ "schema": "code-review-ledger/v1",
225
+ "cap": 50,
226
+ "slices": [
227
+ {"id": "0001", "files": ["src/auth/login.ts"], "is_declarative": false, "status": "pending"}
228
+ ]
229
+ }
230
+ ```
231
+
232
+ - `cap` is the per-slice file cap the run partitioned with; `--resume` **refuses**
233
+ a different cap rather than silently repartitioning (see `sliced-mode.md`).
234
+ - `status` is `pending` until the slice's section artifact exists, then `done`.
235
+ The artifact on disk — not this status field — is the source of truth for
236
+ `--resume`.
237
+
238
+ ## Consolidated aggregate (sliced mode)
239
+
240
+ Produced by `scripts/consolidate.py` → `consolidate(sections)` from all
241
+ `section-*.json` artifacts. It extends the aggregated `--json` object above with
242
+ three sliced-only fields, and reuses the same `topFindings` dedup contract
243
+ (one entry per distinct `file:line`, reporting agents merged into `agents[]`,
244
+ severity = the single highest enum).
245
+
246
+ ```json
247
+ {
248
+ "sliced": true,
249
+ "sliceCount": 24,
250
+ "overall": "warn",
251
+ "totals": {"errors": 0, "warnings": 5, "suggestions": 3},
252
+ "topFindings": [
253
+ {"severity": "warning", "agents": ["structure-review", "correctness-review"], "file": "src/api/handler.ts", "line": 15, "message": "..."}
254
+ ],
255
+ "recurringThemes": [
256
+ {"agent": "structure-review", "slices": ["0003", "0007", "0011"], "occurrences": 9}
257
+ ],
258
+ "reducedPanelSlices": ["0002", "0019"],
259
+ "dispatchFailures": [
260
+ {"agentName": "arch-review", "attempts": 2, "error": "Tool result missing due to internal error", "shape": null, "extraction": null}
261
+ ],
262
+ "summary": "WARN across 24 slices — 0 errors, 5 warnings, 3 suggestions; 1 recurring theme(s)."
263
+ }
264
+ ```
265
+
266
+ - `summary`: a one-line roll-up (status, slice count, totals, theme count).
267
+ - `malformedArtifacts` (optional): present only when a `section-*.json` was
268
+ unreadable — an array of the offending paths; `main()` also reports each to
269
+ stderr and exits non-zero, so a bad artifact is never silently dropped.
270
+ - `recurringThemes`: review dimensions (by `agent`) whose findings recur across
271
+ **two or more slices** — the systemic-pattern rollup (e.g. the same god-class
272
+ or leak flagged in many modules). `slices` lists the affected slice ids;
273
+ `occurrences` is the total finding count for that dimension. A dimension
274
+ appearing in only one slice is **not** a theme.
275
+ - `reducedPanelSlices`: the ids of slices that ran the reduced (declarative)
276
+ panel — so a reader can tell "fewer findings" from "fewer reviewers ran".
277
+ - `dispatchFailures` (issue #1762, always present, empty array when none):
278
+ the concatenation of every slice's own `dispatchFailures` entries (per-slice
279
+ schema above) — agents whose `Agent` tool dispatch failed and then failed a
280
+ single individual retry, for that slice's panel. Same shape and same
281
+ `agentName`/`attempts`/`error`/`shape`/`extraction` fields as the legacy
282
+ aggregate's `dispatchFailures` above; consolidation only concatenates, it
283
+ does not re-shape. A non-empty list is never omitted because the rest of
284
+ the run returned cleanly.
285
+ - **A non-empty `dispatchFailures` forces `overall: "fail"`**, unconditionally,
286
+ after the totals-based `overall` computation above — the same
287
+ unconditional-override rule as the legacy aggregate, so a lens that never
288
+ ran on even one slice cannot be masked by a `pass`/`warn` computed from the
289
+ slices that did return.
290
+
291
+ ## Correction prompt JSON
292
+
293
+ ```json
294
+ {
295
+ "priority": "high|medium|low",
296
+ "confidence": "high|medium",
297
+ "category": "structure-review",
298
+ "instruction": "Fix: God object handles too many concerns (Suggested: Split into focused controllers)",
299
+ "context": "Line 42 in src/auth/login.ts",
300
+ "affectedFiles": ["src/auth/login.ts"]
301
+ }
302
+ ```
303
+
304
+ Severity mapping: error→high, warning→medium, suggestion→low.
305
+
306
+ Correction prompts are only generated for issues with `confidence: high` or `confidence: medium`. Issues with `confidence: none` are included in the review report but do not produce correction prompts — they require human judgment and must be resolved manually before merging.
307
+
308
+ ## Status rules
309
+
310
+ - **pass**: Zero issues
311
+ - **warn**: Issues found, none are errors
312
+ - **fail**: At least one error-severity issue
313
+ - **skip**: see the canonical definition in [`knowledge/review-agent-output-contract.md`](../../knowledge/review-agent-output-contract.md#status-values)
314
+
315
+ `dispatchFailures` entries carry no `status` at all — the agent never ran, so
316
+ none of the four values above apply. See the `dispatchFailures` field
317
+ description above.
318
+
319
+ ## Model tier values
320
+
321
+ Each agent declares a `Model tier` field that controls which model runs it:
322
+
323
+ | Tier | Model | Use for |
324
+ | ------ | ------- | --------- |
325
+ | `small` | Haiku | Pattern matching, thresholds, naming checks |
326
+ | `mid` | Sonnet | Structural analysis, test quality, mutation detection |
327
+ | `frontier` | Opus | Security analysis, domain modeling, semantic reasoning |
328
+
329
+ ## Context needs values
330
+
331
+ Each agent declares a `Context needs` field that controls what input it receives:
332
+
333
+ | Value | Input | When to use |
334
+ | ------- | ------- | ------------- |
335
+ | `diff-only` | Git diff output only | Pattern-matching agents (naming, FP) |
336
+ | `full-file` | Complete file contents | Agents needing function-level context |
337
+ | `project-structure` | Full files + directory tree | Agents reasoning about architecture |
338
+
339
+ ## Review Findings prompt (interactive — step 6)
340
+
341
+ When actionable issues exist, present this prompt before any fix action. **This
342
+ prompt is bypassed under `--json` (or `--yes`)**: those runs are contractually
343
+ non-interactive and default to report-only (no code modified) — see SKILL.md
344
+ step 6, exception (a).
345
+
346
+ ```text
347
+ ## Review Findings
348
+
349
+ Found N actionable issues (N errors, N warnings) that can be
350
+ auto-fixed, plus N issues requiring human review.
351
+
352
+ Actionable issues by agent:
353
+ - structure-review: 3 (2 error, 1 warning)
354
+ - naming-review: 2 (2 warning)
355
+ - js-fp-review: 1 (1 error)
356
+
357
+ Options:
358
+ 1. **Fix** — Auto-fix actionable issues and re-run review
359
+ (up to 5 iterations until clean)
360
+ 2. **Report only** — Save all findings to a report without
361
+ modifying any code
362
+ ```
363
+
364
+ ## Review-Fix Loop iteration log (step 6a-iv)
365
+
366
+ ```text
367
+ ## Review-Fix Loop
368
+
369
+ | Iteration | Actionable Issues | Fixed | Remaining | Agents Re-run |
370
+ |-----------|-------------------|-------|-----------|---------------|
371
+ | 1 | 7 | 6 | 1 | 3 |
372
+ | 2 | 1 | 1 | 0 | 1 |
373
+
374
+ Loop converged in 2 iterations.
375
+ ```
376
+
377
+ If the loop did not converge:
378
+
379
+ ```text
380
+ Loop stopped after 5 iterations. 2 issues remain:
381
+ - [security-review] SQL injection at src/db/query.ts:42 [auto-fix failed — human review required]
382
+ - [domain-review] Abstraction leak at src/api/handler.ts:15 [confidence: none — human review required]
383
+ ```
384
+
385
+ ## Code Review Summary report (step 7, prose mode)
386
+
387
+ ```text
388
+ # Code Review Summary
389
+
390
+ | Agent | Status | Issues | Fixed | Model Tier |
391
+ |--------------------|--------|--------|-------|------------|
392
+ | test-review | PASS | 0 | — | mid |
393
+ | structure-review | PASS | 2 | 2 | mid |
394
+ | security-review | WARN | 1 | 0 | frontier |
395
+ | ... | ... | ... | ... | ... |
396
+
397
+ Overall: WARN after 2 fix iterations (N agents passed, N warned, N failed)
398
+ Total issues found: N | Auto-fixed: N | Human review required: N
399
+
400
+ ## Dispatch Failures
401
+
402
+ | Agent | Attempts | Error |
403
+ |-------|----------|-------|
404
+ | arch-review | 2 | Tool result missing due to internal error |
405
+
406
+ Gate NOT written: 1 lens never ran and its retry also failed. Re-run
407
+ /code-review to retry the missing lens(es).
408
+ ```
409
+
410
+ The **Dispatch Failures** section is present only when `dispatchFailures` is
411
+ non-empty (issue #1752) — omit it entirely on a clean run, but never omit it
412
+ when there is at least one entry, regardless of how the rest of the panel
413
+ scored.
414
+
415
+ After the summary, render remaining issues (those not auto-fixed — no
416
+ confidence, auto-fix failed, or suggestion-only) with
417
+ `scripts/render_tiered_findings.py` (#2170) against this round's aggregated
418
+ finding list — the same in-memory list already assembled for the `--json`
419
+ branch and for step 8, no re-dispatch, no I/O beyond that list. By default
420
+ this renders **Tier-1 only**: one line per finding (file, line, agent,
421
+ severity/confidence, first sentence of the message, finding-id), followed by
422
+ a trailing expansion hint. This is the canonical example for this template,
423
+ superseding the old full-message-per-issue listing:
424
+
425
+ ```text
426
+ src/db/query.ts:42 [security-review] error/high — SQL injection via unescaped input. (security-review:src/db/query.ts:42:error)
427
+ src/api/handler.ts:15 [domain-review] warning/none — Abstraction leak in handler. (domain-review:src/api/handler.ts:15:warning)
428
+ Expand a finding with --expand <finding-id>, or --expand all for every finding.
429
+ ```
430
+
431
+ `--expand <finding-id>|all` (a `/code-review` flag — see Parse Arguments and
432
+ step 7 in `skills/code-review/SKILL.md`, issue #2170 Step 3.2) additionally
433
+ renders the matching finding's (or, with `all`, every finding's) **Tier-2**
434
+ block — the full message and suggested fix — appended after the Tier-1
435
+ report above:
436
+
437
+ ```text
438
+ === security-review:src/db/query.ts:42:error ===
439
+ SQL injection via unescaped input. User-controlled `id` is concatenated
440
+ directly into the query string without parameterization.
441
+ Suggested fix: Use a parameterized query / prepared statement instead of
442
+ string concatenation.
443
+ ```
444
+
445
+ A zero-finding round renders a clean-pass summary line instead
446
+ (`render_tiered_findings.CLEAN_PASS_SUMMARY`), with no per-finding lines and
447
+ no expansion hint — there is nothing to expand. Confidence and
448
+ suggestion-vs-error status are visible directly in each Tier-1 line's
449
+ `severity/confidence` field (e.g. `warning/none`, `suggestion/medium`); the
450
+ old separate `[confidence: none]`/`[suggestion]` bracket tags are retired
451
+ along with the full-message listing they annotated. `[auto-fix failed]` is
452
+ not carried into this rendering — it is a step 6a fix-loop runtime outcome,
453
+ not a property of the finding itself — and remains visible in the step
454
+ 6a-iv iteration log above when the loop did not converge. Append the
455
+ iteration table above.
456
+
457
+ `--json` (step 7's other branch) and `./corrections/*.json` (step 8) are
458
+ unaffected by this rendering path — both already read/write the full
459
+ finding objects independently of `render_tiered_findings.py`, which is
460
+ prose-path only, and neither branch is touched by it. `--expand` is
461
+ therefore a no-op under `--json` (nothing there ever calls this script); see
462
+ `skills/code-review/SKILL.md` step 7 for the exact non-interference
463
+ statement.
464
+
465
+ ## Override audit log entry (step 2, `--force` path)
466
+
467
+ Append to `.claude/metrics/override-audit.jsonl` (create if missing):
468
+
469
+ ```json
470
+ {
471
+ "timestamp": "<ISO 8601>",
472
+ "branch": "<current branch>",
473
+ "triggeredBy": "--force",
474
+ "reason": "<value of --reason>",
475
+ "targetFiles": ["<file list>"],
476
+ "gatesSkipped": ["lint", "type-check", "secret-scan", "semgrep", "pipeline-red"]
477
+ }
478
+ ```
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env python3
2
+ """Decide whether a /code-review run should engage sliced mode, and at what cap.
3
+
4
+ Pure policy — no filesystem, no globals. ``should_slice`` encodes the flag /
5
+ scope / threshold precedence the plan's Slice 1 Gherkin specifies;
6
+ ``check_slice_ceiling`` is the advisory guard for extreme-scale repos. Kept in
7
+ its own module (not ``partition.py``) so activation *policy* can change without
8
+ touching the partitioning *algorithm*.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ # Default per-slice file cap when sliced mode auto-engages (operator can
14
+ # override with --slice N).
15
+ DEFAULT_CAP = 50
16
+
17
+ # A full-repo review with more than this many files auto-engages sliced mode.
18
+ # Mirrors the existing ">500" scope-validation tier in code-review/SKILL.md.
19
+ LARGE_REPO_THRESHOLD = 500
20
+
21
+ # Above this many slices the run warns and suggests a larger cap. Advisory
22
+ # only — it never refuses (see the plan's Risks section).
23
+ SLICE_COUNT_CEILING = 200
24
+
25
+ # The one scope kind that auto-engages. --path / --since / auto-scoped
26
+ # uncommitted changes are never auto-sliced.
27
+ FULL_REPO = "full-repo"
28
+
29
+
30
+ def _validate_cap(value: object) -> int:
31
+ """Return ``value`` as a positive int cap, or raise ValueError naming it."""
32
+ if isinstance(value, bool) or not isinstance(value, int) or value < 1:
33
+ raise ValueError(
34
+ f"--slice must be a positive integer number of files per slice, "
35
+ f"got {value!r}"
36
+ )
37
+ return value
38
+
39
+
40
+ def should_slice(
41
+ scope_kind: str,
42
+ file_count: int,
43
+ *,
44
+ threshold: int = LARGE_REPO_THRESHOLD,
45
+ slice_flag: int | None = None,
46
+ no_slice_flag: bool = False,
47
+ default_cap: int = DEFAULT_CAP,
48
+ ) -> tuple[bool, int | None]:
49
+ """Return ``(engage_sliced_mode, effective_cap)``.
50
+
51
+ Precedence (highest first):
52
+
53
+ 1. ``--no-slice`` always wins — never slice (returns ``(False, None)``).
54
+ 2. ``--slice N`` always slices with cap ``N`` at any size; ``N`` is
55
+ validated as a positive integer (raises ``ValueError`` otherwise).
56
+ 3. Auto-engage only when ``scope_kind`` is full-repo **and**
57
+ ``file_count`` is strictly greater than ``threshold``. Exactly at the
58
+ threshold does not engage.
59
+ 4. Otherwise do not slice.
60
+ """
61
+ if no_slice_flag:
62
+ return (False, None)
63
+
64
+ if slice_flag is not None:
65
+ return (True, _validate_cap(slice_flag))
66
+
67
+ if scope_kind == FULL_REPO and file_count > threshold:
68
+ return (True, default_cap)
69
+
70
+ return (False, None)
71
+
72
+
73
+ def check_slice_ceiling(
74
+ slice_count: int, ceiling: int = SLICE_COUNT_CEILING
75
+ ) -> str | None:
76
+ """Return an advisory warning when ``slice_count`` exceeds ``ceiling``.
77
+
78
+ Advisory only — the caller reports it and proceeds; it never blocks. Returns
79
+ ``None`` when the count is at or below the ceiling.
80
+ """
81
+ if slice_count > ceiling:
82
+ return (
83
+ f"Slice count is very high ({slice_count} slices). Consider a larger "
84
+ f"--slice cap to reduce the number of agent panels and the run's cost."
85
+ )
86
+ return None