claude-dev-env 2.15.1 → 2.17.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 (841) hide show
  1. package/.agents/agents/.claude/CLAUDE.md +1 -0
  2. package/{agents → .agents/agents}/AGENTS.md +8 -2
  3. package/{agents → .agents/agents}/test_agent_frontmatter.py +1 -1
  4. package/.agents/skills/.claude/CLAUDE.md +1 -0
  5. package/.agents/skills/AGENTS.md +71 -0
  6. package/.agents/skills/_shared/.claude/CLAUDE.md +1 -0
  7. package/{skills → .agents/skills}/_shared/AGENTS.md +2 -2
  8. package/.agents/skills/_shared/advisor/.claude/CLAUDE.md +1 -0
  9. package/.agents/skills/_shared/pr-loop/.claude/CLAUDE.md +1 -0
  10. package/{skills → .agents/skills}/_shared/pr-loop/AGENTS.md +22 -15
  11. package/{skills → .agents/skills}/_shared/pr-loop/portable-driver.md +6 -7
  12. package/.agents/skills/_shared/pr-loop/prompts/.claude/CLAUDE.md +1 -0
  13. package/.agents/skills/_shared/pr-loop/prompts/AGENTS.md +9 -0
  14. package/.agents/skills/_shared/pr-loop/scripts/.claude/CLAUDE.md +1 -0
  15. package/{skills → .agents/skills}/_shared/pr-loop/scripts/AGENTS.md +1 -1
  16. package/{skills → .agents/skills}/_shared/pr-loop/scripts/portable_converge_driver.py +25 -16
  17. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/.claude/CLAUDE.md +1 -0
  18. package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/audit_category_schema_constants.py +6 -1
  19. package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +1 -5
  20. package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_audit_prompt.py +9 -3
  21. package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_audit_outcomes.py +1 -1
  22. package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_fix_outcomes.py +1 -1
  23. package/.agents/skills/autoconverge/.claude/CLAUDE.md +1 -0
  24. package/.agents/skills/autoconverge/reference/.claude/CLAUDE.md +1 -0
  25. package/.agents/skills/autoconverge/reference/convergence-gates.md +31 -0
  26. package/{skills → .agents/skills}/autoconverge/reference/convergence.md +8 -10
  27. package/{skills → .agents/skills}/autoconverge/reference/gotchas.md +1 -1
  28. package/{skills → .agents/skills}/autoconverge/reference/stop-conditions.md +1 -1
  29. package/.agents/skills/autoconverge/workflow/.claude/CLAUDE.md +1 -0
  30. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/.claude/CLAUDE.md +1 -0
  31. package/{skills → .agents/skills}/autoconverge/workflow/converge.codex-gate.test.mjs +1 -1
  32. package/{skills → .agents/skills}/autoconverge/workflow/converge.contract.test.mjs +1 -1
  33. package/{skills → .agents/skills}/autoconverge/workflow/converge.mjs +3 -3
  34. package/.agents/skills/cert-classification-rule/SKILL.md +224 -0
  35. package/.agents/skills/cert-classification-rule/scripts/resort_cert_folders.py +158 -0
  36. package/{skills → .agents/skills}/e-code-review/reference/effort-evaluation.md +1 -1
  37. package/.agents/skills/eli5/SKILL.md +128 -0
  38. package/.agents/skills/eli5/reference/task-seeds.md +11 -0
  39. package/.agents/skills/everything-search/.claude/CLAUDE.md +1 -0
  40. package/.agents/skills/fresh-branch/.claude/CLAUDE.md +1 -0
  41. package/{skills → .agents/skills}/fresh-branch/scripts/test_create_fresh_branch.py +2 -3
  42. package/.agents/skills/grok-spawn/.claude/CLAUDE.md +1 -0
  43. package/.agents/skills/name-by-capability-audit/SKILL.md +67 -0
  44. package/.agents/skills/name-by-capability-audit/reference/fetch-commands.md +29 -0
  45. package/.agents/skills/name-by-capability-audit/reference/offense-examples.md +32 -0
  46. package/.agents/skills/name-by-capability-audit/reference/report-template.md +29 -0
  47. package/.agents/skills/name-by-capability-audit/reference/rule-checklist.md +38 -0
  48. package/.agents/skills/name-by-capability-audit/reference/task-seeds.md +9 -0
  49. package/.agents/skills/pr-cleanup/SKILL.md +99 -0
  50. package/{skills → .agents/skills}/prototype/reference/honest-limitations.md +1 -1
  51. package/{skills → .agents/skills}/prototype/reference/promotion-tasks.md +1 -1
  52. package/{skills → .agents/skills}/prototype/scripts/test_build_sandbox_settings.py +2 -2
  53. package/{skills → .agents/skills}/prototype/scripts/test_probe_sandbox_safety.py +1 -1
  54. package/{skills → .agents/skills}/prototype/workflows/promotion.md +2 -2
  55. package/.agents/skills/rebase/.claude/CLAUDE.md +1 -0
  56. package/.agents/skills/review-router/SKILL.md +51 -0
  57. package/.agents/skills/review-router/reference/route-policy.json +7 -0
  58. package/.agents/skills/review-router/reference/task-seeds.md +1 -0
  59. package/.agents/skills/review-router/scripts/conftest.py +4 -0
  60. package/.agents/skills/review-router/scripts/review_router.py +50 -0
  61. package/.agents/skills/review-router/scripts/review_router_cli.py +211 -0
  62. package/.agents/skills/review-router/scripts/review_router_constants/__init__.py +1 -0
  63. package/.agents/skills/review-router/scripts/review_router_constants/config/__init__.py +0 -0
  64. package/.agents/skills/review-router/scripts/review_router_constants/config/constants.py +13 -0
  65. package/.agents/skills/review-router/scripts/test_review_router.py +23 -0
  66. package/.agents/skills/review-router/scripts/test_review_router_cli.py +47 -0
  67. package/.agents/skills/review-tier/SKILL.md +56 -0
  68. package/.agents/skills/review-tier/reference/task-seeds.md +1 -0
  69. package/.agents/skills/review-tier/reference/tier-policy.json +9 -0
  70. package/.agents/skills/review-tier/scripts/conftest.py +4 -0
  71. package/.agents/skills/review-tier/scripts/review_tier.py +332 -0
  72. package/.agents/skills/review-tier/scripts/review_tier_constants/__init__.py +1 -0
  73. package/.agents/skills/review-tier/scripts/review_tier_constants/config/__init__.py +0 -0
  74. package/.agents/skills/review-tier/scripts/review_tier_constants/config/constants.py +29 -0
  75. package/.agents/skills/review-tier/scripts/test_generation.py +171 -0
  76. package/.agents/skills/review-tier/scripts/test_review_tier.py +33 -0
  77. package/.agents/skills/run-claude-dev-env/SKILL.md +84 -0
  78. package/.agents/skills/run-claude-dev-env/driver.mjs +239 -0
  79. package/.agents/skills/session-log/.claude/CLAUDE.md +1 -0
  80. package/{skills → .agents/skills}/session-log/SKILL.md +1 -1
  81. package/.agents/skills/session-tidy/.claude/CLAUDE.md +1 -0
  82. package/.agents/skills/shared-extraction-audit/SKILL.md +160 -0
  83. package/.agents/skills/shared-extraction-audit/reference/examples.md +46 -0
  84. package/.agents/skills/shared-extraction-audit/reference/offense-taxonomy.md +100 -0
  85. package/.agents/skills/skill-builder/.claude/CLAUDE.md +1 -0
  86. package/.agents/skills/skill-builder/references/.claude/CLAUDE.md +1 -0
  87. package/{skills → .agents/skills}/skill-builder/references/deterministic-elements.md +1 -1
  88. package/.agents/skills/skill-builder/templates/.claude/CLAUDE.md +1 -0
  89. package/.agents/skills/skill-builder/workflows/.claude/CLAUDE.md +1 -0
  90. package/.agents/skills/source-command-logifix/SKILL.md +29 -0
  91. package/.agents/skills/source-command-sr-loop/SKILL.md +58 -0
  92. package/.agents/skills/task-build/.claude/CLAUDE.md +1 -0
  93. package/.agents/skills/update/.claude/CLAUDE.md +1 -0
  94. package/.agents/skills-archived/AGENTS.md +45 -0
  95. package/.agents/skills-archived/anthropic-plan/.claude/CLAUDE.md +1 -0
  96. package/{skills → .agents/skills-archived}/anthropic-plan/AGENTS.md +1 -1
  97. package/.agents/skills-archived/anthropic-plan/scripts/.claude/CLAUDE.md +1 -0
  98. package/.agents/skills-archived/anthropic-plan/scripts/anthropic_plan_scripts_constants/.claude/CLAUDE.md +1 -0
  99. package/.agents/skills-archived/anthropic-plan/templates/.claude/CLAUDE.md +1 -0
  100. package/{skills → .agents/skills-archived}/anthropic-plan/test_skill_contract.py +4 -4
  101. package/.agents/skills-archived/anthropic-plan/workflow/.claude/CLAUDE.md +1 -0
  102. package/.agents/skills-archived/auditing-claude-config/.claude/CLAUDE.md +1 -0
  103. package/.agents/skills-archived/bugteam/.claude/CLAUDE.md +1 -0
  104. package/.agents/skills-archived/bugteam/reference/.claude/CLAUDE.md +1 -0
  105. package/.agents/skills-archived/bugteam/reference/obstacles/.claude/CLAUDE.md +1 -0
  106. package/.agents/skills-archived/bugteam/scripts/.claude/CLAUDE.md +1 -0
  107. package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_code_rules_gate.py +11 -1
  108. package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_fix_hookspath.py +11 -1
  109. package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_preflight.py +11 -1
  110. package/.agents/skills-archived/bugteam/scripts/bugteam_scripts_constants/.claude/CLAUDE.md +1 -0
  111. package/{skills → .agents/skills-archived}/bugteam/scripts/reflow_skill_md.py +3 -3
  112. package/.agents/skills-archived/codex-review/.claude/CLAUDE.md +1 -0
  113. package/.agents/skills-archived/codex-review/reference/.claude/CLAUDE.md +1 -0
  114. package/.agents/skills-archived/codex-review/scripts/codex_review_scripts_constants/.claude/CLAUDE.md +1 -0
  115. package/{skills → .agents/skills-archived}/codex-review/scripts/codex_usage_probe.py +11 -1
  116. package/{skills → .agents/skills-archived}/codex-review/scripts/run_codex_review.py +11 -1
  117. package/{skills → .agents/skills-archived}/codex-review/test_skill_scaffold.py +4 -4
  118. package/{skills → .agents/skills-archived}/copilot-finding-triage/SKILL.md +1 -1
  119. package/.agents/skills-archived/copilot-review/.claude/CLAUDE.md +1 -0
  120. package/.agents/skills-archived/pr-converge/.claude/CLAUDE.md +1 -0
  121. package/{skills → .agents/skills-archived}/pr-converge/SKILL.md +6 -6
  122. package/.agents/skills-archived/pr-converge/pr_converge_skill_constants/.claude/CLAUDE.md +1 -0
  123. package/{skills → .agents/skills-archived}/pr-converge/pr_converge_skill_constants/AGENTS.md +1 -1
  124. package/{skills → .agents/skills-archived}/pr-converge/pr_converge_skill_constants/constants.py +1 -1
  125. package/.agents/skills-archived/pr-converge/reference/.claude/CLAUDE.md +1 -0
  126. package/{skills → .agents/skills-archived}/pr-converge/reference/multi-pr-orchestration.md +1 -1
  127. package/.agents/skills-archived/pr-converge/reference/obstacles/.claude/CLAUDE.md +1 -0
  128. package/{skills → .agents/skills-archived}/pr-converge/reference/per-tick.md +3 -3
  129. package/.agents/skills-archived/pr-converge/scripts/.claude/CLAUDE.md +1 -0
  130. package/{skills → .agents/skills-archived}/pr-converge/scripts/_pr_converge_path_setup.py +17 -2
  131. package/.agents/skills-archived/pr-converge/scripts/pr_converge_scripts_constants/.claude/CLAUDE.md +1 -0
  132. package/{skills → .agents/skills-archived}/pr-converge/scripts/reflow_skill_md.py +2 -2
  133. package/{skills → .agents/skills-archived}/pr-converge/scripts/test__pr_converge_path_setup.py +7 -4
  134. package/{skills → .agents/skills-archived}/pr-converge/test_portable_pacer_gate.py +6 -2
  135. package/.agents/skills-archived/pr-converge/workflows/.claude/CLAUDE.md +1 -0
  136. package/{skills → .agents/skills-archived}/pr-converge/workflows/schedule-wakeup-loop.md +1 -1
  137. package/.agents/skills-archived/recall/.claude/CLAUDE.md +1 -0
  138. package/.agents/skills-archived/remember/.claude/CLAUDE.md +1 -0
  139. package/{skills → .agents/skills-archived}/split-pr/reference/proposal-format.md +1 -1
  140. package/.claude/CLAUDE.md +1 -0
  141. package/AGENTS.md +34 -58
  142. package/_shared/AGENTS.md +2 -0
  143. package/_shared/advisor/reference/sol-rung.md +2 -2
  144. package/_shared/advisor/reference/third-party-bind.md +1 -1
  145. package/_shared/advisor/scripts/tests/test_codex_sol_advisor.py +1 -1
  146. package/_shared/pr-loop/audit-reply-template.md +4 -0
  147. package/_shared/pr-loop/code-rules-gate.md +1 -1
  148. package/_shared/pr-loop/fix-protocol.md +7 -6
  149. package/_shared/pr-loop/gh-payloads.md +8 -6
  150. package/_shared/pr-loop/precatch-rubric.md +6 -5
  151. package/_shared/pr-loop/scripts/AGENTS.md +15 -0
  152. package/_shared/pr-loop/scripts/_pr_converge_path_setup.py +38 -0
  153. package/_shared/pr-loop/scripts/check_bugbot_ci.py +279 -0
  154. package/_shared/pr-loop/scripts/check_convergence.py +923 -0
  155. package/_shared/pr-loop/scripts/check_convergence_availability.py +275 -0
  156. package/_shared/pr-loop/scripts/check_convergence_gates.py +279 -0
  157. package/_shared/pr-loop/scripts/check_convergence_thread_gates.py +219 -0
  158. package/_shared/pr-loop/scripts/check_pending_reviews.py +154 -0
  159. package/_shared/pr-loop/scripts/codex_down_classifier.py +98 -0
  160. package/_shared/pr-loop/scripts/codex_review_scripts_constants/.claude/CLAUDE.md +1 -0
  161. package/_shared/pr-loop/scripts/codex_review_scripts_constants/AGENTS.md +18 -0
  162. package/_shared/pr-loop/scripts/codex_review_scripts_constants/__init__.py +1 -0
  163. package/_shared/pr-loop/scripts/codex_review_scripts_constants/classifier_constants.py +35 -0
  164. package/_shared/pr-loop/scripts/codex_review_scripts_constants/codex_usage_probe_constants.py +82 -0
  165. package/_shared/pr-loop/scripts/codex_review_scripts_constants/findings_constants.py +18 -0
  166. package/_shared/pr-loop/scripts/codex_review_scripts_constants/run_constants.py +53 -0
  167. package/_shared/pr-loop/scripts/codex_usage_probe.py +570 -0
  168. package/_shared/pr-loop/scripts/conftest.py +43 -0
  169. package/_shared/pr-loop/scripts/fetch_copilot_reviews.py +134 -0
  170. package/_shared/pr-loop/scripts/fixtures/auth_failure_synthetic.txt +1 -0
  171. package/_shared/pr-loop/scripts/fixtures/config_load_failure_v0.125.0.txt +1 -0
  172. package/_shared/pr-loop/scripts/fixtures/freeform_findings_v0.144.3.txt +6 -0
  173. package/_shared/pr-loop/scripts/fixtures/model_rejection_v0.125.0.jsonl +5 -0
  174. package/_shared/pr-loop/scripts/fixtures/structured_findings.txt +13 -0
  175. package/_shared/pr-loop/scripts/fixtures/success_stream_v0.144.3.jsonl +6 -0
  176. package/_shared/pr-loop/scripts/fixtures/unknown_failure_synthetic.txt +1 -0
  177. package/_shared/pr-loop/scripts/fixtures/usage_limit_synthetic.txt +1 -0
  178. package/_shared/pr-loop/scripts/parse_codex_findings.py +207 -0
  179. package/_shared/pr-loop/scripts/post_fix_reply.py +168 -0
  180. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/.claude/CLAUDE.md +1 -0
  181. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/AGENTS.md +18 -0
  182. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/__init__.py +0 -0
  183. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +70 -0
  184. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/pr_converge_constants.py +118 -0
  185. package/_shared/pr-loop/scripts/pr_converge_scripts_constants/reflow_skill_md_constants.py +13 -0
  186. package/_shared/pr-loop/scripts/pr_converge_skill_constants/.claude/CLAUDE.md +1 -0
  187. package/_shared/pr-loop/scripts/pr_converge_skill_constants/AGENTS.md +26 -0
  188. package/_shared/pr-loop/scripts/pr_converge_skill_constants/__init__.py +0 -0
  189. package/_shared/pr-loop/scripts/pr_converge_skill_constants/constants.py +69 -0
  190. package/_shared/pr-loop/scripts/run_codex_review.py +609 -0
  191. package/_shared/pr-loop/scripts/test__pr_converge_path_setup.py +30 -0
  192. package/_shared/pr-loop/scripts/test_check_bugbot_ci.py +312 -0
  193. package/_shared/pr-loop/scripts/test_check_convergence.py +438 -0
  194. package/_shared/pr-loop/scripts/test_check_convergence_availability.py +391 -0
  195. package/_shared/pr-loop/scripts/test_check_convergence_codex.py +517 -0
  196. package/_shared/pr-loop/scripts/test_check_convergence_contract.py +400 -0
  197. package/_shared/pr-loop/scripts/test_check_convergence_fixture.py +179 -0
  198. package/_shared/pr-loop/scripts/test_check_convergence_gates.py +84 -0
  199. package/_shared/pr-loop/scripts/test_check_convergence_thread_gates.py +99 -0
  200. package/_shared/pr-loop/scripts/test_codex_down_classifier.py +143 -0
  201. package/_shared/pr-loop/scripts/test_codex_usage_probe.py +683 -0
  202. package/_shared/pr-loop/scripts/test_parse_codex_findings.py +130 -0
  203. package/_shared/pr-loop/scripts/test_run_codex_review.py +969 -0
  204. package/_shared/pr-loop/scripts/tests/test_claude_permissions_common.py +1 -1
  205. package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +1 -1
  206. package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +1 -1
  207. package/_shared/pr-loop/state-schema.md +20 -28
  208. package/_shared/process-tree/AGENTS.md +3 -3
  209. package/bin/AGENTS.md +17 -12
  210. package/bin/ever-shipped-skills.mjs +34 -3
  211. package/bin/install-constants.mjs +46 -12
  212. package/bin/install-plan.mjs +6 -1
  213. package/bin/install.agents-home.test.mjs +199 -0
  214. package/bin/install.cursor-rules.test.mjs +3 -3
  215. package/bin/install.mjs +153 -23
  216. package/bin/install.plan.test.mjs +1 -0
  217. package/bin/install.profile-root.test.mjs +54 -1
  218. package/bin/install.prune.test.mjs +23 -204
  219. package/bin/install.test.mjs +17 -5
  220. package/bin/publish-directory-pointer.mjs +175 -0
  221. package/bin/publish-directory-pointer.test.mjs +129 -0
  222. package/bin/resolve-install-root.mjs +80 -4
  223. package/bin/resolve-package-managed-directory.mjs +29 -0
  224. package/bin/resolve-package-managed-directory.test.mjs +97 -0
  225. package/commands/AGENTS.md +2 -0
  226. package/commands/sr-loop.md +3 -0
  227. package/docs/references/prose-style-enforcement.md +3 -7
  228. package/hooks/AGENTS.md +0 -3
  229. package/hooks/blocking/AGENTS.md +0 -2
  230. package/hooks/blocking/ask_user_question_shape_blocker.py +83 -0
  231. package/hooks/blocking/hedging_language_blocker.py +1 -0
  232. package/hooks/blocking/orchestrator_refresh_reschedule_gate.py +10 -6
  233. package/hooks/blocking/pre_tool_use_dispatcher.py +2 -19
  234. package/hooks/blocking/state_description_blocker.py +1 -1
  235. package/hooks/blocking/test_ask_user_question_shape.py +69 -0
  236. package/hooks/blocking/test_code_rules_command_dispatch.py +1 -1
  237. package/hooks/blocking/test_code_rules_enforcer_magic_slice_bounds.py +1 -1
  238. package/hooks/blocking/test_code_rules_enforcer_split_annotations_length.py +1 -1
  239. package/hooks/blocking/test_code_rules_js_conventions.py +1 -1
  240. package/hooks/blocking/test_code_rules_js_resume_task_enumeration.py +1 -1
  241. package/hooks/blocking/test_code_rules_js_returns_object_schemaless.py +1 -1
  242. package/hooks/blocking/test_code_rules_js_sibling_return_object_key_drift.py +1 -1
  243. package/hooks/blocking/test_duplicate_rmtree_helper_blocker.py +1 -1
  244. package/hooks/blocking/test_fable_spawn_gate.py +1 -1
  245. package/hooks/blocking/test_orchestrator_refresh_reschedule_gate.py +1 -1
  246. package/hooks/blocking/test_pre_tool_use_dispatcher.py +17 -58
  247. package/hooks/blocking/test_pre_tool_use_dispatcher_native.py +9 -104
  248. package/hooks/blocking/test_state_description_blocker.py +1 -0
  249. package/hooks/blocking/test_stop_dispatcher.py +1 -26
  250. package/hooks/hooks.json +1 -1
  251. package/hooks/hooks_constants/AGENTS.md +0 -3
  252. package/hooks/hooks_constants/ask_user_question_shape.py +1 -1
  253. package/hooks/hooks_constants/ask_user_question_shape_constants.py +73 -0
  254. package/hooks/hooks_constants/bot_mention_comment_blocker_constants.py +1 -2
  255. package/hooks/hooks_constants/code_rules_path_utils_constants.py +0 -1
  256. package/hooks/hooks_constants/orchestrator_refresh_reschedule_gate_constants.py +9 -0
  257. package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +0 -7
  258. package/hooks/hooks_constants/stop_dispatcher_constants.py +0 -1
  259. package/hooks/hooks_constants/test_ask_user_question_shape.py +1 -1
  260. package/hooks/hooks_constants/test_prose_metrics_parity.py +29 -107
  261. package/hooks/hooks_constants/test_stop_dispatcher_constants.py +0 -1
  262. package/hooks/hooks_constants/working_style_prompt_constants.py +9 -10
  263. package/hooks/session/AGENTS.md +4 -1
  264. package/hooks/session/test_working_style_prompt.py +8 -4
  265. package/hooks/session/working_style_prompt.py +4 -2
  266. package/installable-surfaces.manifest.json +2 -3
  267. package/package.json +4 -8
  268. package/rules/AGENTS.md +2 -5
  269. package/rules/asd-ste100-language.md +39 -0
  270. package/rules/ask-user-question-required.md +1 -1
  271. package/rules/long-horizon-autonomy.md +1 -1
  272. package/scripts/AGENTS.md +1 -0
  273. package/scripts/Show-Asset.ps1 +106 -0
  274. package/scripts/active_capability_references.py +38 -8
  275. package/scripts/claude_chain_usage.py +2 -0
  276. package/scripts/codex_compat_watcher.py +1 -1
  277. package/scripts/dev_env_scripts_constants/active_capability_constants.py +5 -2
  278. package/scripts/dev_env_scripts_constants/claude_chain_usage_constants.py +4 -1
  279. package/scripts/test_validate_instruction_pairs.py +30 -3
  280. package/scripts/test_verify_installable_package.py +2 -1
  281. package/scripts/tests/test_codex_compat_watcher.py +5 -5
  282. package/scripts/tests/test_engine.py +4 -4
  283. package/scripts/tests/test_rules.py +5 -5
  284. package/system-prompts/AGENTS.md +8 -0
  285. package/system-prompts/software-engineer.xml +8 -3
  286. package/CLAUDE.md +0 -1
  287. package/_shared/pr-loop/scripts/README.md +0 -21
  288. package/agents/CLAUDE.md +0 -1
  289. package/docs/imagegen.md +0 -22
  290. package/hooks/blocking/eli11_reply_enforcer.py +0 -436
  291. package/hooks/blocking/plain_language_blocker.py +0 -758
  292. package/hooks/blocking/test_eli11_reply_enforcer.py +0 -390
  293. package/hooks/blocking/test_plain_language_blocker.py +0 -683
  294. package/hooks/blocking/test_plain_language_blocker_allowlist.py +0 -228
  295. package/hooks/diagnostic/AGENTS.md +0 -75
  296. package/hooks/diagnostic/CLAUDE.md +0 -1
  297. package/hooks/diagnostic/hook_log_extractor.py +0 -875
  298. package/hooks/diagnostic/hook_log_init.py +0 -202
  299. package/hooks/diagnostic/hook_log_stop_wrapper.py +0 -26
  300. package/hooks/diagnostic/migrations/2026-04-25-drop-themes-hook-events.sql +0 -3
  301. package/hooks/diagnostic/migrations/AGENTS.md +0 -16
  302. package/hooks/diagnostic/migrations/CLAUDE.md +0 -1
  303. package/hooks/diagnostic/migrations/README.md +0 -76
  304. package/hooks/diagnostic/queries/AGENTS.md +0 -19
  305. package/hooks/diagnostic/queries/CLAUDE.md +0 -1
  306. package/hooks/diagnostic/queries/block_details_for_hook.sql +0 -26
  307. package/hooks/diagnostic/queries/blocks_by_category.sql +0 -10
  308. package/hooks/diagnostic/queries/blocks_by_tool.sql +0 -9
  309. package/hooks/diagnostic/queries/blocks_last_7_days.sql +0 -11
  310. package/hooks/diagnostic/queries/top_blockers_last_24_hours.sql +0 -12
  311. package/hooks/diagnostic/queries/top_blockers_overall.sql +0 -12
  312. package/hooks/diagnostic/requirements-hook-logs-dev.txt +0 -2
  313. package/hooks/diagnostic/requirements-hook-logs.txt +0 -1
  314. package/hooks/diagnostic/schema.sql +0 -51
  315. package/hooks/diagnostic/test_hook_log_extractor.py +0 -1518
  316. package/hooks/diagnostic/test_hook_log_init.py +0 -227
  317. package/hooks/diagnostic/test_hook_log_stop_wrapper.py +0 -17
  318. package/hooks/hooks_constants/eli11_reply_enforcer_constants.py +0 -94
  319. package/hooks/hooks_constants/hook_log_extractor_constants.py +0 -233
  320. package/hooks/hooks_constants/plain_language_blocker_constants.py +0 -366
  321. package/hooks/hooks_constants/test_hook_log_extractor_constants.py +0 -123
  322. package/rules/doc-prose-cuts.md +0 -58
  323. package/rules/eli11-replies.md +0 -36
  324. package/rules/opus5-communication-contract.md +0 -45
  325. package/rules/plain-language.md +0 -9
  326. package/skills/AGENTS.md +0 -72
  327. package/skills/CLAUDE.md +0 -1
  328. package/skills/_shared/CLAUDE.md +0 -1
  329. package/skills/_shared/advisor/CLAUDE.md +0 -1
  330. package/skills/_shared/pr-loop/CLAUDE.md +0 -1
  331. package/skills/_shared/pr-loop/prompts/AGENTS.md +0 -9
  332. package/skills/_shared/pr-loop/prompts/CLAUDE.md +0 -1
  333. package/skills/_shared/pr-loop/scripts/CLAUDE.md +0 -1
  334. package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +0 -1
  335. package/skills/anthropic-plan/CLAUDE.md +0 -1
  336. package/skills/anthropic-plan/scripts/CLAUDE.md +0 -1
  337. package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +0 -1
  338. package/skills/anthropic-plan/templates/CLAUDE.md +0 -1
  339. package/skills/anthropic-plan/workflow/CLAUDE.md +0 -1
  340. package/skills/auditing-claude-config/CLAUDE.md +0 -1
  341. package/skills/autoconverge/CLAUDE.md +0 -1
  342. package/skills/autoconverge/reference/CLAUDE.md +0 -1
  343. package/skills/autoconverge/workflow/CLAUDE.md +0 -1
  344. package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +0 -1
  345. package/skills/bugteam/CLAUDE.md +0 -1
  346. package/skills/bugteam/reference/CLAUDE.md +0 -1
  347. package/skills/bugteam/reference/obstacles/CLAUDE.md +0 -1
  348. package/skills/bugteam/scripts/CLAUDE.md +0 -1
  349. package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +0 -1
  350. package/skills/codex-review/CLAUDE.md +0 -1
  351. package/skills/codex-review/reference/CLAUDE.md +0 -1
  352. package/skills/codex-review/scripts/codex_review_scripts_constants/CLAUDE.md +0 -1
  353. package/skills/copilot-review/CLAUDE.md +0 -1
  354. package/skills/everything-search/CLAUDE.md +0 -1
  355. package/skills/fresh-branch/CLAUDE.md +0 -1
  356. package/skills/grok-spawn/CLAUDE.md +0 -1
  357. package/skills/grokify/evals/README.md +0 -72
  358. package/skills/grokify/evals/parse-payload.test.mjs +0 -171
  359. package/skills/grokify/evals/run-capability-evals.mjs +0 -545
  360. package/skills/pr-converge/CLAUDE.md +0 -1
  361. package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +0 -1
  362. package/skills/pr-converge/reference/CLAUDE.md +0 -1
  363. package/skills/pr-converge/reference/obstacles/CLAUDE.md +0 -1
  364. package/skills/pr-converge/scripts/CLAUDE.md +0 -1
  365. package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +0 -1
  366. package/skills/pr-converge/workflows/CLAUDE.md +0 -1
  367. package/skills/rebase/CLAUDE.md +0 -1
  368. package/skills/recall/CLAUDE.md +0 -1
  369. package/skills/remember/CLAUDE.md +0 -1
  370. package/skills/session-log/CLAUDE.md +0 -1
  371. package/skills/session-tidy/CLAUDE.md +0 -1
  372. package/skills/skill-builder/CLAUDE.md +0 -1
  373. package/skills/skill-builder/references/CLAUDE.md +0 -1
  374. package/skills/skill-builder/templates/CLAUDE.md +0 -1
  375. package/skills/skill-builder/workflows/CLAUDE.md +0 -1
  376. package/skills/task-build/CLAUDE.md +0 -1
  377. package/skills/update/CLAUDE.md +0 -1
  378. /package/{agents → .agents/agents}/clean-coder.md +0 -0
  379. /package/{agents → .agents/agents}/code-quality-agent.md +0 -0
  380. /package/{agents → .agents/agents}/git-commit-crafter.md +0 -0
  381. /package/{agents → .agents/agents}/issue-tracker.md +0 -0
  382. /package/{agents → .agents/agents}/plan-packet-validator.md +0 -0
  383. /package/{agents → .agents/agents}/pr-description-writer.md +0 -0
  384. /package/{agents → .agents/agents}/session-advisor.md +0 -0
  385. /package/{agents → .agents/agents}/skill-writer-agent.md +0 -0
  386. /package/{skills → .agents/skills}/_shared/advisor/AGENTS.md +0 -0
  387. /package/{skills → .agents/skills}/_shared/advisor/advisor-protocol.md +0 -0
  388. /package/{skills → .agents/skills}/_shared/advisor/scripts/README.md +0 -0
  389. /package/{skills → .agents/skills}/_shared/end-of-run-gotcha-recommendations.md +0 -0
  390. /package/{skills → .agents/skills}/_shared/pr-loop/audit-contract.md +0 -0
  391. /package/{skills → .agents/skills}/_shared/pr-loop/audit-reply-template.md +0 -0
  392. /package/{skills → .agents/skills}/_shared/pr-loop/code-rules-gate.md +0 -0
  393. /package/{skills → .agents/skills}/_shared/pr-loop/fix-protocol.md +0 -0
  394. /package/{skills → .agents/skills}/_shared/pr-loop/gh-payloads.md +0 -0
  395. /package/{skills → .agents/skills}/_shared/pr-loop/post-audit-thread-contract.md +0 -0
  396. /package/{skills → .agents/skills}/_shared/pr-loop/precatch-rubric.md +0 -0
  397. /package/{skills → .agents/skills}/_shared/pr-loop/prompts/pr-consistency-audit.xml +0 -0
  398. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/RUNTIME_SCRIPTS.md +0 -0
  399. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_cli_utils.py +0 -0
  400. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_path_resolver.py +0 -0
  401. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_xml_utils.py +0 -0
  402. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/audit_category_schema.py +0 -0
  403. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_audit_prompt.py +0 -0
  404. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_converge_task_list.py +0 -0
  405. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_fix_prompt.py +0 -0
  406. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/init_loop_state.py +0 -0
  407. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/preflight_worktree.py +0 -0
  408. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/select_converge_pacer.py +0 -0
  409. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +0 -0
  410. /package/{skills/pr-converge/pr_converge_skill_constants → .agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants}/__init__.py +0 -0
  411. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +0 -0
  412. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/handoff_constants.py +0 -0
  413. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +0 -0
  414. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/path_resolver_constants.py +0 -0
  415. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/preflight_constants.py +0 -0
  416. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/teardown_worktrees.py +0 -0
  417. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test__path_resolver.py +0 -0
  418. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_audit_category_schema.py +0 -0
  419. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_converge_task_list.py +0 -0
  420. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_fix_prompt.py +0 -0
  421. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_init_loop_state.py +0 -0
  422. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_portable_converge_driver.py +0 -0
  423. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_preflight_worktree.py +0 -0
  424. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_select_converge_pacer.py +0 -0
  425. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_teardown_worktrees.py +0 -0
  426. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_write_handoff.py +0 -0
  427. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_handoff.py +0 -0
  428. /package/{skills → .agents/skills}/_shared/pr-loop/state-schema.md +0 -0
  429. /package/{skills → .agents/skills}/_shared/pr-loop/worker-spawn.md +0 -0
  430. /package/{skills → .agents/skills}/autoconverge/AGENTS.md +0 -0
  431. /package/{skills → .agents/skills}/autoconverge/SKILL.md +0 -0
  432. /package/{skills → .agents/skills}/autoconverge/reference/AGENTS.md +0 -0
  433. /package/{skills → .agents/skills}/autoconverge/reference/closing-report.md +0 -0
  434. /package/{skills → .agents/skills}/autoconverge/reference/copilot-findings.md +0 -0
  435. /package/{skills → .agents/skills}/autoconverge/reference/headless-safety.md +0 -0
  436. /package/{skills → .agents/skills}/autoconverge/reference/multi-pr.md +0 -0
  437. /package/{skills → .agents/skills}/autoconverge/reference/self-closing-loop.md +0 -0
  438. /package/{skills → .agents/skills}/autoconverge/test_portable_pacer_gate.py +0 -0
  439. /package/{skills → .agents/skills}/autoconverge/workflow/AGENTS.md +0 -0
  440. /package/{skills → .agents/skills}/autoconverge/workflow/aggregate_runs.py +0 -0
  441. /package/{skills → .agents/skills}/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +0 -0
  442. /package/{skills/pr-converge/scripts/pr_converge_scripts_constants → .agents/skills/autoconverge/workflow/autoconverge_report_constants}/__init__.py +0 -0
  443. /package/{skills → .agents/skills}/autoconverge/workflow/autoconverge_report_constants/render_report_constants.py +0 -0
  444. /package/{skills → .agents/skills}/autoconverge/workflow/converge.clean-audit.test.mjs +0 -0
  445. /package/{skills → .agents/skills}/autoconverge/workflow/converge.copilot-gate.test.mjs +0 -0
  446. /package/{skills → .agents/skills}/autoconverge/workflow/converge.fix-progress.test.mjs +0 -0
  447. /package/{skills → .agents/skills}/autoconverge/workflow/converge.fix-recovery.test.mjs +0 -0
  448. /package/{skills → .agents/skills}/autoconverge/workflow/converge.merge-conflict.test.mjs +0 -0
  449. /package/{skills → .agents/skills}/autoconverge/workflow/converge.p2-advance.test.mjs +0 -0
  450. /package/{skills → .agents/skills}/autoconverge/workflow/converge.path-aware.test.mjs +0 -0
  451. /package/{skills → .agents/skills}/autoconverge/workflow/converge.precatch.test.mjs +0 -0
  452. /package/{skills → .agents/skills}/autoconverge/workflow/converge.run-input.test.mjs +0 -0
  453. /package/{skills → .agents/skills}/autoconverge/workflow/converge_multi.mjs +0 -0
  454. /package/{skills → .agents/skills}/autoconverge/workflow/converge_multi.run-input.test.mjs +0 -0
  455. /package/{skills → .agents/skills}/autoconverge/workflow/convergence_summary.py +0 -0
  456. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +0 -0
  457. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +0 -0
  458. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +0 -0
  459. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +0 -0
  460. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +0 -0
  461. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +0 -0
  462. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ab1c2d3e4f5a6b7c8.jsonl +0 -0
  463. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +0 -0
  464. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +0 -0
  465. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +0 -0
  466. /package/{skills → .agents/skills}/autoconverge/workflow/render_report.py +0 -0
  467. /package/{skills → .agents/skills}/autoconverge/workflow/test_aggregate_runs.py +0 -0
  468. /package/{skills → .agents/skills}/autoconverge/workflow/test_convergence_summary.py +0 -0
  469. /package/{skills → .agents/skills}/autoconverge/workflow/test_render_report.py +0 -0
  470. /package/{skills → .agents/skills}/e-code-review/SKILL.md +0 -0
  471. /package/{skills → .agents/skills}/e-code-review/reference/fix.md +0 -0
  472. /package/{skills → .agents/skills}/e-code-review/reference/loop.md +0 -0
  473. /package/{skills → .agents/skills}/e-code-review/reference/low.md +0 -0
  474. /package/{skills → .agents/skills}/e-code-review/reference/medium.md +0 -0
  475. /package/{skills → .agents/skills}/e-code-review/reference/runner-selection.md +0 -0
  476. /package/{skills → .agents/skills}/e-code-review/reference/xhigh.md +0 -0
  477. /package/{skills → .agents/skills}/e-code-review/scripts/config/e_code_review_effort_constants/__init__.py +0 -0
  478. /package/{skills → .agents/skills}/e-code-review/scripts/config/e_code_review_effort_constants/effort_constants.py +0 -0
  479. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/__init__.py +0 -0
  480. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/finding_pipeline_constants.py +0 -0
  481. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/grok_code_review_constants.py +0 -0
  482. /package/{skills → .agents/skills}/e-code-review/scripts/effort_defaults_evidence.json +0 -0
  483. /package/{skills → .agents/skills}/e-code-review/scripts/effort_evaluation.py +0 -0
  484. /package/{skills → .agents/skills}/e-code-review/scripts/finding_pipeline.py +0 -0
  485. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/demanding.json +0 -0
  486. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/easy.json +0 -0
  487. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/medium.json +0 -0
  488. /package/{skills → .agents/skills}/e-code-review/scripts/grok_code_review.py +0 -0
  489. /package/{skills → .agents/skills}/e-code-review/scripts/test_effort_evaluation.py +0 -0
  490. /package/{skills → .agents/skills}/e-code-review/scripts/test_finding_pipeline.py +0 -0
  491. /package/{skills → .agents/skills}/e-code-review/scripts/test_grok_code_review.py +0 -0
  492. /package/{skills → .agents/skills}/e-simplify/SKILL.md +0 -0
  493. /package/{skills → .agents/skills}/everything-search/AGENTS.md +0 -0
  494. /package/{skills → .agents/skills}/everything-search/SKILL.md +0 -0
  495. /package/{skills → .agents/skills}/fresh-branch/AGENTS.md +0 -0
  496. /package/{skills → .agents/skills}/fresh-branch/SKILL.md +0 -0
  497. /package/{skills → .agents/skills}/fresh-branch/scripts/create_fresh_branch.py +0 -0
  498. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_git_commands.py +0 -0
  499. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_scripts_constants/__init__.py +0 -0
  500. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_scripts_constants/fresh_branch_cli_constants.py +0 -0
  501. /package/{skills → .agents/skills}/fresh-branch/scripts/pytest.ini +0 -0
  502. /package/{skills → .agents/skills}/fresh-branch/scripts/test_fresh_branch_git_commands.py +0 -0
  503. /package/{skills → .agents/skills}/grok-spawn/AGENTS.md +0 -0
  504. /package/{skills → .agents/skills}/grok-spawn/SKILL.md +0 -0
  505. /package/{skills → .agents/skills}/grok-spawn/reference/flag-profiles.md +0 -0
  506. /package/{skills → .agents/skills}/grok-spawn/reference/worker-briefs.md +0 -0
  507. /package/{skills → .agents/skills}/issue-tracker/SKILL.md +0 -0
  508. /package/{skills → .agents/skills}/issue-tracker/reference/epic-and-sub-issue-model.md +0 -0
  509. /package/{skills → .agents/skills}/issue-tracker/reference/handoff-schema.md +0 -0
  510. /package/{skills → .agents/skills}/issue-tracker/reference/operation-matrix.md +0 -0
  511. /package/{skills → .agents/skills}/orchestrator/SKILL.md +0 -0
  512. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate.py +0 -0
  513. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/__init__.py +0 -0
  514. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/config/__init__.py +0 -0
  515. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/config/constants.py +0 -0
  516. /package/{skills → .agents/skills}/orchestrator/scripts/test_status_gate.py +0 -0
  517. /package/{skills → .agents/skills}/orchestrator-refresh/SKILL.md +0 -0
  518. /package/{skills → .agents/skills}/privacy-hygiene/SKILL.md +0 -0
  519. /package/{skills → .agents/skills}/privacy-hygiene/reference/sweep-procedure.md +0 -0
  520. /package/{skills → .agents/skills}/prototype/SKILL.md +0 -0
  521. /package/{skills → .agents/skills}/prototype/scripts/build_sandbox_settings.py +0 -0
  522. /package/{skills → .agents/skills}/prototype/scripts/conftest.py +0 -0
  523. /package/{skills → .agents/skills}/prototype/scripts/launch_sandbox.py +0 -0
  524. /package/{skills → .agents/skills}/prototype/scripts/probe_sandbox_safety.py +0 -0
  525. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/__init__.py +0 -0
  526. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
  527. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +0 -0
  528. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +0 -0
  529. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +0 -0
  530. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +0 -0
  531. /package/{skills → .agents/skills}/prototype/scripts/test_launch_sandbox.py +0 -0
  532. /package/{skills → .agents/skills}/prototype/workflows/sandbox.md +0 -0
  533. /package/{skills → .agents/skills}/rebase/AGENTS.md +0 -0
  534. /package/{skills → .agents/skills}/rebase/SKILL.md +0 -0
  535. /package/{skills → .agents/skills}/session-log/AGENTS.md +0 -0
  536. /package/{skills → .agents/skills}/session-log/templates/frontmatter.md +0 -0
  537. /package/{skills → .agents/skills}/session-tidy/AGENTS.md +0 -0
  538. /package/{skills → .agents/skills}/session-tidy/SKILL.md +0 -0
  539. /package/{skills → .agents/skills}/skill-builder/AGENTS.md +0 -0
  540. /package/{skills → .agents/skills}/skill-builder/SKILL.md +0 -0
  541. /package/{skills → .agents/skills}/skill-builder/references/AGENTS.md +0 -0
  542. /package/{skills → .agents/skills}/skill-builder/references/delegation-map.md +0 -0
  543. /package/{skills → .agents/skills}/skill-builder/references/description-field.md +0 -0
  544. /package/{skills → .agents/skills}/skill-builder/references/progressive-disclosure.md +0 -0
  545. /package/{skills → .agents/skills}/skill-builder/references/self-audit-checklist.md +0 -0
  546. /package/{skills → .agents/skills}/skill-builder/references/skill-modularity.md +0 -0
  547. /package/{skills → .agents/skills}/skill-builder/references/skill-types.md +0 -0
  548. /package/{skills → .agents/skills}/skill-builder/references/thariq-x-post-skills.json +0 -0
  549. /package/{skills → .agents/skills}/skill-builder/templates/AGENTS.md +0 -0
  550. /package/{skills → .agents/skills}/skill-builder/templates/gap-analysis.md +0 -0
  551. /package/{skills → .agents/skills}/skill-builder/workflows/AGENTS.md +0 -0
  552. /package/{skills → .agents/skills}/skill-builder/workflows/improve-skill.md +0 -0
  553. /package/{skills → .agents/skills}/skill-builder/workflows/new-skill.md +0 -0
  554. /package/{skills → .agents/skills}/skill-builder/workflows/polish-skill.md +0 -0
  555. /package/{skills → .agents/skills}/small-cl/SKILL.md +0 -0
  556. /package/{skills → .agents/skills}/task-build/AGENTS.md +0 -0
  557. /package/{skills → .agents/skills}/task-build/SKILL.md +0 -0
  558. /package/{skills → .agents/skills}/task-build/reference/tool-routing.md +0 -0
  559. /package/{skills → .agents/skills}/team-advisor/SKILL.md +0 -0
  560. /package/{skills → .agents/skills}/team-advisor/reference/advisor-docs-review.md +0 -0
  561. /package/{skills → .agents/skills}/update/AGENTS.md +0 -0
  562. /package/{skills → .agents/skills}/update/SKILL.md +0 -0
  563. /package/{skills → .agents/skills}/usage-pause/SKILL.md +0 -0
  564. /package/{skills → .agents/skills}/usage-pause/scripts/resolve_usage_window.py +0 -0
  565. /package/{skills → .agents/skills}/usage-pause/scripts/test_resolve_usage_window.py +0 -0
  566. /package/{skills → .agents/skills}/usage-pause/scripts/usage_pause_constants/__init__.py +0 -0
  567. /package/{skills → .agents/skills}/usage-pause/scripts/usage_pause_constants/resolve_usage_window_constants.py +0 -0
  568. /package/{skills → .agents/skills-archived}/anthropic-plan/SKILL.md +0 -0
  569. /package/{skills → .agents/skills-archived}/anthropic-plan/scripts/AGENTS.md +0 -0
  570. /package/{skills → .agents/skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +0 -0
  571. /package/{skills/_shared/pr-loop/scripts/skills_pr_loop_constants → .agents/skills-archived/anthropic-plan/scripts/anthropic_plan_scripts_constants}/__init__.py +0 -0
  572. /package/{skills → .agents/skills-archived}/anthropic-plan/scripts/anthropic_plan_scripts_constants/validate_packet_constants.py +0 -0
  573. /package/{skills → .agents/skills-archived}/anthropic-plan/scripts/test_validate_packet.py +0 -0
  574. /package/{skills → .agents/skills-archived}/anthropic-plan/scripts/validate_packet.py +0 -0
  575. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/AGENTS.md +0 -0
  576. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/README.md +0 -0
  577. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/build-prompt.md +0 -0
  578. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/reuse-audit.md +0 -0
  579. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/source-map.md +0 -0
  580. /package/{skills → .agents/skills-archived}/anthropic-plan/templates/visual-plan.template.html +0 -0
  581. /package/{skills → .agents/skills-archived}/anthropic-plan/workflow/AGENTS.md +0 -0
  582. /package/{skills → .agents/skills-archived}/anthropic-plan/workflow/plan-packet.contract.test.mjs +0 -0
  583. /package/{skills → .agents/skills-archived}/anthropic-plan/workflow/plan-packet.mjs +0 -0
  584. /package/{skills → .agents/skills-archived}/auditing-claude-config/AGENTS.md +0 -0
  585. /package/{skills → .agents/skills-archived}/auditing-claude-config/SKILL.md +0 -0
  586. /package/{skills → .agents/skills-archived}/auditing-claude-config/reference/probe-hook.md +0 -0
  587. /package/{skills → .agents/skills-archived}/beat-sheet/SKILL.md +0 -0
  588. /package/{skills → .agents/skills-archived}/beat-sheet/reference/visual-beats.md +0 -0
  589. /package/{skills → .agents/skills-archived}/bugteam/AGENTS.md +0 -0
  590. /package/{skills → .agents/skills-archived}/bugteam/CONSTRAINTS.md +0 -0
  591. /package/{skills → .agents/skills-archived}/bugteam/EXAMPLES.md +0 -0
  592. /package/{skills → .agents/skills-archived}/bugteam/PROMPTS.md +0 -0
  593. /package/{skills → .agents/skills-archived}/bugteam/SKILL.md +0 -0
  594. /package/{skills → .agents/skills-archived}/bugteam/reference/AGENTS.md +0 -0
  595. /package/{skills → .agents/skills-archived}/bugteam/reference/README.md +0 -0
  596. /package/{skills → .agents/skills-archived}/bugteam/reference/audit-and-teammates.md +0 -0
  597. /package/{skills → .agents/skills-archived}/bugteam/reference/copilot-gap-analysis.md +0 -0
  598. /package/{skills → .agents/skills-archived}/bugteam/reference/design-rationale.md +0 -0
  599. /package/{skills → .agents/skills-archived}/bugteam/reference/github-pr-reviews.md +0 -0
  600. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/AGENTS.md +0 -0
  601. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/audit-assign-ids.md +0 -0
  602. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/audit-capture-excerpts.md +0 -0
  603. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/audit-walk-categories.md +0 -0
  604. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/audit-write-xml.md +0 -0
  605. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-append-summary.md +0 -0
  606. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-apply-fixes.md +0 -0
  607. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-git-add-commit.md +0 -0
  608. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-git-push.md +0 -0
  609. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-post-reply.md +0 -0
  610. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-publish-summary.md +0 -0
  611. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-py-compile.md +0 -0
  612. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-read-files.md +0 -0
  613. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-resolve-thread.md +0 -0
  614. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-test-suite.md +0 -0
  615. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-violation-count.md +0 -0
  616. /package/{skills → .agents/skills-archived}/bugteam/reference/obstacles/fix-write-xml.md +0 -0
  617. /package/{skills → .agents/skills-archived}/bugteam/reference/team-setup.md +0 -0
  618. /package/{skills → .agents/skills-archived}/bugteam/scripts/AGENTS.md +0 -0
  619. /package/{skills → .agents/skills-archived}/bugteam/scripts/README.md +0 -0
  620. /package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +0 -0
  621. /package/{skills/anthropic-plan/scripts/anthropic_plan_scripts_constants → .agents/skills-archived/bugteam/scripts/bugteam_scripts_constants}/__init__.py +0 -0
  622. /package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_scripts_constants/probe_code_rules_enforcer_check_constants.py +0 -0
  623. /package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_scripts_constants/reflow_skill_md_constants.py +0 -0
  624. /package/{skills → .agents/skills-archived}/bugteam/scripts/bugteam_scripts_constants/windows_safe_rmtree_constants.py +0 -0
  625. /package/{skills → .agents/skills-archived}/bugteam/scripts/probe_code_rules_enforcer_check.py +0 -0
  626. /package/{skills → .agents/skills-archived}/bugteam/scripts/test_bugteam_code_rules_gate.py +0 -0
  627. /package/{skills → .agents/skills-archived}/bugteam/scripts/test_bugteam_fix_hookspath.py +0 -0
  628. /package/{skills → .agents/skills-archived}/bugteam/scripts/test_bugteam_preflight.py +0 -0
  629. /package/{skills → .agents/skills-archived}/bugteam/scripts/test_probe_code_rules_enforcer_check.py +0 -0
  630. /package/{skills → .agents/skills-archived}/bugteam/scripts/test_windows_safe_rmtree.py +0 -0
  631. /package/{skills → .agents/skills-archived}/bugteam/scripts/windows_safe_rmtree.py +0 -0
  632. /package/{skills → .agents/skills-archived}/bugteam/sources.md +0 -0
  633. /package/{skills → .agents/skills-archived}/bugteam/test_skill_additions.py +0 -0
  634. /package/{skills → .agents/skills-archived}/closeout/SKILL.md +0 -0
  635. /package/{skills → .agents/skills-archived}/closeout/reference/handoff-prompt-template.md +0 -0
  636. /package/{skills → .agents/skills-archived}/closeout/reference/pii-redaction-checklist.md +0 -0
  637. /package/{skills → .agents/skills-archived}/codex-review/AGENTS.md +0 -0
  638. /package/{skills → .agents/skills-archived}/codex-review/SKILL.md +0 -0
  639. /package/{skills → .agents/skills-archived}/codex-review/reference/AGENTS.md +0 -0
  640. /package/{skills → .agents/skills-archived}/codex-review/reference/cli-contract.md +0 -0
  641. /package/{skills → .agents/skills-archived}/codex-review/reference/loop-integration.md +0 -0
  642. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_down_classifier.py +0 -0
  643. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +0 -0
  644. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/__init__.py +0 -0
  645. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/classifier_constants.py +0 -0
  646. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/codex_usage_probe_constants.py +0 -0
  647. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/findings_constants.py +0 -0
  648. /package/{skills → .agents/skills-archived}/codex-review/scripts/codex_review_scripts_constants/run_constants.py +0 -0
  649. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/auth_failure_synthetic.txt +0 -0
  650. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/config_load_failure_v0.125.0.txt +0 -0
  651. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/freeform_findings_v0.144.3.txt +0 -0
  652. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/model_rejection_v0.125.0.jsonl +0 -0
  653. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/structured_findings.txt +0 -0
  654. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/success_stream_v0.144.3.jsonl +0 -0
  655. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/unknown_failure_synthetic.txt +0 -0
  656. /package/{skills → .agents/skills-archived}/codex-review/scripts/fixtures/usage_limit_synthetic.txt +0 -0
  657. /package/{skills → .agents/skills-archived}/codex-review/scripts/parse_codex_findings.py +0 -0
  658. /package/{skills → .agents/skills-archived}/codex-review/scripts/test_codex_down_classifier.py +0 -0
  659. /package/{skills → .agents/skills-archived}/codex-review/scripts/test_codex_usage_probe.py +0 -0
  660. /package/{skills → .agents/skills-archived}/codex-review/scripts/test_parse_codex_findings.py +0 -0
  661. /package/{skills → .agents/skills-archived}/codex-review/scripts/test_run_codex_review.py +0 -0
  662. /package/{skills → .agents/skills-archived}/comments/SKILL.md +0 -0
  663. /package/{skills → .agents/skills-archived}/condensing-instructions/SKILL.md +0 -0
  664. /package/{skills → .agents/skills-archived}/copilot-finding-triage/reference/tier-rubric.md +0 -0
  665. /package/{skills → .agents/skills-archived}/copilot-finding-triage/scripts/conftest.py +0 -0
  666. /package/{skills/autoconverge/workflow/autoconverge_report_constants → .agents/skills-archived/copilot-finding-triage/scripts/copilot_finding_triage_constants}/__init__.py +0 -0
  667. /package/{skills/bugteam/scripts/bugteam_scripts_constants → .agents/skills-archived/copilot-finding-triage/scripts/copilot_finding_triage_constants/config}/__init__.py +0 -0
  668. /package/{skills → .agents/skills-archived}/copilot-finding-triage/scripts/copilot_finding_triage_constants/config/notify_ntfy_constants.py +0 -0
  669. /package/{skills → .agents/skills-archived}/copilot-finding-triage/scripts/notify_ntfy.py +0 -0
  670. /package/{skills → .agents/skills-archived}/copilot-finding-triage/scripts/test_notify_ntfy.py +0 -0
  671. /package/{skills → .agents/skills-archived}/copilot-finding-triage/templates/notification.md +0 -0
  672. /package/{skills → .agents/skills-archived}/copilot-review/AGENTS.md +0 -0
  673. /package/{skills → .agents/skills-archived}/copilot-review/SKILL.md +0 -0
  674. /package/{skills → .agents/skills-archived}/copilot-review/templates/subagent-prompt.md +0 -0
  675. /package/{skills → .agents/skills-archived}/descriptions/SKILL.md +0 -0
  676. /package/{skills → .agents/skills-archived}/emergencies/SKILL.md +0 -0
  677. /package/{skills → .agents/skills-archived}/grokify/SKILL.md +0 -0
  678. /package/{skills → .agents/skills-archived}/grokify/capability-claims.test.mjs +0 -0
  679. /package/{skills → .agents/skills-archived}/grokify/templates/handoff-template.md +0 -0
  680. /package/{skills → .agents/skills-archived}/plan-to-pr/SKILL.md +0 -0
  681. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/final-validation-tasks.md +0 -0
  682. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/model-routing.md +0 -0
  683. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/packet-contract.md +0 -0
  684. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/packet-schema.json +0 -0
  685. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/process-inventory.md +0 -0
  686. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/review-loop.md +0 -0
  687. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/run-record.schema.json +0 -0
  688. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/self-audit-tasks.md +0 -0
  689. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/task-seeds.md +0 -0
  690. /package/{skills → .agents/skills-archived}/plan-to-pr/reference/task-ticket.md +0 -0
  691. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/config/__init__.py +0 -0
  692. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/config/constants.py +0 -0
  693. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/create_packet.py +0 -0
  694. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/load_skill_constants.py +0 -0
  695. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/test_create_packet.py +0 -0
  696. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/test_validate_packet.py +0 -0
  697. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/test_validate_protocol.py +0 -0
  698. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/test_validate_run.py +0 -0
  699. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/validate_packet.py +0 -0
  700. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/validate_protocol.py +0 -0
  701. /package/{skills → .agents/skills-archived}/plan-to-pr/scripts/validate_run.py +0 -0
  702. /package/{skills → .agents/skills-archived}/plan-to-pr/test_skill_contract.py +0 -0
  703. /package/{skills → .agents/skills-archived}/plan-to-pr/test_task_ticket_contract.py +0 -0
  704. /package/{skills → .agents/skills-archived}/pr-converge/AGENTS.md +0 -0
  705. /package/{skills/copilot-finding-triage/scripts/copilot_finding_triage_constants → .agents/skills-archived/pr-converge/pr_converge_skill_constants}/__init__.py +0 -0
  706. /package/{skills → .agents/skills-archived}/pr-converge/reference/AGENTS.md +0 -0
  707. /package/{skills → .agents/skills-archived}/pr-converge/reference/convergence-gates.md +0 -0
  708. /package/{skills → .agents/skills-archived}/pr-converge/reference/examples.md +0 -0
  709. /package/{skills → .agents/skills-archived}/pr-converge/reference/fix-protocol.md +0 -0
  710. /package/{skills → .agents/skills-archived}/pr-converge/reference/ground-rules.md +0 -0
  711. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/AGENTS.md +0 -0
  712. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-post-replies.md +0 -0
  713. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-publish-summary.md +0 -0
  714. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-push.md +0 -0
  715. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-read-filelines.md +0 -0
  716. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-reset-state.md +0 -0
  717. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-resolve-threads.md +0 -0
  718. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-spawn-clean-coder.md +0 -0
  719. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-stage-commit.md +0 -0
  720. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-trigger-bugbot.md +0 -0
  721. /package/{skills → .agents/skills-archived}/pr-converge/reference/obstacles/fix-write-test.md +0 -0
  722. /package/{skills → .agents/skills-archived}/pr-converge/reference/progress-checklist.md +0 -0
  723. /package/{skills → .agents/skills-archived}/pr-converge/reference/state-schema.md +0 -0
  724. /package/{skills → .agents/skills-archived}/pr-converge/reference/stop-conditions.md +0 -0
  725. /package/{skills → .agents/skills-archived}/pr-converge/scripts/AGENTS.md +0 -0
  726. /package/{skills → .agents/skills-archived}/pr-converge/scripts/README.md +0 -0
  727. /package/{skills → .agents/skills-archived}/pr-converge/scripts/caller-window-pid.ps1 +0 -0
  728. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_bugbot_ci.py +0 -0
  729. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_convergence.py +0 -0
  730. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_convergence_availability.py +0 -0
  731. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_convergence_gates.py +0 -0
  732. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_convergence_thread_gates.py +0 -0
  733. /package/{skills → .agents/skills-archived}/pr-converge/scripts/check_pending_reviews.py +0 -0
  734. /package/{skills → .agents/skills-archived}/pr-converge/scripts/conftest.py +0 -0
  735. /package/{skills → .agents/skills-archived}/pr-converge/scripts/cursor-agents-continue-caller.cmd +0 -0
  736. /package/{skills → .agents/skills-archived}/pr-converge/scripts/cursor-agents-continue-stop-others.ps1 +0 -0
  737. /package/{skills → .agents/skills-archived}/pr-converge/scripts/cursor-agents-continue.ahk +0 -0
  738. /package/{skills → .agents/skills-archived}/pr-converge/scripts/cursor-agents-continue.cmd +0 -0
  739. /package/{skills → .agents/skills-archived}/pr-converge/scripts/fetch_copilot_reviews.py +0 -0
  740. /package/{skills → .agents/skills-archived}/pr-converge/scripts/post_fix_reply.py +0 -0
  741. /package/{skills → .agents/skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +0 -0
  742. /package/{skills/copilot-finding-triage/scripts/copilot_finding_triage_constants/config → .agents/skills-archived/pr-converge/scripts/pr_converge_scripts_constants}/__init__.py +0 -0
  743. /package/{skills → .agents/skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +0 -0
  744. /package/{skills → .agents/skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/pr_converge_constants.py +0 -0
  745. /package/{skills → .agents/skills-archived}/pr-converge/scripts/pr_converge_scripts_constants/reflow_skill_md_constants.py +0 -0
  746. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_bugbot_ci.py +0 -0
  747. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence.py +0 -0
  748. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_availability.py +0 -0
  749. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_codex.py +0 -0
  750. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_contract.py +0 -0
  751. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_fixture.py +0 -0
  752. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_gates.py +0 -0
  753. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_check_convergence_thread_gates.py +0 -0
  754. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_cursor_agents_continue.py +0 -0
  755. /package/{skills → .agents/skills-archived}/pr-converge/scripts/test_reflow_skill_md.py +0 -0
  756. /package/{skills → .agents/skills-archived}/pr-converge/test_step5_host_branch.py +0 -0
  757. /package/{skills → .agents/skills-archived}/pr-converge/workflows/AGENTS.md +0 -0
  758. /package/{skills → .agents/skills-archived}/pr-fix-protocol/SKILL.md +0 -0
  759. /package/{skills → .agents/skills-archived}/pr-loop-cloud-transport/SKILL.md +0 -0
  760. /package/{skills → .agents/skills-archived}/pr-loop-cloud-transport/reference/identity-and-hooks.md +0 -0
  761. /package/{skills → .agents/skills-archived}/pr-loop-cloud-transport/reference/substitution-matrix.md +0 -0
  762. /package/{skills → .agents/skills-archived}/pr-loop-lifecycle/SKILL.md +0 -0
  763. /package/{skills → .agents/skills-archived}/pr-loop-lifecycle/reference/teardown-publish-permissions.md +0 -0
  764. /package/{skills → .agents/skills-archived}/recall/AGENTS.md +0 -0
  765. /package/{skills → .agents/skills-archived}/recall/SKILL.md +0 -0
  766. /package/{skills → .agents/skills-archived}/release-notes-html/SKILL.md +0 -0
  767. /package/{skills → .agents/skills-archived}/remember/AGENTS.md +0 -0
  768. /package/{skills → .agents/skills-archived}/remember/SKILL.md +0 -0
  769. /package/{skills → .agents/skills-archived}/reviewer-gates/SKILL.md +0 -0
  770. /package/{skills → .agents/skills-archived}/reviews/SKILL.md +0 -0
  771. /package/{skills → .agents/skills-archived}/show/SKILL.md +0 -0
  772. /package/{skills → .agents/skills-archived}/show/references/accessibility.md +0 -0
  773. /package/{skills → .agents/skills-archived}/show/references/art.md +0 -0
  774. /package/{skills → .agents/skills-archived}/show/references/charts.md +0 -0
  775. /package/{skills → .agents/skills-archived}/show/references/core-design.md +0 -0
  776. /package/{skills → .agents/skills-archived}/show/references/erds.md +0 -0
  777. /package/{skills → .agents/skills-archived}/show/references/flowcharts.md +0 -0
  778. /package/{skills → .agents/skills-archived}/show/references/host-and-html.md +0 -0
  779. /package/{skills → .agents/skills-archived}/show/references/illustrative-diagrams.md +0 -0
  780. /package/{skills → .agents/skills-archived}/show/references/interaction.md +0 -0
  781. /package/{skills → .agents/skills-archived}/show/references/mockups.md +0 -0
  782. /package/{skills → .agents/skills-archived}/show/references/quality-gates.md +0 -0
  783. /package/{skills → .agents/skills-archived}/show/references/structural-diagrams.md +0 -0
  784. /package/{skills → .agents/skills-archived}/show/references/subject-inventory.md +0 -0
  785. /package/{skills → .agents/skills-archived}/show/references/svg-contract.md +0 -0
  786. /package/{skills → .agents/skills-archived}/show/routing.yaml +0 -0
  787. /package/{skills → .agents/skills-archived}/show/samples/pr1262-v2.svg +0 -0
  788. /package/{skills → .agents/skills-archived}/show/scripts/README.md +0 -0
  789. /package/{skills → .agents/skills-archived}/show/scripts/validate-artifact.py +0 -0
  790. /package/{skills → .agents/skills-archived}/show/scripts/validate-package.py +0 -0
  791. /package/{skills → .agents/skills-archived}/show/templates/html-widget.html +0 -0
  792. /package/{skills → .agents/skills-archived}/show/templates/svg-base.svg +0 -0
  793. /package/{skills → .agents/skills-archived}/show/tests/fixtures/css-var.svg +0 -0
  794. /package/{skills → .agents/skills-archived}/show/tests/fixtures/dead-ref.svg +0 -0
  795. /package/{skills → .agents/skills-archived}/show/tests/fixtures/filled-glyph.svg +0 -0
  796. /package/{skills → .agents/skills-archived}/show/tests/fixtures/inherited-fill.svg +0 -0
  797. /package/{skills → .agents/skills-archived}/show/tests/fixtures/invalid.svg +0 -0
  798. /package/{skills → .agents/skills-archived}/show/tests/fixtures/large-canvas.svg +0 -0
  799. /package/{skills → .agents/skills-archived}/show/tests/fixtures/unfilled-connector.svg +0 -0
  800. /package/{skills → .agents/skills-archived}/show/tests/fixtures/valid.html +0 -0
  801. /package/{skills → .agents/skills-archived}/show/tests/test_validate-artifact.py +0 -0
  802. /package/{skills → .agents/skills-archived}/show/tests/test_validators.py +0 -0
  803. /package/{skills → .agents/skills-archived}/show/workflows/create-visual.md +0 -0
  804. /package/{skills → .agents/skills-archived}/show/workflows/review-visual.md +0 -0
  805. /package/{skills → .agents/skills-archived}/split-pr/SKILL.md +0 -0
  806. /package/{skills → .agents/skills-archived}/split-pr/reference/path-layers.md +0 -0
  807. /package/{skills → .agents/skills-archived}/split-pr/reference/split-further-loop.md +0 -0
  808. /package/{skills → .agents/skills-archived}/split-pr/reference/splitting-principles.md +0 -0
  809. /package/{skills → .agents/skills-archived}/split-pr/scripts/analyze_pr.py +0 -0
  810. /package/{skills → .agents/skills-archived}/split-pr/scripts/categorize_files.py +0 -0
  811. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/__init__.py +0 -0
  812. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/dependency_constants.py +0 -0
  813. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/git_operations_constants.py +0 -0
  814. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/packing_constants.py +0 -0
  815. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/plan_constants.py +0 -0
  816. /package/{skills → .agents/skills-archived}/split-pr/scripts/config/split_pr_constants.py +0 -0
  817. /package/{skills → .agents/skills-archived}/split-pr/scripts/execute_split_slices.py +0 -0
  818. /package/{skills → .agents/skills-archived}/split-pr/scripts/pack_files_into_slices.py +0 -0
  819. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_dependency_graph.py +0 -0
  820. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_git_operations.py +0 -0
  821. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_layer_order.py +0 -0
  822. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_paginate.py +0 -0
  823. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_process_runner.py +0 -0
  824. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_script_types.py +0 -0
  825. /package/{skills → .agents/skills-archived}/split-pr/scripts/split_pr_title.py +0 -0
  826. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_analyze_pr.py +0 -0
  827. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_categorize_files.py +0 -0
  828. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_categorize_files_packing.py +0 -0
  829. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_execute_split_slices.py +0 -0
  830. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_dependency_graph.py +0 -0
  831. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_git_operations.py +0 -0
  832. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_layer_order.py +0 -0
  833. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_paginate.py +0 -0
  834. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_script_types.py +0 -0
  835. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_split_pr_title.py +0 -0
  836. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_verify_dependency_graph.py +0 -0
  837. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_verify_plan.py +0 -0
  838. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_verify_plan_contract.py +0 -0
  839. /package/{skills → .agents/skills-archived}/split-pr/scripts/test_verify_plan_path_normalization.py +0 -0
  840. /package/{skills → .agents/skills-archived}/split-pr/scripts/verify_dependency_graph.py +0 -0
  841. /package/{skills → .agents/skills-archived}/split-pr/scripts/verify_plan.py +0 -0
@@ -1,4 +1,4 @@
1
- import { test, after } from 'node:test';
1
+ import { test } from 'node:test';
2
2
  import { strict as assert } from 'node:assert';
3
3
  import { execFileSync, spawnSync } from 'node:child_process';
4
4
  import {
@@ -9,7 +9,6 @@ import {
9
9
  readFileSync,
10
10
  readdirSync,
11
11
  rmSync,
12
- cpSync,
13
12
  } from 'node:fs';
14
13
  import { tmpdir } from 'node:os';
15
14
  import { join, dirname, basename } from 'node:path';
@@ -28,21 +27,15 @@ const RETIRED_SKILL_DIRECTORIES = [
28
27
  'pr-consistency-audit',
29
28
  'bdd-protocol',
30
29
  ];
31
- const PERSONAL_SKILL_DIRECTORIES = ['balatro', 'midjourney-sref', 'credit-card-picker'];
30
+ const PERSONAL_SKILL_DIRECTORIES = ['credit-card-picker', 'midjourney-sref'];
32
31
  const SHIPPED_SKILL_DIRECTORY = 'autoconverge';
33
32
  const PRUNED_BACKUP_DIRECTORY_NAME = '.claude-dev-env-pruned';
34
33
  const SKIP_PRUNE_NOTICE_MARKER = 'Skipping retired-skill and stale-file prune';
35
34
  const STALE_SKILL_FILE_RELATIVE_SEGMENTS = ['scripts', 'retired_module.py'];
36
35
  const RUNTIME_ARTIFACT_RELATIVE_SEGMENTS = ['scripts', '__pycache__', 'helper.cpython-312.pyc'];
37
- const DEPENDENCY_STUB_PACKAGE_SEGMENTS = ['@jl-cmd', 'prompt-generator'];
38
- const DEPENDENCY_SUPPLIED_SKILL_DIRECTORY = 'dependency-supplied-skill';
39
36
  const SCOPED_GROUP_SKILL_DIRECTORY = 'orchestrator';
40
37
  const CORE_REVIEW_GUIDE_SKILL_DIRECTORIES = [
41
38
  'small-cl',
42
- 'comments',
43
- 'reviews',
44
- 'descriptions',
45
- 'emergencies',
46
39
  ];
47
40
  const PRIOR_RUN_BACKUP_DIRECTORY_NAMES = [
48
41
  '2020-01-01T00-00-00-000Z',
@@ -70,70 +63,6 @@ const NESTED_SKILL_FILE_SEGMENTS = [NESTED_SKILL_DIRECTORY, 'scripts', 'a.py'];
70
63
  const MYPY_INI_FILE_NAME = '.mypy.ini';
71
64
  const SKIPPED_RECORD_SUMMARY_MARKER = 'manifest record(s) skipped';
72
65
 
73
- /**
74
- * Create a stub node_modules tree the installer can resolve the declared
75
- * dependency package from, and return its root for the child's NODE_PATH.
76
- *
77
- * The installer resolves `@jl-cmd/prompt-generator/package.json`; a lone
78
- * package.json at that path is enough for `createRequire.resolve` to succeed.
79
- * The stub makes the dependency resolvable inside the sandbox so a full install
80
- * exercises the real prune path. It does not prove the real private package
81
- * resolves in a real install — CI cannot host that package — only that the
82
- * resolved-dependency branch prunes as designed.
83
- *
84
- * @param {string} homeDirectory The sandbox home the stub is nested under.
85
- * @returns {string} The stub modules root to place on the child's NODE_PATH.
86
- */
87
- let isolatedInstallerPath = null;
88
- let isolatedPackageCopyRoot = null;
89
-
90
- /**
91
- * Copy the package into a temp directory without node_modules and return the
92
- * copy's installer path.
93
- *
94
- * The installer resolves its declared dependencies with Node's regular
95
- * node_modules walk starting at its own file, so the real installer under the
96
- * repo always finds `@jl-cmd/prompt-generator` once `npm install` has run —
97
- * removing NODE_PATH from the child cannot make the dependency unresolvable
98
- * there. Running the copy makes resolution genuinely fail through the
99
- * installer's own catch path: no node_modules sits in the copy's ancestry and
100
- * the child gets no NODE_PATH. The copy is created once and shared by every
101
- * unresolved-dependency install; installs write only into their sandbox HOME.
102
- *
103
- * @returns {string} The path to `bin/install.mjs` inside the package copy.
104
- */
105
- function ensureIsolatedInstallerPath() {
106
- if (isolatedInstallerPath !== null) return isolatedInstallerPath;
107
- isolatedPackageCopyRoot = mkdtempSync(join(tmpdir(), 'cdev-prune-package-'));
108
- cpSync(PACKAGE_DIRECTORY, isolatedPackageCopyRoot, {
109
- recursive: true,
110
- filter: sourcePath => basename(sourcePath) !== EXCLUDED_PACKAGE_COPY_DIRECTORY,
111
- });
112
- isolatedInstallerPath = join(isolatedPackageCopyRoot, 'bin', 'install.mjs');
113
- return isolatedInstallerPath;
114
- }
115
-
116
- after(() => {
117
- if (isolatedPackageCopyRoot !== null) {
118
- rmSync(isolatedPackageCopyRoot, { recursive: true, force: true });
119
- }
120
- });
121
-
122
- function ensureDependencyStub(homeDirectory) {
123
- const stubModulesRoot = join(homeDirectory, 'dependency-stub-modules');
124
- const stubPackageDirectory = join(stubModulesRoot, ...DEPENDENCY_STUB_PACKAGE_SEGMENTS);
125
- mkdirSync(stubPackageDirectory, { recursive: true });
126
- writeFileSync(
127
- join(stubPackageDirectory, 'package.json'),
128
- JSON.stringify({
129
- name: DEPENDENCY_STUB_PACKAGE_SEGMENTS.join('/'),
130
- version: '1.0.0',
131
- description: 'sandbox dependency stub',
132
- }) + '\n',
133
- );
134
- return stubModulesRoot;
135
- }
136
-
137
66
  /**
138
67
  * Report whether a path under one managed root landed in a run backup.
139
68
  *
@@ -203,20 +132,12 @@ function plantSkillDirectory(skillsDirectory, skillName, withSkillManifest) {
203
132
  /**
204
133
  * Run the real installer against the sandbox home and return its stdout.
205
134
  *
206
- * The declared dependency package is resolvable by default: the child's
207
- * NODE_PATH points at a sandbox stub so `createRequire.resolve` finds it and the
208
- * full-install prune runs. Passing ``{ dependencyResolvable: false }`` runs the
209
- * installer from an isolated package copy with no node_modules in its ancestry
210
- * and no NODE_PATH, so the dependency fails to resolve and the installer skips
211
- * the prune.
212
- *
213
135
  * @param {string} homeDirectory The sandbox home the installer writes into.
214
136
  * @param {string[]} extraArguments Installer arguments (for example ``['--only', 'core']``).
215
- * @param {{dependencyResolvable?: boolean}} options Whether the dependency resolves.
216
137
  * @returns {string} The installer's stdout.
217
138
  */
218
- function runInstaller(homeDirectory, extraArguments, options = {}) {
219
- const { installerPath, childEnvironment } = resolveInstallerInvocation(homeDirectory, options);
139
+ function runInstaller(homeDirectory, extraArguments) {
140
+ const { installerPath, childEnvironment } = resolveInstallerInvocation(homeDirectory);
220
141
  return execFileSync('node', [installerPath, ...extraArguments], {
221
142
  cwd: dirname(installerPath),
222
143
  encoding: 'utf8',
@@ -228,11 +149,9 @@ function runInstaller(homeDirectory, extraArguments, options = {}) {
228
149
  * Build the installer path and child environment one sandbox run uses.
229
150
  *
230
151
  * @param {string} homeDirectory The sandbox home the installer writes into.
231
- * @param {{dependencyResolvable?: boolean}} options Whether the dependency resolves.
232
152
  * @returns {{installerPath: string, childEnvironment: object}} The invocation inputs.
233
153
  */
234
- function resolveInstallerInvocation(homeDirectory, options) {
235
- const dependencyResolvable = options.dependencyResolvable !== false;
154
+ function resolveInstallerInvocation(homeDirectory) {
236
155
  const childEnvironment = {
237
156
  ...process.env,
238
157
  HOME: homeDirectory,
@@ -240,12 +159,7 @@ function resolveInstallerInvocation(homeDirectory, options) {
240
159
  GIT_CONFIG_GLOBAL: join(homeDirectory, '.gitconfig'),
241
160
  CODEX_HOME: join(homeDirectory, '.codex'),
242
161
  };
243
- if (dependencyResolvable) {
244
- childEnvironment.NODE_PATH = ensureDependencyStub(homeDirectory);
245
- return { installerPath: INSTALLER_PATH, childEnvironment };
246
- }
247
- delete childEnvironment.NODE_PATH;
248
- return { installerPath: ensureIsolatedInstallerPath(), childEnvironment };
162
+ return { installerPath: INSTALLER_PATH, childEnvironment };
249
163
  }
250
164
 
251
165
  /**
@@ -259,7 +173,7 @@ function resolveInstallerInvocation(homeDirectory, options) {
259
173
  * @returns {string} The child's stdout and stderr, joined.
260
174
  */
261
175
  function runInstallerReadingBothStreams(homeDirectory, extraArguments) {
262
- const { installerPath, childEnvironment } = resolveInstallerInvocation(homeDirectory, {});
176
+ const { installerPath, childEnvironment } = resolveInstallerInvocation(homeDirectory);
263
177
  const completedRun = spawnSync('node', [installerPath, ...extraArguments], {
264
178
  cwd: dirname(installerPath),
265
179
  encoding: 'utf8',
@@ -634,7 +548,7 @@ test('a full reinstall prunes a manifest-recorded skill absent from the package
634
548
  const sandbox = createSandbox();
635
549
  try {
636
550
  const retiredManifestSkill = 'ghost-skill';
637
- const personalSkill = 'balatro';
551
+ const personalSkill = 'credit-card-picker';
638
552
  plantSkillDirectory(sandbox.skillsDirectory, retiredManifestSkill, true);
639
553
  plantSkillDirectory(sandbox.skillsDirectory, personalSkill, false);
640
554
  writeFileSync(
@@ -701,115 +615,25 @@ test('a scoped --only install leaves retired skills in place because prune runs
701
615
  }
702
616
  });
703
617
 
704
- test('a full reinstall keeps pr-fix-protocol because the package ships it again', () => {
618
+ test('a full reinstall keeps autoconverge because the package ships it again', () => {
705
619
  const sandbox = createSandbox();
706
620
  try {
707
- plantSkillDirectory(sandbox.skillsDirectory, 'pr-fix-protocol', true);
708
- writeFileSync(join(sandbox.skillsDirectory, 'pr-fix-protocol', 'SKILL.md'), 'stale seeded copy\n');
621
+ plantSkillDirectory(sandbox.skillsDirectory, 'autoconverge', true);
622
+ writeFileSync(join(sandbox.skillsDirectory, 'autoconverge', 'SKILL.md'), 'stale seeded copy\n');
709
623
 
710
624
  const installerOutput = runInstaller(sandbox.homeDirectory, []);
711
625
 
712
626
  assert.equal(
713
627
  installerOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
714
628
  false,
715
- 'the resolvable-dependency install runs the prune rather than skipping it',
629
+ 'the full install runs the prune rather than skipping it',
716
630
  );
717
- const restoredSkillPath = join(sandbox.skillsDirectory, 'pr-fix-protocol', 'SKILL.md');
718
- assert.equal(existsSync(restoredSkillPath), true, 'pr-fix-protocol survives and is reinstalled');
631
+ const restoredSkillPath = join(sandbox.skillsDirectory, 'autoconverge', 'SKILL.md');
632
+ assert.equal(existsSync(restoredSkillPath), true, 'autoconverge survives and is reinstalled');
719
633
  assert.notEqual(
720
634
  readFileSync(restoredSkillPath, 'utf8'),
721
635
  'stale seeded copy\n',
722
- 'the shipped pr-fix-protocol overwrites the stale seeded copy',
723
- );
724
- } finally {
725
- rmSync(sandbox.homeDirectory, { recursive: true, force: true });
726
- }
727
- });
728
-
729
- test('a full reinstall with an unresolved dependency skips the prune and leaves retired skills untouched', () => {
730
- const sandbox = createSandbox();
731
- try {
732
- for (const retiredSkill of RETIRED_SKILL_DIRECTORIES) {
733
- plantSkillDirectory(sandbox.skillsDirectory, retiredSkill, true);
734
- }
735
-
736
- const installerOutput = runInstaller(sandbox.homeDirectory, [], { dependencyResolvable: false });
737
-
738
- assert.equal(
739
- installerOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
740
- true,
741
- 'the installer logs a notice that it is skipping the prune',
742
- );
743
- for (const retiredSkill of RETIRED_SKILL_DIRECTORIES) {
744
- assert.equal(
745
- existsSync(join(sandbox.skillsDirectory, retiredSkill)),
746
- true,
747
- `retired skill ${retiredSkill} should survive when a dependency is unresolved`,
748
- );
749
- assert.equal(
750
- prunedSkillBackupContains(sandbox.claudeDirectory, retiredSkill),
751
- false,
752
- `retired skill ${retiredSkill} should not be moved to backup when the prune is skipped`,
753
- );
754
- }
755
- } finally {
756
- rmSync(sandbox.homeDirectory, { recursive: true, force: true });
757
- }
758
- });
759
-
760
- test('a full install that holds the prune keeps prior manifest file entries it did not itself write', () => {
761
- const sandbox = createSandbox();
762
- try {
763
- runInstaller(sandbox.homeDirectory, []);
764
- const { staleFilePath } = seedStaleSkillFile(sandbox);
765
- const filesBeforeHeldPrune = readManifest(sandbox.manifestPath).files;
766
-
767
- const installerOutput = runInstaller(sandbox.homeDirectory, [], { dependencyResolvable: false });
768
-
769
- assert.equal(
770
- installerOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
771
- true,
772
- 'the unresolved-dependency install holds both prunes',
773
- );
774
- const recordedFiles = new Set(readManifest(sandbox.manifestPath).files);
775
- assert.equal(
776
- recordedFiles.has(staleFilePath),
777
- true,
778
- 'the entry a later pruning install needs to spot the stale file stays on the record',
779
- );
780
- const droppedEntries = filesBeforeHeldPrune.filter(priorPath => !recordedFiles.has(priorPath));
781
- assert.deepEqual(droppedEntries, [], 'a held prune drops no prior file entry');
782
- } finally {
783
- rmSync(sandbox.homeDirectory, { recursive: true, force: true });
784
- }
785
- });
786
-
787
- test('a full install that holds the prune keeps prior manifest skill names it did not itself install', () => {
788
- const sandbox = createSandbox();
789
- try {
790
- runInstaller(sandbox.homeDirectory, []);
791
- plantSkillDirectory(sandbox.skillsDirectory, DEPENDENCY_SUPPLIED_SKILL_DIRECTORY, true);
792
- const manifest = readManifest(sandbox.manifestPath);
793
- manifest.skills.push(DEPENDENCY_SUPPLIED_SKILL_DIRECTORY);
794
- writeFileSync(sandbox.manifestPath, JSON.stringify(manifest, null, 2) + '\n');
795
-
796
- const installerOutput = runInstaller(sandbox.homeDirectory, [], { dependencyResolvable: false });
797
-
798
- assert.equal(
799
- installerOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
800
- true,
801
- 'the unresolved-dependency install holds both prunes',
802
- );
803
- const recordedSkills = new Set(readManifest(sandbox.manifestPath).skills);
804
- assert.equal(
805
- recordedSkills.has(DEPENDENCY_SUPPLIED_SKILL_DIRECTORY),
806
- true,
807
- 'the name a later pruning install needs to spot the retired skill stays on the record',
808
- );
809
- assert.equal(
810
- recordedSkills.has(SHIPPED_SKILL_DIRECTORY),
811
- true,
812
- 'the held run still records the skills it installed itself',
636
+ 'the shipped autoconverge overwrites the stale seeded copy',
813
637
  );
814
638
  } finally {
815
639
  rmSync(sandbox.homeDirectory, { recursive: true, force: true });
@@ -856,43 +680,38 @@ test('a scoped core install ships the canonical review guide skills', () => {
856
680
  }
857
681
  });
858
682
 
859
- test('the prune skip is scoped: once the dependency resolves a later full install prunes normally', () => {
683
+ test('a scoped core install leaves retired skills in place; a later full install prunes them', () => {
860
684
  const sandbox = createSandbox();
861
685
  try {
862
686
  for (const retiredSkill of RETIRED_SKILL_DIRECTORIES) {
863
687
  plantSkillDirectory(sandbox.skillsDirectory, retiredSkill, true);
864
688
  }
865
689
 
866
- const skippedOutput = runInstaller(sandbox.homeDirectory, [], { dependencyResolvable: false });
867
- assert.equal(
868
- skippedOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
869
- true,
870
- 'the unresolved-dependency install skips the prune',
871
- );
690
+ runInstaller(sandbox.homeDirectory, ['--only', 'core']);
872
691
  for (const retiredSkill of RETIRED_SKILL_DIRECTORIES) {
873
692
  assert.equal(
874
693
  existsSync(join(sandbox.skillsDirectory, retiredSkill)),
875
694
  true,
876
- `retired skill ${retiredSkill} should still be present after the skipped prune`,
695
+ `retired skill ${retiredSkill} should survive a scoped install`,
877
696
  );
878
697
  }
879
698
 
880
- const resolvedOutput = runInstaller(sandbox.homeDirectory, [], { dependencyResolvable: true });
699
+ const fullOutput = runInstaller(sandbox.homeDirectory, []);
881
700
  assert.equal(
882
- resolvedOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
701
+ fullOutput.includes(SKIP_PRUNE_NOTICE_MARKER),
883
702
  false,
884
- 'the resolved-dependency install runs the prune, proving the skip is not a permanent disable',
703
+ 'the full install runs the prune',
885
704
  );
886
705
  for (const retiredSkill of RETIRED_SKILL_DIRECTORIES) {
887
706
  assert.equal(
888
707
  existsSync(join(sandbox.skillsDirectory, retiredSkill)),
889
708
  false,
890
- `retired skill ${retiredSkill} should be pruned once the dependency resolves`,
709
+ `retired skill ${retiredSkill} should be pruned on the full install`,
891
710
  );
892
711
  assert.equal(
893
712
  prunedSkillBackupContains(sandbox.claudeDirectory, retiredSkill),
894
713
  true,
895
- `retired skill ${retiredSkill} should be moved to the prune backup on the resolved install`,
714
+ `retired skill ${retiredSkill} should be moved to the prune backup`,
896
715
  );
897
716
  }
898
717
  } finally {
@@ -176,6 +176,15 @@ test('CONTENT_DIRECTORIES includes _shared so installer copies _shared/pr-loop/
176
176
  });
177
177
 
178
178
 
179
+ test('CONTENT_DIRECTORIES omits agents because that tree installs to the agents home', () => {
180
+ assert.equal(
181
+ CONTENT_DIRECTORIES.includes('agents'),
182
+ false,
183
+ 'agents copies into ~/.agents/agents; ~/.claude/agents is the lookup pointer',
184
+ );
185
+ });
186
+
187
+
179
188
  test('core includeDirectories ships _shared and scripts for advisor protocol and CLI fallback', () => {
180
189
  assert.ok(
181
190
  CORE_INCLUDE_DIRECTORIES.includes('_shared'),
@@ -205,6 +214,12 @@ test('CORE_SKILLS ships issue-tracker so the core group installs the skill the S
205
214
  });
206
215
 
207
216
 
217
+ test('CORE_SKILLS ships ELI5 as the leaf presentation skill', () => {
218
+ assert.ok(CORE_SKILLS.includes('eli5'), 'eli5 must be in CORE_SKILLS');
219
+ assert.equal(INSTALL_GROUPS.core.skills.includes('eli5'), true);
220
+ });
221
+
222
+
208
223
  test('EVER_SHIPPED_SKILL_NAMES retains imagegen so reinstall prunes the retired skill', () => {
209
224
  assert.ok(
210
225
  EVER_SHIPPED_SKILL_NAMES.has('imagegen'),
@@ -971,7 +986,6 @@ const OLD_FOLDED_HOOKS_SETTINGS = {
971
986
  { type: 'command', command: 'py -3 C:/Users/x/.claude/hooks/blocking/claude_md_orphan_file_blocker.py', timeout: 10 },
972
987
  { type: 'command', command: 'py -3 C:/Users/x/.claude/hooks/blocking/pytest_testpaths_orphan_blocker.py', timeout: 10 },
973
988
  { type: 'command', command: 'py -3 C:/Users/x/.claude/hooks/blocking/open_questions_in_plans_blocker.py', timeout: 10 },
974
- { type: 'command', command: 'py -3 C:/Users/x/.claude/hooks/blocking/plain_language_blocker.py', timeout: 10 },
975
989
  ],
976
990
  },
977
991
  ],
@@ -979,10 +993,9 @@ const OLD_FOLDED_HOOKS_SETTINGS = {
979
993
  };
980
994
 
981
995
 
982
- test('FOLDED_HOOK_RELATIVE_PATHS contains all 15 hooks removed from hooks.json plus the retired md_to_html_blocker', () => {
983
- assert.equal(FOLDED_HOOK_RELATIVE_PATHS.size, 16);
996
+ test('FOLDED_HOOK_RELATIVE_PATHS contains all 14 hooks removed from hooks.json plus the retired md_to_html_blocker', () => {
997
+ assert.equal(FOLDED_HOOK_RELATIVE_PATHS.size, 15);
984
998
  assert.ok(FOLDED_HOOK_RELATIVE_PATHS.has('blocking/write_existing_file_blocker.py'));
985
- assert.ok(FOLDED_HOOK_RELATIVE_PATHS.has('blocking/plain_language_blocker.py'));
986
999
  assert.ok(FOLDED_HOOK_RELATIVE_PATHS.has('blocking/code_rules_enforcer.py'));
987
1000
  assert.ok(FOLDED_HOOK_RELATIVE_PATHS.has('blocking/pytest_testpaths_orphan_blocker.py'));
988
1001
  assert.ok(FOLDED_HOOK_RELATIVE_PATHS.has('blocking/md_to_html_blocker.py'));
@@ -1005,7 +1018,6 @@ test('FOLDED_HOOK_RELATIVE_PATHS lists every hook the PreToolUse dispatcher host
1005
1018
  'blocking/env_var_table_code_drift_blocker.py',
1006
1019
  'blocking/pytest_testpaths_orphan_blocker.py',
1007
1020
  'blocking/open_questions_in_plans_blocker.py',
1008
- 'blocking/plain_language_blocker.py',
1009
1021
  ];
1010
1022
  const retiredHooks = [
1011
1023
  'blocking/md_to_html_blocker.py',
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Publish a Claude Code lookup path as a directory pointer to the agents home.
3
+ *
4
+ * Skills and agents live under the agents home. Claude Code still discovers
5
+ * them at `managedRoot/skills` and `managedRoot/agents`, so the installer
6
+ * writes those two paths as directory pointers (a POSIX symlink, or a Windows
7
+ * junction). One helper owns the create, refresh, and relocate steps.
8
+ */
9
+
10
+ import {
11
+ existsSync,
12
+ lstatSync,
13
+ mkdirSync,
14
+ readlinkSync,
15
+ readdirSync,
16
+ renameSync,
17
+ rmSync,
18
+ symlinkSync,
19
+ unlinkSync,
20
+ } from 'node:fs';
21
+ import { dirname, join, resolve } from 'node:path';
22
+ import { normalizePathForComparison } from './resolve-install-root.mjs';
23
+
24
+ export const DIRECTORY_POINTER_TYPE_JUNCTION = 'junction';
25
+ export const DIRECTORY_POINTER_TYPE_DIR = 'dir';
26
+ export const POINTER_ACTION_ALREADY_POINTING = 'already-pointing';
27
+ export const POINTER_ACTION_CREATED = 'created';
28
+
29
+ /**
30
+ * Directory-pointer type this host uses.
31
+ *
32
+ * Windows receives a junction so the pointer works without Developer Mode.
33
+ * POSIX receives a directory symlink.
34
+ *
35
+ * @param {string} [platform]
36
+ * @returns {typeof DIRECTORY_POINTER_TYPE_JUNCTION | typeof DIRECTORY_POINTER_TYPE_DIR}
37
+ */
38
+ export function directoryPointerTypeForPlatform(platform = process.platform) {
39
+ return platform === 'win32'
40
+ ? DIRECTORY_POINTER_TYPE_JUNCTION
41
+ : DIRECTORY_POINTER_TYPE_DIR;
42
+ }
43
+
44
+ /**
45
+ * Report whether pointerPath is a directory pointer whose target is targetPath.
46
+ *
47
+ * @param {string} pointerPath
48
+ * @param {string} targetPath
49
+ * @returns {boolean}
50
+ */
51
+ export function isDirectoryPointerTo(pointerPath, targetPath) {
52
+ const pathKind = readPathKind(pointerPath);
53
+ if (pathKind !== 'symlink') {
54
+ return false;
55
+ }
56
+ const linkTarget = readlinkSync(pointerPath);
57
+ const resolvedLinkTarget = resolve(dirname(pointerPath), linkTarget);
58
+ return normalizePathForComparison(resolvedLinkTarget)
59
+ === normalizePathForComparison(resolve(targetPath));
60
+ }
61
+
62
+ /**
63
+ * Make pointerPath a directory pointer to targetPath.
64
+ *
65
+ * A real directory already sitting at the lookup path is merged into the
66
+ * target, then the pointer is written. A pointer that already aims at the
67
+ * target is left in place.
68
+ *
69
+ * @param {string} pointerPath Claude Code lookup path (for example `~/.claude/skills`).
70
+ * @param {string} targetPath Canonical directory (for example `~/.agents/skills`).
71
+ * @param {{ pointerType?: string }} [options]
72
+ * @returns {{ action: string, pointerPath: string, targetPath: string }}
73
+ */
74
+ export function ensureDirectoryPointer(pointerPath, targetPath, options = {}) {
75
+ const pointerType = options.pointerType ?? directoryPointerTypeForPlatform();
76
+ const resolvedTarget = resolve(targetPath);
77
+ const resolvedPointer = resolve(pointerPath);
78
+ mkdirSync(resolvedTarget, { recursive: true });
79
+
80
+ if (isDirectoryPointerTo(resolvedPointer, resolvedTarget)) {
81
+ return {
82
+ action: POINTER_ACTION_ALREADY_POINTING,
83
+ pointerPath: resolvedPointer,
84
+ targetPath: resolvedTarget,
85
+ };
86
+ }
87
+
88
+ const pathKind = readPathKind(resolvedPointer);
89
+ if (pathKind === 'symlink') {
90
+ unlinkSync(resolvedPointer);
91
+ } else if (pathKind === 'directory') {
92
+ mergeDirectoryContents(resolvedPointer, resolvedTarget);
93
+ rmSync(resolvedPointer, { recursive: true, force: true });
94
+ } else if (pathKind === 'file') {
95
+ throw new Error(
96
+ `Cannot publish a directory pointer: ${resolvedPointer} is a file`,
97
+ );
98
+ }
99
+
100
+ mkdirSync(dirname(resolvedPointer), { recursive: true });
101
+ symlinkSync(resolvedTarget, resolvedPointer, pointerType);
102
+ return {
103
+ action: POINTER_ACTION_CREATED,
104
+ pointerPath: resolvedPointer,
105
+ targetPath: resolvedTarget,
106
+ };
107
+ }
108
+
109
+ /**
110
+ * Remove a directory pointer when it aims at the expected target.
111
+ *
112
+ * @param {string} pointerPath
113
+ * @param {string} targetPath
114
+ * @returns {boolean} True when this call unlinked the pointer.
115
+ */
116
+ export function unlinkDirectoryPointerIfMatch(pointerPath, targetPath) {
117
+ if (!isDirectoryPointerTo(pointerPath, targetPath)) {
118
+ return false;
119
+ }
120
+ unlinkSync(pointerPath);
121
+ return true;
122
+ }
123
+
124
+ /**
125
+ * @param {string} absolutePath
126
+ * @returns {'missing' | 'symlink' | 'directory' | 'file' | 'other'}
127
+ */
128
+ function readPathKind(absolutePath) {
129
+ let stats;
130
+ try {
131
+ stats = lstatSync(absolutePath);
132
+ } catch (readError) {
133
+ if (readError && readError.code === 'ENOENT') {
134
+ return 'missing';
135
+ }
136
+ throw readError;
137
+ }
138
+ if (stats.isSymbolicLink()) {
139
+ return 'symlink';
140
+ }
141
+ if (stats.isDirectory()) {
142
+ return 'directory';
143
+ }
144
+ if (stats.isFile()) {
145
+ return 'file';
146
+ }
147
+ return 'other';
148
+ }
149
+
150
+ /**
151
+ * Move unique entries from sourceDirectory into destinationDirectory.
152
+ *
153
+ * An entry that already exists at the destination stays there. Nested
154
+ * directories merge the same way. Leftover source entries are removed by the
155
+ * caller with the source directory.
156
+ *
157
+ * @param {string} sourceDirectory
158
+ * @param {string} destinationDirectory
159
+ * @returns {void}
160
+ */
161
+ function mergeDirectoryContents(sourceDirectory, destinationDirectory) {
162
+ mkdirSync(destinationDirectory, { recursive: true });
163
+ const allEntries = readdirSync(sourceDirectory, { withFileTypes: true });
164
+ for (const eachEntry of allEntries) {
165
+ const sourceChild = join(sourceDirectory, eachEntry.name);
166
+ const destinationChild = join(destinationDirectory, eachEntry.name);
167
+ if (!existsSync(destinationChild)) {
168
+ renameSync(sourceChild, destinationChild);
169
+ continue;
170
+ }
171
+ if (eachEntry.isDirectory() && readPathKind(destinationChild) === 'directory') {
172
+ mergeDirectoryContents(sourceChild, destinationChild);
173
+ }
174
+ }
175
+ }