claude-dev-env 2.15.0 → 2.16.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 (681) hide show
  1. package/.agents/agents/.claude/CLAUDE.md +1 -0
  2. package/{agents → .agents/agents}/AGENTS.md +2 -2
  3. package/{agents → .agents/agents}/test_agent_frontmatter.py +1 -1
  4. package/.agents/skills/.claude/CLAUDE.md +1 -0
  5. package/{skills → .agents/skills}/AGENTS.md +2 -2
  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/.agents/skills/_shared/pr-loop/prompts/.claude/CLAUDE.md +1 -0
  11. package/.agents/skills/_shared/pr-loop/scripts/.claude/CLAUDE.md +1 -0
  12. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/.claude/CLAUDE.md +1 -0
  13. package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/audit_category_schema_constants.py +6 -1
  14. package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_audit_prompt.py +9 -3
  15. package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_audit_outcomes.py +1 -1
  16. package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_fix_outcomes.py +1 -1
  17. package/.agents/skills/anthropic-plan/.claude/CLAUDE.md +1 -0
  18. package/{skills → .agents/skills}/anthropic-plan/AGENTS.md +1 -1
  19. package/.agents/skills/anthropic-plan/scripts/.claude/CLAUDE.md +1 -0
  20. package/.agents/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/.claude/CLAUDE.md +1 -0
  21. package/.agents/skills/anthropic-plan/templates/.claude/CLAUDE.md +1 -0
  22. package/{skills → .agents/skills}/anthropic-plan/test_skill_contract.py +4 -4
  23. package/.agents/skills/anthropic-plan/workflow/.claude/CLAUDE.md +1 -0
  24. package/.agents/skills/auditing-claude-config/.claude/CLAUDE.md +1 -0
  25. package/.agents/skills/autoconverge/.claude/CLAUDE.md +1 -0
  26. package/.agents/skills/autoconverge/reference/.claude/CLAUDE.md +1 -0
  27. package/.agents/skills/autoconverge/workflow/.claude/CLAUDE.md +1 -0
  28. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/.claude/CLAUDE.md +1 -0
  29. package/.agents/skills/bugteam/.claude/CLAUDE.md +1 -0
  30. package/.agents/skills/bugteam/reference/.claude/CLAUDE.md +1 -0
  31. package/.agents/skills/bugteam/reference/obstacles/.claude/CLAUDE.md +1 -0
  32. package/.agents/skills/bugteam/scripts/.claude/CLAUDE.md +1 -0
  33. package/{skills → .agents/skills}/bugteam/scripts/bugteam_code_rules_gate.py +11 -1
  34. package/{skills → .agents/skills}/bugteam/scripts/bugteam_fix_hookspath.py +11 -1
  35. package/{skills → .agents/skills}/bugteam/scripts/bugteam_preflight.py +11 -1
  36. package/.agents/skills/bugteam/scripts/bugteam_scripts_constants/.claude/CLAUDE.md +1 -0
  37. package/{skills → .agents/skills}/bugteam/scripts/reflow_skill_md.py +3 -3
  38. package/.agents/skills/codex-review/.claude/CLAUDE.md +1 -0
  39. package/.agents/skills/codex-review/reference/.claude/CLAUDE.md +1 -0
  40. package/.agents/skills/codex-review/scripts/codex_review_scripts_constants/.claude/CLAUDE.md +1 -0
  41. package/{skills → .agents/skills}/codex-review/scripts/codex_usage_probe.py +11 -1
  42. package/{skills → .agents/skills}/codex-review/scripts/run_codex_review.py +11 -1
  43. package/{skills → .agents/skills}/codex-review/test_skill_scaffold.py +4 -4
  44. package/.agents/skills/copilot-review/.claude/CLAUDE.md +1 -0
  45. package/{skills → .agents/skills}/e-code-review/reference/effort-evaluation.md +1 -1
  46. package/.agents/skills/everything-search/.claude/CLAUDE.md +1 -0
  47. package/.agents/skills/fresh-branch/.claude/CLAUDE.md +1 -0
  48. package/.agents/skills/grok-spawn/.claude/CLAUDE.md +1 -0
  49. package/{skills → .agents/skills}/grokify/evals/README.md +1 -1
  50. package/.agents/skills/pr-converge/.claude/CLAUDE.md +1 -0
  51. package/.agents/skills/pr-converge/pr_converge_skill_constants/.claude/CLAUDE.md +1 -0
  52. package/{skills → .agents/skills}/pr-converge/pr_converge_skill_constants/AGENTS.md +1 -1
  53. package/{skills → .agents/skills}/pr-converge/pr_converge_skill_constants/constants.py +1 -1
  54. package/.agents/skills/pr-converge/reference/.claude/CLAUDE.md +1 -0
  55. package/.agents/skills/pr-converge/reference/obstacles/.claude/CLAUDE.md +1 -0
  56. package/.agents/skills/pr-converge/scripts/.claude/CLAUDE.md +1 -0
  57. package/{skills → .agents/skills}/pr-converge/scripts/_pr_converge_path_setup.py +17 -2
  58. package/.agents/skills/pr-converge/scripts/pr_converge_scripts_constants/.claude/CLAUDE.md +1 -0
  59. package/{skills → .agents/skills}/pr-converge/scripts/reflow_skill_md.py +2 -2
  60. package/{skills → .agents/skills}/pr-converge/scripts/test__pr_converge_path_setup.py +7 -4
  61. package/.agents/skills/pr-converge/workflows/.claude/CLAUDE.md +1 -0
  62. package/{skills → .agents/skills}/prototype/scripts/test_probe_sandbox_safety.py +1 -1
  63. package/.agents/skills/rebase/.claude/CLAUDE.md +1 -0
  64. package/.agents/skills/recall/.claude/CLAUDE.md +1 -0
  65. package/.agents/skills/remember/.claude/CLAUDE.md +1 -0
  66. package/.agents/skills/run-claude-dev-env/SKILL.md +84 -0
  67. package/.agents/skills/run-claude-dev-env/driver.mjs +239 -0
  68. package/.agents/skills/session-log/.claude/CLAUDE.md +1 -0
  69. package/.agents/skills/session-tidy/.claude/CLAUDE.md +1 -0
  70. package/.agents/skills/skill-builder/.claude/CLAUDE.md +1 -0
  71. package/.agents/skills/skill-builder/references/.claude/CLAUDE.md +1 -0
  72. package/{skills → .agents/skills}/skill-builder/references/deterministic-elements.md +1 -1
  73. package/.agents/skills/skill-builder/templates/.claude/CLAUDE.md +1 -0
  74. package/.agents/skills/skill-builder/workflows/.claude/CLAUDE.md +1 -0
  75. package/{skills → .agents/skills}/split-pr/reference/proposal-format.md +1 -1
  76. package/.agents/skills/task-build/.claude/CLAUDE.md +1 -0
  77. package/.agents/skills/update/.claude/CLAUDE.md +1 -0
  78. package/.claude/CLAUDE.md +1 -0
  79. package/_shared/advisor/reference/sol-rung.md +1 -1
  80. package/_shared/advisor/scripts/tests/test_codex_sol_advisor.py +1 -1
  81. package/_shared/advisor/scripts/tier_model_ids.py +6 -2
  82. package/_shared/pr-loop/code-rules-gate.md +1 -1
  83. package/bin/AGENTS.md +17 -12
  84. package/bin/ever-shipped-skills.mjs +5 -2
  85. package/bin/install-constants.mjs +31 -6
  86. package/bin/install-plan.mjs +6 -1
  87. package/bin/install.agents-home.test.mjs +186 -0
  88. package/bin/install.mjs +120 -47
  89. package/bin/install.plan.test.mjs +1 -0
  90. package/bin/install.profile-root.test.mjs +53 -0
  91. package/bin/install.test.mjs +51 -8
  92. package/bin/publish-directory-pointer.mjs +175 -0
  93. package/bin/publish-directory-pointer.test.mjs +129 -0
  94. package/bin/resolve-install-root.mjs +59 -4
  95. package/bin/resolve-package-managed-directory.mjs +29 -0
  96. package/bin/resolve-package-managed-directory.test.mjs +97 -0
  97. package/hooks/blocking/hedging_language_blocker.py +1 -0
  98. package/hooks/blocking/orchestrator_refresh_reschedule_gate.py +10 -6
  99. package/hooks/blocking/test_code_rules_command_dispatch.py +1 -1
  100. package/hooks/blocking/test_code_rules_enforcer_magic_slice_bounds.py +1 -1
  101. package/hooks/blocking/test_code_rules_enforcer_split_annotations_length.py +1 -1
  102. package/hooks/blocking/test_code_rules_js_conventions.py +1 -1
  103. package/hooks/blocking/test_code_rules_js_resume_task_enumeration.py +1 -1
  104. package/hooks/blocking/test_code_rules_js_returns_object_schemaless.py +1 -1
  105. package/hooks/blocking/test_code_rules_js_sibling_return_object_key_drift.py +1 -1
  106. package/hooks/blocking/test_duplicate_rmtree_helper_blocker.py +1 -1
  107. package/hooks/blocking/test_fable_spawn_gate.py +1 -1
  108. package/hooks/blocking/test_orchestrator_refresh_reschedule_gate.py +1 -1
  109. package/hooks/hooks_constants/orchestrator_refresh_reschedule_gate_constants.py +9 -0
  110. package/installable-surfaces.manifest.json +2 -3
  111. package/package.json +4 -5
  112. package/scripts/AGENTS.md +0 -7
  113. package/scripts/active_capability_references.py +38 -8
  114. package/scripts/claude_chain_runner.py +49 -2
  115. package/scripts/claude_chain_usage.py +2 -0
  116. package/scripts/codex_compat_watcher.py +1 -1
  117. package/scripts/dev_env_scripts_constants/active_capability_constants.py +5 -2
  118. package/scripts/dev_env_scripts_constants/claude_chain_usage_constants.py +4 -1
  119. package/scripts/invoke_code_review.py +48 -51
  120. package/scripts/resolve_worker_spawn.py +42 -47
  121. package/scripts/test_claude_chain_runner.py +28 -0
  122. package/scripts/test_dispatcher_profile_import.py +184 -0
  123. package/scripts/test_resolve_worker_spawn.py +119 -1
  124. package/scripts/test_validate_instruction_pairs.py +30 -0
  125. package/scripts/test_verify_installable_package.py +2 -1
  126. package/scripts/tests/test_codex_compat_watcher.py +5 -5
  127. package/CLAUDE.md +0 -1
  128. package/agents/CLAUDE.md +0 -1
  129. package/scripts/profile-isolation-launchers/config/mcp-bundles.json +0 -25
  130. package/scripts/profile-isolation-launchers/config/profile-isolation-constants.mjs +0 -60
  131. package/scripts/profile-isolation-launchers/config/profiles.manifest.json +0 -54
  132. package/scripts/profile-isolation-launchers/config/shared-allowlist.json +0 -64
  133. package/scripts/profile-isolation-launchers/launcher-runtime.mjs +0 -180
  134. package/scripts/profile-isolation-launchers/lib/profile-manifest.mjs +0 -288
  135. package/scripts/profile-isolation-launchers/mcp-bundles.mjs +0 -275
  136. package/scripts/profile-isolation-launchers/profile-isolation-contract.test.mjs +0 -221
  137. package/scripts/profile-isolation-launchers/tests/launcher-runtime.test.mjs +0 -108
  138. package/scripts/profile-isolation-launchers/tests/mcp-bundles.test.mjs +0 -147
  139. package/scripts/profile-isolation-launchers/tests/shortcut-contract.test.ps1 +0 -102
  140. package/scripts/profile-isolation-launchers/tests/version-compatibility.test.mjs +0 -210
  141. package/scripts/profile-isolation-launchers/version-compatibility.mjs +0 -299
  142. package/scripts/profile-isolation-launchers/windows/shortcut-inventory.ps1 +0 -127
  143. package/scripts/profile-isolation-launchers/windows/shortcut-manifest.json +0 -51
  144. package/scripts/profile-isolation-launchers/windows/shortcut-reconcile.ps1 +0 -77
  145. package/skills/CLAUDE.md +0 -1
  146. package/skills/_shared/CLAUDE.md +0 -1
  147. package/skills/_shared/advisor/CLAUDE.md +0 -1
  148. package/skills/_shared/pr-loop/CLAUDE.md +0 -1
  149. package/skills/_shared/pr-loop/prompts/CLAUDE.md +0 -1
  150. package/skills/_shared/pr-loop/scripts/CLAUDE.md +0 -1
  151. package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +0 -1
  152. package/skills/anthropic-plan/CLAUDE.md +0 -1
  153. package/skills/anthropic-plan/scripts/CLAUDE.md +0 -1
  154. package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +0 -1
  155. package/skills/anthropic-plan/templates/CLAUDE.md +0 -1
  156. package/skills/anthropic-plan/workflow/CLAUDE.md +0 -1
  157. package/skills/auditing-claude-config/CLAUDE.md +0 -1
  158. package/skills/autoconverge/CLAUDE.md +0 -1
  159. package/skills/autoconverge/reference/CLAUDE.md +0 -1
  160. package/skills/autoconverge/workflow/CLAUDE.md +0 -1
  161. package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +0 -1
  162. package/skills/bugteam/CLAUDE.md +0 -1
  163. package/skills/bugteam/reference/CLAUDE.md +0 -1
  164. package/skills/bugteam/reference/obstacles/CLAUDE.md +0 -1
  165. package/skills/bugteam/scripts/CLAUDE.md +0 -1
  166. package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +0 -1
  167. package/skills/codex-review/CLAUDE.md +0 -1
  168. package/skills/codex-review/reference/CLAUDE.md +0 -1
  169. package/skills/codex-review/scripts/codex_review_scripts_constants/CLAUDE.md +0 -1
  170. package/skills/copilot-review/CLAUDE.md +0 -1
  171. package/skills/everything-search/CLAUDE.md +0 -1
  172. package/skills/fresh-branch/CLAUDE.md +0 -1
  173. package/skills/grok-spawn/CLAUDE.md +0 -1
  174. package/skills/pr-converge/CLAUDE.md +0 -1
  175. package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +0 -1
  176. package/skills/pr-converge/reference/CLAUDE.md +0 -1
  177. package/skills/pr-converge/reference/obstacles/CLAUDE.md +0 -1
  178. package/skills/pr-converge/scripts/CLAUDE.md +0 -1
  179. package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +0 -1
  180. package/skills/pr-converge/workflows/CLAUDE.md +0 -1
  181. package/skills/rebase/CLAUDE.md +0 -1
  182. package/skills/recall/CLAUDE.md +0 -1
  183. package/skills/remember/CLAUDE.md +0 -1
  184. package/skills/session-log/CLAUDE.md +0 -1
  185. package/skills/session-tidy/CLAUDE.md +0 -1
  186. package/skills/skill-builder/CLAUDE.md +0 -1
  187. package/skills/skill-builder/references/CLAUDE.md +0 -1
  188. package/skills/skill-builder/templates/CLAUDE.md +0 -1
  189. package/skills/skill-builder/workflows/CLAUDE.md +0 -1
  190. package/skills/task-build/CLAUDE.md +0 -1
  191. package/skills/update/CLAUDE.md +0 -1
  192. /package/{agents → .agents/agents}/clean-coder.md +0 -0
  193. /package/{agents → .agents/agents}/code-quality-agent.md +0 -0
  194. /package/{agents → .agents/agents}/git-commit-crafter.md +0 -0
  195. /package/{agents → .agents/agents}/issue-tracker.md +0 -0
  196. /package/{agents → .agents/agents}/plan-packet-validator.md +0 -0
  197. /package/{agents → .agents/agents}/pr-description-writer.md +0 -0
  198. /package/{agents → .agents/agents}/session-advisor.md +0 -0
  199. /package/{agents → .agents/agents}/skill-writer-agent.md +0 -0
  200. /package/{skills → .agents/skills}/_shared/advisor/AGENTS.md +0 -0
  201. /package/{skills → .agents/skills}/_shared/advisor/advisor-protocol.md +0 -0
  202. /package/{skills → .agents/skills}/_shared/advisor/scripts/README.md +0 -0
  203. /package/{skills → .agents/skills}/_shared/end-of-run-gotcha-recommendations.md +0 -0
  204. /package/{skills → .agents/skills}/_shared/pr-loop/AGENTS.md +0 -0
  205. /package/{skills → .agents/skills}/_shared/pr-loop/audit-contract.md +0 -0
  206. /package/{skills → .agents/skills}/_shared/pr-loop/audit-reply-template.md +0 -0
  207. /package/{skills → .agents/skills}/_shared/pr-loop/code-rules-gate.md +0 -0
  208. /package/{skills → .agents/skills}/_shared/pr-loop/fix-protocol.md +0 -0
  209. /package/{skills → .agents/skills}/_shared/pr-loop/gh-payloads.md +0 -0
  210. /package/{skills → .agents/skills}/_shared/pr-loop/portable-driver.md +0 -0
  211. /package/{skills → .agents/skills}/_shared/pr-loop/post-audit-thread-contract.md +0 -0
  212. /package/{skills → .agents/skills}/_shared/pr-loop/precatch-rubric.md +0 -0
  213. /package/{skills → .agents/skills}/_shared/pr-loop/prompts/AGENTS.md +0 -0
  214. /package/{skills → .agents/skills}/_shared/pr-loop/prompts/pr-consistency-audit.xml +0 -0
  215. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/AGENTS.md +0 -0
  216. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/RUNTIME_SCRIPTS.md +0 -0
  217. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_cli_utils.py +0 -0
  218. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_path_resolver.py +0 -0
  219. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/_xml_utils.py +0 -0
  220. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/audit_category_schema.py +0 -0
  221. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_audit_prompt.py +0 -0
  222. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_converge_task_list.py +0 -0
  223. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/build_fix_prompt.py +0 -0
  224. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/init_loop_state.py +0 -0
  225. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/portable_converge_driver.py +0 -0
  226. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/preflight_worktree.py +0 -0
  227. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/select_converge_pacer.py +0 -0
  228. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +0 -0
  229. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/__init__.py +0 -0
  230. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +0 -0
  231. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/handoff_constants.py +0 -0
  232. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +0 -0
  233. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/path_resolver_constants.py +0 -0
  234. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +0 -0
  235. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/skills_pr_loop_constants/preflight_constants.py +0 -0
  236. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/teardown_worktrees.py +0 -0
  237. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test__path_resolver.py +0 -0
  238. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_audit_category_schema.py +0 -0
  239. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_converge_task_list.py +0 -0
  240. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_build_fix_prompt.py +0 -0
  241. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_init_loop_state.py +0 -0
  242. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_portable_converge_driver.py +0 -0
  243. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_preflight_worktree.py +0 -0
  244. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_select_converge_pacer.py +0 -0
  245. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_teardown_worktrees.py +0 -0
  246. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/test_write_handoff.py +0 -0
  247. /package/{skills → .agents/skills}/_shared/pr-loop/scripts/write_handoff.py +0 -0
  248. /package/{skills → .agents/skills}/_shared/pr-loop/state-schema.md +0 -0
  249. /package/{skills → .agents/skills}/_shared/pr-loop/worker-spawn.md +0 -0
  250. /package/{skills → .agents/skills}/anthropic-plan/SKILL.md +0 -0
  251. /package/{skills → .agents/skills}/anthropic-plan/scripts/AGENTS.md +0 -0
  252. /package/{skills → .agents/skills}/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +0 -0
  253. /package/{skills → .agents/skills}/anthropic-plan/scripts/anthropic_plan_scripts_constants/__init__.py +0 -0
  254. /package/{skills → .agents/skills}/anthropic-plan/scripts/anthropic_plan_scripts_constants/validate_packet_constants.py +0 -0
  255. /package/{skills → .agents/skills}/anthropic-plan/scripts/test_validate_packet.py +0 -0
  256. /package/{skills → .agents/skills}/anthropic-plan/scripts/validate_packet.py +0 -0
  257. /package/{skills → .agents/skills}/anthropic-plan/templates/AGENTS.md +0 -0
  258. /package/{skills → .agents/skills}/anthropic-plan/templates/README.md +0 -0
  259. /package/{skills → .agents/skills}/anthropic-plan/templates/build-prompt.md +0 -0
  260. /package/{skills → .agents/skills}/anthropic-plan/templates/reuse-audit.md +0 -0
  261. /package/{skills → .agents/skills}/anthropic-plan/templates/source-map.md +0 -0
  262. /package/{skills → .agents/skills}/anthropic-plan/templates/visual-plan.template.html +0 -0
  263. /package/{skills → .agents/skills}/anthropic-plan/workflow/AGENTS.md +0 -0
  264. /package/{skills → .agents/skills}/anthropic-plan/workflow/plan-packet.contract.test.mjs +0 -0
  265. /package/{skills → .agents/skills}/anthropic-plan/workflow/plan-packet.mjs +0 -0
  266. /package/{skills → .agents/skills}/auditing-claude-config/AGENTS.md +0 -0
  267. /package/{skills → .agents/skills}/auditing-claude-config/SKILL.md +0 -0
  268. /package/{skills → .agents/skills}/auditing-claude-config/reference/probe-hook.md +0 -0
  269. /package/{skills → .agents/skills}/autoconverge/AGENTS.md +0 -0
  270. /package/{skills → .agents/skills}/autoconverge/SKILL.md +0 -0
  271. /package/{skills → .agents/skills}/autoconverge/reference/AGENTS.md +0 -0
  272. /package/{skills → .agents/skills}/autoconverge/reference/closing-report.md +0 -0
  273. /package/{skills → .agents/skills}/autoconverge/reference/convergence.md +0 -0
  274. /package/{skills → .agents/skills}/autoconverge/reference/copilot-findings.md +0 -0
  275. /package/{skills → .agents/skills}/autoconverge/reference/gotchas.md +0 -0
  276. /package/{skills → .agents/skills}/autoconverge/reference/headless-safety.md +0 -0
  277. /package/{skills → .agents/skills}/autoconverge/reference/multi-pr.md +0 -0
  278. /package/{skills → .agents/skills}/autoconverge/reference/self-closing-loop.md +0 -0
  279. /package/{skills → .agents/skills}/autoconverge/reference/stop-conditions.md +0 -0
  280. /package/{skills → .agents/skills}/autoconverge/test_portable_pacer_gate.py +0 -0
  281. /package/{skills → .agents/skills}/autoconverge/workflow/AGENTS.md +0 -0
  282. /package/{skills → .agents/skills}/autoconverge/workflow/aggregate_runs.py +0 -0
  283. /package/{skills → .agents/skills}/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +0 -0
  284. /package/{skills → .agents/skills}/autoconverge/workflow/autoconverge_report_constants/__init__.py +0 -0
  285. /package/{skills → .agents/skills}/autoconverge/workflow/autoconverge_report_constants/render_report_constants.py +0 -0
  286. /package/{skills → .agents/skills}/autoconverge/workflow/converge.clean-audit.test.mjs +0 -0
  287. /package/{skills → .agents/skills}/autoconverge/workflow/converge.codex-gate.test.mjs +0 -0
  288. /package/{skills → .agents/skills}/autoconverge/workflow/converge.contract.test.mjs +0 -0
  289. /package/{skills → .agents/skills}/autoconverge/workflow/converge.copilot-gate.test.mjs +0 -0
  290. /package/{skills → .agents/skills}/autoconverge/workflow/converge.fix-progress.test.mjs +0 -0
  291. /package/{skills → .agents/skills}/autoconverge/workflow/converge.fix-recovery.test.mjs +0 -0
  292. /package/{skills → .agents/skills}/autoconverge/workflow/converge.merge-conflict.test.mjs +0 -0
  293. /package/{skills → .agents/skills}/autoconverge/workflow/converge.mjs +0 -0
  294. /package/{skills → .agents/skills}/autoconverge/workflow/converge.p2-advance.test.mjs +0 -0
  295. /package/{skills → .agents/skills}/autoconverge/workflow/converge.path-aware.test.mjs +0 -0
  296. /package/{skills → .agents/skills}/autoconverge/workflow/converge.precatch.test.mjs +0 -0
  297. /package/{skills → .agents/skills}/autoconverge/workflow/converge.run-input.test.mjs +0 -0
  298. /package/{skills → .agents/skills}/autoconverge/workflow/converge_multi.mjs +0 -0
  299. /package/{skills → .agents/skills}/autoconverge/workflow/converge_multi.run-input.test.mjs +0 -0
  300. /package/{skills → .agents/skills}/autoconverge/workflow/convergence_summary.py +0 -0
  301. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +0 -0
  302. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +0 -0
  303. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +0 -0
  304. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +0 -0
  305. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +0 -0
  306. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +0 -0
  307. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ab1c2d3e4f5a6b7c8.jsonl +0 -0
  308. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +0 -0
  309. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +0 -0
  310. /package/{skills → .agents/skills}/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +0 -0
  311. /package/{skills → .agents/skills}/autoconverge/workflow/render_report.py +0 -0
  312. /package/{skills → .agents/skills}/autoconverge/workflow/test_aggregate_runs.py +0 -0
  313. /package/{skills → .agents/skills}/autoconverge/workflow/test_convergence_summary.py +0 -0
  314. /package/{skills → .agents/skills}/autoconverge/workflow/test_render_report.py +0 -0
  315. /package/{skills → .agents/skills}/beat-sheet/SKILL.md +0 -0
  316. /package/{skills → .agents/skills}/beat-sheet/reference/visual-beats.md +0 -0
  317. /package/{skills → .agents/skills}/bugteam/AGENTS.md +0 -0
  318. /package/{skills → .agents/skills}/bugteam/CONSTRAINTS.md +0 -0
  319. /package/{skills → .agents/skills}/bugteam/EXAMPLES.md +0 -0
  320. /package/{skills → .agents/skills}/bugteam/PROMPTS.md +0 -0
  321. /package/{skills → .agents/skills}/bugteam/SKILL.md +0 -0
  322. /package/{skills → .agents/skills}/bugteam/reference/AGENTS.md +0 -0
  323. /package/{skills → .agents/skills}/bugteam/reference/README.md +0 -0
  324. /package/{skills → .agents/skills}/bugteam/reference/audit-and-teammates.md +0 -0
  325. /package/{skills → .agents/skills}/bugteam/reference/copilot-gap-analysis.md +0 -0
  326. /package/{skills → .agents/skills}/bugteam/reference/design-rationale.md +0 -0
  327. /package/{skills → .agents/skills}/bugteam/reference/github-pr-reviews.md +0 -0
  328. /package/{skills → .agents/skills}/bugteam/reference/obstacles/AGENTS.md +0 -0
  329. /package/{skills → .agents/skills}/bugteam/reference/obstacles/audit-assign-ids.md +0 -0
  330. /package/{skills → .agents/skills}/bugteam/reference/obstacles/audit-capture-excerpts.md +0 -0
  331. /package/{skills → .agents/skills}/bugteam/reference/obstacles/audit-walk-categories.md +0 -0
  332. /package/{skills → .agents/skills}/bugteam/reference/obstacles/audit-write-xml.md +0 -0
  333. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-append-summary.md +0 -0
  334. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-apply-fixes.md +0 -0
  335. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-git-add-commit.md +0 -0
  336. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-git-push.md +0 -0
  337. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-post-reply.md +0 -0
  338. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-publish-summary.md +0 -0
  339. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-py-compile.md +0 -0
  340. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-read-files.md +0 -0
  341. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-resolve-thread.md +0 -0
  342. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-test-suite.md +0 -0
  343. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-violation-count.md +0 -0
  344. /package/{skills → .agents/skills}/bugteam/reference/obstacles/fix-write-xml.md +0 -0
  345. /package/{skills → .agents/skills}/bugteam/reference/team-setup.md +0 -0
  346. /package/{skills → .agents/skills}/bugteam/scripts/AGENTS.md +0 -0
  347. /package/{skills → .agents/skills}/bugteam/scripts/README.md +0 -0
  348. /package/{skills → .agents/skills}/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +0 -0
  349. /package/{skills → .agents/skills}/bugteam/scripts/bugteam_scripts_constants/__init__.py +0 -0
  350. /package/{skills → .agents/skills}/bugteam/scripts/bugteam_scripts_constants/probe_code_rules_enforcer_check_constants.py +0 -0
  351. /package/{skills → .agents/skills}/bugteam/scripts/bugteam_scripts_constants/reflow_skill_md_constants.py +0 -0
  352. /package/{skills → .agents/skills}/bugteam/scripts/bugteam_scripts_constants/windows_safe_rmtree_constants.py +0 -0
  353. /package/{skills → .agents/skills}/bugteam/scripts/probe_code_rules_enforcer_check.py +0 -0
  354. /package/{skills → .agents/skills}/bugteam/scripts/test_bugteam_code_rules_gate.py +0 -0
  355. /package/{skills → .agents/skills}/bugteam/scripts/test_bugteam_fix_hookspath.py +0 -0
  356. /package/{skills → .agents/skills}/bugteam/scripts/test_bugteam_preflight.py +0 -0
  357. /package/{skills → .agents/skills}/bugteam/scripts/test_probe_code_rules_enforcer_check.py +0 -0
  358. /package/{skills → .agents/skills}/bugteam/scripts/test_windows_safe_rmtree.py +0 -0
  359. /package/{skills → .agents/skills}/bugteam/scripts/windows_safe_rmtree.py +0 -0
  360. /package/{skills → .agents/skills}/bugteam/sources.md +0 -0
  361. /package/{skills → .agents/skills}/bugteam/test_skill_additions.py +0 -0
  362. /package/{skills → .agents/skills}/closeout/SKILL.md +0 -0
  363. /package/{skills → .agents/skills}/closeout/reference/handoff-prompt-template.md +0 -0
  364. /package/{skills → .agents/skills}/closeout/reference/pii-redaction-checklist.md +0 -0
  365. /package/{skills → .agents/skills}/codex-review/AGENTS.md +0 -0
  366. /package/{skills → .agents/skills}/codex-review/SKILL.md +0 -0
  367. /package/{skills → .agents/skills}/codex-review/reference/AGENTS.md +0 -0
  368. /package/{skills → .agents/skills}/codex-review/reference/cli-contract.md +0 -0
  369. /package/{skills → .agents/skills}/codex-review/reference/loop-integration.md +0 -0
  370. /package/{skills → .agents/skills}/codex-review/scripts/codex_down_classifier.py +0 -0
  371. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +0 -0
  372. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/__init__.py +0 -0
  373. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/classifier_constants.py +0 -0
  374. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/codex_usage_probe_constants.py +0 -0
  375. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/findings_constants.py +0 -0
  376. /package/{skills → .agents/skills}/codex-review/scripts/codex_review_scripts_constants/run_constants.py +0 -0
  377. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/auth_failure_synthetic.txt +0 -0
  378. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/config_load_failure_v0.125.0.txt +0 -0
  379. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/freeform_findings_v0.144.3.txt +0 -0
  380. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/model_rejection_v0.125.0.jsonl +0 -0
  381. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/structured_findings.txt +0 -0
  382. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/success_stream_v0.144.3.jsonl +0 -0
  383. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/unknown_failure_synthetic.txt +0 -0
  384. /package/{skills → .agents/skills}/codex-review/scripts/fixtures/usage_limit_synthetic.txt +0 -0
  385. /package/{skills → .agents/skills}/codex-review/scripts/parse_codex_findings.py +0 -0
  386. /package/{skills → .agents/skills}/codex-review/scripts/test_codex_down_classifier.py +0 -0
  387. /package/{skills → .agents/skills}/codex-review/scripts/test_codex_usage_probe.py +0 -0
  388. /package/{skills → .agents/skills}/codex-review/scripts/test_parse_codex_findings.py +0 -0
  389. /package/{skills → .agents/skills}/codex-review/scripts/test_run_codex_review.py +0 -0
  390. /package/{skills → .agents/skills}/comments/SKILL.md +0 -0
  391. /package/{skills → .agents/skills}/condensing-instructions/SKILL.md +0 -0
  392. /package/{skills → .agents/skills}/copilot-finding-triage/SKILL.md +0 -0
  393. /package/{skills → .agents/skills}/copilot-finding-triage/reference/tier-rubric.md +0 -0
  394. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/conftest.py +0 -0
  395. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/copilot_finding_triage_constants/__init__.py +0 -0
  396. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/copilot_finding_triage_constants/config/__init__.py +0 -0
  397. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/copilot_finding_triage_constants/config/notify_ntfy_constants.py +0 -0
  398. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/notify_ntfy.py +0 -0
  399. /package/{skills → .agents/skills}/copilot-finding-triage/scripts/test_notify_ntfy.py +0 -0
  400. /package/{skills → .agents/skills}/copilot-finding-triage/templates/notification.md +0 -0
  401. /package/{skills → .agents/skills}/copilot-review/AGENTS.md +0 -0
  402. /package/{skills → .agents/skills}/copilot-review/SKILL.md +0 -0
  403. /package/{skills → .agents/skills}/copilot-review/templates/subagent-prompt.md +0 -0
  404. /package/{skills → .agents/skills}/descriptions/SKILL.md +0 -0
  405. /package/{skills → .agents/skills}/e-code-review/SKILL.md +0 -0
  406. /package/{skills → .agents/skills}/e-code-review/reference/fix.md +0 -0
  407. /package/{skills → .agents/skills}/e-code-review/reference/loop.md +0 -0
  408. /package/{skills → .agents/skills}/e-code-review/reference/low.md +0 -0
  409. /package/{skills → .agents/skills}/e-code-review/reference/medium.md +0 -0
  410. /package/{skills → .agents/skills}/e-code-review/reference/runner-selection.md +0 -0
  411. /package/{skills → .agents/skills}/e-code-review/reference/xhigh.md +0 -0
  412. /package/{skills → .agents/skills}/e-code-review/scripts/config/e_code_review_effort_constants/__init__.py +0 -0
  413. /package/{skills → .agents/skills}/e-code-review/scripts/config/e_code_review_effort_constants/effort_constants.py +0 -0
  414. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/__init__.py +0 -0
  415. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/finding_pipeline_constants.py +0 -0
  416. /package/{skills → .agents/skills}/e-code-review/scripts/e_code_review_scripts_constants/grok_code_review_constants.py +0 -0
  417. /package/{skills → .agents/skills}/e-code-review/scripts/effort_defaults_evidence.json +0 -0
  418. /package/{skills → .agents/skills}/e-code-review/scripts/effort_evaluation.py +0 -0
  419. /package/{skills → .agents/skills}/e-code-review/scripts/finding_pipeline.py +0 -0
  420. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/demanding.json +0 -0
  421. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/easy.json +0 -0
  422. /package/{skills → .agents/skills}/e-code-review/scripts/fixtures/medium.json +0 -0
  423. /package/{skills → .agents/skills}/e-code-review/scripts/grok_code_review.py +0 -0
  424. /package/{skills → .agents/skills}/e-code-review/scripts/test_effort_evaluation.py +0 -0
  425. /package/{skills → .agents/skills}/e-code-review/scripts/test_finding_pipeline.py +0 -0
  426. /package/{skills → .agents/skills}/e-code-review/scripts/test_grok_code_review.py +0 -0
  427. /package/{skills → .agents/skills}/e-simplify/SKILL.md +0 -0
  428. /package/{skills → .agents/skills}/emergencies/SKILL.md +0 -0
  429. /package/{skills → .agents/skills}/everything-search/AGENTS.md +0 -0
  430. /package/{skills → .agents/skills}/everything-search/SKILL.md +0 -0
  431. /package/{skills → .agents/skills}/fresh-branch/AGENTS.md +0 -0
  432. /package/{skills → .agents/skills}/fresh-branch/SKILL.md +0 -0
  433. /package/{skills → .agents/skills}/fresh-branch/scripts/create_fresh_branch.py +0 -0
  434. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_git_commands.py +0 -0
  435. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_scripts_constants/__init__.py +0 -0
  436. /package/{skills → .agents/skills}/fresh-branch/scripts/fresh_branch_scripts_constants/fresh_branch_cli_constants.py +0 -0
  437. /package/{skills → .agents/skills}/fresh-branch/scripts/pytest.ini +0 -0
  438. /package/{skills → .agents/skills}/fresh-branch/scripts/test_create_fresh_branch.py +0 -0
  439. /package/{skills → .agents/skills}/fresh-branch/scripts/test_fresh_branch_git_commands.py +0 -0
  440. /package/{skills → .agents/skills}/grok-spawn/AGENTS.md +0 -0
  441. /package/{skills → .agents/skills}/grok-spawn/SKILL.md +0 -0
  442. /package/{skills → .agents/skills}/grok-spawn/reference/flag-profiles.md +0 -0
  443. /package/{skills → .agents/skills}/grok-spawn/reference/worker-briefs.md +0 -0
  444. /package/{skills → .agents/skills}/grokify/SKILL.md +0 -0
  445. /package/{skills → .agents/skills}/grokify/capability-claims.test.mjs +0 -0
  446. /package/{skills → .agents/skills}/grokify/evals/parse-payload.test.mjs +0 -0
  447. /package/{skills → .agents/skills}/grokify/evals/run-capability-evals.mjs +0 -0
  448. /package/{skills → .agents/skills}/grokify/templates/handoff-template.md +0 -0
  449. /package/{skills → .agents/skills}/issue-tracker/SKILL.md +0 -0
  450. /package/{skills → .agents/skills}/issue-tracker/reference/epic-and-sub-issue-model.md +0 -0
  451. /package/{skills → .agents/skills}/issue-tracker/reference/handoff-schema.md +0 -0
  452. /package/{skills → .agents/skills}/issue-tracker/reference/operation-matrix.md +0 -0
  453. /package/{skills → .agents/skills}/orchestrator/SKILL.md +0 -0
  454. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate.py +0 -0
  455. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/__init__.py +0 -0
  456. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/config/__init__.py +0 -0
  457. /package/{skills → .agents/skills}/orchestrator/scripts/status_gate_constants/config/constants.py +0 -0
  458. /package/{skills → .agents/skills}/orchestrator/scripts/test_status_gate.py +0 -0
  459. /package/{skills → .agents/skills}/orchestrator-refresh/SKILL.md +0 -0
  460. /package/{skills → .agents/skills}/plan-to-pr/SKILL.md +0 -0
  461. /package/{skills → .agents/skills}/plan-to-pr/reference/final-validation-tasks.md +0 -0
  462. /package/{skills → .agents/skills}/plan-to-pr/reference/model-routing.md +0 -0
  463. /package/{skills → .agents/skills}/plan-to-pr/reference/packet-contract.md +0 -0
  464. /package/{skills → .agents/skills}/plan-to-pr/reference/packet-schema.json +0 -0
  465. /package/{skills → .agents/skills}/plan-to-pr/reference/process-inventory.md +0 -0
  466. /package/{skills → .agents/skills}/plan-to-pr/reference/review-loop.md +0 -0
  467. /package/{skills → .agents/skills}/plan-to-pr/reference/run-record.schema.json +0 -0
  468. /package/{skills → .agents/skills}/plan-to-pr/reference/self-audit-tasks.md +0 -0
  469. /package/{skills → .agents/skills}/plan-to-pr/reference/task-seeds.md +0 -0
  470. /package/{skills → .agents/skills}/plan-to-pr/reference/task-ticket.md +0 -0
  471. /package/{skills → .agents/skills}/plan-to-pr/scripts/config/__init__.py +0 -0
  472. /package/{skills → .agents/skills}/plan-to-pr/scripts/config/constants.py +0 -0
  473. /package/{skills → .agents/skills}/plan-to-pr/scripts/create_packet.py +0 -0
  474. /package/{skills → .agents/skills}/plan-to-pr/scripts/load_skill_constants.py +0 -0
  475. /package/{skills → .agents/skills}/plan-to-pr/scripts/test_create_packet.py +0 -0
  476. /package/{skills → .agents/skills}/plan-to-pr/scripts/test_validate_packet.py +0 -0
  477. /package/{skills → .agents/skills}/plan-to-pr/scripts/test_validate_protocol.py +0 -0
  478. /package/{skills → .agents/skills}/plan-to-pr/scripts/test_validate_run.py +0 -0
  479. /package/{skills → .agents/skills}/plan-to-pr/scripts/validate_packet.py +0 -0
  480. /package/{skills → .agents/skills}/plan-to-pr/scripts/validate_protocol.py +0 -0
  481. /package/{skills → .agents/skills}/plan-to-pr/scripts/validate_run.py +0 -0
  482. /package/{skills → .agents/skills}/plan-to-pr/test_skill_contract.py +0 -0
  483. /package/{skills → .agents/skills}/plan-to-pr/test_task_ticket_contract.py +0 -0
  484. /package/{skills → .agents/skills}/pr-converge/AGENTS.md +0 -0
  485. /package/{skills → .agents/skills}/pr-converge/SKILL.md +0 -0
  486. /package/{skills → .agents/skills}/pr-converge/pr_converge_skill_constants/__init__.py +0 -0
  487. /package/{skills → .agents/skills}/pr-converge/reference/AGENTS.md +0 -0
  488. /package/{skills → .agents/skills}/pr-converge/reference/convergence-gates.md +0 -0
  489. /package/{skills → .agents/skills}/pr-converge/reference/examples.md +0 -0
  490. /package/{skills → .agents/skills}/pr-converge/reference/fix-protocol.md +0 -0
  491. /package/{skills → .agents/skills}/pr-converge/reference/ground-rules.md +0 -0
  492. /package/{skills → .agents/skills}/pr-converge/reference/multi-pr-orchestration.md +0 -0
  493. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/AGENTS.md +0 -0
  494. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-post-replies.md +0 -0
  495. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-publish-summary.md +0 -0
  496. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-push.md +0 -0
  497. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-read-filelines.md +0 -0
  498. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-reset-state.md +0 -0
  499. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-resolve-threads.md +0 -0
  500. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-spawn-clean-coder.md +0 -0
  501. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-stage-commit.md +0 -0
  502. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-trigger-bugbot.md +0 -0
  503. /package/{skills → .agents/skills}/pr-converge/reference/obstacles/fix-write-test.md +0 -0
  504. /package/{skills → .agents/skills}/pr-converge/reference/per-tick.md +0 -0
  505. /package/{skills → .agents/skills}/pr-converge/reference/progress-checklist.md +0 -0
  506. /package/{skills → .agents/skills}/pr-converge/reference/state-schema.md +0 -0
  507. /package/{skills → .agents/skills}/pr-converge/reference/stop-conditions.md +0 -0
  508. /package/{skills → .agents/skills}/pr-converge/scripts/AGENTS.md +0 -0
  509. /package/{skills → .agents/skills}/pr-converge/scripts/README.md +0 -0
  510. /package/{skills → .agents/skills}/pr-converge/scripts/caller-window-pid.ps1 +0 -0
  511. /package/{skills → .agents/skills}/pr-converge/scripts/check_bugbot_ci.py +0 -0
  512. /package/{skills → .agents/skills}/pr-converge/scripts/check_convergence.py +0 -0
  513. /package/{skills → .agents/skills}/pr-converge/scripts/check_convergence_availability.py +0 -0
  514. /package/{skills → .agents/skills}/pr-converge/scripts/check_convergence_gates.py +0 -0
  515. /package/{skills → .agents/skills}/pr-converge/scripts/check_convergence_thread_gates.py +0 -0
  516. /package/{skills → .agents/skills}/pr-converge/scripts/check_pending_reviews.py +0 -0
  517. /package/{skills → .agents/skills}/pr-converge/scripts/conftest.py +0 -0
  518. /package/{skills → .agents/skills}/pr-converge/scripts/cursor-agents-continue-caller.cmd +0 -0
  519. /package/{skills → .agents/skills}/pr-converge/scripts/cursor-agents-continue-stop-others.ps1 +0 -0
  520. /package/{skills → .agents/skills}/pr-converge/scripts/cursor-agents-continue.ahk +0 -0
  521. /package/{skills → .agents/skills}/pr-converge/scripts/cursor-agents-continue.cmd +0 -0
  522. /package/{skills → .agents/skills}/pr-converge/scripts/fetch_copilot_reviews.py +0 -0
  523. /package/{skills → .agents/skills}/pr-converge/scripts/post_fix_reply.py +0 -0
  524. /package/{skills → .agents/skills}/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +0 -0
  525. /package/{skills → .agents/skills}/pr-converge/scripts/pr_converge_scripts_constants/__init__.py +0 -0
  526. /package/{skills → .agents/skills}/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +0 -0
  527. /package/{skills → .agents/skills}/pr-converge/scripts/pr_converge_scripts_constants/pr_converge_constants.py +0 -0
  528. /package/{skills → .agents/skills}/pr-converge/scripts/pr_converge_scripts_constants/reflow_skill_md_constants.py +0 -0
  529. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_bugbot_ci.py +0 -0
  530. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence.py +0 -0
  531. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_availability.py +0 -0
  532. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_codex.py +0 -0
  533. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_contract.py +0 -0
  534. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_fixture.py +0 -0
  535. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_gates.py +0 -0
  536. /package/{skills → .agents/skills}/pr-converge/scripts/test_check_convergence_thread_gates.py +0 -0
  537. /package/{skills → .agents/skills}/pr-converge/scripts/test_cursor_agents_continue.py +0 -0
  538. /package/{skills → .agents/skills}/pr-converge/scripts/test_reflow_skill_md.py +0 -0
  539. /package/{skills → .agents/skills}/pr-converge/test_portable_pacer_gate.py +0 -0
  540. /package/{skills → .agents/skills}/pr-converge/test_step5_host_branch.py +0 -0
  541. /package/{skills → .agents/skills}/pr-converge/workflows/AGENTS.md +0 -0
  542. /package/{skills → .agents/skills}/pr-converge/workflows/schedule-wakeup-loop.md +0 -0
  543. /package/{skills → .agents/skills}/pr-fix-protocol/SKILL.md +0 -0
  544. /package/{skills → .agents/skills}/pr-loop-cloud-transport/SKILL.md +0 -0
  545. /package/{skills → .agents/skills}/pr-loop-cloud-transport/reference/identity-and-hooks.md +0 -0
  546. /package/{skills → .agents/skills}/pr-loop-cloud-transport/reference/substitution-matrix.md +0 -0
  547. /package/{skills → .agents/skills}/pr-loop-lifecycle/SKILL.md +0 -0
  548. /package/{skills → .agents/skills}/pr-loop-lifecycle/reference/teardown-publish-permissions.md +0 -0
  549. /package/{skills → .agents/skills}/privacy-hygiene/SKILL.md +0 -0
  550. /package/{skills → .agents/skills}/privacy-hygiene/reference/sweep-procedure.md +0 -0
  551. /package/{skills → .agents/skills}/prototype/SKILL.md +0 -0
  552. /package/{skills → .agents/skills}/prototype/reference/honest-limitations.md +0 -0
  553. /package/{skills → .agents/skills}/prototype/reference/promotion-tasks.md +0 -0
  554. /package/{skills → .agents/skills}/prototype/scripts/build_sandbox_settings.py +0 -0
  555. /package/{skills → .agents/skills}/prototype/scripts/conftest.py +0 -0
  556. /package/{skills → .agents/skills}/prototype/scripts/launch_sandbox.py +0 -0
  557. /package/{skills → .agents/skills}/prototype/scripts/probe_sandbox_safety.py +0 -0
  558. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/__init__.py +0 -0
  559. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
  560. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +0 -0
  561. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +0 -0
  562. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +0 -0
  563. /package/{skills → .agents/skills}/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +0 -0
  564. /package/{skills → .agents/skills}/prototype/scripts/test_build_sandbox_settings.py +0 -0
  565. /package/{skills → .agents/skills}/prototype/scripts/test_launch_sandbox.py +0 -0
  566. /package/{skills → .agents/skills}/prototype/workflows/promotion.md +0 -0
  567. /package/{skills → .agents/skills}/prototype/workflows/sandbox.md +0 -0
  568. /package/{skills → .agents/skills}/rebase/AGENTS.md +0 -0
  569. /package/{skills → .agents/skills}/rebase/SKILL.md +0 -0
  570. /package/{skills → .agents/skills}/recall/AGENTS.md +0 -0
  571. /package/{skills → .agents/skills}/recall/SKILL.md +0 -0
  572. /package/{skills → .agents/skills}/release-notes-html/SKILL.md +0 -0
  573. /package/{skills → .agents/skills}/remember/AGENTS.md +0 -0
  574. /package/{skills → .agents/skills}/remember/SKILL.md +0 -0
  575. /package/{skills → .agents/skills}/reviewer-gates/SKILL.md +0 -0
  576. /package/{skills → .agents/skills}/reviews/SKILL.md +0 -0
  577. /package/{skills → .agents/skills}/session-log/AGENTS.md +0 -0
  578. /package/{skills → .agents/skills}/session-log/SKILL.md +0 -0
  579. /package/{skills → .agents/skills}/session-log/templates/frontmatter.md +0 -0
  580. /package/{skills → .agents/skills}/session-tidy/AGENTS.md +0 -0
  581. /package/{skills → .agents/skills}/session-tidy/SKILL.md +0 -0
  582. /package/{skills → .agents/skills}/show/SKILL.md +0 -0
  583. /package/{skills → .agents/skills}/show/references/accessibility.md +0 -0
  584. /package/{skills → .agents/skills}/show/references/art.md +0 -0
  585. /package/{skills → .agents/skills}/show/references/charts.md +0 -0
  586. /package/{skills → .agents/skills}/show/references/core-design.md +0 -0
  587. /package/{skills → .agents/skills}/show/references/erds.md +0 -0
  588. /package/{skills → .agents/skills}/show/references/flowcharts.md +0 -0
  589. /package/{skills → .agents/skills}/show/references/host-and-html.md +0 -0
  590. /package/{skills → .agents/skills}/show/references/illustrative-diagrams.md +0 -0
  591. /package/{skills → .agents/skills}/show/references/interaction.md +0 -0
  592. /package/{skills → .agents/skills}/show/references/mockups.md +0 -0
  593. /package/{skills → .agents/skills}/show/references/quality-gates.md +0 -0
  594. /package/{skills → .agents/skills}/show/references/structural-diagrams.md +0 -0
  595. /package/{skills → .agents/skills}/show/references/subject-inventory.md +0 -0
  596. /package/{skills → .agents/skills}/show/references/svg-contract.md +0 -0
  597. /package/{skills → .agents/skills}/show/routing.yaml +0 -0
  598. /package/{skills → .agents/skills}/show/samples/pr1262-v2.svg +0 -0
  599. /package/{skills → .agents/skills}/show/scripts/README.md +0 -0
  600. /package/{skills → .agents/skills}/show/scripts/validate-artifact.py +0 -0
  601. /package/{skills → .agents/skills}/show/scripts/validate-package.py +0 -0
  602. /package/{skills → .agents/skills}/show/templates/html-widget.html +0 -0
  603. /package/{skills → .agents/skills}/show/templates/svg-base.svg +0 -0
  604. /package/{skills → .agents/skills}/show/tests/fixtures/css-var.svg +0 -0
  605. /package/{skills → .agents/skills}/show/tests/fixtures/dead-ref.svg +0 -0
  606. /package/{skills → .agents/skills}/show/tests/fixtures/filled-glyph.svg +0 -0
  607. /package/{skills → .agents/skills}/show/tests/fixtures/inherited-fill.svg +0 -0
  608. /package/{skills → .agents/skills}/show/tests/fixtures/invalid.svg +0 -0
  609. /package/{skills → .agents/skills}/show/tests/fixtures/large-canvas.svg +0 -0
  610. /package/{skills → .agents/skills}/show/tests/fixtures/unfilled-connector.svg +0 -0
  611. /package/{skills → .agents/skills}/show/tests/fixtures/valid.html +0 -0
  612. /package/{skills → .agents/skills}/show/tests/test_validate-artifact.py +0 -0
  613. /package/{skills → .agents/skills}/show/tests/test_validators.py +0 -0
  614. /package/{skills → .agents/skills}/show/workflows/create-visual.md +0 -0
  615. /package/{skills → .agents/skills}/show/workflows/review-visual.md +0 -0
  616. /package/{skills → .agents/skills}/skill-builder/AGENTS.md +0 -0
  617. /package/{skills → .agents/skills}/skill-builder/SKILL.md +0 -0
  618. /package/{skills → .agents/skills}/skill-builder/references/AGENTS.md +0 -0
  619. /package/{skills → .agents/skills}/skill-builder/references/delegation-map.md +0 -0
  620. /package/{skills → .agents/skills}/skill-builder/references/description-field.md +0 -0
  621. /package/{skills → .agents/skills}/skill-builder/references/progressive-disclosure.md +0 -0
  622. /package/{skills → .agents/skills}/skill-builder/references/self-audit-checklist.md +0 -0
  623. /package/{skills → .agents/skills}/skill-builder/references/skill-modularity.md +0 -0
  624. /package/{skills → .agents/skills}/skill-builder/references/skill-types.md +0 -0
  625. /package/{skills → .agents/skills}/skill-builder/references/thariq-x-post-skills.json +0 -0
  626. /package/{skills → .agents/skills}/skill-builder/templates/AGENTS.md +0 -0
  627. /package/{skills → .agents/skills}/skill-builder/templates/gap-analysis.md +0 -0
  628. /package/{skills → .agents/skills}/skill-builder/workflows/AGENTS.md +0 -0
  629. /package/{skills → .agents/skills}/skill-builder/workflows/improve-skill.md +0 -0
  630. /package/{skills → .agents/skills}/skill-builder/workflows/new-skill.md +0 -0
  631. /package/{skills → .agents/skills}/skill-builder/workflows/polish-skill.md +0 -0
  632. /package/{skills → .agents/skills}/small-cl/SKILL.md +0 -0
  633. /package/{skills → .agents/skills}/split-pr/SKILL.md +0 -0
  634. /package/{skills → .agents/skills}/split-pr/reference/path-layers.md +0 -0
  635. /package/{skills → .agents/skills}/split-pr/reference/split-further-loop.md +0 -0
  636. /package/{skills → .agents/skills}/split-pr/reference/splitting-principles.md +0 -0
  637. /package/{skills → .agents/skills}/split-pr/scripts/analyze_pr.py +0 -0
  638. /package/{skills → .agents/skills}/split-pr/scripts/categorize_files.py +0 -0
  639. /package/{skills → .agents/skills}/split-pr/scripts/config/__init__.py +0 -0
  640. /package/{skills → .agents/skills}/split-pr/scripts/config/dependency_constants.py +0 -0
  641. /package/{skills → .agents/skills}/split-pr/scripts/config/git_operations_constants.py +0 -0
  642. /package/{skills → .agents/skills}/split-pr/scripts/config/packing_constants.py +0 -0
  643. /package/{skills → .agents/skills}/split-pr/scripts/config/plan_constants.py +0 -0
  644. /package/{skills → .agents/skills}/split-pr/scripts/config/split_pr_constants.py +0 -0
  645. /package/{skills → .agents/skills}/split-pr/scripts/execute_split_slices.py +0 -0
  646. /package/{skills → .agents/skills}/split-pr/scripts/pack_files_into_slices.py +0 -0
  647. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_dependency_graph.py +0 -0
  648. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_git_operations.py +0 -0
  649. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_layer_order.py +0 -0
  650. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_paginate.py +0 -0
  651. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_process_runner.py +0 -0
  652. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_script_types.py +0 -0
  653. /package/{skills → .agents/skills}/split-pr/scripts/split_pr_title.py +0 -0
  654. /package/{skills → .agents/skills}/split-pr/scripts/test_analyze_pr.py +0 -0
  655. /package/{skills → .agents/skills}/split-pr/scripts/test_categorize_files.py +0 -0
  656. /package/{skills → .agents/skills}/split-pr/scripts/test_categorize_files_packing.py +0 -0
  657. /package/{skills → .agents/skills}/split-pr/scripts/test_execute_split_slices.py +0 -0
  658. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_dependency_graph.py +0 -0
  659. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_git_operations.py +0 -0
  660. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_layer_order.py +0 -0
  661. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_paginate.py +0 -0
  662. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_script_types.py +0 -0
  663. /package/{skills → .agents/skills}/split-pr/scripts/test_split_pr_title.py +0 -0
  664. /package/{skills → .agents/skills}/split-pr/scripts/test_verify_dependency_graph.py +0 -0
  665. /package/{skills → .agents/skills}/split-pr/scripts/test_verify_plan.py +0 -0
  666. /package/{skills → .agents/skills}/split-pr/scripts/test_verify_plan_contract.py +0 -0
  667. /package/{skills → .agents/skills}/split-pr/scripts/test_verify_plan_path_normalization.py +0 -0
  668. /package/{skills → .agents/skills}/split-pr/scripts/verify_dependency_graph.py +0 -0
  669. /package/{skills → .agents/skills}/split-pr/scripts/verify_plan.py +0 -0
  670. /package/{skills → .agents/skills}/task-build/AGENTS.md +0 -0
  671. /package/{skills → .agents/skills}/task-build/SKILL.md +0 -0
  672. /package/{skills → .agents/skills}/task-build/reference/tool-routing.md +0 -0
  673. /package/{skills → .agents/skills}/team-advisor/SKILL.md +0 -0
  674. /package/{skills → .agents/skills}/team-advisor/reference/advisor-docs-review.md +0 -0
  675. /package/{skills → .agents/skills}/update/AGENTS.md +0 -0
  676. /package/{skills → .agents/skills}/update/SKILL.md +0 -0
  677. /package/{skills → .agents/skills}/usage-pause/SKILL.md +0 -0
  678. /package/{skills → .agents/skills}/usage-pause/scripts/resolve_usage_window.py +0 -0
  679. /package/{skills → .agents/skills}/usage-pause/scripts/test_resolve_usage_window.py +0 -0
  680. /package/{skills → .agents/skills}/usage-pause/scripts/usage_pause_constants/__init__.py +0 -0
  681. /package/{skills → .agents/skills}/usage-pause/scripts/usage_pause_constants/resolve_usage_window_constants.py +0 -0
