claude-dev-env 4.3.0 → 7.0.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 (293) hide show
  1. package/.agents/agents/pr-description-writer.md +2 -2
  2. package/.agents/agents/test_agent_frontmatter.py +2 -2
  3. package/.agents/agents/test_pr_description_writer_style.py +1 -3
  4. package/.agents/skills/e-code-review/SKILL.md +12 -12
  5. package/.agents/skills/e-code-review/preflight-proposal.contract.test.mjs +20 -0
  6. package/.agents/skills/e-code-review/reference/fix.md +15 -17
  7. package/.agents/skills/e-code-review/reference/loop.md +35 -39
  8. package/.agents/skills/e-code-review/reference/mode-contract.test.mjs +2 -1
  9. package/.agents/skills/e-code-review/reference/preflight-proposal.md +44 -9
  10. package/.agents/skills/e-code-review/reference/runner-selection.md +13 -14
  11. package/.agents/skills/issue-tracker/SKILL.md +5 -4
  12. package/.agents/skills/pull-request/SKILL.md +11 -13
  13. package/.agents/skills/pull-request/reference/publication-tasks.md +3 -3
  14. package/.agents/skills/pull-request/scripts/github_pr_command_constants/config/constants.py +9 -1
  15. package/.agents/skills/pull-request/scripts/pull_request.py +33 -44
  16. package/.agents/skills/pull-request/scripts/test_github_pr_command_constants.py +9 -0
  17. package/.agents/skills/pull-request/scripts/test_pull_request.py +1 -3
  18. package/.agents/skills/skill-builder/SKILL.md +3 -196
  19. package/_shared/pr-loop/scripts/pr_loop_shared_constants/terminology_sweep_constants.py +6 -0
  20. package/_shared/pr-loop/scripts/terminology_sweep.py +64 -19
  21. package/_shared/pr-loop/scripts/tests/test_terminology_sweep.py +59 -0
  22. package/bin/install.agents-home.test.mjs +15 -13
  23. package/bin/install.mjs +28 -0
  24. package/bin/install.policy-lint.test.mjs +78 -0
  25. package/bin/install.prune.test.mjs +59 -20
  26. package/bin/install.pstack-plugin.test.mjs +114 -0
  27. package/bin/install.test.mjs +37 -0
  28. package/bin/refresh-pstack-plugin-skills.test.mjs +211 -0
  29. package/hooks/advisory/pr_done_reminder.py +342 -0
  30. package/hooks/advisory/test_pr_done_reminder.py +249 -0
  31. package/hooks/blocking/bash_post_call_dispatcher.py +53 -6
  32. package/hooks/blocking/code_rules_paired_test.py +22 -15
  33. package/hooks/blocking/test_bash_post_call_dispatcher.py +65 -4
  34. package/hooks/blocking/test_code_rules_enforcer_paired_test.py +36 -29
  35. package/hooks/blocking/test_code_rules_js_resume_task_enumeration.py +4 -4
  36. package/hooks/blocking/test_code_rules_js_returns_object_schemaless.py +5 -5
  37. package/hooks/blocking/test_pre_tool_use_dispatcher.py +68 -133
  38. package/hooks/blocking/test_pre_tool_use_dispatcher_native.py +20 -51
  39. package/hooks/blocking/test_precommit_code_rules_gate_native_owner.py +18 -18
  40. package/hooks/git-hooks/git_hooks_constants/staged_policy_lint.py +12 -0
  41. package/hooks/git-hooks/pre_commit.py +52 -11
  42. package/hooks/git-hooks/test_installed_policy_lint.py +159 -0
  43. package/hooks/git-hooks/test_native_policy_commit.py +87 -0
  44. package/hooks/git-hooks/test_pre_commit.py +246 -0
  45. package/hooks/hooks.json +1 -1
  46. package/hooks/hooks_constants/bash_post_call_dispatcher_constants.py +14 -1
  47. package/hooks/hooks_constants/pr_done_reminder_constants.py +98 -0
  48. package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +10 -43
  49. package/hooks/hooks_constants/test_bash_post_call_dispatcher_constants.py +19 -2
  50. package/hooks/hooks_constants/test_pr_done_reminder_constants.py +40 -0
  51. package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +20 -32
  52. package/package.json +2 -2
  53. package/rules/durable-post-artifacts.md +2 -1
  54. package/rules/git-workflow.md +6 -6
  55. package/scripts/check.ps1 +0 -1
  56. package/{.agents/skills/run-claude-dev-env/driver.mjs → scripts/ci/installer-lifecycle.mjs} +3 -28
  57. package/scripts/ci/installer-lifecycle.test.mjs +26 -0
  58. package/scripts/ci/windows-installer-lifecycle.ps1 +1 -11
  59. package/scripts/dev_env_scripts_constants/shared_tree_constants.py +4 -5
  60. package/{.agents/skills/_shared/pr-loop/scripts → scripts}/durable_post_lint.py +5 -41
  61. package/{.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/durable_post_lint_constants.py → scripts/durable_post_lint_config/config/constants.py} +0 -10
  62. package/{.agents/skills/_shared/pr-loop/scripts/test_durable_post_lint_constants.py → scripts/durable_post_lint_config/config/test_constants.py} +1 -1
  63. package/scripts/policy_lint/adapter_detectors.py +13 -6
  64. package/scripts/policy_lint/adapters.py +7 -4
  65. package/scripts/policy_lint/config/constants.py +5 -0
  66. package/scripts/policy_lint/engine.py +48 -4
  67. package/scripts/policy_lint/model.py +1 -0
  68. package/scripts/policy_lint/registry.py +1 -1
  69. package/scripts/policy_lint/selection.py +2 -1
  70. package/scripts/policy_lint/selection_git.py +2 -0
  71. package/scripts/refresh_pstack_plugin_skills.mjs +200 -0
  72. package/scripts/shared_tree_paths.py +32 -3
  73. package/scripts/test_shared_tree_paths.py +33 -0
  74. package/scripts/tests/test_policy_lint_rules_archive.py +120 -0
  75. package/scripts/tests/test_policy_lint_rules_engine.py +25 -4
  76. package/scripts/tests/test_policy_lint_rules_installed_loader.py +29 -0
  77. package/scripts/tests/test_policy_lint_rules_registry.py +227 -13
  78. package/scripts/tests/test_policy_lint_selection.py +25 -2
  79. package/scripts/tests/test_policy_lint_selection_native_index.py +30 -0
  80. package/scripts/tests/test_rules.py +3 -7
  81. package/.agents/skills/_shared/pr-loop/.claude/CLAUDE.md +0 -1
  82. package/.agents/skills/_shared/pr-loop/AGENTS.md +0 -1
  83. package/.agents/skills/_shared/pr-loop/audit-contract.md +0 -5
  84. package/.agents/skills/_shared/pr-loop/audit-reply-template.md +0 -5
  85. package/.agents/skills/_shared/pr-loop/code-rules-gate.md +0 -5
  86. package/.agents/skills/_shared/pr-loop/fix-protocol.md +0 -5
  87. package/.agents/skills/_shared/pr-loop/gh-payloads.md +0 -5
  88. package/.agents/skills/_shared/pr-loop/portable-driver.md +0 -149
  89. package/.agents/skills/_shared/pr-loop/post-audit-thread-contract.md +0 -5
  90. package/.agents/skills/_shared/pr-loop/precatch-rubric.md +0 -5
  91. package/.agents/skills/_shared/pr-loop/preflight-proposal.contract.test.mjs +0 -119
  92. package/.agents/skills/_shared/pr-loop/preflight-proposal.md +0 -5
  93. package/.agents/skills/_shared/pr-loop/prompts/.claude/CLAUDE.md +0 -1
  94. package/.agents/skills/_shared/pr-loop/prompts/AGENTS.md +0 -1
  95. package/.agents/skills/_shared/pr-loop/prompts/pr-consistency-audit.xml +0 -324
  96. package/.agents/skills/_shared/pr-loop/scripts/.claude/CLAUDE.md +0 -1
  97. package/.agents/skills/_shared/pr-loop/scripts/AGENTS.md +0 -1
  98. package/.agents/skills/_shared/pr-loop/scripts/RUNTIME_SCRIPTS.md +0 -29
  99. package/.agents/skills/_shared/pr-loop/scripts/_cli_utils.py +0 -22
  100. package/.agents/skills/_shared/pr-loop/scripts/_path_resolver.py +0 -186
  101. package/.agents/skills/_shared/pr-loop/scripts/_xml_utils.py +0 -20
  102. package/.agents/skills/_shared/pr-loop/scripts/audit_category_schema.py +0 -355
  103. package/.agents/skills/_shared/pr-loop/scripts/build_audit_prompt.py +0 -289
  104. package/.agents/skills/_shared/pr-loop/scripts/build_converge_task_list.py +0 -310
  105. package/.agents/skills/_shared/pr-loop/scripts/build_fix_prompt.py +0 -292
  106. package/.agents/skills/_shared/pr-loop/scripts/init_loop_state.py +0 -134
  107. package/.agents/skills/_shared/pr-loop/scripts/portable_converge_driver.py +0 -1646
  108. package/.agents/skills/_shared/pr-loop/scripts/preflight_worktree.py +0 -392
  109. package/.agents/skills/_shared/pr-loop/scripts/select_converge_pacer.py +0 -215
  110. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/.claude/CLAUDE.md +0 -1
  111. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +0 -1
  112. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/__init__.py +0 -0
  113. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/audit_category_schema_constants.py +0 -37
  114. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +0 -56
  115. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/handoff_constants.py +0 -45
  116. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +0 -47
  117. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/path_resolver_constants.py +0 -157
  118. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +0 -177
  119. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/preflight_constants.py +0 -70
  120. package/.agents/skills/_shared/pr-loop/scripts/teardown_worktrees.py +0 -172
  121. package/.agents/skills/_shared/pr-loop/scripts/test__path_resolver.py +0 -106
  122. package/.agents/skills/_shared/pr-loop/scripts/test_audit_category_schema.py +0 -94
  123. package/.agents/skills/_shared/pr-loop/scripts/test_build_audit_prompt.py +0 -499
  124. package/.agents/skills/_shared/pr-loop/scripts/test_build_converge_task_list.py +0 -140
  125. package/.agents/skills/_shared/pr-loop/scripts/test_build_fix_prompt.py +0 -262
  126. package/.agents/skills/_shared/pr-loop/scripts/test_init_loop_state.py +0 -71
  127. package/.agents/skills/_shared/pr-loop/scripts/test_portable_converge_driver.py +0 -1119
  128. package/.agents/skills/_shared/pr-loop/scripts/test_preflight_worktree.py +0 -287
  129. package/.agents/skills/_shared/pr-loop/scripts/test_select_converge_pacer.py +0 -207
  130. package/.agents/skills/_shared/pr-loop/scripts/test_teardown_worktrees.py +0 -59
  131. package/.agents/skills/_shared/pr-loop/scripts/test_write_handoff.py +0 -201
  132. package/.agents/skills/_shared/pr-loop/scripts/write_audit_outcomes.py +0 -182
  133. package/.agents/skills/_shared/pr-loop/scripts/write_fix_outcomes.py +0 -206
  134. package/.agents/skills/_shared/pr-loop/scripts/write_handoff.py +0 -309
  135. package/.agents/skills/_shared/pr-loop/state-schema.md +0 -5
  136. package/.agents/skills/_shared/pr-loop/worker-spawn.md +0 -5
  137. package/.agents/skills/autoconverge/.claude/CLAUDE.md +0 -1
  138. package/.agents/skills/autoconverge/AGENTS.md +0 -1
  139. package/.agents/skills/autoconverge/SKILL.md +0 -431
  140. package/.agents/skills/autoconverge/reference/.claude/CLAUDE.md +0 -1
  141. package/.agents/skills/autoconverge/reference/AGENTS.md +0 -1
  142. package/.agents/skills/autoconverge/reference/closing-report.md +0 -93
  143. package/.agents/skills/autoconverge/reference/convergence-gates.md +0 -31
  144. package/.agents/skills/autoconverge/reference/convergence.md +0 -219
  145. package/.agents/skills/autoconverge/reference/copilot-findings.md +0 -51
  146. package/.agents/skills/autoconverge/reference/gotchas.md +0 -66
  147. package/.agents/skills/autoconverge/reference/headless-safety.md +0 -44
  148. package/.agents/skills/autoconverge/reference/multi-pr.md +0 -128
  149. package/.agents/skills/autoconverge/reference/self-closing-loop.md +0 -84
  150. package/.agents/skills/autoconverge/reference/stop-conditions.md +0 -127
  151. package/.agents/skills/autoconverge/test_portable_pacer_gate.py +0 -54
  152. package/.agents/skills/autoconverge/workflow/.claude/CLAUDE.md +0 -1
  153. package/.agents/skills/autoconverge/workflow/AGENTS.md +0 -1
  154. package/.agents/skills/autoconverge/workflow/aggregate_runs.py +0 -371
  155. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/.claude/CLAUDE.md +0 -1
  156. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +0 -1
  157. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/__init__.py +0 -0
  158. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/render_report_constants.py +0 -250
  159. package/.agents/skills/autoconverge/workflow/converge.clean-audit.test.mjs +0 -665
  160. package/.agents/skills/autoconverge/workflow/converge.codex-gate.test.mjs +0 -472
  161. package/.agents/skills/autoconverge/workflow/converge.contract.test.mjs +0 -64
  162. package/.agents/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +0 -1009
  163. package/.agents/skills/autoconverge/workflow/converge.fix-progress.test.mjs +0 -107
  164. package/.agents/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +0 -33
  165. package/.agents/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +0 -15
  166. package/.agents/skills/autoconverge/workflow/converge.mjs +0 -3132
  167. package/.agents/skills/autoconverge/workflow/converge.p2-advance.test.mjs +0 -202
  168. package/.agents/skills/autoconverge/workflow/converge.path-aware.test.mjs +0 -47
  169. package/.agents/skills/autoconverge/workflow/converge.precatch.test.mjs +0 -152
  170. package/.agents/skills/autoconverge/workflow/converge.run-input.test.mjs +0 -116
  171. package/.agents/skills/autoconverge/workflow/converge_multi.mjs +0 -169
  172. package/.agents/skills/autoconverge/workflow/converge_multi.run-input.test.mjs +0 -173
  173. package/.agents/skills/autoconverge/workflow/convergence_summary.py +0 -110
  174. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +0 -2
  175. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +0 -2
  176. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +0 -2
  177. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +0 -2
  178. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +0 -2
  179. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +0 -2
  180. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ab1c2d3e4f5a6b7c8.jsonl +0 -2
  181. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +0 -2
  182. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +0 -2
  183. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +0 -266
  184. package/.agents/skills/autoconverge/workflow/render_report.py +0 -1024
  185. package/.agents/skills/autoconverge/workflow/test_aggregate_runs.py +0 -134
  186. package/.agents/skills/autoconverge/workflow/test_convergence_summary.py +0 -149
  187. package/.agents/skills/autoconverge/workflow/test_render_report.py +0 -812
  188. package/.agents/skills/hitl/SKILL.md +0 -45
  189. package/.agents/skills/pr-cleanup/SKILL.md +0 -140
  190. package/.agents/skills/pr-cleanup/reference/process-inventory.md +0 -17
  191. package/.agents/skills/pr-cleanup/reference/task-seeds.md +0 -22
  192. package/.agents/skills/pr-name-by-capability/SKILL.md +0 -73
  193. package/.agents/skills/pr-name-by-capability/reference/fetch-commands.md +0 -29
  194. package/.agents/skills/pr-name-by-capability/reference/offense-examples.md +0 -32
  195. package/.agents/skills/pr-name-by-capability/reference/report-template.md +0 -29
  196. package/.agents/skills/pr-name-by-capability/reference/rule-checklist.md +0 -38
  197. package/.agents/skills/pr-name-by-capability/reference/task-seeds.md +0 -10
  198. package/.agents/skills/pr-plain-language-cleanup/SKILL.md +0 -93
  199. package/.agents/skills/pr-refinement/SKILL.md +0 -31
  200. package/.agents/skills/pr-shared-extraction/SKILL.md +0 -177
  201. package/.agents/skills/pr-shared-extraction/reference/examples.md +0 -46
  202. package/.agents/skills/pr-shared-extraction/reference/offense-taxonomy.md +0 -100
  203. package/.agents/skills/pr-small-cl/SKILL.md +0 -52
  204. package/.agents/skills/pr-title-description/SKILL.md +0 -96
  205. package/.agents/skills/prototype/SKILL.md +0 -85
  206. package/.agents/skills/prototype/reference/honest-limitations.md +0 -23
  207. package/.agents/skills/prototype/reference/promotion-tasks.md +0 -23
  208. package/.agents/skills/prototype/scripts/build_sandbox_settings.py +0 -249
  209. package/.agents/skills/prototype/scripts/conftest.py +0 -15
  210. package/.agents/skills/prototype/scripts/launch_sandbox.py +0 -205
  211. package/.agents/skills/prototype/scripts/probe_sandbox_safety.py +0 -311
  212. package/.agents/skills/prototype/scripts/prototype_scripts_constants/__init__.py +0 -1
  213. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
  214. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +0 -41
  215. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +0 -23
  216. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +0 -45
  217. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +0 -10
  218. package/.agents/skills/prototype/scripts/test_build_sandbox_settings.py +0 -275
  219. package/.agents/skills/prototype/scripts/test_launch_sandbox.py +0 -303
  220. package/.agents/skills/prototype/scripts/test_probe_sandbox_safety.py +0 -312
  221. package/.agents/skills/prototype/workflows/promotion.md +0 -25
  222. package/.agents/skills/prototype/workflows/sandbox.md +0 -35
  223. package/.agents/skills/rebase/.claude/CLAUDE.md +0 -1
  224. package/.agents/skills/rebase/AGENTS.md +0 -1
  225. package/.agents/skills/rebase/SKILL.md +0 -178
  226. package/.agents/skills/review-router/SKILL.md +0 -51
  227. package/.agents/skills/review-router/reference/route-policy.json +0 -7
  228. package/.agents/skills/review-router/reference/task-seeds.md +0 -1
  229. package/.agents/skills/review-router/scripts/conftest.py +0 -4
  230. package/.agents/skills/review-router/scripts/review_router.py +0 -50
  231. package/.agents/skills/review-router/scripts/review_router_cli.py +0 -211
  232. package/.agents/skills/review-router/scripts/review_router_constants/__init__.py +0 -1
  233. package/.agents/skills/review-router/scripts/review_router_constants/config/__init__.py +0 -0
  234. package/.agents/skills/review-router/scripts/review_router_constants/config/constants.py +0 -13
  235. package/.agents/skills/review-router/scripts/test_review_router.py +0 -23
  236. package/.agents/skills/review-router/scripts/test_review_router_cli.py +0 -47
  237. package/.agents/skills/review-tier/SKILL.md +0 -56
  238. package/.agents/skills/review-tier/reference/task-seeds.md +0 -1
  239. package/.agents/skills/review-tier/reference/tier-policy.json +0 -9
  240. package/.agents/skills/review-tier/scripts/conftest.py +0 -4
  241. package/.agents/skills/review-tier/scripts/review_tier.py +0 -359
  242. package/.agents/skills/review-tier/scripts/review_tier_constants/__init__.py +0 -1
  243. package/.agents/skills/review-tier/scripts/review_tier_constants/config/__init__.py +0 -0
  244. package/.agents/skills/review-tier/scripts/review_tier_constants/config/constants.py +0 -29
  245. package/.agents/skills/review-tier/scripts/test_generation.py +0 -159
  246. package/.agents/skills/review-tier/scripts/test_review_tier.py +0 -33
  247. package/.agents/skills/run-claude-dev-env/SKILL.md +0 -84
  248. package/.agents/skills/session-log/.claude/CLAUDE.md +0 -1
  249. package/.agents/skills/session-log/AGENTS.md +0 -1
  250. package/.agents/skills/session-log/SKILL.md +0 -170
  251. package/.agents/skills/session-log/templates/frontmatter.md +0 -40
  252. package/.agents/skills/session-tidy/.claude/CLAUDE.md +0 -1
  253. package/.agents/skills/session-tidy/AGENTS.md +0 -1
  254. package/.agents/skills/session-tidy/SKILL.md +0 -191
  255. package/.agents/skills/skill-builder/references/.claude/CLAUDE.md +0 -1
  256. package/.agents/skills/skill-builder/references/AGENTS.md +0 -1
  257. package/.agents/skills/skill-builder/references/delegation-map.md +0 -130
  258. package/.agents/skills/skill-builder/references/description-field.md +0 -111
  259. package/.agents/skills/skill-builder/references/deterministic-elements.md +0 -218
  260. package/.agents/skills/skill-builder/references/progressive-disclosure.md +0 -122
  261. package/.agents/skills/skill-builder/references/self-audit-checklist.md +0 -126
  262. package/.agents/skills/skill-builder/references/skill-modularity.md +0 -111
  263. package/.agents/skills/skill-builder/references/skill-types.md +0 -232
  264. package/.agents/skills/skill-builder/references/thariq-x-post-skills.json +0 -33
  265. package/.agents/skills/skill-builder/templates/.claude/CLAUDE.md +0 -1
  266. package/.agents/skills/skill-builder/templates/AGENTS.md +0 -1
  267. package/.agents/skills/skill-builder/templates/gap-analysis.md +0 -87
  268. package/.agents/skills/skill-builder/workflows/.claude/CLAUDE.md +0 -1
  269. package/.agents/skills/skill-builder/workflows/AGENTS.md +0 -1
  270. package/.agents/skills/skill-builder/workflows/improve-skill.md +0 -136
  271. package/.agents/skills/skill-builder/workflows/new-skill.md +0 -179
  272. package/.agents/skills/skill-builder/workflows/polish-skill.md +0 -139
  273. package/.agents/skills/source-command-sr-loop/SKILL.md +0 -82
  274. package/.agents/skills/update/.claude/CLAUDE.md +0 -1
  275. package/.agents/skills/update/AGENTS.md +0 -1
  276. package/.agents/skills/update/SKILL.md +0 -190
  277. package/_shared/pr-loop/AGENTS.md +0 -1
  278. package/_shared/pr-loop/CLAUDE.md +0 -1
  279. package/_shared/pr-loop/audit-contract.md +0 -183
  280. package/_shared/pr-loop/audit-reply-template.md +0 -151
  281. package/_shared/pr-loop/code-rules-gate.md +0 -65
  282. package/_shared/pr-loop/fix-protocol.md +0 -60
  283. package/_shared/pr-loop/gh-payloads.md +0 -75
  284. package/_shared/pr-loop/post-audit-thread-contract.md +0 -51
  285. package/_shared/pr-loop/precatch-rubric.md +0 -66
  286. package/_shared/pr-loop/preflight-proposal.md +0 -56
  287. package/_shared/pr-loop/scripts/post_audit_thread.py +0 -1242
  288. package/_shared/pr-loop/scripts/pr_loop_shared_constants/post_audit_thread_constants.py +0 -199
  289. package/_shared/pr-loop/scripts/tests/test_post_audit_thread.py +0 -1115
  290. package/_shared/pr-loop/scripts/tests/test_post_audit_thread_constants.py +0 -129
  291. package/_shared/pr-loop/state-schema.md +0 -45
  292. package/_shared/pr-loop/worker-spawn.md +0 -189
  293. /package/{.agents/skills/_shared/pr-loop/scripts → scripts}/test_durable_post_lint.py +0 -0
