claude-dev-env 2.12.0 → 2.14.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 (399) hide show
  1. package/AGENTS.md +61 -0
  2. package/CLAUDE.md +1 -57
  3. package/_shared/AGENTS.md +15 -0
  4. package/_shared/CLAUDE.md +1 -15
  5. package/_shared/advisor/AGENTS.md +22 -0
  6. package/_shared/advisor/CLAUDE.md +1 -22
  7. package/_shared/pr-loop/AGENTS.md +27 -0
  8. package/_shared/pr-loop/CLAUDE.md +1 -27
  9. package/_shared/pr-loop/scripts/AGENTS.md +35 -0
  10. package/_shared/pr-loop/scripts/CLAUDE.md +1 -35
  11. package/_shared/pr-loop/scripts/code_rules_gate.py +2 -3
  12. package/_shared/pr-loop/scripts/code_rules_gate_parts/AGENTS.md +42 -0
  13. package/_shared/pr-loop/scripts/code_rules_gate_parts/CLAUDE.md +1 -42
  14. package/_shared/pr-loop/scripts/pr_loop_shared_constants/AGENTS.md +26 -0
  15. package/_shared/pr-loop/scripts/pr_loop_shared_constants/CLAUDE.md +1 -26
  16. package/_shared/pr-loop/scripts/test_code_rules_gate.py +0 -26
  17. package/_shared/pr-loop/scripts/tests/AGENTS.md +44 -0
  18. package/_shared/pr-loop/scripts/tests/CLAUDE.md +1 -44
  19. package/_shared/process-tree/AGENTS.md +41 -0
  20. package/_shared/process-tree/CLAUDE.md +1 -41
  21. package/agents/AGENTS.md +31 -0
  22. package/agents/CLAUDE.md +1 -32
  23. package/agents/clean-coder.md +6 -6
  24. package/agents/pr-description-writer.md +11 -81
  25. package/agents/test_agent_frontmatter.py +4 -4
  26. package/audit-rubrics/AGENTS.md +43 -0
  27. package/audit-rubrics/CLAUDE.md +1 -43
  28. package/audit-rubrics/category_rubrics/AGENTS.md +37 -0
  29. package/audit-rubrics/category_rubrics/CLAUDE.md +1 -37
  30. package/audit-rubrics/prompts/AGENTS.md +37 -0
  31. package/audit-rubrics/prompts/CLAUDE.md +1 -37
  32. package/bin/AGENTS.md +112 -0
  33. package/bin/CLAUDE.md +1 -112
  34. package/bin/ever-shipped-skills.mjs +1 -0
  35. package/bin/install-constants.mjs +6 -7
  36. package/bin/install.mjs +71 -13
  37. package/bin/install.prune.test.mjs +26 -0
  38. package/bin/install.settings-defaults.test.mjs +60 -33
  39. package/bin/install.test.mjs +36 -4
  40. package/commands/AGENTS.md +23 -0
  41. package/commands/CLAUDE.md +1 -23
  42. package/commands/hook-log-extract.md +3 -3
  43. package/commands/sr-loop.md +9 -5
  44. package/docs/AGENTS.md +32 -0
  45. package/docs/CLAUDE.md +1 -33
  46. package/docs/CODE_RULES.md +1 -1
  47. package/docs/imagegen.md +22 -0
  48. package/docs/references/AGENTS.md +17 -0
  49. package/docs/references/CLAUDE.md +1 -18
  50. package/hooks/AGENTS.md +31 -0
  51. package/hooks/CLAUDE.md +1 -31
  52. package/hooks/_gh_pr_author_swap_utils.py +14 -0
  53. package/hooks/advisory/AGENTS.md +16 -0
  54. package/hooks/advisory/CLAUDE.md +1 -16
  55. package/hooks/blocking/AGENTS.md +123 -0
  56. package/hooks/blocking/CLAUDE.md +1 -148
  57. package/hooks/blocking/claude_md_orphan_file_blocker_parts/AGENTS.md +28 -0
  58. package/hooks/blocking/claude_md_orphan_file_blocker_parts/CLAUDE.md +1 -28
  59. package/hooks/blocking/code_rules_banned_identifiers.py +1 -1
  60. package/hooks/blocking/code_rules_dead_module_constant.py +149 -37
  61. package/hooks/blocking/code_rules_probe_chains.py +6 -2
  62. package/hooks/blocking/config/AGENTS.md +10 -0
  63. package/hooks/blocking/config/CLAUDE.md +1 -22
  64. package/hooks/blocking/conventional_pr_title_gate.py +1 -2
  65. package/hooks/blocking/gh_pr_author_restore.py +7 -2
  66. package/hooks/blocking/intent_only_ending_blocker.py +11 -16
  67. package/hooks/blocking/inventory_intent_records/AGENTS.md +26 -0
  68. package/hooks/blocking/inventory_intent_records/CLAUDE.md +1 -26
  69. package/hooks/blocking/package_inventory_stale_blocker_parts/AGENTS.md +26 -0
  70. package/hooks/blocking/package_inventory_stale_blocker_parts/CLAUDE.md +1 -26
  71. package/hooks/blocking/pii_prevention_blocker_parts/AGENTS.md +24 -0
  72. package/hooks/blocking/pii_prevention_blocker_parts/CLAUDE.md +1 -24
  73. package/hooks/blocking/send_user_file_open_locally_blocker.py +1 -1
  74. package/hooks/blocking/stop_dispatcher.py +4 -4
  75. package/hooks/blocking/tdd_enforcer_parts/AGENTS.md +30 -0
  76. package/hooks/blocking/tdd_enforcer_parts/CLAUDE.md +1 -30
  77. package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +0 -3
  78. package/hooks/blocking/test_code_rules_enforcer_banned_prefixes.py +1 -1
  79. package/hooks/blocking/test_code_rules_enforcer_dead_module_constant.py +171 -0
  80. package/hooks/blocking/test_code_rules_enforcer_magic_allowlist.py +1 -1
  81. package/hooks/blocking/test_gh_pr_author_restore.py +2 -1
  82. package/hooks/blocking/test_intent_only_ending_blocker.py +4 -0
  83. package/hooks/blocking/test_pre_tool_use_dispatcher.py +6 -7
  84. package/hooks/blocking/test_send_user_file_open_locally_blocker.py +4 -3
  85. package/hooks/blocking/test_shared_stdin_adoption.py +0 -2
  86. package/hooks/diagnostic/AGENTS.md +43 -0
  87. package/hooks/diagnostic/CLAUDE.md +1 -43
  88. package/hooks/diagnostic/hook_log_extractor.py +4 -38
  89. package/hooks/diagnostic/hook_log_stop_wrapper.py +6 -155
  90. package/hooks/diagnostic/migrations/AGENTS.md +16 -0
  91. package/hooks/diagnostic/migrations/CLAUDE.md +1 -16
  92. package/hooks/diagnostic/queries/AGENTS.md +19 -0
  93. package/hooks/diagnostic/queries/CLAUDE.md +1 -19
  94. package/hooks/diagnostic/test_hook_log_extractor.py +10 -23
  95. package/hooks/diagnostic/test_hook_log_stop_wrapper.py +3 -331
  96. package/hooks/git-hooks/AGENTS.md +31 -0
  97. package/hooks/git-hooks/CLAUDE.md +1 -31
  98. package/hooks/git-hooks/git_hooks_constants/AGENTS.md +21 -0
  99. package/hooks/git-hooks/git_hooks_constants/CLAUDE.md +1 -21
  100. package/hooks/git-hooks/git_hooks_constants/__init__.py +4 -12
  101. package/hooks/git-hooks/pre_push.py +49 -118
  102. package/hooks/git-hooks/test_pre_push.py +111 -137
  103. package/hooks/hooks.json +0 -35
  104. package/hooks/hooks_constants/AGENTS.md +104 -0
  105. package/hooks/hooks_constants/CLAUDE.md +1 -113
  106. package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +0 -11
  107. package/hooks/hooks_constants/convergence_branch_constants.py +0 -1
  108. package/hooks/hooks_constants/fable_spawn_gate_constants.py +3 -4
  109. package/hooks/hooks_constants/hook_log_extractor_constants.py +1 -2
  110. package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +0 -8
  111. package/hooks/hooks_constants/send_user_file_open_locally_blocker_constants.py +1 -6
  112. package/hooks/hooks_constants/stop_dispatcher_constants.py +0 -1
  113. package/hooks/hooks_constants/task_list_loop_starter_constants.py +4 -3
  114. package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +1 -26
  115. package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +0 -5
  116. package/hooks/hooks_constants/test_stop_dispatcher_constants.py +0 -1
  117. package/hooks/hooks_constants/working_style_prompt_constants.py +29 -20
  118. package/hooks/lifecycle/AGENTS.md +18 -0
  119. package/hooks/lifecycle/CLAUDE.md +1 -20
  120. package/hooks/observability/AGENTS.md +20 -0
  121. package/hooks/observability/CLAUDE.md +1 -20
  122. package/hooks/session/AGENTS.md +33 -0
  123. package/hooks/session/CLAUDE.md +1 -33
  124. package/hooks/session/gh_pr_author_session_cleanup.py +7 -2
  125. package/hooks/session/task_list_loop_starter.py +3 -3
  126. package/hooks/session/test_gh_pr_author_session_cleanup.py +2 -1
  127. package/hooks/session/test_task_list_loop_starter.py +10 -2
  128. package/hooks/session/test_working_style_prompt.py +9 -4
  129. package/hooks/validation/AGENTS.md +20 -0
  130. package/hooks/validation/CLAUDE.md +1 -20
  131. package/hooks/validators/AGENTS.md +51 -0
  132. package/hooks/validators/CLAUDE.md +1 -51
  133. package/hooks/validators/health_check.py +52 -19
  134. package/hooks/validators/python_style_checks.py +1 -1
  135. package/hooks/validators/test_health_check.py +112 -27
  136. package/hooks/workflow/AGENTS.md +16 -0
  137. package/hooks/workflow/CLAUDE.md +1 -16
  138. package/installable-surfaces.manifest.json +1 -0
  139. package/output-styles/AGENTS.md +15 -0
  140. package/output-styles/CLAUDE.md +1 -15
  141. package/package.json +2 -1
  142. package/rules/AGENTS.md +61 -0
  143. package/rules/CLAUDE.md +1 -63
  144. package/rules/code-standards.md +5 -9
  145. package/rules/doc-prose-cuts.md +1 -1
  146. package/rules/gh-cli-conventions.md +0 -1
  147. package/rules/git-workflow.md +1 -3
  148. package/scripts/AGENTS.md +62 -0
  149. package/scripts/CLAUDE.md +1 -63
  150. package/scripts/_code_review_test_support.py +0 -95
  151. package/scripts/codex_compat_materializer.py +4 -0
  152. package/scripts/dev_env_scripts_constants/AGENTS.md +21 -0
  153. package/scripts/dev_env_scripts_constants/CLAUDE.md +1 -21
  154. package/scripts/dev_env_scripts_constants/code_review_constants.py +9 -98
  155. package/scripts/dev_env_scripts_constants/test_code_review_constants.py +1 -44
  156. package/scripts/invoke_code_review.py +8 -451
  157. package/scripts/sync_to_cursor/AGENTS.md +23 -0
  158. package/scripts/sync_to_cursor/CLAUDE.md +1 -23
  159. package/scripts/test_invoke_code_review.py +5 -61
  160. package/scripts/test_invoke_code_review_cli.py +1 -45
  161. package/scripts/test_invoke_code_review_contract.py +1 -118
  162. package/scripts/test_validate_instruction_pairs.py +90 -0
  163. package/scripts/test_verify_installable_package.py +5 -1
  164. package/scripts/tests/AGENTS.md +33 -0
  165. package/scripts/tests/CLAUDE.md +1 -33
  166. package/scripts/tests/test_codex_compat_materializer.py +36 -1
  167. package/scripts/validate_instruction_pairs.py +183 -0
  168. package/settings.json +1 -10
  169. package/skills/AGENTS.md +72 -0
  170. package/skills/CLAUDE.md +1 -64
  171. package/skills/_shared/AGENTS.md +44 -0
  172. package/skills/_shared/CLAUDE.md +1 -44
  173. package/skills/_shared/advisor/AGENTS.md +9 -0
  174. package/skills/_shared/advisor/CLAUDE.md +1 -9
  175. package/skills/_shared/pr-loop/AGENTS.md +50 -0
  176. package/skills/_shared/pr-loop/CLAUDE.md +1 -50
  177. package/skills/_shared/pr-loop/prompts/AGENTS.md +9 -0
  178. package/skills/_shared/pr-loop/prompts/CLAUDE.md +1 -9
  179. package/skills/_shared/pr-loop/scripts/AGENTS.md +35 -0
  180. package/skills/_shared/pr-loop/scripts/CLAUDE.md +1 -35
  181. package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +24 -0
  182. package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +1 -24
  183. package/skills/anthropic-plan/AGENTS.md +34 -0
  184. package/skills/anthropic-plan/CLAUDE.md +1 -34
  185. package/skills/anthropic-plan/scripts/AGENTS.md +11 -0
  186. package/skills/anthropic-plan/scripts/CLAUDE.md +1 -11
  187. package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +16 -0
  188. package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +1 -16
  189. package/skills/anthropic-plan/templates/AGENTS.md +13 -0
  190. package/skills/anthropic-plan/templates/CLAUDE.md +1 -13
  191. package/skills/anthropic-plan/workflow/AGENTS.md +14 -0
  192. package/skills/anthropic-plan/workflow/CLAUDE.md +1 -14
  193. package/skills/auditing-claude-config/AGENTS.md +21 -0
  194. package/skills/auditing-claude-config/CLAUDE.md +1 -21
  195. package/skills/autoconverge/AGENTS.md +36 -0
  196. package/skills/autoconverge/CLAUDE.md +1 -36
  197. package/skills/autoconverge/reference/AGENTS.md +16 -0
  198. package/skills/autoconverge/reference/CLAUDE.md +1 -16
  199. package/skills/autoconverge/reference/convergence.md +7 -7
  200. package/skills/autoconverge/reference/gotchas.md +3 -10
  201. package/skills/autoconverge/workflow/AGENTS.md +26 -0
  202. package/skills/autoconverge/workflow/CLAUDE.md +1 -26
  203. package/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +16 -0
  204. package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +1 -16
  205. package/skills/autoconverge/workflow/converge.contract.test.mjs +53 -1388
  206. package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +4 -3
  207. package/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +33 -493
  208. package/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +15 -97
  209. package/skills/autoconverge/workflow/converge.mjs +201 -238
  210. package/skills/autoconverge/workflow/converge.precatch.test.mjs +1 -1
  211. package/skills/bugteam/AGENTS.md +30 -0
  212. package/skills/bugteam/CLAUDE.md +1 -30
  213. package/skills/bugteam/CONSTRAINTS.md +1 -1
  214. package/skills/bugteam/SKILL.md +9 -0
  215. package/skills/bugteam/reference/AGENTS.md +20 -0
  216. package/skills/bugteam/reference/CLAUDE.md +1 -20
  217. package/skills/bugteam/reference/audit-and-teammates.md +10 -6
  218. package/skills/bugteam/reference/obstacles/AGENTS.md +24 -0
  219. package/skills/bugteam/reference/obstacles/CLAUDE.md +1 -24
  220. package/skills/bugteam/scripts/AGENTS.md +30 -0
  221. package/skills/bugteam/scripts/CLAUDE.md +1 -30
  222. package/skills/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +18 -0
  223. package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +1 -18
  224. package/skills/bugteam/test_skill_additions.py +9 -0
  225. package/skills/closeout/reference/handoff-prompt-template.md +1 -1
  226. package/skills/codex-review/AGENTS.md +46 -0
  227. package/skills/codex-review/CLAUDE.md +1 -46
  228. package/skills/codex-review/reference/AGENTS.md +15 -0
  229. package/skills/codex-review/reference/CLAUDE.md +1 -15
  230. package/skills/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +18 -0
  231. package/skills/codex-review/scripts/codex_review_scripts_constants/CLAUDE.md +1 -18
  232. package/skills/codex-review/test_skill_scaffold.py +3 -3
  233. package/skills/comments/SKILL.md +65 -0
  234. package/skills/copilot-review/AGENTS.md +18 -0
  235. package/skills/copilot-review/CLAUDE.md +1 -18
  236. package/skills/descriptions/SKILL.md +51 -0
  237. package/skills/emergencies/SKILL.md +42 -0
  238. package/skills/everything-search/AGENTS.md +17 -0
  239. package/skills/everything-search/CLAUDE.md +1 -17
  240. package/skills/fresh-branch/AGENTS.md +14 -0
  241. package/skills/fresh-branch/CLAUDE.md +1 -14
  242. package/skills/grok-spawn/AGENTS.md +28 -0
  243. package/skills/grok-spawn/CLAUDE.md +1 -28
  244. package/skills/orchestrator/SKILL.md +2 -4
  245. package/skills/plan-to-pr/SKILL.md +6 -7
  246. package/skills/plan-to-pr/reference/final-validation-tasks.md +1 -1
  247. package/skills/plan-to-pr/reference/process-inventory.md +2 -2
  248. package/skills/plan-to-pr/reference/review-loop.md +2 -2
  249. package/skills/plan-to-pr/reference/run-record.schema.json +1 -1
  250. package/skills/plan-to-pr/reference/task-seeds.md +1 -1
  251. package/skills/plan-to-pr/reference/task-ticket.md +3 -4
  252. package/skills/plan-to-pr/scripts/config/constants.py +1 -2
  253. package/skills/plan-to-pr/scripts/test_validate_protocol.py +1 -1
  254. package/skills/plan-to-pr/test_skill_contract.py +2 -2
  255. package/skills/pr-converge/AGENTS.md +32 -0
  256. package/skills/pr-converge/CLAUDE.md +1 -32
  257. package/skills/pr-converge/SKILL.md +13 -16
  258. package/skills/pr-converge/pr_converge_skill_constants/AGENTS.md +26 -0
  259. package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +1 -26
  260. package/skills/pr-converge/reference/AGENTS.md +28 -0
  261. package/skills/pr-converge/reference/CLAUDE.md +1 -28
  262. package/skills/pr-converge/reference/obstacles/AGENTS.md +23 -0
  263. package/skills/pr-converge/reference/obstacles/CLAUDE.md +1 -23
  264. package/skills/pr-converge/reference/progress-checklist.md +6 -5
  265. package/skills/pr-converge/reference/state-schema.md +1 -27
  266. package/skills/pr-converge/scripts/AGENTS.md +46 -0
  267. package/skills/pr-converge/scripts/CLAUDE.md +1 -46
  268. package/skills/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +18 -0
  269. package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -18
  270. package/skills/pr-converge/workflows/AGENTS.md +16 -0
  271. package/skills/pr-converge/workflows/CLAUDE.md +1 -16
  272. package/skills/pr-loop-cloud-transport/SKILL.md +1 -1
  273. package/skills/pr-loop-cloud-transport/reference/identity-and-hooks.md +3 -3
  274. package/skills/pr-loop-lifecycle/SKILL.md +1 -1
  275. package/skills/pr-loop-lifecycle/reference/teardown-publish-permissions.md +1 -1
  276. package/skills/prototype/SKILL.md +4 -4
  277. package/skills/prototype/reference/honest-limitations.md +5 -5
  278. package/skills/prototype/reference/promotion-tasks.md +2 -2
  279. package/skills/prototype/workflows/promotion.md +4 -6
  280. package/skills/rebase/AGENTS.md +32 -0
  281. package/skills/rebase/CLAUDE.md +1 -32
  282. package/skills/recall/AGENTS.md +30 -0
  283. package/skills/recall/CLAUDE.md +1 -30
  284. package/skills/remember/AGENTS.md +31 -0
  285. package/skills/remember/CLAUDE.md +1 -31
  286. package/skills/reviews/SKILL.md +85 -0
  287. package/skills/session-log/AGENTS.md +32 -0
  288. package/skills/session-log/CLAUDE.md +1 -32
  289. package/skills/session-tidy/AGENTS.md +36 -0
  290. package/skills/session-tidy/CLAUDE.md +1 -36
  291. package/skills/skill-builder/AGENTS.md +49 -0
  292. package/skills/skill-builder/CLAUDE.md +1 -49
  293. package/skills/skill-builder/references/AGENTS.md +25 -0
  294. package/skills/skill-builder/references/CLAUDE.md +1 -25
  295. package/skills/skill-builder/references/deterministic-elements.md +1 -1
  296. package/skills/skill-builder/templates/AGENTS.md +14 -0
  297. package/skills/skill-builder/templates/CLAUDE.md +1 -14
  298. package/skills/skill-builder/workflows/AGENTS.md +19 -0
  299. package/skills/skill-builder/workflows/CLAUDE.md +1 -19
  300. package/skills/small-cl/SKILL.md +52 -0
  301. package/skills/task-build/AGENTS.md +29 -0
  302. package/skills/task-build/CLAUDE.md +1 -29
  303. package/skills/update/AGENTS.md +38 -0
  304. package/skills/update/CLAUDE.md +1 -38
  305. package/system-prompts/AGENTS.md +17 -0
  306. package/system-prompts/CLAUDE.md +1 -17
  307. package/system-prompts/software-engineer.xml +3 -3
  308. package/agents/code-verifier.md +0 -74
  309. package/docs/PR_DESCRIPTION_GUIDE.md +0 -157
  310. package/docs/references/code-review-enforcement.md +0 -132
  311. package/hooks/blocking/code_review_enforcement_config_bootstrap.py +0 -53
  312. package/hooks/blocking/code_review_gate_deny.py +0 -74
  313. package/hooks/blocking/code_review_pr_create_gate.py +0 -198
  314. package/hooks/blocking/code_review_push_gate.py +0 -145
  315. package/hooks/blocking/code_review_stamp_directory_write_blocker.py +0 -348
  316. package/hooks/blocking/code_review_stamp_store.py +0 -233
  317. package/hooks/blocking/code_review_stamp_write_blocker_parts/__init__.py +0 -7
  318. package/hooks/blocking/code_review_stamp_write_blocker_parts/conftest.py +0 -15
  319. package/hooks/blocking/code_review_stamp_write_blocker_parts/obfuscated_stamp_path_reference.py +0 -212
  320. package/hooks/blocking/code_review_stamp_write_blocker_parts/split_directory_change_into_stamp.py +0 -138
  321. package/hooks/blocking/code_review_stamp_write_blocker_parts/test_obfuscated_stamp_path_reference.py +0 -49
  322. package/hooks/blocking/code_review_stamp_write_blocker_parts/test_split_directory_change_into_stamp.py +0 -38
  323. package/hooks/blocking/code_verifier_spawn_preflight_gate.py +0 -483
  324. package/hooks/blocking/config/code_review_enforcement_constants.py +0 -143
  325. package/hooks/blocking/config/test_code_review_enforcement_constants.py +0 -166
  326. package/hooks/blocking/config/verified_commit_constants.py +0 -160
  327. package/hooks/blocking/config/verified_commit_context_constants.py +0 -21
  328. package/hooks/blocking/config/verified_commit_gate_output_constants.py +0 -14
  329. package/hooks/blocking/conftest.py +0 -123
  330. package/hooks/blocking/convergence_gate_blocker.py +0 -310
  331. package/hooks/blocking/pr_converge_bugteam_enforcer.py +0 -170
  332. package/hooks/blocking/pr_description_body_audit.py +0 -148
  333. package/hooks/blocking/pr_description_command_parser.py +0 -237
  334. package/hooks/blocking/pr_description_enforcer.py +0 -227
  335. package/hooks/blocking/pr_description_pr_number.py +0 -155
  336. package/hooks/blocking/pr_description_proof_of_work.py +0 -385
  337. package/hooks/blocking/pr_description_readability.py +0 -364
  338. package/hooks/blocking/reviewer_spawn_gate.py +0 -182
  339. package/hooks/blocking/test_code_review_enforcement_config_bootstrap.py +0 -62
  340. package/hooks/blocking/test_code_review_gate_deny.py +0 -54
  341. package/hooks/blocking/test_code_review_pr_create_gate.py +0 -199
  342. package/hooks/blocking/test_code_review_push_gate.py +0 -205
  343. package/hooks/blocking/test_code_review_stamp_directory_write_blocker.py +0 -199
  344. package/hooks/blocking/test_code_review_stamp_store.py +0 -205
  345. package/hooks/blocking/test_code_verifier_spawn_preflight_gate.py +0 -710
  346. package/hooks/blocking/test_code_verifier_tools_contract.py +0 -28
  347. package/hooks/blocking/test_convergence_gate_blocker.py +0 -428
  348. package/hooks/blocking/test_pr_converge_bugteam_enforcer.py +0 -311
  349. package/hooks/blocking/test_pr_converge_bugteam_enforcer_state_tolerance.py +0 -184
  350. package/hooks/blocking/test_pr_description_enforcer.py +0 -221
  351. package/hooks/blocking/test_pr_description_enforcer_body_audit.py +0 -247
  352. package/hooks/blocking/test_pr_description_enforcer_body_rules.py +0 -493
  353. package/hooks/blocking/test_pr_description_enforcer_command_parser.py +0 -366
  354. package/hooks/blocking/test_pr_description_enforcer_pr_number.py +0 -159
  355. package/hooks/blocking/test_pr_description_enforcer_proof_gate.py +0 -175
  356. package/hooks/blocking/test_pr_description_enforcer_readability.py +0 -443
  357. package/hooks/blocking/test_pr_description_proof_of_work.py +0 -313
  358. package/hooks/blocking/test_reviewer_spawn_gate.py +0 -230
  359. package/hooks/blocking/test_verdict_directory_write_blocker.py +0 -804
  360. package/hooks/blocking/test_verification_verdict_store.py +0 -974
  361. package/hooks/blocking/test_verified_commit_config_bootstrap.py +0 -67
  362. package/hooks/blocking/test_verified_commit_docs_delta.py +0 -176
  363. package/hooks/blocking/test_verified_commit_gate.py +0 -581
  364. package/hooks/blocking/test_verified_commit_gate_additional_context.py +0 -134
  365. package/hooks/blocking/test_verified_commit_message_accuracy_blocker.py +0 -131
  366. package/hooks/blocking/test_verifier_verdict_minter.py +0 -299
  367. package/hooks/blocking/tests/test_verified_commit_gate.py +0 -41
  368. package/hooks/blocking/verdict_directory_write_blocker.py +0 -687
  369. package/hooks/blocking/verification_verdict_store.py +0 -1039
  370. package/hooks/blocking/verified_commit_config_bootstrap.py +0 -63
  371. package/hooks/blocking/verified_commit_gate.py +0 -113
  372. package/hooks/blocking/verified_commit_gate_parts/CLAUDE.md +0 -28
  373. package/hooks/blocking/verified_commit_gate_parts/__init__.py +0 -1
  374. package/hooks/blocking/verified_commit_gate_parts/command_tokenization.py +0 -174
  375. package/hooks/blocking/verified_commit_gate_parts/deny_payload.py +0 -53
  376. package/hooks/blocking/verified_commit_gate_parts/deny_reason.py +0 -80
  377. package/hooks/blocking/verified_commit_gate_parts/directory_resolution.py +0 -170
  378. package/hooks/blocking/verified_commit_gate_parts/gated_invocations.py +0 -217
  379. package/hooks/blocking/verified_commit_gate_parts/tests/conftest.py +0 -10
  380. package/hooks/blocking/verified_commit_gate_parts/tests/test_command_tokenization.py +0 -94
  381. package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_payload.py +0 -17
  382. package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_reason.py +0 -38
  383. package/hooks/blocking/verified_commit_gate_parts/tests/test_directory_resolution.py +0 -71
  384. package/hooks/blocking/verified_commit_gate_parts/tests/test_gated_invocations.py +0 -96
  385. package/hooks/blocking/verified_commit_message_accuracy_blocker.py +0 -167
  386. package/hooks/blocking/verifier_verdict_minter.py +0 -280
  387. package/hooks/hooks_constants/code_verifier_spawn_preflight_gate_constants.py +0 -64
  388. package/hooks/hooks_constants/convergence_gate_blocker_constants.py +0 -53
  389. package/hooks/hooks_constants/pr_converge_bugteam_enforcer_constants.py +0 -55
  390. package/hooks/hooks_constants/pr_converge_bugteam_enforcer_state.py +0 -67
  391. package/hooks/hooks_constants/pr_description_enforcer_constants.py +0 -167
  392. package/hooks/hooks_constants/pr_description_proof_of_work_constants.py +0 -107
  393. package/hooks/hooks_constants/reviewer_spawn_gate_constants.py +0 -41
  394. package/hooks/hooks_constants/test_pr_description_enforcer_constants.py +0 -292
  395. package/hooks/lifecycle/pr_converge_bugteam_skill_tracker.py +0 -198
  396. package/hooks/lifecycle/test_pr_converge_bugteam_skill_tracker.py +0 -283
  397. package/rules/proof-of-work-pr-comments.md +0 -22
  398. package/rules/verified-commit-gate-skip.md +0 -4
  399. package/scripts/Show-Asset.ps1 +0 -106