@@ -1,275 +0,0 @@
1
- /**
2
- * Profile MCP bundle validation and materialization.
3
- *
4
- * Bundles map to server inventories written through the supported activation
5
- * interface (profile CLAUDE_CONFIG_DIR mcp.json).
6
- */
7
-
8
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
9
- import { dirname, join } from 'node:path';
10
- import { fileURLToPath } from 'node:url';
11
- import {
12
- loadProfilesManifestDocument,
13
- MCP_BUNDLE_FULL,
14
- MCP_BUNDLE_LEAN,
15
- } from './config/profile-isolation-constants.mjs';
16
- import {
17
- resolveProfileDefinition,
18
- validateProfilesManifest,
19
- } from './lib/profile-manifest.mjs';
20
-
21
- const MODULE_DIRECTORY = dirname(fileURLToPath(import.meta.url));
22
- const MCP_BUNDLES_CONFIG_PATH = join(MODULE_DIRECTORY, 'config', 'mcp-bundles.json');
23
- const SUPPORTED_ACTIVATION_INTERFACE = 'claude-config-dir-mcp-json';
24
- const DEFAULT_MCP_CONFIG_FILE_NAME = 'mcp.json';
25
-
26
- /**
27
- * @typedef {{
28
- * schemaVersion: number,
29
- * supportedActivationInterface: string,
30
- * mcpConfigFileName: string,
31
- * bundles: Record<string, {id: string, allServerNames: string[]}>,
32
- * serverByName: Record<string, {command: string, args: string[]}>,
33
- * }} McpBundlesDocument
34
- */
35
-
36
- /**
37
- * @returns {McpBundlesDocument}
38
- */
39
- export function loadMcpBundlesDocument() {
40
- const raw = JSON.parse(readFileSync(MCP_BUNDLES_CONFIG_PATH, 'utf8'));
41
- return validateMcpBundlesDocument(raw);
42
- }
43
-
44
- /**
45
- * @param {unknown} maybeDocument
46
- * @returns {McpBundlesDocument}
47
- */
48
- export function validateMcpBundlesDocument(maybeDocument) {
49
- if (!maybeDocument || typeof maybeDocument !== 'object' || Array.isArray(maybeDocument)) {
50
- throw new Error('mcp bundles document must be a JSON object');
51
- }
52
- const document = /** @type {Record<string, unknown>} */ (maybeDocument);
53
- if (document.schemaVersion !== 1) {
54
- throw new Error('mcp bundles schemaVersion must be 1');
55
- }
56
- if (document.supportedActivationInterface !== SUPPORTED_ACTIVATION_INTERFACE) {
57
- throw new Error(
58
- `supportedActivationInterface must be ${SUPPORTED_ACTIVATION_INTERFACE}`,
59
- );
60
- }
61
- const mcpConfigFileName = document.mcpConfigFileName;
62
- if (typeof mcpConfigFileName !== 'string' || mcpConfigFileName.length === 0) {
63
- throw new Error('mcpConfigFileName must be a non-empty string');
64
- }
65
- if (
66
- !document.bundles
67
- || typeof document.bundles !== 'object'
68
- || Array.isArray(document.bundles)
69
- ) {
70
- throw new Error('bundles must be an object');
71
- }
72
- if (
73
- !document.serverByName
74
- || typeof document.serverByName !== 'object'
75
- || Array.isArray(document.serverByName)
76
- ) {
77
- throw new Error('serverByName must be an object');
78
- }
79
- /** @type {Record<string, {id: string, allServerNames: string[]}>} */
80
- const bundles = {};
81
- for (const [eachBundleId, eachBundleValue] of Object.entries(
82
- /** @type {Record<string, unknown>} */ (document.bundles),
83
- )) {
84
- if (
85
- !eachBundleValue
86
- || typeof eachBundleValue !== 'object'
87
- || Array.isArray(eachBundleValue)
88
- ) {
89
- throw new Error(`bundle ${eachBundleId} must be an object`);
90
- }
91
- const bundle = /** @type {Record<string, unknown>} */ (eachBundleValue);
92
- if (bundle.id !== eachBundleId) {
93
- throw new Error(`bundle id mismatch for ${eachBundleId}`);
94
- }
95
- if (!Array.isArray(bundle.allServerNames) || bundle.allServerNames.length === 0) {
96
- throw new Error(`bundle ${eachBundleId} requires allServerNames`);
97
- }
98
- bundles[eachBundleId] = {
99
- id: eachBundleId,
100
- allServerNames: bundle.allServerNames.map(String),
101
- };
102
- }
103
- if (!(MCP_BUNDLE_LEAN in bundles) || !(MCP_BUNDLE_FULL in bundles)) {
104
- throw new Error('bundles must define lean and full');
105
- }
106
- const leanServerNames = new Set(bundles[MCP_BUNDLE_LEAN].allServerNames);
107
- for (const eachLeanServerName of leanServerNames) {
108
- if (!bundles[MCP_BUNDLE_FULL].allServerNames.includes(eachLeanServerName)) {
109
- throw new Error(
110
- `lean server ${eachLeanServerName} must also appear in full`,
111
- );
112
- }
113
- }
114
- /** @type {Record<string, {command: string, args: string[]}>} */
115
- const serverByName = {};
116
- for (const [eachServerName, eachServerValue] of Object.entries(
117
- /** @type {Record<string, unknown>} */ (document.serverByName),
118
- )) {
119
- if (
120
- !eachServerValue
121
- || typeof eachServerValue !== 'object'
122
- || Array.isArray(eachServerValue)
123
- ) {
124
- throw new Error(`server ${eachServerName} must be an object`);
125
- }
126
- const server = /** @type {Record<string, unknown>} */ (eachServerValue);
127
- if (typeof server.command !== 'string' || server.command.length === 0) {
128
- throw new Error(`server ${eachServerName} requires command`);
129
- }
130
- if (!Array.isArray(server.args)) {
131
- throw new Error(`server ${eachServerName} requires args array`);
132
- }
133
- serverByName[eachServerName] = {
134
- command: server.command,
135
- args: server.args.map(String),
136
- };
137
- }
138
- for (const eachBundle of Object.values(bundles)) {
139
- for (const eachServerName of eachBundle.allServerNames) {
140
- if (!(eachServerName in serverByName)) {
141
- throw new Error(
142
- `bundle ${eachBundle.id} references unknown server ${eachServerName}`,
143
- );
144
- }
145
- }
146
- }
147
- return {
148
- schemaVersion: 1,
149
- supportedActivationInterface: SUPPORTED_ACTIVATION_INTERFACE,
150
- mcpConfigFileName: String(mcpConfigFileName),
151
- bundles,
152
- serverByName,
153
- };
154
- }
155
-
156
- /**
157
- * Resolve the mcp bundle id for a profile from the profiles manifest.
158
- *
159
- * @param {string} profileId
160
- * @returns {string}
161
- */
162
- export function resolveProfileMcpBundleId(profileId) {
163
- const manifest = validateProfilesManifest(loadProfilesManifestDocument());
164
- try {
165
- return resolveProfileDefinition(manifest, profileId).mcpBundle;
166
- } catch (errorValue) {
167
- if (
168
- errorValue instanceof Error
169
- && errorValue.message.startsWith('Unknown profile id or alias:')
170
- ) {
171
- throw new Error(`unknown profile id for mcp bundle: ${profileId}`);
172
- }
173
- throw errorValue;
174
- }
175
- }
176
-
177
- /**
178
- * Build the effective MCP server inventory for a bundle id.
179
- *
180
- * @param {string} bundleId
181
- * @param {McpBundlesDocument} [bundlesDocument]
182
- * @returns {string[]}
183
- */
184
- export function listServerNamesForBundle(bundleId, bundlesDocument = loadMcpBundlesDocument()) {
185
- const bundle = bundlesDocument.bundles[bundleId];
186
- if (!bundle) {
187
- throw new Error(`unknown mcp bundle id: ${bundleId}`);
188
- }
189
- return [...bundle.allServerNames];
190
- }
191
-
192
- /**
193
- * Materialize mcp.json for a profile under CLAUDE_CONFIG_DIR.
194
- *
195
- * @param {{
196
- * profileId: string,
197
- * claudeConfigDir: string,
198
- * profileRootPlaceholderValue?: string,
199
- * bundlesDocument?: McpBundlesDocument,
200
- * }} parameters
201
- * @returns {{
202
- * activationInterface: string,
203
- * mcpConfigPath: string,
204
- * bundleId: string,
205
- * allServerNames: string[],
206
- * }}
207
- */
208
- export function materializeProfileMcpConfig(parameters) {
209
- const bundlesDocument = parameters.bundlesDocument ?? loadMcpBundlesDocument();
210
- if (!parameters.claudeConfigDir || typeof parameters.claudeConfigDir !== 'string') {
211
- throw new Error('claudeConfigDir is required');
212
- }
213
- if (!existsSync(parameters.claudeConfigDir)) {
214
- mkdirSync(parameters.claudeConfigDir, { recursive: true });
215
- }
216
- const bundleId = resolveProfileMcpBundleId(parameters.profileId);
217
- const allServerNames = listServerNamesForBundle(bundleId, bundlesDocument);
218
- const profileRootValue = parameters.profileRootPlaceholderValue ?? parameters.claudeConfigDir;
219
- /** @type {Record<string, {command: string, args: string[]}>} */
220
- const mcpServers = {};
221
- for (const eachServerName of allServerNames) {
222
- const definition = bundlesDocument.serverByName[eachServerName];
223
- mcpServers[eachServerName] = {
224
- command: definition.command,
225
- args: definition.args.map((eachArg) => eachArg.replaceAll('${PROFILE_ROOT}', profileRootValue)),
226
- };
227
- }
228
- const mcpConfigPath = join(parameters.claudeConfigDir, bundlesDocument.mcpConfigFileName);
229
- writeFileSync(
230
- mcpConfigPath,
231
- `${JSON.stringify({ mcpServers }, null, 2)}\n`,
232
- 'utf8',
233
- );
234
- return {
235
- activationInterface: bundlesDocument.supportedActivationInterface,
236
- mcpConfigPath,
237
- bundleId,
238
- allServerNames,
239
- };
240
- }
241
-
242
- /**
243
- * Read back the effective server inventory from a materialized mcp.json.
244
- *
245
- * @param {string} mcpConfigPath
246
- * @returns {string[]}
247
- */
248
- export function readEffectiveMcpServerInventory(mcpConfigPath) {
249
- if (!existsSync(mcpConfigPath)) {
250
- throw new Error(`mcp config missing: ${mcpConfigPath}`);
251
- }
252
- let document;
253
- try {
254
- document = JSON.parse(readFileSync(mcpConfigPath, 'utf8'));
255
- } catch {
256
- throw new Error(`mcp config malformed: ${mcpConfigPath}`);
257
- }
258
- if (
259
- !document
260
- || typeof document !== 'object'
261
- || Array.isArray(document)
262
- || !document.mcpServers
263
- || typeof document.mcpServers !== 'object'
264
- || Array.isArray(document.mcpServers)
265
- ) {
266
- throw new Error(`mcp config malformed: ${mcpConfigPath}`);
267
- }
268
- return Object.keys(document.mcpServers).sort();
269
- }
270
-
271
- export {
272
- SUPPORTED_ACTIVATION_INTERFACE,
273
- DEFAULT_MCP_CONFIG_FILE_NAME,
274
- MCP_BUNDLES_CONFIG_PATH,
275
- };
@@ -1,221 +0,0 @@
1
- import { test } from 'node:test';
2
- import { strict as assert } from 'node:assert';
3
- import { execFileSync } from 'node:child_process';
4
- import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
5
- import { dirname, join, relative, sep } from 'node:path';
6
- import { fileURLToPath } from 'node:url';
7
-
8
- import {
9
- CLAUDE_CONFIG_DIR_ENVIRONMENT_VARIABLE,
10
- CLAUDE_HOME_ENVIRONMENT_VARIABLE,
11
- INSTALL_DESTINATION_ROOT_RELATIVE_PATH,
12
- LAUNCHER_SCHEMA_VERSION,
13
- LIVE_DEPLOYMENT_RESERVED_FOR,
14
- loadProfilesManifestDocument,
15
- loadSharedAllowlistDocument,
16
- PACKAGE_FILES_WHITELIST_SCRIPTS_ENTRY,
17
- PROFILE_ISOLATION_CONTRACT_OWNER,
18
- } from './config/profile-isolation-constants.mjs';
19
- import {
20
- loadAndValidateProfilesManifest,
21
- loadAndValidateSharedAllowlist,
22
- resolveProfileDefinition,
23
- resolveProfileRootDirectoryPath,
24
- validateProfilesManifest,
25
- validateSharedAllowlist,
26
- } from './lib/profile-manifest.mjs';
27
-
28
- const CONTRACT_ROOT_DIRECTORY_PATH = dirname(fileURLToPath(import.meta.url));
29
- const PACKAGE_ROOT_DIRECTORY_PATH = join(CONTRACT_ROOT_DIRECTORY_PATH, '..', '..');
30
- const REPOSITORY_ROOT_DIRECTORY_PATH = join(PACKAGE_ROOT_DIRECTORY_PATH, '..', '..');
31
-
32
- const ALL_REQUIRED_CONTRACT_SOURCE_RELATIVE_PATHS = Object.freeze([
33
- 'config/profile-isolation-constants.mjs',
34
- 'config/profiles.manifest.json',
35
- 'config/shared-allowlist.json',
36
- 'lib/profile-manifest.mjs',
37
- ]);
38
-
39
- /** J1 MCP activation and K1 version-preflight sources allowed beside the A1a contract surface. */
40
- const ALL_ALLOWED_MCP_ACTIVATION_RELATIVE_PATHS = Object.freeze([
41
- 'config/mcp-bundles.json',
42
- 'mcp-bundles.mjs',
43
- 'launcher-runtime.mjs',
44
- 'version-compatibility.mjs',
45
- 'tests/mcp-bundles.test.mjs',
46
- 'tests/launcher-runtime.test.mjs',
47
- 'tests/version-compatibility.test.mjs',
48
- ]);
49
-
50
- const ALL_N1_SHORTCUT_SOURCE_RELATIVE_PATHS = Object.freeze([
51
- 'tests/shortcut-contract.test.ps1',
52
- 'windows/shortcut-inventory.ps1',
53
- 'windows/shortcut-manifest.json',
54
- 'windows/shortcut-reconcile.ps1',
55
- ]);
56
-
57
- test('profiles manifest schemaVersion is 1 and every migrationOrder id resolves', () => {
58
- const validatedManifest = loadAndValidateProfilesManifest();
59
- assert.equal(validatedManifest.schemaVersion, 1);
60
- assert.equal(LAUNCHER_SCHEMA_VERSION, 1);
61
- for (const eachProfileId of validatedManifest.migrationOrder) {
62
- assert.equal(resolveProfileDefinition(validatedManifest, eachProfileId).id, eachProfileId);
63
- }
64
- });
65
-
66
- test('resolveProfileDefinition accepts id, alias, and launcher names', () => {
67
- const validatedManifest = loadAndValidateProfilesManifest();
68
- assert.equal(resolveProfileDefinition(validatedManifest, 'master').id, 'master');
69
- assert.equal(resolveProfileDefinition(validatedManifest, 'default').id, 'master');
70
- assert.equal(resolveProfileDefinition(validatedManifest, 'claude').id, 'master');
71
- assert.equal(resolveProfileDefinition(validatedManifest, 'claude-full').id, 'master');
72
- assert.equal(resolveProfileDefinition(validatedManifest, 'profile-c').id, 'profile-c');
73
- assert.equal(resolveProfileDefinition(validatedManifest, 'claude-profile-c').id, 'profile-c');
74
- assert.equal(resolveProfileDefinition(validatedManifest, 'claude-profile-b-full').id, 'profile-b');
75
- assert.equal(resolveProfileDefinition(validatedManifest, 'Master').id, 'master');
76
- assert.equal(resolveProfileDefinition(validatedManifest, ' CLAUDE-PROFILE-C ').id, 'profile-c');
77
- assert.throws(
78
- () => resolveProfileDefinition(validatedManifest, 'not-a-profile'),
79
- /Unknown profile id or alias/,
80
- );
81
- assert.throws(
82
- () => resolveProfileDefinition(validatedManifest, /** @type {string} */ (/** @type {unknown} */ (42))),
83
- /Unknown profile id or alias/,
84
- );
85
- });
86
-
87
- test('shared allowlist names shared paths, always-local paths, and desktop exclusions', () => {
88
- const validatedAllowlist = loadAndValidateSharedAllowlist();
89
- assert.equal(validatedAllowlist.schemaVersion, 1);
90
- assert.ok(validatedAllowlist.allSharedRelativePaths.includes('scripts'));
91
- assert.ok(validatedAllowlist.allSharedRelativePaths.includes('hooks'));
92
- assert.ok(validatedAllowlist.allAlwaysLocalRelativePaths.includes('settings.json'));
93
- assert.ok(validatedAllowlist.allAlwaysLocalRelativePaths.includes('credentials'));
94
- assert.ok(
95
- validatedAllowlist.allDesktopExcludedPathFragments.some((eachFragment) =>
96
- eachFragment.toLowerCase().includes('desktop'),
97
- ),
98
- );
99
- });
100
-
101
- test('validators reject bad schemaVersion and non-object allowlist', () => {
102
- const rawManifest = loadProfilesManifestDocument();
103
- assert.throws(
104
- () => validateProfilesManifest({ ...rawManifest, schemaVersion: 0 }),
105
- /schemaVersion must be 1/,
106
- );
107
- assert.throws(() => validateSharedAllowlist(null), /shared allowlist must be a JSON object/);
108
- assert.equal(typeof loadSharedAllowlistDocument(), 'object');
109
- });
110
-
111
- test('validators reject duplicate launcher identities across profiles', () => {
112
- const rawManifest = loadProfilesManifestDocument();
113
- const profiles = {
114
- .../** @type {Record<string, object>} */ (rawManifest.profiles),
115
- };
116
- const masterProfile = { ...profiles.master, launcherNames: ['claude', 'claude-profile-c'] };
117
- const profileC = { ...profiles['profile-c'] };
118
- assert.throws(
119
- () =>
120
- validateProfilesManifest({
121
- ...rawManifest,
122
- profiles: { ...profiles, master: masterProfile, 'profile-c': profileC },
123
- }),
124
- /duplicate profile identity/,
125
- );
126
- });
127
-
128
- test('CLAUDE_CONFIG_DIR is the sole authoritative profile-root variable name', () => {
129
- assert.equal(CLAUDE_CONFIG_DIR_ENVIRONMENT_VARIABLE, 'CLAUDE_CONFIG_DIR');
130
- assert.equal(CLAUDE_HOME_ENVIRONMENT_VARIABLE, 'CLAUDE_HOME');
131
- assert.notEqual(CLAUDE_CONFIG_DIR_ENVIRONMENT_VARIABLE, CLAUDE_HOME_ENVIRONMENT_VARIABLE);
132
- const constantsSource = readFileSync(
133
- join(CONTRACT_ROOT_DIRECTORY_PATH, 'config', 'profile-isolation-constants.mjs'),
134
- 'utf8',
135
- );
136
- assert.match(constantsSource, /Sole authoritative profile-root environment variable/);
137
- assert.match(constantsSource, /CLAUDE_HOME is never honored as a profile root/);
138
- });
139
-
140
- test('resolveProfileRootDirectoryPath joins profiles root with directoryName', () => {
141
- const validatedManifest = loadAndValidateProfilesManifest();
142
- const profileC = resolveProfileDefinition(validatedManifest, 'profile-c');
143
- assert.equal(
144
- resolveProfileRootDirectoryPath('/profiles', profileC),
145
- join('/profiles', 'profile-c'),
146
- );
147
- });
148
-
149
- test('package ships contract under scripts/, reserves live deploy for L1, and holds only A1a+N1 files', () => {
150
- const packageJson = JSON.parse(
151
- readFileSync(join(PACKAGE_ROOT_DIRECTORY_PATH, 'package.json'), 'utf8'),
152
- );
153
- assert.ok(packageJson.files.includes(PACKAGE_FILES_WHITELIST_SCRIPTS_ENTRY));
154
- assert.equal(INSTALL_DESTINATION_ROOT_RELATIVE_PATH, 'scripts/profile-isolation-launchers');
155
- assert.equal(LIVE_DEPLOYMENT_RESERVED_FOR, 'L1');
156
- assert.equal(PROFILE_ISOLATION_CONTRACT_OWNER, 'profile-isolation-contract');
157
-
158
- /** @type {string[]} */
159
- const allRelativePaths = [];
160
- /**
161
- * @param {string} currentDirectoryPath
162
- */
163
- function walk(currentDirectoryPath) {
164
- for (const eachEntry of readdirSync(currentDirectoryPath, { withFileTypes: true })) {
165
- const eachAbsolutePath = join(currentDirectoryPath, eachEntry.name);
166
- if (eachEntry.isDirectory()) {
167
- walk(eachAbsolutePath);
168
- continue;
169
- }
170
- if (eachEntry.isFile()) {
171
- allRelativePaths.push(
172
- relative(CONTRACT_ROOT_DIRECTORY_PATH, eachAbsolutePath).split(sep).join('/'),
173
- );
174
- }
175
- }
176
- }
177
- walk(CONTRACT_ROOT_DIRECTORY_PATH);
178
- const allExpectedPaths = new Set([
179
- ...ALL_REQUIRED_CONTRACT_SOURCE_RELATIVE_PATHS,
180
- ...ALL_ALLOWED_MCP_ACTIVATION_RELATIVE_PATHS,
181
- ...ALL_N1_SHORTCUT_SOURCE_RELATIVE_PATHS,
182
- 'profile-isolation-contract.test.mjs',
183
- ]);
184
- for (const eachRelativePath of allRelativePaths) {
185
- assert.ok(allExpectedPaths.has(eachRelativePath), `unexpected package file: ${eachRelativePath}`);
186
- }
187
- for (const eachRequiredPath of [
188
- ...ALL_REQUIRED_CONTRACT_SOURCE_RELATIVE_PATHS,
189
- ...ALL_ALLOWED_MCP_ACTIVATION_RELATIVE_PATHS,
190
- ...ALL_N1_SHORTCUT_SOURCE_RELATIVE_PATHS,
191
- ]) {
192
- const absolutePath = join(CONTRACT_ROOT_DIRECTORY_PATH, ...eachRequiredPath.split('/'));
193
- assert.ok(existsSync(absolutePath) && statSync(absolutePath).isFile());
194
- }
195
- });
196
-
197
- test('committed contract sources are tracked by git (not dirty-worktree-only)', () => {
198
- for (const eachRelativePath of [
199
- ...ALL_REQUIRED_CONTRACT_SOURCE_RELATIVE_PATHS,
200
- ...ALL_N1_SHORTCUT_SOURCE_RELATIVE_PATHS,
201
- ]) {
202
- const repositoryRelativePath =
203
- `packages/claude-dev-env/scripts/profile-isolation-launchers/${eachRelativePath}`;
204
- const lsFilesOutput = execFileSync(
205
- 'git',
206
- ['ls-files', '--', repositoryRelativePath],
207
- { cwd: REPOSITORY_ROOT_DIRECTORY_PATH, encoding: 'utf8' },
208
- ).trim();
209
- assert.ok(lsFilesOutput.length > 0, `expected git-tracked source for ${eachRelativePath}`);
210
- const porcelain = execFileSync(
211
- 'git',
212
- ['status', '--porcelain', '--', repositoryRelativePath],
213
- { cwd: REPOSITORY_ROOT_DIRECTORY_PATH, encoding: 'utf8' },
214
- ).trim();
215
- assert.equal(
216
- porcelain,
217
- '',
218
- `launcher file must be clean committed source: ${eachRelativePath} status=${porcelain}`,
219
- );
220
- }
221
- });
@@ -1,108 +0,0 @@
1
- import { test } from 'node:test';
2
- import { strict as assert } from 'node:assert';
3
- import { mkdtempSync, rmSync, existsSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { tmpdir } from 'node:os';
6
- import { fileURLToPath } from 'node:url';
7
- import { dirname } from 'node:path';
8
- import {
9
- activateLauncherMcpBundle,
10
- activateProfileMcpBundle,
11
- describeLeanServerBoundary,
12
- formatProfileMcpActivationFailure,
13
- listMcpActivationPackageRelativePaths,
14
- resolveProfileIdForLauncherName,
15
- SUPPORTED_ACTIVATION_INTERFACE,
16
- } from '../launcher-runtime.mjs';
17
- import { readEffectiveMcpServerInventory } from '../mcp-bundles.mjs';
18
- import { CLAUDE_CONFIG_DIR_ENVIRONMENT_VARIABLE } from '../config/profile-isolation-constants.mjs';
19
-
20
- const PACKAGE_ROOT = join(
21
- dirname(fileURLToPath(import.meta.url)),
22
- '..',
23
- '..',
24
- '..',
25
- );
26
-
27
- test('claude-profile-a and claude-profile-b resolve to profile-a and profile-b profiles', () => {
28
- assert.equal(resolveProfileIdForLauncherName('claude-profile-a'), 'profile-a');
29
- assert.equal(resolveProfileIdForLauncherName('claude-profile-b'), 'profile-b');
30
- });
31
-
32
- test('activateLauncherMcpBundle materializes lean inventory for profile-a and profile-b', () => {
33
- const profileADir = mkdtempSync(join(tmpdir(), 'launcher-profile-a-'));
34
- const profileBDir = mkdtempSync(join(tmpdir(), 'launcher-profile-b-'));
35
- try {
36
- const profileA = activateLauncherMcpBundle({
37
- launcherName: 'claude-profile-a',
38
- claudeConfigDir: profileADir,
39
- });
40
- const profileB = activateLauncherMcpBundle({
41
- launcherName: 'claude-profile-b',
42
- claudeConfigDir: profileBDir,
43
- });
44
- assert.equal(profileA.activationInterface, SUPPORTED_ACTIVATION_INTERFACE);
45
- assert.equal(profileB.activationInterface, SUPPORTED_ACTIVATION_INTERFACE);
46
- assert.equal(profileA.bundleId, 'lean');
47
- assert.equal(profileB.bundleId, 'lean');
48
- assert.equal(
49
- profileA.environment[CLAUDE_CONFIG_DIR_ENVIRONMENT_VARIABLE],
50
- profileADir,
51
- );
52
- assert.deepEqual(
53
- readEffectiveMcpServerInventory(profileA.mcpConfigPath),
54
- profileA.expectedInventory,
55
- );
56
- assert.deepEqual(
57
- readEffectiveMcpServerInventory(profileB.mcpConfigPath),
58
- profileB.expectedInventory,
59
- );
60
- } finally {
61
- rmSync(profileADir, { recursive: true, force: true });
62
- rmSync(profileBDir, { recursive: true, force: true });
63
- }
64
- });
65
-
66
- test('lean aliases expose only lean servers', () => {
67
- const boundary = describeLeanServerBoundary();
68
- assert.ok(boundary.leanServers.length >= 1);
69
- assert.ok(boundary.fullServers.length >= boundary.leanServers.length);
70
- for (const eachLeanServer of boundary.leanServers) {
71
- assert.ok(boundary.fullServers.includes(eachLeanServer));
72
- }
73
- assert.ok(boundary.fullOnlyServers.every((eachName) => !boundary.leanServers.includes(eachName)));
74
-
75
- const claudeConfigDir = mkdtempSync(join(tmpdir(), 'launcher-lean-'));
76
- try {
77
- const activation = activateProfileMcpBundle({
78
- profileId: 'profile-a',
79
- claudeConfigDir,
80
- });
81
- assert.deepEqual(activation.expectedInventory, boundary.leanServers);
82
- for (const eachFullOnly of boundary.fullOnlyServers) {
83
- assert.ok(!activation.expectedInventory.includes(eachFullOnly));
84
- }
85
- } finally {
86
- rmSync(claudeConfigDir, { recursive: true, force: true });
87
- }
88
- });
89
-
90
- test('unknown launcher name fails with an actionable message', () => {
91
- assert.throws(
92
- () => resolveProfileIdForLauncherName('claude-does-not-exist'),
93
- /no profile owns launcher name/,
94
- );
95
- const message = formatProfileMcpActivationFailure(
96
- 'profile-a',
97
- new Error('bundle missing'),
98
- );
99
- assert.match(message, /profile profile-a mcp activation failed/);
100
- assert.match(message, /bundle missing/);
101
- });
102
-
103
- test('package-relative MCP activation paths exist for pack verification', () => {
104
- const allPaths = listMcpActivationPackageRelativePaths(PACKAGE_ROOT);
105
- for (const eachPath of allPaths) {
106
- assert.ok(existsSync(eachPath), `missing pack path: ${eachPath}`);
107
- }
108
- });