@@ -1,129 +0,0 @@
1
- """Tests for post_audit_thread_constants.py extracted constant set."""
2
-
3
- import importlib.util
4
- from pathlib import Path
5
- from types import ModuleType
6
-
7
-
8
- def _load_constants_module() -> ModuleType:
9
- module_path = (
10
- Path(__file__).parent.parent
11
- / "pr_loop_shared_constants"
12
- / "post_audit_thread_constants.py"
13
- )
14
- specification = importlib.util.spec_from_file_location(
15
- "pr_loop_shared_constants.post_audit_thread_constants", module_path
16
- )
17
- assert specification is not None
18
- assert specification.loader is not None
19
- module = importlib.util.module_from_spec(specification)
20
- specification.loader.exec_module(module)
21
- return module
22
-
23
-
24
- constants_module = _load_constants_module()
25
-
26
-
27
- def test_http_request_content_type_is_application_json() -> None:
28
- assert constants_module.HTTP_REQUEST_CONTENT_TYPE == "application/json"
29
-
30
-
31
- def test_http_method_post_constant_is_post() -> None:
32
- assert constants_module.HTTP_METHOD_POST == "POST"
33
-
34
-
35
- def test_http_header_authorization_constant_is_authorization() -> None:
36
- assert constants_module.HTTP_HEADER_AUTHORIZATION == "Authorization"
37
-
38
-
39
- def test_http_header_accept_constant_is_accept() -> None:
40
- assert constants_module.HTTP_HEADER_ACCEPT == "Accept"
41
-
42
-
43
- def test_http_header_content_type_constant_is_content_type() -> None:
44
- assert constants_module.HTTP_HEADER_CONTENT_TYPE == "Content-Type"
45
-
46
-
47
- def test_http_header_github_api_version_constant_is_x_github_api_version() -> None:
48
- assert constants_module.HTTP_HEADER_GITHUB_API_VERSION == "X-GitHub-Api-Version"
49
-
50
-
51
- def test_http_header_user_agent_constant_is_user_agent() -> None:
52
- assert constants_module.HTTP_HEADER_USER_AGENT == "User-Agent"
53
-
54
-
55
- def test_http_authorization_bearer_prefix_is_bearer_with_trailing_space() -> None:
56
- prefix = constants_module.HTTP_AUTHORIZATION_BEARER_PREFIX
57
- assert prefix == "Bearer "
58
- assert prefix.endswith(" ")
59
-
60
-
61
- def test_http_request_timeout_seconds_is_positive_int() -> None:
62
- timeout_seconds = constants_module.HTTP_REQUEST_TIMEOUT_SECONDS
63
- assert isinstance(timeout_seconds, int)
64
- assert timeout_seconds > 0
65
-
66
-
67
- def test_error_response_preview_chars_is_positive_int() -> None:
68
- preview_chars = constants_module.ERROR_RESPONSE_PREVIEW_CHARS
69
- assert isinstance(preview_chars, int)
70
- assert preview_chars > 0
71
-
72
-
73
- def test_single_review_api_path_template_uses_pr_number_placeholder() -> None:
74
- template_text = constants_module.SINGLE_REVIEW_API_PATH_TEMPLATE
75
- assert "{owner}" in template_text
76
- assert "{repo}" in template_text
77
- assert "{pr_number}" in template_text
78
- assert "{review_id}" in template_text
79
-
80
-
81
- def test_single_review_comments_api_path_template_uses_pr_number_placeholder() -> None:
82
- template_text = constants_module.SINGLE_REVIEW_COMMENTS_API_PATH_TEMPLATE
83
- assert "{owner}" in template_text
84
- assert "{repo}" in template_text
85
- assert "{pr_number}" in template_text
86
- assert "{review_id}" in template_text
87
- assert template_text.endswith("/comments")
88
-
89
-
90
- def test_audit_body_skeleton_marker_tokens_present() -> None:
91
- open_marker = constants_module.AUDIT_BODY_SKELETON_OPEN_MARKER
92
- close_marker = constants_module.AUDIT_BODY_SKELETON_CLOSE_MARKER
93
- assert open_marker.startswith("<!--") and open_marker.endswith("-->")
94
- assert close_marker.startswith("<!--") and close_marker.endswith("-->")
95
- assert open_marker != close_marker
96
-
97
-
98
- def test_template_path_resolves_to_existing_markdown_file() -> None:
99
- resolved_path = constants_module.template_path()
100
- assert resolved_path.is_file(), f"missing: {resolved_path}"
101
- assert resolved_path.suffix == ".md"
102
-
103
-
104
- def test_template_contains_skeleton_markers() -> None:
105
- resolved_path = constants_module.template_path()
106
- template_text = resolved_path.read_text(encoding="utf-8")
107
- assert constants_module.AUDIT_BODY_SKELETON_OPEN_MARKER in template_text
108
- assert constants_module.AUDIT_BODY_SKELETON_CLOSE_MARKER in template_text
109
-
110
-
111
- def test_live_test_fixture_names_are_not_exposed_from_production_config_module() -> None:
112
- forbidden_attribute_names = [
113
- "LIVE_TEST_OWNER",
114
- "LIVE_TEST_REPO",
115
- "LIVE_TEST_BRANCH_PREFIX",
116
- "LIVE_TEST_PR_TITLE",
117
- "LIVE_TEST_PR_BODY",
118
- "LIVE_TEST_BASE_BRANCH",
119
- "LIVE_TEST_FIXTURE_FILENAME",
120
- "LIVE_TEST_FIXTURE_CONTENT",
121
- "LIVE_TEST_FIXTURE_LINE_FOR_FINDING_ONE",
122
- "LIVE_TEST_FIXTURE_LINE_FOR_FINDING_TWO",
123
- "LIVE_TEST_FIXTURE_LINE_FOR_FINDING_THREE",
124
- ]
125
- for each_attribute_name in forbidden_attribute_names:
126
- assert not hasattr(constants_module, each_attribute_name), (
127
- f"production config module exposes test-only fixture "
128
- f"{each_attribute_name!r}; move it to test_post_audit_thread.py"
129
- )
@@ -1,45 +0,0 @@
1
- # State schema
2
-
3
- State each PR-loop workflow tracks across iterations. Workflows differ on persistence (in-memory vs files) and which fields they use; shapes overlap.
4
-
5
- ## Common fields
6
-
7
- | Field | Type | Purpose |
8
- |---|---|---|
9
- | `loop_count` | int | Iterations completed; bumps on each AUDIT or tick |
10
- | `last_action` | enum | `fresh`, `audited`, `fixed` — drives next-step dispatch |
11
- | `last_findings` | object | `{p0, p1, p2, total}` count of findings from most recent AUDIT |
12
- | `audit_log` | list[str] | Per-iteration one-line summaries for the final report |
13
- | `starting_sha` | str | `git rev-parse HEAD` at workflow start |
14
- | `loop_comment_index` | dict | `{finding_id: {finding_comment_id, finding_comment_url, thread_node_id, fix_status, ...}}` (`thread_node_id` is the PR review thread node id — `PRRT_kwDOxxx` — captured at audit time when calling `get_review_comments`, used by `resolve_thread` at FIX time) |
15
-
16
- ## autoconverge (workflow and portable pacer)
17
-
18
- Workflow runs hold round state in the workflow journal. On `pacer=portable`, the
19
- continuous driver seeds `pr-converge-state.json` under the job directory and
20
- advances phases through `portable_converge_driver.py`. Portable state carries
21
- `current_head`, `phase`, `codex_clean_at`, `codex_down`, `codex_required`, and
22
- pending `next` / `wait_seconds` stamps. Round shape and terminal gates are
23
- documented in
24
- [`../../.agents/skills/autoconverge/reference/convergence.md`](../../.agents/skills/autoconverge/reference/convergence.md).
25
- The machine readiness checklist is
26
- [`../../.agents/skills/autoconverge/reference/convergence-gates.md`](../../.agents/skills/autoconverge/reference/convergence-gates.md).
27
-
28
- ## Archived workflow extensions
29
-
30
- Historical field lists for retired entry skills live under
31
- `packages/claude-dev-env/.agents/skills-archived/`:
32
-
33
- - **bugteam** — inline orchestrator state, `team_name`, `gate_round_count`, exit payload fields. See [`../../.agents/skills-archived/bugteam/SKILL.md`](../../.agents/skills-archived/bugteam/SKILL.md).
34
- - **pr-converge** — file-backed multi-PR state, phase enum, dual persistence. See [`../../.agents/skills-archived/pr-converge/reference/state-schema.md`](../../.agents/skills-archived/pr-converge/reference/state-schema.md) and [`../../.agents/skills-archived/pr-converge/reference/multi-pr-orchestration.md`](../../.agents/skills-archived/pr-converge/reference/multi-pr-orchestration.md).
35
-
36
- ## Reset semantics
37
-
38
- - **autoconverge** — portable state resets on a fresh `open-run`; workflow journal is per run id.
39
- - **Archived bugteam** — cleared on each new invocation; see archived skill body.
40
- - **Archived pr-converge** — see archived [`state-schema.md`](../../.agents/skills-archived/pr-converge/reference/state-schema.md); multi-PR file state persists across orchestrator runs and only `last_seen_comment_id` advances monotonically.
41
-
42
- ## Convergence checks
43
-
44
- - **autoconverge** — `packages/claude-dev-env/_shared/pr-loop/scripts/check_convergence.py` is the single readiness source; gate labels are listed in [`../../.agents/skills/autoconverge/reference/convergence-gates.md`](../../.agents/skills/autoconverge/reference/convergence-gates.md). On pass, mark the PR ready (`gh pr ready`).
45
- - **Archived pr-converge** — same script and archived [`convergence-gates.md`](../../.agents/skills-archived/pr-converge/reference/convergence-gates.md) reference.
@@ -1,189 +0,0 @@
1
- # Worker-spawn protocol
2
-
3
- Single home for the worker-spawn dispatcher contract and for Claude-only
4
- slash-step host routing. Skills that need a role-bound headless worker call
5
- [`scripts/resolve_worker_spawn.py`](../../scripts/resolve_worker_spawn.py)
6
- (or import `resolve_worker_spawn`) and read this page for the tier walk, inputs,
7
- JSON result shape, host rules, and setup. Skills that run a Claude-only slash
8
- step (for example `/code-review`) read the code-review host-routing section.
9
-
10
- Composed helpers (preflight, headless runners, and the code-review invoker)
11
- stay documented at their own modules; this page states how callers use them.
12
-
13
- ## Three tiers
14
-
15
- Walk order is fixed: soft-gate preflight for tier 1, then tier 1, then host
16
- branching for tiers 2 and 3.
17
-
18
- | Tier | Name | Who runs it |
19
- |---|---|---|
20
- | 1 | Grok headless | Python helper: `grok_worker_preflight` then `grok_headless_runner.run_headless_worker` |
21
- | 2 | `claude_agent_required` | **Not** the Python helper. A stop signal so the **calling skill / harness** runs the Claude Code Agent tool itself |
22
- | 3 | Claude headless | Python helper: `claude_chain_runner.run_claude` with `-p --output-format json --agent <stem>`, prompt body on stdin from the prompt file, and subprocess `cwd` set to the caller's working directory |
23
-
24
- ### `claude_agent_required` boundary
25
-
26
- A Python helper cannot spawn Claude Code Agent-tool subagents. On a **Claude**
27
- host, when the claude headless tier is **not** enabled (`--enable-claude-tier`
28
- absent / `is_claude_tier_enabled=False`), a grok fallthrough records tier 2 with
29
- reason `claude_agent_required`, leaves `tier_used` null, and returns. The
30
- calling skill must then run the Agent tool in-process.
31
-
32
- On a **ThirdParty** host, or when the claude tier is enabled on a Claude host,
33
- the dispatcher continues to tier 3.
34
-
35
- ## Tier-1 fleets via grok-spawn
36
-
37
- For a fleet of tier-1 grok workers (batch spec in, reports out), use the
38
- **grok-spawn** skill when that skill is installed on the host (it ships on a
39
- sibling stack and is not part of this dispatcher page). When present, that
40
- skill owns the batch playbook and flag profiles under its reference docs.
41
- This page stays the single-worker dispatcher contract (`resolve_worker_spawn`).
42
-
43
- The calling session owns verification and every commit, push, or GitHub post.
44
- Workers never commit or post.
45
-
46
- ## Required inputs
47
-
48
- ### CLI
49
-
50
- ```
51
- python resolve_worker_spawn.py \
52
- --role <role> \
53
- --prompt-file <path> \
54
- --cwd <dir> \
55
- --run-temp-dir <dir> \
56
- [--timeout-seconds N] \
57
- [--enable-claude-tier]
58
- ```
59
-
60
- | Flag | Required | Meaning |
61
- |---|---|---|
62
- | `--role` | no (default `bugteam`) | Role name for preflight agent-set checks; mapped to the primary agent stem for headless `--agent` (for example `bugteam` → `code-quality-agent`, `clean-coder` → `clean-coder`; unknown roles fall back to the raw role string) |
63
- | `--prompt-file` | yes | Prompt file path for headless workers |
64
- | `--cwd` | yes | Working directory for headless grok and claude workers |
65
- | `--run-temp-dir` | yes | Run-scoped directory for leader sockets and preflight cache (created if missing) |
66
- | `--timeout-seconds` | no (default `600`) | Per-tier timeout in seconds |
67
- | `--enable-claude-tier` | no | Allow tier 3 on a Claude host |
68
-
69
- There is no separate outcome-file flag. The result surface is **stdout JSON**
70
- plus the process exit code.
71
-
72
- ### Import API
73
-
74
- `resolve_worker_spawn(...)` takes keyword-only arguments:
75
- `role`, `prompt_file`, `working_directory`, `timeout_seconds`,
76
- `is_claude_tier_enabled`, `run_state_directory`.
77
- `encode_spawn_outcome` turns a `SpawnOutcome` into the same JSON shape the CLI
78
- prints.
79
-
80
- The grok tier runs with no turn cap; `timeout_seconds` is its only bound.
81
-
82
- ## JSON result shape
83
-
84
- Stdout is one JSON object:
85
-
86
- ```json
87
- {
88
- "tier_used": 1,
89
- "ok": true,
90
- "attempts": [
91
- {"tier": 1, "ok": true, "reason": null}
92
- ],
93
- "output": "<serving tier stdout>",
94
- "returncode": 0
95
- }
96
- ```
97
-
98
- | Key | Meaning |
99
- |---|---|
100
- | `tier_used` | Serving tier number (`1` or `3`), or `null` when no tier served |
101
- | `ok` | Whether the serving call completed successfully |
102
- | `attempts` | Ordered list of tries: each `{tier, ok, reason}` |
103
- | `output` | Captured stdout from the serving tier (empty when none) |
104
- | `returncode` | Process return code from the last tier run (or config-error code) |
105
-
106
- `attempts` is in tried order. A Claude-host stop records tier `2` with
107
- `reason: "claude_agent_required"`. Preflight or grok fallthrough reasons use the
108
- preflight/runner classification strings (for example `grok_binary_missing`,
109
- `usage_limit`).
110
-
111
- ### Exit codes
112
-
113
- | Code | Meaning |
114
- |---|---|
115
- | `0` | A tier served (`tier_used` is not null) |
116
- | `2` | Exhausted — no tier served |
117
- | `3` | Config error: the `--prompt-file` path is not an existing file (`output` = `prompt_file_missing`) or claude chain configuration missing or invalid |
118
-
119
- ## Host detection
120
-
121
- After a grok fallthrough the dispatcher calls `detect_host_profile()` from
122
- `tier_model_ids` (advisor scripts). Detection order:
123
-
124
- 1. `ADVISOR_HOST_PROFILE` when set — must be `Claude`, `Codex`, or `ThirdParty` (any letter case).
125
- 2. `THIRD_PARTY` when truthy — `1`, `true`, `yes`, or `on`.
126
- 3. Default: `Claude`.
127
-
128
- Profiles are the real names `Claude`, `Codex`, and `ThirdParty` (not a separate Grok host
129
- profile). Grok is tier 1 on every host; host profile only chooses the post-grok
130
- branch (Agent-tool handoff vs headless claude chain). A Codex profile takes the
131
- non-Claude branch.
132
-
133
- ## Code-review host routing
134
-
135
- Claude-only slash steps need a Claude Code harness. The built-in
136
- `/code-review` command is the main case. The host-routing pair is:
137
-
138
- - `detect_host_profile()` from `tier_model_ids` — same host detection as the
139
- worker-spawn dispatcher above
140
- - `invoke_code_review` — host-aware invoker for `/code-review` (lives next to
141
- `resolve_worker_spawn` under the package scripts tree)
142
-
143
- Mode decision:
144
-
145
- | Host profile | Session model | Mode | Who runs `/code-review` |
146
- |---|---|---|---|
147
- | `Claude` | `opus` | `in_session` | The calling skill runs the slash command in-process |
148
- | `Claude` | any other alias | `chain` | Headless spawn through `claude_chain_runner` |
149
- | `ThirdParty` | any | `chain` | Headless spawn through `claude_chain_runner` |
150
-
151
- The review always runs at effort **high** on model **opus**. Chain mode builds
152
- a single-turn prompt `/code-review ultra --fix`, pins `--model opus`, sets
153
- subprocess `cwd` to the PR working tree, and reads stdin from the empty stream
154
- so the spawn does not wait for input.
155
-
156
- After a chain run, a non-empty `git status --porcelain` means the review
157
- applied fixes. The calling host commits and pushes those fixes per the fix
158
- protocol. The chain process never commits or posts. A clean stamp requires
159
- `returncode == 0` and a non-null `served_command` plus a clean tree —
160
- `dirty_tree` false alone is not enough when the chain failed or never served.
161
-
162
- GitHub transport (`pr-loop-cloud-transport`) is a separate axis from this
163
- harness branch. That skill routes `gh` vs MCP; it does not change which host
164
- can run Claude-only slash commands.
165
-
166
- ## Leader-socket rule
167
-
168
- Every concurrent grok process gets its own `--leader-socket` path under the
169
- caller-supplied run temp directory. The headless runner mints a unique
170
- `grok-leader-<uuid>.sock` per invocation. Preflight auth and ping probes use
171
- their own fixed socket filenames under the same directory so they never share a
172
- socket with a live worker.
173
-
174
- ## Cloud setup
175
-
176
- Unattended grok auth uses the `XAI_API_KEY` environment variable. Install the
177
- CLI via the vendor curl installer or the `@xai-official/grok` package. Keep
178
- agent definitions and hook config in parity with `npx claude-dev-env` so the
179
- preflight role-agent check and local `~/.claude` layout match what the worker
180
- expects.
181
-
182
- Use placeholders for account-specific values; do not hardcode personal paths or
183
- keys in skills or docs.
184
-
185
- ## GitHub transport
186
-
187
- `pr-loop-cloud-transport` is a separate axis. This utility never posts reviews,
188
- opens PRs, or substitutes `gh` for MCP. GitHub reachability and cloud session
189
- routing stay outside the worker-spawn contract.