@@ -148,5 +148,5 @@ test('COMMIT_RECOVERY_MAX_ATTEMPTS is one and bounds the commitWithRecovery loop
148
148
  assert.match(convergeSource, /const COMMIT_RECOVERY_MAX_ATTEMPTS = 1/, 'expected a dedicated commit-recovery cap of one');
149
149
  assert.match(convergeSource, /const FIX_RECOVERY_MAX_ATTEMPTS = 2/, 'expected the wider verify-recovery cap to stay at two');
150
150
  const commitBody = functionSource('commitWithRecovery');
151
- assert.match(commitBody, /attempt < COMMIT_RECOVERY_MAX_ATTEMPTS/, 'expected commitWithRecovery to bound its loop by the dedicated cap');
151
+ assert.match(commitBody, /attempt <= COMMIT_RECOVERY_MAX_ATTEMPTS/, 'expected commitWithRecovery to bound its loop by the dedicated cap');
152
152
  });
@@ -0,0 +1,30 @@
1
+ # bugteam
2
+
3
+ Runs an audit-fix loop on an open pull request until all findings are resolved or the 20-loop cap is reached. Triggered by `/bugteam`, `run the bug team`, `auto-fix the PR until clean`, or `loop audit and fix`.
4
+
5
+ ## Purpose
6
+
7
+ Each loop: a `code-quality-agent` (fresh context, all A–Q audit categories) produces an outcome XML; a `clean-coder` agent applies every fix; the lead commits, pushes, and posts a GitHub PR review (APPROVE on clean, REQUEST_CHANGES with inline anchored comments on dirty). Grants `.claude/**` write permissions at the start and revokes them at the end.
8
+
9
+ ## Key files
10
+
11
+ | File | Purpose |
12
+ |---|---|
13
+ | `SKILL.md` | Hub — pre-flight call, refusals, the audit-posting step (runs the shared `post_audit_thread.py` helper), progress checklist, and situation-to-reference table. Read this first. |
14
+ | `PROMPTS.md` | Spawn XML, A–Q category bindings, outcome XML schemas. |
15
+ | `CONSTRAINTS.md` | Invariants — what the loop must never violate. |
16
+ | `EXAMPLES.md` | Exit scenarios: converged, cap-reached, stuck, refusal, mixed-outcome. |
17
+ | `sources.md` | Doc URLs and verbatim quotes cited in the skill body. |
18
+
19
+ ## Subdirectories
20
+
21
+ | Directory | Role |
22
+ |---|---|
23
+ | `reference/` | Expanded workflow detail loaded on demand (team setup, audit contract, GitHub PR review shape, teardown). |
24
+ | `scripts/` | Python scripts executed by the lead or teammates at runtime. |
25
+
26
+ ## Environment controls
27
+
28
+ - `CLAUDE_REVIEWS_DISABLED=bugteam` — disables the skill entirely (pre-flight exits 7).
29
+ - `BUGTEAM_PREFLIGHT_SKIP=1` — skips pytest in pre-flight.
30
+ - `BUGTEAM_REVIEWER_ACCOUNT=<login>` — names the alternate `gh` account for posting reviews when the PR author and reviewer identity match.
@@ -1,30 +1 @@
1
- # bugteam
2
-
3
- Runs an audit-fix loop on an open pull request until all findings are resolved or the 20-loop cap is reached. Triggered by `/bugteam`, `run the bug team`, `auto-fix the PR until clean`, or `loop audit and fix`.
4
-
5
- ## Purpose
6
-
7
- Each loop: a `code-quality-agent` (fresh context, all A–Q audit categories) produces an outcome XML; a `clean-coder` agent applies every fix; the lead commits, pushes, and posts a GitHub PR review (APPROVE on clean, REQUEST_CHANGES with inline anchored comments on dirty). Grants `.claude/**` write permissions at the start and revokes them at the end.
8
-
9
- ## Key files
10
-
11
- | File | Purpose |
12
- |---|---|
13
- | `SKILL.md` | Hub — pre-flight call, refusals, the audit-posting step (runs the shared `post_audit_thread.py` helper), progress checklist, and situation-to-reference table. Read this first. |
14
- | `PROMPTS.md` | Spawn XML, A–Q category bindings, outcome XML schemas. |
15
- | `CONSTRAINTS.md` | Invariants — what the loop must never violate. |
16
- | `EXAMPLES.md` | Exit scenarios: converged, cap-reached, stuck, refusal, mixed-outcome. |
17
- | `sources.md` | Doc URLs and verbatim quotes cited in the skill body. |
18
-
19
- ## Subdirectories
20
-
21
- | Directory | Role |
22
- |---|---|
23
- | `reference/` | Expanded workflow detail loaded on demand (team setup, audit contract, GitHub PR review shape, teardown). |
24
- | `scripts/` | Python scripts executed by the lead or teammates at runtime. |
25
-
26
- ## Environment controls
27
-
28
- - `CLAUDE_REVIEWS_DISABLED=bugteam` — disables the skill entirely (pre-flight exits 7).
29
- - `BUGTEAM_PREFLIGHT_SKIP=1` — skips pytest in pre-flight.
30
- - `BUGTEAM_REVIEWER_ACCOUNT=<login>` — names the alternate `gh` account for posting reviews when the PR author and reviewer identity match.
1
+ @AGENTS.md
@@ -13,7 +13,7 @@
13
13
  - **Clean-room audits, every loop.** Each bugfind subagent's spawn prompt contains only the PR scope, audit rubric, and the current loop number. Prior loop history stays in the lead.
14
14
  - **Targeted fixes.** Each fix subagent sees ONLY the most recent audit's findings. Prior loops are invisible to the fix subagent.
15
15
  - **Fix subagent receives the latest audit as its input contract.** Each loop's fix run operates on the current audit's output and only that.
16
- - **Lead owns the final PR description rewrite only** (Step 4 Close substep via `pr-loop-lifecycle`), composed directly against `docs/PR_DESCRIPTION_GUIDE.md`.
16
+ - **Lead owns the final PR description.** The lead applies the [description guide](../descriptions/SKILL.md#required-content) through `pr-loop-lifecycle`.
17
17
 
18
18
  ## Why this design
19
19
 
@@ -29,6 +29,15 @@ and take `true` as the pass. When any check fails, run the
29
29
  `pr-loop-cloud-transport` skill first and route every `gh` operation in this
30
30
  skill through its substitution matrix.
31
31
 
32
+ ## Judgment guides
33
+
34
+ Use the [review guide](../reviews/SKILL.md#review-workflow) to decide whether a
35
+ changed behavior is a finding. Use the [comment guide](../comments/SKILL.md#writing-useful-review-comments)
36
+ for posted findings and replies, the [description guide](../descriptions/SKILL.md#reviewing-a-description)
37
+ for final PR context, the [emergency guide](../emergencies/SKILL.md#while-the-incident-is-active)
38
+ for active incidents, and the [small-change guide](../small-cl/SKILL.md#reviewable-scope)
39
+ when the diff needs a narrower review boundary.
40
+
32
41
  ## Pre-flight
33
42
 
34
43
  ```bash
@@ -0,0 +1,20 @@
1
+ # bugteam/reference
2
+
3
+ Expanded workflow detail for the `bugteam` skill. Load a file from this directory when the orchestration stub in `SKILL.md` is not enough — for example, when debugging GitHub review shape, understanding gate semantics, or working through teardown edge cases.
4
+
5
+ ## Key files
6
+
7
+ | File | Purpose |
8
+ |---|---|
9
+ | `README.md` | Index of all files in this directory with one-line domain summaries. |
10
+ | `team-setup.md` | Permissions grant, PR scope resolution, run name, temp dir, and loop state. |
11
+ | `audit-and-teammates.md` | Pre-audit CODE_RULES gate, full cycle numbering, AUDIT and FIX action detail. |
12
+ | `github-pr-reviews.md` | Per-loop review posting, `jq`+`gh api` payloads, inline anchors, fallbacks, REST endpoints. |
13
+ | `design-rationale.md` | Why clean-room subagents, when `/bugteam` applies, refusal reasons. |
14
+ | `copilot-gap-analysis.md` | Historical gap analysis (reference only). |
15
+
16
+ ## Subdirectories
17
+
18
+ | Directory | Role |
19
+ |---|---|
20
+ | `obstacles/` | Per-step obstacle guides — one file per common failure point (e.g., write XML, resolve thread, push, test suite). |
@@ -1,20 +1 @@
1
- # bugteam/reference
2
-
3
- Expanded workflow detail for the `bugteam` skill. Load a file from this directory when the orchestration stub in `SKILL.md` is not enough — for example, when debugging GitHub review shape, understanding gate semantics, or working through teardown edge cases.
4
-
5
- ## Key files
6
-
7
- | File | Purpose |
8
- |---|---|
9
- | `README.md` | Index of all files in this directory with one-line domain summaries. |
10
- | `team-setup.md` | Permissions grant, PR scope resolution, run name, temp dir, and loop state. |
11
- | `audit-and-teammates.md` | Pre-audit CODE_RULES gate, full cycle numbering, AUDIT and FIX action detail. |
12
- | `github-pr-reviews.md` | Per-loop review posting, `jq`+`gh api` payloads, inline anchors, fallbacks, REST endpoints. |
13
- | `design-rationale.md` | Why clean-room subagents, when `/bugteam` applies, refusal reasons. |
14
- | `copilot-gap-analysis.md` | Historical gap analysis (reference only). |
15
-
16
- ## Subdirectories
17
-
18
- | Directory | Role |
19
- |---|---|
20
- | `obstacles/` | Per-step obstacle guides — one file per common failure point (e.g., write XML, resolve thread, push, test suite). |
1
+ @AGENTS.md
@@ -104,8 +104,10 @@ Repeat until an exit condition fires.
104
104
  action** below). Instructions: read the gate script’s stderr, edit the
105
105
  repo until a **re-run** of the **same** gate command exits **0**. On
106
106
  tiers 1 and 3 the headless worker edits and runs tests but never
107
- commits or pushes — the lead stages with explicit `git add`, mints the
108
- code-verifier verdict, then commits and pushes. Tier 2 keeps in-agent
107
+ commits or pushes — the lead stages with explicit `git add`, confirms the
108
+ gate output and changed behavior against the
109
+ [review guide](../../reviews/SKILL.md#review-workflow), then commits and
110
+ pushes. Tier 2 keeps in-agent
109
111
  commit and push with `mode="bypassPermissions"`. Repeat standards-fix
110
112
  spawns until the gate exits **0** or **5** failed gate rounds (each
111
113
  round = one worker session after a non-zero gate). If still non-zero
@@ -219,8 +221,9 @@ worker session after a non-zero gate).
219
221
  headless worker edits and runs tests but never commits or pushes. The
220
222
  lead session stages the worker's files itself with an explicit `git add`
221
223
  (the session edit tracker does not see files the lead did not edit),
222
- mints the code-verifier verdict in its own context, then commits and
223
- pushes so the commit gate and the staged-commit scans fire on the real
224
+ confirms the gate output and changed behavior against the
225
+ [review guide](../../reviews/SKILL.md#review-workflow), then commits and
226
+ pushes — so the commit gate and the staged-commit scans run on the real
224
227
  diff. Re-run the gate command; if still non-zero, start the next round.
225
228
  - **`claude_agent_required`** (exit `2`, attempts include tier `2` with
226
229
  that reason): spawn the Agent-tool worker with in-agent commit and push:
@@ -283,8 +286,9 @@ Pass finding comment URL, comment id, and thread node id for each finding
283
286
  and 3 the headless worker edits and runs tests but never commits or
284
287
  pushes. The lead session stages the worker's files itself with an
285
288
  explicit `git add` (the session edit tracker does not see files the lead
286
- did not edit), mints the code-verifier verdict in its own context, then
287
- commits and pushes so the commit gate and the staged-commit scans fire
289
+ did not edit), confirms the gate output and changed behavior against the
290
+ [review guide](../../reviews/SKILL.md#review-workflow), then commits and
291
+ pushes — so the commit gate and the staged-commit scans run
288
292
  on the real diff. Read the outcome XML at
289
293
  `<worktree_path>/.bugteam-pr<N>-loop<L>.fix-outcomes.xml`. The **lead**
290
294
  posts one reply per finding using the unified template at
@@ -0,0 +1,24 @@
1
+ # bugteam/reference/obstacles
2
+
3
+ Per-step obstacle guides for the `bugteam` skill. Each file addresses a specific failure point that can occur during an audit-fix loop. Load the matching file when a step fails rather than improvising a fix.
4
+
5
+ ## Files
6
+
7
+ | File | Obstacle it addresses |
8
+ |---|---|
9
+ | `audit-assign-ids.md` | Assigning stable finding IDs in the audit output. |
10
+ | `audit-capture-excerpts.md` | Capturing code excerpts for each finding. |
11
+ | `audit-walk-categories.md` | Walking all A–Q categories without skipping. |
12
+ | `audit-write-xml.md` | Writing the outcome XML from an audit pass. |
13
+ | `fix-append-summary.md` | Appending the fix summary to the outcome XML. |
14
+ | `fix-apply-fixes.md` | Applying code fixes from the finding list. |
15
+ | `fix-git-add-commit.md` | Staging and committing the fixed files. |
16
+ | `fix-git-push.md` | Pushing the fix commit to the remote branch. |
17
+ | `fix-post-reply.md` | Posting inline replies to finding threads on the PR. |
18
+ | `fix-publish-summary.md` | Publishing the loop summary to the PR. |
19
+ | `fix-py-compile.md` | Verifying Python syntax after fixes. |
20
+ | `fix-read-files.md` | Reading the files referenced in a finding. |
21
+ | `fix-resolve-thread.md` | Resolving a finding's review thread on GitHub. |
22
+ | `fix-test-suite.md` | Running the test suite and interpreting failures. |
23
+ | `fix-violation-count.md` | Counting open violations after a fix pass. |
24
+ | `fix-write-xml.md` | Writing the per-fix XML record. |
@@ -1,24 +1 @@
1
- # bugteam/reference/obstacles
2
-
3
- Per-step obstacle guides for the `bugteam` skill. Each file addresses a specific failure point that can occur during an audit-fix loop. Load the matching file when a step fails rather than improvising a fix.
4
-
5
- ## Files
6
-
7
- | File | Obstacle it addresses |
8
- |---|---|
9
- | `audit-assign-ids.md` | Assigning stable finding IDs in the audit output. |
10
- | `audit-capture-excerpts.md` | Capturing code excerpts for each finding. |
11
- | `audit-walk-categories.md` | Walking all A–Q categories without skipping. |
12
- | `audit-write-xml.md` | Writing the outcome XML from an audit pass. |
13
- | `fix-append-summary.md` | Appending the fix summary to the outcome XML. |
14
- | `fix-apply-fixes.md` | Applying code fixes from the finding list. |
15
- | `fix-git-add-commit.md` | Staging and committing the fixed files. |
16
- | `fix-git-push.md` | Pushing the fix commit to the remote branch. |
17
- | `fix-post-reply.md` | Posting inline replies to finding threads on the PR. |
18
- | `fix-publish-summary.md` | Publishing the loop summary to the PR. |
19
- | `fix-py-compile.md` | Verifying Python syntax after fixes. |
20
- | `fix-read-files.md` | Reading the files referenced in a finding. |
21
- | `fix-resolve-thread.md` | Resolving a finding's review thread on GitHub. |
22
- | `fix-test-suite.md` | Running the test suite and interpreting failures. |
23
- | `fix-violation-count.md` | Counting open violations after a fix pass. |
24
- | `fix-write-xml.md` | Writing the per-fix XML record. |
1
+ @AGENTS.md
@@ -0,0 +1,30 @@
1
+ # bugteam/scripts
2
+
3
+ Python scripts executed by the bugteam lead or teammates at runtime. These are not loaded into context as instructions — they run as subprocess calls from within the skill workflow.
4
+
5
+ ## Scripts
6
+
7
+ | File | Purpose |
8
+ |---|---|
9
+ | `bugteam_preflight.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/preflight.py`. Skips pytest when `BUGTEAM_PREFLIGHT_SKIP=1` or no test files exist. |
10
+ | `bugteam_fix_hookspath.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/fix_hookspath.py`. Auto-remediates a stale `core.hooksPath` override. |
11
+ | `bugteam_code_rules_gate.py` | Thin skill-path entry; re-exports shared `_shared/pr-loop/scripts/code_rules_gate.py` (of record). |
12
+ | `windows_safe_rmtree.py` | Remove a directory tree on Windows by stripping ReadOnly attributes and retrying on failure. |
13
+ | `probe_code_rules_enforcer_check.py` | Load `code_rules_enforcer.py` and invoke a named check function against a fixture file. |
14
+ | `reflow_skill_md.py` | Reflow the bugteam SKILL.md body to fit line-length limits. |
15
+
16
+ ## Test files
17
+
18
+ | File | Tests |
19
+ |---|---|
20
+ | `test_bugteam_preflight.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_preflight.py` |
21
+ | `test_bugteam_code_rules_gate.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_code_rules_gate.py` |
22
+ | `test_bugteam_fix_hookspath.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_fix_hookspath.py` |
23
+ | `test_probe_code_rules_enforcer_check.py` | `probe_code_rules_enforcer_check.py` |
24
+ | `test_windows_safe_rmtree.py` | `windows_safe_rmtree.py` |
25
+
26
+ ## Subdirectories
27
+
28
+ | Directory | Role |
29
+ |---|---|
30
+ | `bugteam_scripts_constants/` | Named constants imported by the scripts above. |
@@ -1,30 +1 @@
1
- # bugteam/scripts
2
-
3
- Python scripts executed by the bugteam lead or teammates at runtime. These are not loaded into context as instructions — they run as subprocess calls from within the skill workflow.
4
-
5
- ## Scripts
6
-
7
- | File | Purpose |
8
- |---|---|
9
- | `bugteam_preflight.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/preflight.py`. Skips pytest when `BUGTEAM_PREFLIGHT_SKIP=1` or no test files exist. |
10
- | `bugteam_fix_hookspath.py` | Skill-path thin entry for shared `_shared/pr-loop/scripts/fix_hookspath.py`. Auto-remediates a stale `core.hooksPath` override. |
11
- | `bugteam_code_rules_gate.py` | Thin skill-path entry; re-exports shared `_shared/pr-loop/scripts/code_rules_gate.py` (of record). |
12
- | `windows_safe_rmtree.py` | Remove a directory tree on Windows by stripping ReadOnly attributes and retrying on failure. |
13
- | `probe_code_rules_enforcer_check.py` | Load `code_rules_enforcer.py` and invoke a named check function against a fixture file. |
14
- | `reflow_skill_md.py` | Reflow the bugteam SKILL.md body to fit line-length limits. |
15
-
16
- ## Test files
17
-
18
- | File | Tests |
19
- |---|---|
20
- | `test_bugteam_preflight.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_preflight.py` |
21
- | `test_bugteam_code_rules_gate.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_code_rules_gate.py` |
22
- | `test_bugteam_fix_hookspath.py` | Smoke for thin wrap; behavioral suite is `_shared/pr-loop/scripts/tests/test_fix_hookspath.py` |
23
- | `test_probe_code_rules_enforcer_check.py` | `probe_code_rules_enforcer_check.py` |
24
- | `test_windows_safe_rmtree.py` | `windows_safe_rmtree.py` |
25
-
26
- ## Subdirectories
27
-
28
- | Directory | Role |
29
- |---|---|
30
- | `bugteam_scripts_constants/` | Named constants imported by the scripts above. |
1
+ @AGENTS.md
@@ -0,0 +1,18 @@
1
+ # bugteam/scripts/bugteam_scripts_constants
2
+
3
+ Python package of named constants imported by the bugteam scripts. Each module holds the constants for one script; importing from this package keeps magic values out of the script bodies.
4
+
5
+ ## Modules
6
+
7
+ | File | Constants for |
8
+ |---|---|
9
+ | `probe_code_rules_enforcer_check_constants.py` | `probe_code_rules_enforcer_check.py` — enforcer module path and function name constants. |
10
+ | `reflow_skill_md_constants.py` | `reflow_skill_md.py` — line-length and formatting constants. |
11
+ | `windows_safe_rmtree_constants.py` | `windows_safe_rmtree.py` — retry count and wait constants. |
12
+ | `__init__.py` | Empty package marker. |
13
+
14
+ Preflight, fix_hookspath, and code_rules_gate constants live under package shared `pr_loop_shared_constants` with the shared implementations.
15
+
16
+ ## Convention
17
+
18
+ Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
@@ -1,18 +1 @@
1
- # bugteam/scripts/bugteam_scripts_constants
2
-
3
- Python package of named constants imported by the bugteam scripts. Each module holds the constants for one script; importing from this package keeps magic values out of the script bodies.
4
-
5
- ## Modules
6
-
7
- | File | Constants for |
8
- |---|---|
9
- | `probe_code_rules_enforcer_check_constants.py` | `probe_code_rules_enforcer_check.py` — enforcer module path and function name constants. |
10
- | `reflow_skill_md_constants.py` | `reflow_skill_md.py` — line-length and formatting constants. |
11
- | `windows_safe_rmtree_constants.py` | `windows_safe_rmtree.py` — retry count and wait constants. |
12
- | `__init__.py` | Empty package marker. |
13
-
14
- Preflight, fix_hookspath, and code_rules_gate constants live under package shared `pr_loop_shared_constants` with the shared implementations.
15
-
16
- ## Convention
17
-
18
- Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
1
+ @AGENTS.md
@@ -18,3 +18,12 @@ def test_skill_names_implementer_subagent_type():
18
18
  def test_skill_documents_bugbot_retrigger_flag():
19
19
  skill_text = _read_skill_text()
20
20
  assert "--bugbot-retrigger" in skill_text
21
+
22
+
23
+ def test_skill_routes_judgment_to_canonical_guides() -> None:
24
+ skill_text = _read_skill_text()
25
+ assert "../reviews/SKILL.md#review-workflow" in skill_text
26
+ assert "../comments/SKILL.md#writing-useful-review-comments" in skill_text
27
+ assert "../descriptions/SKILL.md#reviewing-a-description" in skill_text
28
+ assert "../emergencies/SKILL.md#while-the-incident-is-active" in skill_text
29
+ assert "../small-cl/SKILL.md#reviewable-scope" in skill_text
@@ -55,7 +55,7 @@ Open a PR per filed issue below and drive each to convergence.
55
55
  ## Safety — never do these
56
56
  - Never run, merge, deploy, or sync the claude-dev-env publish pipeline. It is live in production (publishes to npm).
57
57
  - Never run the host repo's automations.
58
- - Never hand-edit .cursor/BUGBOT.md; it is generated from AGENTS.md.
58
+ - Keep `.cursor/BUGBOT.md` aligned with the repository's review rules.
59
59
 
60
60
  ## Base branch and verification
61
61
  - Base branch: main
@@ -0,0 +1,46 @@
1
+ # codex-review
2
+
3
+ Runs OpenAI Codex as a local PR or uncommitted-diff reviewer: opt-out gate, version/shape probe, target pick, classifying review (`codex exec … review --json`), outcome classification, and handoff of findings into `pr-fix-protocol`. Triggered by `/codex-review`, `codex review`, `run codex review`, `babysit codex review`, or `codex as a PR reviewer`.
4
+
5
+ ## Purpose
6
+
7
+ One Codex review pass per invocation. The skill owns sequence and skill-level classification (`down` / `clean` / `findings`). The headless wrapper is capture-only (`completed` / `codex_down` plus raw fields). Shared peers own opt-out parsing (`reviews_disabled.py` / `reviewer-gates`) and the fix sequence (`pr-fix-protocol`). Observed raw CLI surface, wrapper capture contract, probe signals, failure fixtures, auth modes, cloud runbook, and classification map live under `reference/cli-contract.md`; PR-loop wiring lives under `reference/loop-integration.md`.
8
+
9
+ ## Key files
10
+
11
+ | File | Purpose |
12
+ |---|---|
13
+ | `SKILL.md` | Flow skeleton: opt-out → probe → target → wrapper → classify → fix handoff; refusals; sub-skills table; ground rules. |
14
+ | `reference/cli-contract.md` | Wrapper entrypoint and argv; version/shape probe; success JSONL and findings parse; failure classes tied to fixtures; auth modes; cloud runbook. |
15
+ | `reference/loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; re-entry after fixes. |
16
+ | `scripts/run_codex_review.py` | Headless capture wrapper: probes, single-target argv, JSONL capture, `completed` / `codex_down`. |
17
+ | `scripts/test_run_codex_review.py` | Behavioral tests for `run_codex_review`. |
18
+ | `scripts/codex_down_classifier.py` | Maps a Codex run's exit code and stream text to a failure detail class and the gate outcome class (`completed` / `codex_down`). |
19
+ | `scripts/parse_codex_findings.py` | Parses reviewer text into findings: fenced JSON first, then the freeform bullet shape, then a single floor finding. |
20
+ | `scripts/codex_usage_probe.py` | Weekly usage probe CLI: app-server rate-limits read, null-on-unknown JSON report. |
21
+ | `scripts/test_codex_usage_probe.py` | Unit tests for the weekly usage probe and gate helper. |
22
+ | `scripts/codex_review_scripts_constants/run_constants.py` | Named constants package for skill scripts: binary name, flags, prompt, probe pattern, timeout, exit sentinels, JSONL keys, capture outcome labels. |
23
+ | `scripts/codex_review_scripts_constants/codex_usage_probe_constants.py` | Named constants for the weekly usage probe. |
24
+
25
+ ## Subdirectories
26
+
27
+ | Directory | Role |
28
+ |---|---|
29
+ | `reference/` | Progressive-disclosure pages for cli-contract and loop-integration. |
30
+ | `scripts/` | Capture wrapper, classifier, findings parser, weekly usage probe, tests, fixtures, and constants package. |
31
+
32
+ ## Environment opt-out
33
+
34
+ Step 0 runs `reviews_disabled.py --reviewer codex` before any probe or review invoke.
35
+
36
+ | Gate exit | Meaning for this skill |
37
+ |---|---|
38
+ | 0 | Opt-out active — refuse with the opt-out line in `SKILL.md` and stop |
39
+ | 1 | Continue the flow |
40
+ | Any other | Blocker — stop; do not invent an opt-out refusal |
41
+
42
+ Set `CLAUDE_REVIEWS_DISABLED=codex` to disable. This package does not re-parse `CLAUDE_REVIEWS_DISABLED`; the shared gate owns the token parse.
43
+
44
+ ## Scripts surface
45
+
46
+ `scripts/` holds the capture wrapper (`run_codex_review.py`), the down classifier (`codex_down_classifier.py`), the findings parser (`parse_codex_findings.py`), the weekly usage probe (`codex_usage_probe.py`), their tests, fixtures, and named constants. The wrapper returns capture fields only (`completed` / `codex_down`); agents map those fields to skill classes via the skill-class map and parse findings through `parse_codex_findings`. Classify only from a `codex exec … review --json` JSONL stream; do not invent a non-JSONL parse.
@@ -1,46 +1 @@
1
- # codex-review
2
-
3
- Runs OpenAI Codex as a local PR or uncommitted-diff reviewer: opt-out gate, version/shape probe, target pick, classifying review (`codex exec … review --json`), outcome classification, and handoff of findings into `pr-fix-protocol`. Triggered by `/codex-review`, `codex review`, `run codex review`, `babysit codex review`, or `codex as a PR reviewer`.
4
-
5
- ## Purpose
6
-
7
- One Codex review pass per invocation. The skill owns sequence and skill-level classification (`down` / `clean` / `findings`). The headless wrapper is capture-only (`completed` / `codex_down` plus raw fields). Shared peers own opt-out parsing (`reviews_disabled.py` / `reviewer-gates`) and the fix sequence (`pr-fix-protocol`). Observed raw CLI surface, wrapper capture contract, probe signals, failure fixtures, auth modes, cloud runbook, and classification map live under `reference/cli-contract.md`; PR-loop wiring lives under `reference/loop-integration.md`.
8
-
9
- ## Key files
10
-
11
- | File | Purpose |
12
- |---|---|
13
- | `SKILL.md` | Flow skeleton: opt-out → probe → target → wrapper → classify → fix handoff; refusals; sub-skills table; ground rules. |
14
- | `reference/cli-contract.md` | Wrapper entrypoint and argv; version/shape probe; success JSONL and findings parse; failure classes tied to fixtures; auth modes; cloud runbook. |
15
- | `reference/loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; re-entry after fixes. |
16
- | `scripts/run_codex_review.py` | Headless capture wrapper: probes, single-target argv, JSONL capture, `completed` / `codex_down`. |
17
- | `scripts/test_run_codex_review.py` | Behavioral tests for `run_codex_review`. |
18
- | `scripts/codex_down_classifier.py` | Maps a Codex run's exit code and stream text to a failure detail class and the gate outcome class (`completed` / `codex_down`). |
19
- | `scripts/parse_codex_findings.py` | Parses reviewer text into findings: fenced JSON first, then the freeform bullet shape, then a single floor finding. |
20
- | `scripts/codex_usage_probe.py` | Weekly usage probe CLI: app-server rate-limits read, null-on-unknown JSON report. |
21
- | `scripts/test_codex_usage_probe.py` | Unit tests for the weekly usage probe and gate helper. |
22
- | `scripts/codex_review_scripts_constants/run_constants.py` | Named constants package for skill scripts: binary name, flags, prompt, probe pattern, timeout, exit sentinels, JSONL keys, capture outcome labels. |
23
- | `scripts/codex_review_scripts_constants/codex_usage_probe_constants.py` | Named constants for the weekly usage probe. |
24
-
25
- ## Subdirectories
26
-
27
- | Directory | Role |
28
- |---|---|
29
- | `reference/` | Progressive-disclosure pages for cli-contract and loop-integration. |
30
- | `scripts/` | Capture wrapper, classifier, findings parser, weekly usage probe, tests, fixtures, and constants package. |
31
-
32
- ## Environment opt-out
33
-
34
- Step 0 runs `reviews_disabled.py --reviewer codex` before any probe or review invoke.
35
-
36
- | Gate exit | Meaning for this skill |
37
- |---|---|
38
- | 0 | Opt-out active — refuse with the opt-out line in `SKILL.md` and stop |
39
- | 1 | Continue the flow |
40
- | Any other | Blocker — stop; do not invent an opt-out refusal |
41
-
42
- Set `CLAUDE_REVIEWS_DISABLED=codex` to disable. This package does not re-parse `CLAUDE_REVIEWS_DISABLED`; the shared gate owns the token parse.
43
-
44
- ## Scripts surface
45
-
46
- `scripts/` holds the capture wrapper (`run_codex_review.py`), the down classifier (`codex_down_classifier.py`), the findings parser (`parse_codex_findings.py`), the weekly usage probe (`codex_usage_probe.py`), their tests, fixtures, and named constants. The wrapper returns capture fields only (`completed` / `codex_down`); agents map those fields to skill classes via the skill-class map and parse findings through `parse_codex_findings`. Classify only from a `codex exec … review --json` JSONL stream; do not invent a non-JSONL parse.
1
+ @AGENTS.md
@@ -0,0 +1,15 @@
1
+ # codex-review/reference
2
+
3
+ Reference pages for the `codex-review` skill. `SKILL.md` cites these files for CLI contract and PR-loop integration detail.
4
+
5
+ ## Key files
6
+
7
+ | File | Purpose |
8
+ |---|---|
9
+ | `cli-contract.md` | Observed Codex CLI review surface: classifying `codex exec … review --json` path, wrapper capture (`completed` / `codex_down`), probe signals, success JSONL and findings parse, fixture-backed failure classes, skill-class map (`down` / `clean` / `findings`), auth modes, and cloud runbook. |
10
+ | `loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; target selection; skill-class vocabulary; findings handoff; re-entry after a fix push. |
11
+
12
+ ## Conventions
13
+
14
+ - Each page is the stable home for one child workstream. Cross-references from `SKILL.md` use these paths.
15
+ - Keep one level deep: `SKILL.md` links here; orchestrator-owned detail links out to pr-converge / autoconverge pages rather than restating them.
@@ -1,15 +1 @@
1
- # codex-review/reference
2
-
3
- Reference pages for the `codex-review` skill. `SKILL.md` cites these files for CLI contract and PR-loop integration detail.
4
-
5
- ## Key files
6
-
7
- | File | Purpose |
8
- |---|---|
9
- | `cli-contract.md` | Observed Codex CLI review surface: classifying `codex exec … review --json` path, wrapper capture (`completed` / `codex_down`), probe signals, success JSONL and findings parse, fixture-backed failure classes, skill-class map (`down` / `clean` / `findings`), auth modes, and cloud runbook. |
10
- | `loop-integration.md` | Gate placement in pr-converge and autoconverge; threshold rule; opt-out token; state fields; target selection; skill-class vocabulary; findings handoff; re-entry after a fix push. |
11
-
12
- ## Conventions
13
-
14
- - Each page is the stable home for one child workstream. Cross-references from `SKILL.md` use these paths.
15
- - Keep one level deep: `SKILL.md` links here; orchestrator-owned detail links out to pr-converge / autoconverge pages rather than restating them.
1
+ @AGENTS.md
@@ -0,0 +1,18 @@
1
+ # codex-review/scripts/codex_review_scripts_constants
2
+
3
+ Python package of named constants imported by codex-review scripts. Importing from this package keeps magic values out of script bodies.
4
+
5
+ ## Modules
6
+
7
+ | File | Constants for |
8
+ |---|---|
9
+ | `__init__.py` | Package marker and package docstring. |
10
+ | `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, and capture outcome class labels for `run_codex_review.py`. |
11
+ | `findings_constants.py` | Finding field keys, fenced-JSON and freeform patterns for `parse_codex_findings.py`. |
12
+ | `classifier_constants.py` | Failure class names and stream markers for `codex_down_classifier.py`. |
13
+ | `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, JSONL capture filename and newline mode, and capture outcome class labels for `run_codex_review.py`. |
14
+ | `codex_usage_probe_constants.py` | The weekly-usage probe CLI: gate threshold, report JSON keys, app-server JSON-RPC surface, rate-limit field keys, weekly-window sizing, text-status parse patterns, source labels, and exit codes. |
15
+
16
+ ## Convention
17
+
18
+ Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
@@ -1,18 +1 @@
1
- # codex-review/scripts/codex_review_scripts_constants
2
-
3
- Python package of named constants imported by codex-review scripts. Importing from this package keeps magic values out of script bodies.
4
-
5
- ## Modules
6
-
7
- | File | Constants for |
8
- |---|---|
9
- | `__init__.py` | Package marker and package docstring. |
10
- | `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, and capture outcome class labels for `run_codex_review.py`. |
11
- | `findings_constants.py` | Finding field keys, fenced-JSON and freeform patterns for `parse_codex_findings.py`. |
12
- | `classifier_constants.py` | Failure class names and stream markers for `codex_down_classifier.py`. |
13
- | `run_constants.py` | Binary name, flag strings, custom-instructions prompt, version-probe pattern, timeout default, decode/timeout exit sentinels, flag_token_pattern suffix (whole-token shape match), JSONL keys, JSONL capture filename and newline mode, and capture outcome class labels for `run_codex_review.py`. |
14
- | `codex_usage_probe_constants.py` | The weekly-usage probe CLI: gate threshold, report JSON keys, app-server JSON-RPC surface, rate-limit field keys, weekly-window sizing, text-status parse patterns, source labels, and exit codes. |
15
-
16
- ## Convention
17
-
18
- Scripts import from this package at module scope. No constant is defined inline in a script body — the hook enforces this at write time.
1
+ @AGENTS.md
@@ -9,7 +9,7 @@ from pathlib import Path
9
9
 
10
10
  SKILL_DIRECTORY = Path(__file__).resolve().parent
11
11
  SKILL_PATH = SKILL_DIRECTORY / "SKILL.md"
12
- PACKAGE_MAP_PATH = SKILL_DIRECTORY / "CLAUDE.md"
12
+ PACKAGE_MAP_PATH = SKILL_DIRECTORY / "AGENTS.md"
13
13
  REFERENCE_DIRECTORY = SKILL_DIRECTORY / "reference"
14
14
  PACKAGE_ROOT = SKILL_DIRECTORY.parents[1]
15
15
  PYPROJECT_PATH = PACKAGE_ROOT / "pyproject.toml"
@@ -131,7 +131,7 @@ def test_scripts_surface_names_capture_wrapper_and_constants() -> None:
131
131
  skill_text = _read_skill_text()
132
132
  package_map_text = PACKAGE_MAP_PATH.read_text(encoding="utf-8")
133
133
  constants_map_text = (
134
- SKILL_DIRECTORY / "scripts" / "codex_review_scripts_constants" / "CLAUDE.md"
134
+ SKILL_DIRECTORY / "scripts" / "codex_review_scripts_constants" / "AGENTS.md"
135
135
  ).read_text(encoding="utf-8")
136
136
  wrapper_path = SKILL_DIRECTORY / "scripts" / "run_codex_review.py"
137
137
 
@@ -168,7 +168,7 @@ def test_skill_body_stays_under_line_cap() -> None:
168
168
  assert skill_line_count < MAXIMUM_SKILL_BODY_LINE_COUNT
169
169
 
170
170
 
171
- def test_package_map_claude_md_exists() -> None:
171
+ def test_package_map_agents_md_exists() -> None:
172
172
  package_map_text = PACKAGE_MAP_PATH.read_text(encoding="utf-8")
173
173
 
174
174
  assert "codex-review" in package_map_text
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: comments
3
+ description: >-
4
+ Draft, refine, or respond to pull-request review comments. Use when a user
5
+ asks to "write a review comment", "address review feedback", or "reply to a reviewer".
6
+ ---
7
+
8
+ # Review Comment Guide
9
+
10
+ ## When to Use This Guide
11
+
12
+ Use this guide to draft a finding, refine its tone, reply to reviewer feedback,
13
+ or resolve a comment thread. Use the [review guide](../reviews/SKILL.md#review-judgment)
14
+ to decide whether a concern merits a finding.
15
+
16
+ ## Writing Useful Review Comments
17
+
18
+ Each comment names the affected behavior, the observed concern, the relevant
19
+ evidence, and the expected outcome. Give the author enough context to choose an
20
+ effective fix.
21
+
22
+ - Use `Required` for a change that materially affects the review judgment.
23
+ - Use `Consider`, `Nit`, or `FYI` for improvement, polish, and context.
24
+ - Explain the technical rationale when the connection from evidence to outcome
25
+ needs context.
26
+ - Recognize strong decisions and completed fixes with the same specificity.
27
+
28
+ ## Respectful and Actionable Feedback
29
+
30
+ Treat every contributor as capable and acting in good faith. Keep feedback
31
+ about the code, its behavior, and its effect on users or maintainers.
32
+
33
+ - Consolidate a disagreement into one focused exchange with the relevant
34
+ context and reasoning.
35
+ - Use proportionate language that directs attention to the required change.
36
+ - Respect repository tooling and established formatting conventions.
37
+ - Close a thread when its outcome satisfies the applicable review judgment.
38
+
39
+ ## Responding to Feedback
40
+
41
+ Start with the substance of the feedback. Clarify the code, its tests, or its
42
+ documentation when that gives future readers the needed context.
43
+
44
+ Ask for clarification when the requested outcome remains unclear. Reply with
45
+ the trade-off, evidence, and proposed resolution when an alternative approach
46
+ better serves the stated goal.
47
+
48
+ ## Resolving Pushback
49
+
50
+ Reassess a disputed finding against the repository rubric and the change's
51
+ evidence. Keep advocating for a material improvement when the rationale remains
52
+ sound, and accept an evidence-backed alternative that meets the same quality
53
+ goal.
54
+
55
+ Escalate to a maintainer or lead when product direction or code ownership is
56
+ needed. Record the resulting decision in the pull request thread.
57
+
58
+ ## Related Guides
59
+
60
+ - Use [reviews](../reviews/SKILL.md#review-workflow) for substantive code
61
+ assessment.
62
+ - Use [small-cl](../small-cl/SKILL.md#responding-to-review) for author-side
63
+ review responses and focused follow-up work.
64
+ - Use [emergencies](../emergencies/SKILL.md#while-the-incident-is-active) for
65
+ urgent production-change communication.