claude-dev-env 4.3.0 → 7.1.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 (480) hide show
  1. package/.agents/agents/pr-description-writer.md +2 -2
  2. package/.agents/agents/test_agent_frontmatter.py +2 -2
  3. package/.agents/agents/test_pr_description_writer_style.py +1 -3
  4. package/.agents/skills/e-code-review/SKILL.md +12 -12
  5. package/.agents/skills/e-code-review/preflight-proposal.contract.test.mjs +20 -0
  6. package/.agents/skills/e-code-review/reference/fix.md +15 -17
  7. package/.agents/skills/e-code-review/reference/loop.md +35 -39
  8. package/.agents/skills/e-code-review/reference/mode-contract.test.mjs +2 -1
  9. package/.agents/skills/e-code-review/reference/preflight-proposal.md +44 -9
  10. package/.agents/skills/e-code-review/reference/runner-selection.md +13 -14
  11. package/.agents/skills/issue-tracker/SKILL.md +5 -4
  12. package/.agents/skills/pull-request/SKILL.md +11 -13
  13. package/.agents/skills/pull-request/reference/publication-tasks.md +3 -3
  14. package/.agents/skills/pull-request/scripts/github_pr_command_constants/config/constants.py +9 -1
  15. package/.agents/skills/pull-request/scripts/pull_request.py +35 -44
  16. package/.agents/skills/pull-request/scripts/test_github_pr_command_constants.py +9 -0
  17. package/.agents/skills/pull-request/scripts/test_pull_request.py +35 -3
  18. package/.agents/skills/session-continuity/README.md +189 -0
  19. package/.agents/skills/session-continuity/SKILL.md +114 -0
  20. package/.agents/skills/session-continuity/continuity.mjs +375 -0
  21. package/.agents/skills/session-continuity/continuity.test.mjs +303 -0
  22. package/.agents/skills/skill-builder/SKILL.md +3 -196
  23. package/.agents/skills/syncing-submodules/scripts/test_sync_parent_pointer.py +0 -7
  24. package/.agents/skills/windows-scheduled-task/SKILL.md +153 -0
  25. package/_shared/pr-loop/scripts/pr_loop_shared_constants/terminology_sweep_constants.py +6 -0
  26. package/_shared/pr-loop/scripts/terminology_sweep.py +64 -19
  27. package/_shared/pr-loop/scripts/tests/test_terminology_sweep.py +59 -0
  28. package/bin/cde.mjs +36 -8
  29. package/bin/cde.test.mjs +48 -0
  30. package/bin/ever-shipped-skills.mjs +2 -20
  31. package/bin/ever-shipped-skills.test.mjs +8 -0
  32. package/bin/expand_home_directory_tokens.mjs +4 -5
  33. package/bin/expand_home_directory_tokens.test.mjs +128 -0
  34. package/bin/git_hooks_installer.mjs +22 -3
  35. package/bin/git_hooks_installer.test.mjs +159 -5
  36. package/bin/install-session-continuity.mjs +78 -0
  37. package/bin/install-session-continuity.test.mjs +42 -0
  38. package/bin/install.agents-home.test.mjs +15 -13
  39. package/bin/install.codex-rules.test.mjs +5 -2
  40. package/bin/install.cursor-rules.test.mjs +5 -2
  41. package/bin/install.mjs +506 -63
  42. package/bin/install.policy-lint.test.mjs +130 -0
  43. package/bin/install.profiles.test.mjs +10 -0
  44. package/bin/install.prune.test.mjs +286 -37
  45. package/bin/install.pstack-plugin.test.mjs +114 -0
  46. package/bin/install.test.mjs +537 -120
  47. package/bin/install.transaction.test.mjs +3 -3
  48. package/bin/refresh-pstack-plugin-skills.test.mjs +211 -0
  49. package/docs/CODE_RULES.md +1 -1
  50. package/hooks/advisory/pr_done_reminder.py +342 -0
  51. package/hooks/advisory/test_pr_done_reminder.py +249 -0
  52. package/hooks/blocking/bash_post_call_dispatcher.py +53 -6
  53. package/hooks/blocking/code_rules_banned_identifiers.py +3 -0
  54. package/hooks/blocking/code_rules_paired_test.py +22 -15
  55. package/hooks/blocking/precommit_code_rules_gate.py +5 -8
  56. package/hooks/blocking/test_bash_dispatcher_interpreter_starts.py +7 -52
  57. package/hooks/blocking/test_bash_post_call_dispatcher.py +65 -4
  58. package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +0 -69
  59. package/hooks/blocking/test_code_rules_banned_identifiers.py +64 -0
  60. package/hooks/blocking/test_code_rules_enforcer_paired_test.py +36 -29
  61. package/hooks/blocking/test_code_rules_js_resume_task_enumeration.py +4 -4
  62. package/hooks/blocking/test_code_rules_js_returns_object_schemaless.py +5 -5
  63. package/hooks/blocking/test_pre_tool_use_dispatcher.py +43 -342
  64. package/hooks/blocking/test_pre_tool_use_dispatcher_native.py +20 -51
  65. package/hooks/blocking/test_shared_stdin_adoption.py +1 -47
  66. package/hooks/git-hooks/git_hooks_constants/staged_policy_lint.py +12 -0
  67. package/hooks/git-hooks/git_hooks_constants/verification_notice_constants.py +116 -0
  68. package/hooks/git-hooks/post_commit.py +33 -0
  69. package/hooks/git-hooks/pre_commit.py +18 -49
  70. package/hooks/git-hooks/pre_push.py +45 -541
  71. package/hooks/git-hooks/test_installed_policy_lint.py +208 -0
  72. package/hooks/git-hooks/test_native_hook_support.py +129 -0
  73. package/hooks/git-hooks/test_native_policy_commit.py +120 -0
  74. package/hooks/git-hooks/test_post_commit.py +43 -0
  75. package/hooks/git-hooks/test_pre_commit.py +38 -148
  76. package/hooks/git-hooks/test_pre_push.py +48 -1631
  77. package/hooks/git-hooks/test_verification_notice.py +60 -0
  78. package/hooks/git-hooks/test_verification_start.py +173 -0
  79. package/hooks/git-hooks/verification_notice.py +192 -0
  80. package/hooks/git-hooks/verification_notice_context.py +253 -0
  81. package/hooks/git-hooks/verification_notice_state.py +237 -0
  82. package/hooks/git-hooks/verification_start.py +100 -0
  83. package/hooks/hooks.json +1 -120
  84. package/hooks/hooks_constants/banned_identifiers_constants.py +4 -0
  85. package/hooks/hooks_constants/bash_post_call_dispatcher_constants.py +14 -1
  86. package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +1 -15
  87. package/hooks/hooks_constants/post_tool_use_dispatcher_constants.py +0 -4
  88. package/hooks/hooks_constants/pr_done_reminder_constants.py +98 -0
  89. package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +10 -93
  90. package/hooks/hooks_constants/stop_dispatcher_constants.py +1 -4
  91. package/hooks/hooks_constants/test_bash_post_call_dispatcher_constants.py +19 -2
  92. package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +3 -66
  93. package/hooks/hooks_constants/test_pr_done_reminder_constants.py +40 -0
  94. package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +46 -201
  95. package/hooks/hooks_constants/test_stop_dispatcher_constants.py +3 -25
  96. package/hooks/validation/test_post_tool_use_dispatcher.py +35 -298
  97. package/hooks/validators/run_all_validators.py +5 -1
  98. package/hooks/validators/security_checks.py +57 -2
  99. package/hooks/validators/test_hook_timing_harness.py +2 -5
  100. package/hooks/validators/test_run_all_validators_mutation_tool_parity.py +3 -11
  101. package/hooks/validators/test_run_all_validators_policy_lint.py +36 -0
  102. package/hooks/validators/test_security_checks.py +57 -0
  103. package/package.json +2 -2
  104. package/rules/confirm-implementation-forks.md +2 -0
  105. package/rules/durable-post-artifacts.md +2 -1
  106. package/rules/git-workflow.md +18 -6
  107. package/rules/pstack-host-mapping.md +48 -0
  108. package/rules/vault-context.md +3 -5
  109. package/rules/verify-runtime-state.md +7 -0
  110. package/scripts/audit-hooks-cli.mjs +5 -0
  111. package/scripts/audit-hooks.mjs +72 -16
  112. package/scripts/automatic_advisory/__init__.py +1 -0
  113. package/scripts/automatic_advisory/checkout.py +51 -0
  114. package/scripts/automatic_advisory/cli.py +334 -0
  115. package/scripts/automatic_advisory/config/__init__.py +1 -0
  116. package/scripts/automatic_advisory/config/constants.py +93 -0
  117. package/scripts/automatic_advisory/config/timing.py +4 -0
  118. package/scripts/automatic_advisory/configuration.py +197 -0
  119. package/scripts/automatic_advisory/execution.py +350 -0
  120. package/scripts/automatic_advisory/git.py +69 -0
  121. package/scripts/automatic_advisory/model.py +107 -0
  122. package/scripts/automatic_advisory/process_host.py +32 -0
  123. package/scripts/automatic_advisory/publisher.py +84 -0
  124. package/scripts/automatic_advisory/runner.py +399 -0
  125. package/scripts/automatic_advisory/state.py +116 -0
  126. package/scripts/automatic_advisory/window_flags.py +41 -0
  127. package/scripts/automatic_advisory/windows_job.py +122 -0
  128. package/scripts/check.ps1 +0 -1
  129. package/{.agents/skills/run-claude-dev-env/driver.mjs → scripts/ci/installer-lifecycle.mjs} +3 -28
  130. package/scripts/ci/installer-lifecycle.test.mjs +26 -0
  131. package/scripts/ci/windows-installer-lifecycle.ps1 +1 -11
  132. package/scripts/codex_compat_materializer.py +99 -13
  133. package/scripts/dev_env_scripts_constants/shared_tree_constants.py +4 -5
  134. package/{.agents/skills/_shared/pr-loop/scripts → scripts}/durable_post_lint.py +35 -43
  135. package/{.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/durable_post_lint_constants.py → scripts/durable_post_lint_config/config/constants.py} +10 -10
  136. package/{.agents/skills/_shared/pr-loop/scripts/test_durable_post_lint_constants.py → scripts/durable_post_lint_config/config/test_constants.py} +14 -1
  137. package/scripts/local_report_cli.py +184 -0
  138. package/scripts/local_report_core.py +247 -0
  139. package/scripts/local_report_publisher.py +12 -0
  140. package/scripts/local_report_validation.py +357 -0
  141. package/scripts/local_verification/__init__.py +23 -0
  142. package/scripts/local_verification/check_runner.py +364 -0
  143. package/scripts/local_verification/check_support.py +99 -0
  144. package/scripts/local_verification/cli.py +158 -0
  145. package/scripts/local_verification/command_runner.py +84 -0
  146. package/scripts/local_verification/config/__init__.py +1 -0
  147. package/scripts/local_verification/config/constants.py +89 -0
  148. package/scripts/local_verification/config/timing.py +1 -0
  149. package/scripts/local_verification/git_state.py +146 -0
  150. package/scripts/local_verification/manifest.py +224 -0
  151. package/scripts/local_verification/model.py +174 -0
  152. package/scripts/local_verification/runner.py +234 -0
  153. package/scripts/policy_lint/adapter_detectors.py +13 -6
  154. package/scripts/policy_lint/adapter_pairing.py +58 -3
  155. package/scripts/policy_lint/adapters.py +7 -4
  156. package/scripts/policy_lint/config/approved_test_pairs.py +323 -0
  157. package/scripts/policy_lint/config/constants.py +5 -0
  158. package/scripts/policy_lint/engine.py +48 -4
  159. package/scripts/policy_lint/model.py +1 -0
  160. package/scripts/policy_lint/registry.py +1 -1
  161. package/scripts/policy_lint/selection.py +2 -1
  162. package/scripts/policy_lint/selection_git.py +2 -0
  163. package/scripts/pr_verification/__init__.py +1 -0
  164. package/scripts/pr_verification/branch_refs.py +114 -0
  165. package/scripts/pr_verification/config/__init__.py +1 -0
  166. package/scripts/pr_verification/config/constants.py +84 -0
  167. package/scripts/pr_verification/config/timing.py +5 -0
  168. package/scripts/pr_verification/github.py +137 -0
  169. package/scripts/pr_verification/github_api.py +376 -0
  170. package/scripts/pr_verification/github_labels.py +88 -0
  171. package/scripts/pr_verification/github_parsing.py +182 -0
  172. package/scripts/pr_verification/github_transport.py +91 -0
  173. package/scripts/pr_verification/lock.py +122 -0
  174. package/scripts/pr_verification/model.py +43 -0
  175. package/scripts/pr_verification/requirements.txt +1 -0
  176. package/scripts/refresh_pstack_plugin_skills.mjs +200 -0
  177. package/scripts/shared_tree_paths.py +32 -3
  178. package/{.agents/skills/_shared/pr-loop/scripts → scripts}/test_durable_post_lint.py +97 -0
  179. package/scripts/test_shared_tree_paths.py +33 -0
  180. package/scripts/tests/test-audit-hooks-cli.mjs +150 -0
  181. package/scripts/tests/test-audit-hooks.mjs +94 -2
  182. package/scripts/tests/test_automatic_advisory.py +376 -0
  183. package/scripts/tests/test_automatic_advisory_job_cleanup.py +71 -0
  184. package/scripts/tests/test_automatic_advisory_polling.py +216 -0
  185. package/scripts/tests/test_automatic_advisory_recovery.py +320 -0
  186. package/scripts/tests/test_automatic_advisory_repairs.py +400 -0
  187. package/scripts/tests/test_automatic_advisory_settings.py +48 -0
  188. package/scripts/tests/test_automatic_advisory_window_flags.py +163 -0
  189. package/scripts/tests/test_closed_pr_label.py +157 -0
  190. package/scripts/tests/test_codex_compat_materializer.py +189 -6
  191. package/scripts/tests/test_github_labels.py +101 -0
  192. package/scripts/tests/test_github_transport.py +125 -0
  193. package/scripts/tests/test_local_report_publisher.py +396 -0
  194. package/scripts/tests/test_local_report_publisher_cli.py +85 -0
  195. package/scripts/tests/test_local_verification.py +348 -0
  196. package/scripts/tests/test_local_verification_cli.py +98 -0
  197. package/scripts/tests/test_policy_lint_rules_archive.py +120 -0
  198. package/scripts/tests/test_policy_lint_rules_engine.py +25 -4
  199. package/scripts/tests/test_policy_lint_rules_installed_loader.py +29 -0
  200. package/scripts/tests/test_policy_lint_rules_pairing.py +163 -0
  201. package/scripts/tests/test_policy_lint_rules_registry.py +227 -13
  202. package/scripts/tests/test_policy_lint_selection.py +25 -2
  203. package/scripts/tests/test_policy_lint_selection_native_index.py +30 -0
  204. package/scripts/tests/test_pr_verification_github.py +392 -0
  205. package/scripts/tests/test_pr_verification_lock.py +168 -0
  206. package/scripts/tests/test_rules.py +3 -7
  207. package/scripts/tests/test_verification_notice.py +347 -0
  208. package/.agents/skills/_shared/pr-loop/.claude/CLAUDE.md +0 -1
  209. package/.agents/skills/_shared/pr-loop/audit-contract.md +0 -5
  210. package/.agents/skills/_shared/pr-loop/audit-reply-template.md +0 -5
  211. package/.agents/skills/_shared/pr-loop/code-rules-gate.md +0 -5
  212. package/.agents/skills/_shared/pr-loop/fix-protocol.md +0 -5
  213. package/.agents/skills/_shared/pr-loop/gh-payloads.md +0 -5
  214. package/.agents/skills/_shared/pr-loop/portable-driver.md +0 -149
  215. package/.agents/skills/_shared/pr-loop/post-audit-thread-contract.md +0 -5
  216. package/.agents/skills/_shared/pr-loop/precatch-rubric.md +0 -5
  217. package/.agents/skills/_shared/pr-loop/preflight-proposal.contract.test.mjs +0 -119
  218. package/.agents/skills/_shared/pr-loop/preflight-proposal.md +0 -5
  219. package/.agents/skills/_shared/pr-loop/prompts/.claude/CLAUDE.md +0 -1
  220. package/.agents/skills/_shared/pr-loop/prompts/AGENTS.md +0 -1
  221. package/.agents/skills/_shared/pr-loop/prompts/pr-consistency-audit.xml +0 -324
  222. package/.agents/skills/_shared/pr-loop/scripts/.claude/CLAUDE.md +0 -1
  223. package/.agents/skills/_shared/pr-loop/scripts/AGENTS.md +0 -1
  224. package/.agents/skills/_shared/pr-loop/scripts/RUNTIME_SCRIPTS.md +0 -29
  225. package/.agents/skills/_shared/pr-loop/scripts/_cli_utils.py +0 -22
  226. package/.agents/skills/_shared/pr-loop/scripts/_path_resolver.py +0 -186
  227. package/.agents/skills/_shared/pr-loop/scripts/_xml_utils.py +0 -20
  228. package/.agents/skills/_shared/pr-loop/scripts/audit_category_schema.py +0 -355
  229. package/.agents/skills/_shared/pr-loop/scripts/build_audit_prompt.py +0 -289
  230. package/.agents/skills/_shared/pr-loop/scripts/build_converge_task_list.py +0 -310
  231. package/.agents/skills/_shared/pr-loop/scripts/build_fix_prompt.py +0 -292
  232. package/.agents/skills/_shared/pr-loop/scripts/init_loop_state.py +0 -134
  233. package/.agents/skills/_shared/pr-loop/scripts/portable_converge_driver.py +0 -1646
  234. package/.agents/skills/_shared/pr-loop/scripts/preflight_worktree.py +0 -392
  235. package/.agents/skills/_shared/pr-loop/scripts/select_converge_pacer.py +0 -215
  236. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/.claude/CLAUDE.md +0 -1
  237. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +0 -1
  238. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/__init__.py +0 -0
  239. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/audit_category_schema_constants.py +0 -37
  240. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +0 -56
  241. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/handoff_constants.py +0 -45
  242. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +0 -47
  243. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/path_resolver_constants.py +0 -157
  244. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +0 -177
  245. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/preflight_constants.py +0 -70
  246. package/.agents/skills/_shared/pr-loop/scripts/teardown_worktrees.py +0 -172
  247. package/.agents/skills/_shared/pr-loop/scripts/test__path_resolver.py +0 -106
  248. package/.agents/skills/_shared/pr-loop/scripts/test_audit_category_schema.py +0 -94
  249. package/.agents/skills/_shared/pr-loop/scripts/test_build_audit_prompt.py +0 -499
  250. package/.agents/skills/_shared/pr-loop/scripts/test_build_converge_task_list.py +0 -140
  251. package/.agents/skills/_shared/pr-loop/scripts/test_build_fix_prompt.py +0 -262
  252. package/.agents/skills/_shared/pr-loop/scripts/test_init_loop_state.py +0 -71
  253. package/.agents/skills/_shared/pr-loop/scripts/test_portable_converge_driver.py +0 -1119
  254. package/.agents/skills/_shared/pr-loop/scripts/test_preflight_worktree.py +0 -287
  255. package/.agents/skills/_shared/pr-loop/scripts/test_select_converge_pacer.py +0 -207
  256. package/.agents/skills/_shared/pr-loop/scripts/test_teardown_worktrees.py +0 -59
  257. package/.agents/skills/_shared/pr-loop/scripts/test_write_handoff.py +0 -201
  258. package/.agents/skills/_shared/pr-loop/scripts/write_audit_outcomes.py +0 -182
  259. package/.agents/skills/_shared/pr-loop/scripts/write_fix_outcomes.py +0 -206
  260. package/.agents/skills/_shared/pr-loop/scripts/write_handoff.py +0 -309
  261. package/.agents/skills/_shared/pr-loop/state-schema.md +0 -5
  262. package/.agents/skills/_shared/pr-loop/worker-spawn.md +0 -5
  263. package/.agents/skills/autoconverge/.claude/CLAUDE.md +0 -1
  264. package/.agents/skills/autoconverge/AGENTS.md +0 -1
  265. package/.agents/skills/autoconverge/SKILL.md +0 -431
  266. package/.agents/skills/autoconverge/reference/.claude/CLAUDE.md +0 -1
  267. package/.agents/skills/autoconverge/reference/AGENTS.md +0 -1
  268. package/.agents/skills/autoconverge/reference/closing-report.md +0 -93
  269. package/.agents/skills/autoconverge/reference/convergence-gates.md +0 -31
  270. package/.agents/skills/autoconverge/reference/convergence.md +0 -219
  271. package/.agents/skills/autoconverge/reference/copilot-findings.md +0 -51
  272. package/.agents/skills/autoconverge/reference/gotchas.md +0 -66
  273. package/.agents/skills/autoconverge/reference/headless-safety.md +0 -44
  274. package/.agents/skills/autoconverge/reference/multi-pr.md +0 -128
  275. package/.agents/skills/autoconverge/reference/self-closing-loop.md +0 -84
  276. package/.agents/skills/autoconverge/reference/stop-conditions.md +0 -127
  277. package/.agents/skills/autoconverge/test_portable_pacer_gate.py +0 -54
  278. package/.agents/skills/autoconverge/workflow/.claude/CLAUDE.md +0 -1
  279. package/.agents/skills/autoconverge/workflow/AGENTS.md +0 -1
  280. package/.agents/skills/autoconverge/workflow/aggregate_runs.py +0 -371
  281. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/.claude/CLAUDE.md +0 -1
  282. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +0 -1
  283. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/__init__.py +0 -0
  284. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/render_report_constants.py +0 -250
  285. package/.agents/skills/autoconverge/workflow/converge.clean-audit.test.mjs +0 -665
  286. package/.agents/skills/autoconverge/workflow/converge.codex-gate.test.mjs +0 -472
  287. package/.agents/skills/autoconverge/workflow/converge.contract.test.mjs +0 -64
  288. package/.agents/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +0 -1009
  289. package/.agents/skills/autoconverge/workflow/converge.fix-progress.test.mjs +0 -107
  290. package/.agents/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +0 -33
  291. package/.agents/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +0 -15
  292. package/.agents/skills/autoconverge/workflow/converge.mjs +0 -3132
  293. package/.agents/skills/autoconverge/workflow/converge.p2-advance.test.mjs +0 -202
  294. package/.agents/skills/autoconverge/workflow/converge.path-aware.test.mjs +0 -47
  295. package/.agents/skills/autoconverge/workflow/converge.precatch.test.mjs +0 -152
  296. package/.agents/skills/autoconverge/workflow/converge.run-input.test.mjs +0 -116
  297. package/.agents/skills/autoconverge/workflow/converge_multi.mjs +0 -169
  298. package/.agents/skills/autoconverge/workflow/converge_multi.run-input.test.mjs +0 -173
  299. package/.agents/skills/autoconverge/workflow/convergence_summary.py +0 -110
  300. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +0 -2
  301. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +0 -2
  302. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +0 -2
  303. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +0 -2
  304. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +0 -2
  305. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +0 -2
  306. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ab1c2d3e4f5a6b7c8.jsonl +0 -2
  307. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +0 -2
  308. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +0 -2
  309. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +0 -266
  310. package/.agents/skills/autoconverge/workflow/render_report.py +0 -1024
  311. package/.agents/skills/autoconverge/workflow/test_aggregate_runs.py +0 -134
  312. package/.agents/skills/autoconverge/workflow/test_convergence_summary.py +0 -149
  313. package/.agents/skills/autoconverge/workflow/test_render_report.py +0 -812
  314. package/.agents/skills/hitl/SKILL.md +0 -45
  315. package/.agents/skills/pr-cleanup/SKILL.md +0 -140
  316. package/.agents/skills/pr-cleanup/reference/process-inventory.md +0 -17
  317. package/.agents/skills/pr-cleanup/reference/task-seeds.md +0 -22
  318. package/.agents/skills/pr-name-by-capability/SKILL.md +0 -73
  319. package/.agents/skills/pr-name-by-capability/reference/fetch-commands.md +0 -29
  320. package/.agents/skills/pr-name-by-capability/reference/offense-examples.md +0 -32
  321. package/.agents/skills/pr-name-by-capability/reference/report-template.md +0 -29
  322. package/.agents/skills/pr-name-by-capability/reference/rule-checklist.md +0 -38
  323. package/.agents/skills/pr-name-by-capability/reference/task-seeds.md +0 -10
  324. package/.agents/skills/pr-plain-language-cleanup/SKILL.md +0 -93
  325. package/.agents/skills/pr-refinement/SKILL.md +0 -31
  326. package/.agents/skills/pr-shared-extraction/SKILL.md +0 -177
  327. package/.agents/skills/pr-shared-extraction/reference/examples.md +0 -46
  328. package/.agents/skills/pr-shared-extraction/reference/offense-taxonomy.md +0 -100
  329. package/.agents/skills/pr-small-cl/SKILL.md +0 -52
  330. package/.agents/skills/pr-title-description/SKILL.md +0 -96
  331. package/.agents/skills/prototype/SKILL.md +0 -85
  332. package/.agents/skills/prototype/reference/honest-limitations.md +0 -23
  333. package/.agents/skills/prototype/reference/promotion-tasks.md +0 -23
  334. package/.agents/skills/prototype/scripts/build_sandbox_settings.py +0 -249
  335. package/.agents/skills/prototype/scripts/conftest.py +0 -15
  336. package/.agents/skills/prototype/scripts/launch_sandbox.py +0 -205
  337. package/.agents/skills/prototype/scripts/probe_sandbox_safety.py +0 -311
  338. package/.agents/skills/prototype/scripts/prototype_scripts_constants/__init__.py +0 -1
  339. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
  340. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +0 -41
  341. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +0 -23
  342. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +0 -45
  343. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +0 -10
  344. package/.agents/skills/prototype/scripts/test_build_sandbox_settings.py +0 -275
  345. package/.agents/skills/prototype/scripts/test_launch_sandbox.py +0 -303
  346. package/.agents/skills/prototype/scripts/test_probe_sandbox_safety.py +0 -312
  347. package/.agents/skills/prototype/workflows/promotion.md +0 -25
  348. package/.agents/skills/prototype/workflows/sandbox.md +0 -35
  349. package/.agents/skills/rebase/.claude/CLAUDE.md +0 -1
  350. package/.agents/skills/rebase/AGENTS.md +0 -1
  351. package/.agents/skills/rebase/SKILL.md +0 -178
  352. package/.agents/skills/review-router/SKILL.md +0 -51
  353. package/.agents/skills/review-router/reference/route-policy.json +0 -7
  354. package/.agents/skills/review-router/reference/task-seeds.md +0 -1
  355. package/.agents/skills/review-router/scripts/conftest.py +0 -4
  356. package/.agents/skills/review-router/scripts/review_router.py +0 -50
  357. package/.agents/skills/review-router/scripts/review_router_cli.py +0 -211
  358. package/.agents/skills/review-router/scripts/review_router_constants/__init__.py +0 -1
  359. package/.agents/skills/review-router/scripts/review_router_constants/config/__init__.py +0 -0
  360. package/.agents/skills/review-router/scripts/review_router_constants/config/constants.py +0 -13
  361. package/.agents/skills/review-router/scripts/test_review_router.py +0 -23
  362. package/.agents/skills/review-router/scripts/test_review_router_cli.py +0 -47
  363. package/.agents/skills/review-tier/SKILL.md +0 -56
  364. package/.agents/skills/review-tier/reference/task-seeds.md +0 -1
  365. package/.agents/skills/review-tier/reference/tier-policy.json +0 -9
  366. package/.agents/skills/review-tier/scripts/conftest.py +0 -4
  367. package/.agents/skills/review-tier/scripts/review_tier.py +0 -359
  368. package/.agents/skills/review-tier/scripts/review_tier_constants/__init__.py +0 -1
  369. package/.agents/skills/review-tier/scripts/review_tier_constants/config/__init__.py +0 -0
  370. package/.agents/skills/review-tier/scripts/review_tier_constants/config/constants.py +0 -29
  371. package/.agents/skills/review-tier/scripts/test_generation.py +0 -159
  372. package/.agents/skills/review-tier/scripts/test_review_tier.py +0 -33
  373. package/.agents/skills/run-claude-dev-env/SKILL.md +0 -84
  374. package/.agents/skills/session-log/.claude/CLAUDE.md +0 -1
  375. package/.agents/skills/session-log/AGENTS.md +0 -1
  376. package/.agents/skills/session-log/SKILL.md +0 -170
  377. package/.agents/skills/session-log/templates/frontmatter.md +0 -40
  378. package/.agents/skills/session-tidy/.claude/CLAUDE.md +0 -1
  379. package/.agents/skills/session-tidy/AGENTS.md +0 -1
  380. package/.agents/skills/session-tidy/SKILL.md +0 -191
  381. package/.agents/skills/skill-builder/references/.claude/CLAUDE.md +0 -1
  382. package/.agents/skills/skill-builder/references/AGENTS.md +0 -1
  383. package/.agents/skills/skill-builder/references/delegation-map.md +0 -130
  384. package/.agents/skills/skill-builder/references/description-field.md +0 -111
  385. package/.agents/skills/skill-builder/references/deterministic-elements.md +0 -218
  386. package/.agents/skills/skill-builder/references/progressive-disclosure.md +0 -122
  387. package/.agents/skills/skill-builder/references/self-audit-checklist.md +0 -126
  388. package/.agents/skills/skill-builder/references/skill-modularity.md +0 -111
  389. package/.agents/skills/skill-builder/references/skill-types.md +0 -232
  390. package/.agents/skills/skill-builder/references/thariq-x-post-skills.json +0 -33
  391. package/.agents/skills/skill-builder/templates/.claude/CLAUDE.md +0 -1
  392. package/.agents/skills/skill-builder/templates/AGENTS.md +0 -1
  393. package/.agents/skills/skill-builder/templates/gap-analysis.md +0 -87
  394. package/.agents/skills/skill-builder/workflows/.claude/CLAUDE.md +0 -1
  395. package/.agents/skills/skill-builder/workflows/AGENTS.md +0 -1
  396. package/.agents/skills/skill-builder/workflows/improve-skill.md +0 -136
  397. package/.agents/skills/skill-builder/workflows/new-skill.md +0 -179
  398. package/.agents/skills/skill-builder/workflows/polish-skill.md +0 -139
  399. package/.agents/skills/source-command-sr-loop/SKILL.md +0 -82
  400. package/.agents/skills/update/.claude/CLAUDE.md +0 -1
  401. package/.agents/skills/update/AGENTS.md +0 -1
  402. package/.agents/skills/update/SKILL.md +0 -190
  403. package/_shared/pr-loop/AGENTS.md +0 -1
  404. package/_shared/pr-loop/audit-contract.md +0 -183
  405. package/_shared/pr-loop/audit-reply-template.md +0 -151
  406. package/_shared/pr-loop/code-rules-gate.md +0 -65
  407. package/_shared/pr-loop/fix-protocol.md +0 -60
  408. package/_shared/pr-loop/gh-payloads.md +0 -75
  409. package/_shared/pr-loop/post-audit-thread-contract.md +0 -51
  410. package/_shared/pr-loop/precatch-rubric.md +0 -66
  411. package/_shared/pr-loop/preflight-proposal.md +0 -56
  412. package/_shared/pr-loop/scripts/post_audit_thread.py +0 -1242
  413. package/_shared/pr-loop/scripts/pr_loop_shared_constants/post_audit_thread_constants.py +0 -199
  414. package/_shared/pr-loop/scripts/tests/test_post_audit_thread.py +0 -1115
  415. package/_shared/pr-loop/scripts/tests/test_post_audit_thread_constants.py +0 -129
  416. package/_shared/pr-loop/state-schema.md +0 -45
  417. package/_shared/pr-loop/worker-spawn.md +0 -189
  418. package/hooks/blocking/ask_user_question_shape_blocker.py +0 -83
  419. package/hooks/blocking/bot_mention_comment_blocker.py +0 -76
  420. package/hooks/blocking/claude_md_orphan_file_blocker.py +0 -129
  421. package/hooks/blocking/cursor_cli_python_misfire_blocker.py +0 -108
  422. package/hooks/blocking/destructive_command_blocker.py +0 -2073
  423. package/hooks/blocking/fable_spawn_gate.py +0 -187
  424. package/hooks/blocking/luna_fast_mode_gate.py +0 -160
  425. package/hooks/blocking/nas_ssh_binary_enforcer.py +0 -163
  426. package/hooks/blocking/orchestrator_refresh_reschedule_gate.py +0 -260
  427. package/hooks/blocking/package_inventory_stale_blocker.py +0 -107
  428. package/hooks/blocking/pii_prevention_blocker.py +0 -365
  429. package/hooks/blocking/piped_pytest_blocker.py +0 -1223
  430. package/hooks/blocking/question_to_user_enforcer.py +0 -130
  431. package/hooks/blocking/send_user_file_open_locally_blocker.py +0 -71
  432. package/hooks/blocking/sensitive_file_protector.py +0 -167
  433. package/hooks/blocking/session_edit_stage_gate.py +0 -684
  434. package/hooks/blocking/session_handoff_blocker.py +0 -182
  435. package/hooks/blocking/shell_substitution_blocker.py +0 -350
  436. package/hooks/blocking/test_ask_user_question_shape.py +0 -69
  437. package/hooks/blocking/test_bot_mention_comment_blocker.py +0 -131
  438. package/hooks/blocking/test_claude_md_orphan_file_blocker.py +0 -1277
  439. package/hooks/blocking/test_cursor_cli_python_misfire_blocker.py +0 -208
  440. package/hooks/blocking/test_destructive_command_blocker.py +0 -2024
  441. package/hooks/blocking/test_destructive_command_blocker_deny_mode.py +0 -105
  442. package/hooks/blocking/test_destructive_command_blocker_no_verify.py +0 -122
  443. package/hooks/blocking/test_destructive_command_blocker_patterns.py +0 -133
  444. package/hooks/blocking/test_fable_spawn_gate.py +0 -381
  445. package/hooks/blocking/test_inventory_deadlock_resolution.py +0 -154
  446. package/hooks/blocking/test_luna_fast_mode_gate.py +0 -211
  447. package/hooks/blocking/test_nas_ssh_binary_enforcer.py +0 -225
  448. package/hooks/blocking/test_orchestrator_refresh_reschedule_gate.py +0 -231
  449. package/hooks/blocking/test_package_inventory_stale_blocker.py +0 -382
  450. package/hooks/blocking/test_pii_prevention_blocker.py +0 -1222
  451. package/hooks/blocking/test_pii_prevention_windows_git_path.py +0 -41
  452. package/hooks/blocking/test_pii_write_surface_ephemeral.py +0 -221
  453. package/hooks/blocking/test_piped_pytest_blocker.py +0 -587
  454. package/hooks/blocking/test_precommit_code_rules_gate_native_owner.py +0 -233
  455. package/hooks/blocking/test_question_to_user_enforcer.py +0 -169
  456. package/hooks/blocking/test_send_user_file_open_locally_blocker.py +0 -118
  457. package/hooks/blocking/test_sensitive_file_protector.py +0 -365
  458. package/hooks/blocking/test_session_edit_stage_gate.py +0 -537
  459. package/hooks/blocking/test_session_edit_stage_gate_staging.py +0 -64
  460. package/hooks/blocking/test_session_edit_stage_gate_support.py +0 -204
  461. package/hooks/blocking/test_session_edit_stage_gate_tracker.py +0 -116
  462. package/hooks/blocking/test_session_handoff_blocker.py +0 -318
  463. package/hooks/blocking/test_shell_substitution_blocker.py +0 -298
  464. package/hooks/blocking/test_unscoped_search_blocker.py +0 -102
  465. package/hooks/blocking/test_write_existing_file_blocker.py +0 -122
  466. package/hooks/blocking/tests/test_pii_prevention_blocker.py +0 -259
  467. package/hooks/blocking/unscoped_search_blocker.py +0 -391
  468. package/hooks/blocking/write_existing_file_blocker.py +0 -124
  469. package/hooks/hooks_constants/bot_mention_comment_blocker_constants.py +0 -19
  470. package/hooks/hooks_constants/cursor_cli_python_misfire_blocker_constants.py +0 -79
  471. package/hooks/hooks_constants/fable_spawn_gate_constants.py +0 -61
  472. package/hooks/hooks_constants/luna_fast_mode_gate_constants.py +0 -45
  473. package/hooks/hooks_constants/nas_ssh_binary_enforcer_constants.py +0 -20
  474. package/hooks/hooks_constants/orchestrator_refresh_reschedule_gate_constants.py +0 -57
  475. package/hooks/hooks_constants/send_user_file_open_locally_blocker_constants.py +0 -17
  476. package/hooks/hooks_constants/sensitive_file_protector_constants.py +0 -40
  477. package/hooks/hooks_constants/session_handoff_blocker_constants.py +0 -10
  478. package/hooks/hooks_constants/shell_substitution_blocker_constants.py +0 -80
  479. /package/.agents/skills/{_shared/pr-loop → session-continuity}/AGENTS.md +0 -0
  480. /package/{_shared/pr-loop → .agents/skills/session-continuity}/CLAUDE.md +0 -0
@@ -1,84 +0,0 @@
1
- ---
2
- name: run-claude-dev-env
3
- description: Build, install, run, and test the claude-dev-env installer. Use when asked to run claude-dev-env, install the Claude Code config into ~/.claude, drive the installer, smoke-test it against a sandbox, or run its test suite.
4
- ---
5
-
6
- `claude-dev-env` is the npm-distributed installer that copies this repo's rules, hooks, commands, and docs into `~/.claude/`, copies skills and agents into `~/.agents/`, publishes directory pointers at `~/.claude/skills` and `~/.claude/agents`, and merges its hook entries into `~/.claude/settings.json`. Its entry point is `bin/install.mjs`. Drive it with the smoke driver at `.claude/skills/run-claude-dev-env/driver.mjs`, which runs the installer against a throwaway sandbox home directory so a run never touches the real `~/.claude/` or `~/.agents/`.
7
-
8
- All paths below are written from the `packages/claude-dev-env/` directory.
9
-
10
- ## Prerequisites
11
-
12
- The installer needs three tools on `PATH`:
13
-
14
- - **Node.js 18+** — the installer is an ES module (verified on Node 22.17).
15
- - **Python 3.8+** — the installer bakes a Python interpreter into every hook command and aborts if it finds none. On Windows it skips the Microsoft Store stub (verified `py -3` → Python 3.13.5).
16
- - **git** — the installer reads `git status` to guard against installing from a conflicted source, and sets a global git hooks path.
17
-
18
- ```bash
19
- node --version
20
- git --version
21
- py -3 --version # POSIX: python3 --version
22
- ```
23
-
24
- On a fresh Ubuntu container the three come from `sudo apt-get install -y nodejs python3 git`.
25
-
26
- ## Run (agent path) — the smoke driver
27
-
28
- The driver is the handle to reach for first. It spawns the installer against a fresh temp home directory with `HOME`, `USERPROFILE`, and `GIT_CONFIG_GLOBAL` all redirected, runs the `--help` → install → `--uninstall` lifecycle, asserts the result of each step against the sandbox tree, then deletes the sandbox. It works the same on Windows and POSIX.
29
-
30
- ```bash
31
- node .claude/skills/run-claude-dev-env/driver.mjs
32
- ```
33
-
34
- Expected tail:
35
-
36
- ```
37
- 21/21 checks passed.
38
- ALL CHECKS PASSED
39
- ```
40
-
41
- The driver proves a full install lands skills under `<sandbox>/.agents/skills` with a directory pointer at `<sandbox>/.claude/skills`, lands agents the same way, lands hook scripts, rules, the `CLAUDE.md` hub, a populated `settings.json`, and a tracking manifest, and that `--uninstall` removes every manifest-tracked file. The real `~/.claude/`, `~/.agents/`, and the real global git config stay untouched. Exit code is 0 only when all checks hold.
42
-
43
- ## Run (human path) — install for real
44
-
45
- These write into your real `~/.claude/` and set a global git hooks path. Run them only when you mean to install on this machine.
46
-
47
- ```bash
48
- node bin/install.mjs --help # usage only, no side effects
49
- node bin/install.mjs # install every group
50
- node bin/install.mjs --only core # install one or more named groups
51
- node bin/install.mjs --update # remove manifest-tracked files, then reinstall
52
- node bin/install.mjs --uninstall # remove every installed file
53
- ```
54
-
55
- Groups: `core`, `journal`, and the discovered `prompt-generator` dependency group. Run `node bin/install.mjs --help` for the live list. The published package runs the same entry point as `npx claude-dev-env`.
56
-
57
- ## Test
58
-
59
- ```bash
60
- npm test
61
- ```
62
-
63
- Runs `node --test` over `bin/*.test.mjs` and `.agents/skills/**/*.test.mjs` with Node's built-in test runner — no extra dependency, no network. Expected: `# fail 0`, with the pass count growing as tests are added.
64
-
65
- ## Gotchas
66
-
67
- - **The install target is `os.homedir()/.claude` with no override flag** (the `CLAUDE_HOME` constant in `bin/install.mjs`). To drive the installer without overwriting your real config, redirect the home directory: set `USERPROFILE` (Windows) and `HOME` (POSIX) to a temp dir. The driver does this for you.
68
- - **The installer reaches outside `~/.claude/`.** It writes skills and agents under `~/.agents/`, runs `git config --global core.hooksPath ...`, which applies to every git repo on the machine, and it writes `~/.mypy.ini`. The driver isolates those writes by pointing `GIT_CONFIG_GLOBAL` at a sandbox file and redirecting the home directory.
69
- - **git "dubious ownership" aborts the install.** The source-conflict guard runs `git status`; when the checkout sits on a path git distrusts (a UNC network share owned by another account), git exits 128 with a dubious-ownership message that the installer rethrows. The driver seeds its sandbox git config with `safe.directory = *` so the guard runs. For a real install on such a checkout, add the exception: `git config --global --add safe.directory '<repo-path>'`.
70
- - **`npm install` at the repo root fails on a Windows network-share checkout.** npm symlinks the workspace package into root `node_modules` and the share rejects the symlink (`UNKNOWN ... symlink`, errno -4094). The package's own `node_modules` already carries its single dependency, so the driver and tests run without it. The installer also keeps working when `@jl-cmd/prompt-generator` cannot resolve — it skips that group with a warning (`discoverDependencyGroups` in `bin/install.mjs`).
71
- - **Microsoft Store Python is rejected on Windows.** The installer skips any interpreter under a `WindowsApps` directory because that stub cannot run as a hook subprocess (`isWindowsStorePythonStub` in `bin/install.mjs`). Install Python from python.org if detection fails.
72
-
73
- ## Troubleshooting
74
-
75
- - **`ERROR: No usable Python 3 found`**: no `py -3` / `python3` / `python` resolves to a non-Store Python 3. Install Python 3.8+ from python.org and reopen the shell.
76
- - **`fatal: detected dubious ownership in repository`**: add the `safe.directory` exception shown above, then rerun.
77
- - **`ERROR: settings.json is malformed JSON`**: `~/.claude/settings.json` has a syntax error; fix the JSON and rerun.
78
-
79
- ## Files
80
-
81
- - `SKILL.md` — this page: the agent path (the driver), the human install path, the test command, gotchas, and troubleshooting.
82
- - `driver.mjs` — the smoke harness that drives `bin/install.mjs` against a sandbox home directory. Run it; you do not need to read it. It sits beside this file at `.claude/skills/run-claude-dev-env/driver.mjs`.
83
-
84
- The `/run` skill auto-discovers this skill when asked to run, install, or test `claude-dev-env`.
@@ -1 +0,0 @@
1
- @../AGENTS.md
@@ -1 +0,0 @@
1
-
@@ -1,170 +0,0 @@
1
- ---
2
- name: session-log
3
- description: >-
4
- Logs a session report as an HTML page, tracks vault context, extracts
5
- decisions, and outputs a /rename command. Use for /session-log, 'journal this
6
- session', 'log this work', 'session report', 'summarize/log/record this
7
- session', 'save session', 'capture session', or 'document what we did'.
8
- ---
9
-
10
- # Session Log
11
-
12
- ## Overview
13
-
14
- Session-log composes the HTML report and publishes it directly with the `Artifact` tool. The skill owns the whole flow: where the file lives in the vault, what number it gets, the frontmatter metadata contract, HTML composition and publishing, post-write vault tracking, decision extraction, project-folder hygiene, and the closing `/rename` hand-off.
15
-
16
- **Announce at start:** "I'm logging this session."
17
-
18
- ## Why this report is designed fresh per session
19
-
20
- Sessions come in many shapes — convergence loops, feature builds, research dives, incidents, refactors, decisions. A single h2-emoji-list template forces every session into the same form regardless of fit, and the artifact reads as a process log rather than a substance log. Load the `artifact-design` skill before composing any page content — it calibrates the design investment and shape to the session's character: a feature build reads naturally as a PR writeup, an incident or convergence loop as a timeline, a status update as a progress summary, a plan or decision as a decision record, an exploration as a multi-approach walkthrough.
21
-
22
- ## Gotchas
23
-
24
- - **Load the `artifact-design` skill before writing page content.** The `Artifact` tool needs this step first — it is not optional polish.
25
- - **The `Artifact` tool wraps the file in a document skeleton at publish time.** It adds `<!doctype html>…<head>…</head><body>` around whatever the file holds — write page content only (a `<title>`, a `<style>` block, and the body markup). Do not include `<!DOCTYPE>`, `<html>`, `<head>`, or `<body>` tags in the file itself.
26
- - **The `Artifact` tool redeploys to the same URL only within the current run.** Editing the session's HTML file in a later step of this same skill run and calling `Artifact` again does not mint a new URL — it updates the same published page in place. A fresh session has no memory of an artifact's URL from an earlier run, so republishing a session report written in a prior session always mints a new URL (there is no other way to target the old one without the user supplying it).
27
- - **Vault paths sit outside `.claude/`.** Headless vault paths (e.g., `$OBSIDIAN_VAULT_PATH`) resolve outside the project tree. Session reports use HTML regardless of vault location — the Artifact tool needs a written file to publish.
28
- - **Sessions describe current state by convention.** The state_description_blocker hook does not scan .html. Apply `~/.claude/rules/asd-ste100-language.md` for user-facing word choice and sentence style, and keep the session report current and self-contained.
29
- - **`write_existing_file_blocker` rejects Write on existing paths.** Use Write only when creating a fresh session report; use Edit for the vault-context append in step 3.
30
- - **Obsidian frontmatter index is HTML-blind.** Obsidian's native YAML-frontmatter parser reads only `.md` files. HTML files do not appear in Obsidian's frontmatter index. Search by content still works; search by `type: session-report` does not.
31
-
32
- ## Backend Detection (run before Step 1)
33
-
34
- Determine which storage backend is available for the write path. First success wins.
35
-
36
- 1. **Headless vault** — Bash `ob --version` to verify the obsidian-headless CLI is installed. Check `OBSIDIAN_VAULT_PATH` env var or `~/.claude/vault/` for a vault directory. When the CLI check succeeds AND at least one of those paths resolves to a vault directory, set `backend = "headless"`.
37
- 2. **Local vault** — fall back to `~/.claude/vault/`. Create `~/.claude/vault/sessions` via `mkdir -p` if missing. Set `backend = "local"`.
38
-
39
- session-log writes with Write/Edit and publishes with Artifact, so it uses headless or local filesystem paths only. `/session-tidy` Phase 0 reuses this headless → local order and adds an Obsidian MCP branch for vault maintenance.
40
-
41
- **Session-number detection:** Bash `ls` the project's session folder, parse filenames matching `[N]. *.html` or `[N]. *.md`. Highest N + 1. New project → start at 1.
42
-
43
- **Output paths:**
44
- - headless: `$OBSIDIAN_VAULT_PATH/sessions/[Project]/[N]. [Title].html` (falls back to `~/.claude/vault/` when the env var is unset)
45
- - local: `~/.claude/vault/sessions/[Project]/[N]. [Title].html`
46
-
47
- Announce the backend: "Using headless vault at [path]." or "Using local vault at ~/.claude/vault/. Install obsidian-headless and set the `OBSIDIAN_VAULT_PATH` environment variable (PowerShell: `$env:OBSIDIAN_VAULT_PATH = '<path>'`; POSIX shells: `export OBSIDIAN_VAULT_PATH=<path>`) to enable sync."
48
-
49
- ---
50
-
51
- ## Step 1: Compose Session Metadata
52
-
53
- Review the conversation to identify the session's primary outcome and the small set of facts a cold reader needs.
54
-
55
- Resolve the metadata used by the frontmatter and the vault path:
56
-
57
- - **Project name:** infer from conversation context
58
- - **Session number:** from backend detection above
59
- - **Session ID:** the session ID of the agent authoring this log, read from the `CLAUDE_CODE_SESSION_ID` environment variable (PowerShell: `$env:CLAUDE_CODE_SESSION_ID`). This UUID names the authoring agent's own transcript file (`<session-id>.jsonl`), so the saved report points back to the exact session that produced it. When the variable is unset, use the literal `unknown`.
60
- - **Date:** today's date
61
- - **Title:** a 2–5 word summary of the session's primary outcome. Examples: "Amazon Auth Migration", "Source Loading Fix", "PR 475 Convergence". Avoid generic titles like "Bug Fixes".
62
-
63
- The frontmatter contract every session report carries (inside an HTML comment, as the first child of `<body>`) is the metadata block in [`templates/frontmatter.md`](templates/frontmatter.md).
64
-
65
- Every session report carries this metadata block verbatim so vault search and the tidy step in step 5 work. **Initial values for Step 2's Write:** substitute concrete values for every placeholder — for `session_id`, write the value read from `CLAUDE_CODE_SESSION_ID` in step 1 (or `unknown` when the variable is unset); for `vault_context_retrieved`, write the literal value `false` (the safe default before Step 3's vault-MCP-tool scan completes). Step 3 then Edits `vault_context_retrieved` to `true` if any of the three vault MCP tools fired this session.
66
-
67
- ## Step 2: Compose and Publish the HTML via the Artifact Tool
68
-
69
- Load the `artifact-design` skill before writing any content. Design the artifact for **this session's character** — a feature build reads naturally as a PR writeup, an incident or convergence loop as a timeline, a status update as a progress summary, a plan or decision as a decision record, an exploration as a multi-approach walkthrough. The report must answer for a cold reader, from the section headers alone, three questions: *what shipped*, *why it matters*, *what impact it had*. Process narration (commit-by-commit walks, agent gotchas, retry counts) belongs at the end, not in the opening sections.
70
-
71
- **Required as the first content line:** the frontmatter HTML comment from step 1.
72
-
73
- **Required somewhere in the content:** a `<title>` element naming the session — it names the browser tab and the artifact gallery entry.
74
-
75
- **Required as the first content section (after the frontmatter comment):** an opening "What this session shipped" paragraph + bullets — written so a reader with zero prior context understands the outcome. For continuation sessions (where the substantive work landed in a prior session), recap the parent session's outcome briefly so the report stands alone.
76
-
77
- **Required: self-contained, responsive, theme-aware HTML.** Inline all CSS in a `<style>` block and all JS inline; embed any images as data URIs — the `Artifact` tool's content security policy blocks external CDN scripts, stylesheets, fonts, and network requests. Use relative units so the layout holds at any width, and support both light and dark via `prefers-color-scheme` (or `:root[data-theme]` overrides).
78
-
79
- **No document wrapper tags.** The `Artifact` tool wraps the file content in a `<!doctype html>…<head>…</head><body>` skeleton at publish time — write the `<title>`, `<style>`, and body markup directly, with no `<!DOCTYPE>`, `<html>`, `<head>`, or `<body>` tags of your own.
80
-
81
- Beyond those requirements, design the shape that fits the session — the `artifact-design` skill's guidance covers typography, palette, and layout choices.
82
-
83
- **Write the file** via the Write tool to the vault path. Create the project directory via `mkdir -p` if it does not exist.
84
-
85
- **Publish the file** by calling the `Artifact` tool with `file_path` set to the vault path just written, `favicon` set to the fixed session-log favicon `📓` — this favicon stays the same across every session-log report so the series reads as one consistent collection; never swap it per session — and `description` set to a one-sentence subtitle summarizing the session. Capture the returned URL: it is the canonical URL for this session report, and it stays the same across every later `Artifact` call on this same `file_path` within the current run (steps 3 and 5 redeploy to it rather than minting a new one).
86
-
87
- **If the Write fails**, output the HTML content in the conversation so the user can copy it manually. Before emitting the HTML to chat, resolve the `vault_context_retrieved` placeholder to `true` or `false` based on the same vault-MCP-tool scan that Step 3 would have run, and include the matching vault-context `<li>` line (Retrieved or Not retrieved) so the emitted HTML is a valid copy-paste artifact with complete frontmatter. Skip Step 3 and continue at step 4.
88
-
89
- ## Step 3: Vault Context Tracking
90
-
91
- This step runs automatically after step 2.
92
-
93
- Review the conversation history for any use of these vault MCP tools (look only at tool calls the session made before /session-log itself ran):
94
-
95
- - `mcp__obsidian__search_notes`
96
- - `mcp__obsidian__read_note`
97
- - `mcp__obsidian__read_multiple_notes`
98
-
99
- Edit the vault HTML via two Edit calls:
100
-
101
- 1. Set the frontmatter `vault_context_retrieved` field to `true` when any of the three tools fired this session, `false` otherwise.
102
- 2. Append one fact — vault-context status — into whatever section the report designer placed for notes / metadata / references. If the report has no such section, append a fresh `<h2>Notes</h2>` block (in [`templates/frontmatter.md`](templates/frontmatter.md)) at the end of the content.
103
-
104
- If the report already has a notes / references section, use Edit to insert one matching child element at the end of that section. The element shape mirrors whatever the section already uses: an extra `<li>` before the closing `</ul>` for a list, an extra `<dt>Vault context</dt><dd>…</dd>` pair before the closing `</dl>` for a description list, an extra `<p><strong>Vault context:</strong> …</p>` before the section's closing tag for a paragraph-based section. Pick the form that matches the surrounding markup.
105
-
106
- After both Edits land, call the `Artifact` tool again with the same `file_path` and the same `favicon` used in step 2 to redeploy the updated content. This updates the URL captured in step 2 in place; no new URL is minted.
107
-
108
- ## Step 4: Decision Extraction
109
-
110
- Scan the conversation for decisions, gotchas, or architectural choices that were not already saved via `/remember`. For each one found, ask the user via `AskUserQuestion`:
111
-
112
- > "I noticed this decision: [summary]. Save it to the vault via `/remember`?"
113
-
114
- Only invoke `/remember` for decisions the user confirms; `/remember` writes the decision as a vault note. If no unrecorded decisions are found, skip silently.
115
-
116
- ## Step 5: Session Tidy (Project Scope)
117
-
118
- Scope: the current project's session folder only.
119
-
120
- 1. **List files** in the project's vault session folder via Bash `ls`.
121
- 2. **Audit** each `.html` and `.md` session file using the audit rules in `session-tidy` Phase 1 (naming, frontmatter completeness, type, status coherence, orphaned next-steps, categorization). session-tidy SKILL.md is the single home for those rules.
122
- 3. **Auto-fix minor HTML metadata issues** via Edit (this step's write path is HTML-oriented):
123
- - Missing frontmatter fields that can be inferred (e.g., `blocked: false` when status is `completed`; `vault_context_retrieved: false` when the field is absent)
124
- - `type` field set to a wrong value (correct to `session-report`)
125
-
126
- When the Edit touches the session report created in this run, call `Artifact` again with the same `file_path` and `favicon` from step 2 to redeploy — the URL captured in step 2 stays unchanged. When the Edit touches an older HTML session report published in a prior run, call `Artifact` on that `file_path` with no `url` argument, since this skill keeps no record of that file's earlier URL — this publishes that report at a new URL. Surface a `Session [N] republished at a new URL: <url>` line so the user can update any prior shares.
127
- 4. **Report issues that need user input:**
128
- - Files with wrong naming convention (propose new name)
129
- - Stale statuses (propose update to `completed` or ask)
130
- - Contradictory status/blocked combos
131
-
132
- If no issues are found, skip silently. Do not report "all clean."
133
- 5. **Rollup check:** if the project has 5+ sessions and no `Summary.html` or `Summary.md`, mention it:
134
- > "This project has [N] sessions and no summary. Run `/session-tidy` for a project rollup."
135
-
136
- ## Step 6: Finalize
137
-
138
- Copy a `/rename` command to the user's clipboard via PowerShell:
139
-
140
- ```
141
- pwsh -NoProfile -Command "Set-Clipboard '/rename [Project] - [Primary Outcome]'"
142
- ```
143
-
144
- Then tell the user:
145
-
146
- > "Copied `/rename [Project] - [Primary Outcome]` to your clipboard. Paste it to rename this session."
147
-
148
- The primary outcome comes from the session title resolved in step 1.
149
-
150
- ---
151
-
152
- ## Run-and-report checklist
153
-
154
- - [ ] Backend detected and announced
155
- - [ ] Session number resolved from `[N]. *.html` and `[N]. *.md` files (highest N + 1)
156
- - [ ] `artifact-design` skill loaded before composing page content
157
- - [ ] HTML composed for this session's character (no document wrapper tags; self-contained, responsive, theme-aware)
158
- - [ ] Frontmatter HTML comment present as the first content line
159
- - [ ] `session_id` frontmatter field set from `CLAUDE_CODE_SESSION_ID` (the authoring agent's own session), or `unknown` when the variable is unset
160
- - [ ] Opening section answers "what shipped / why / impact" for a cold reader
161
- - [ ] Published via the `Artifact` tool with the fixed favicon `📓`; URL captured (or HTML emitted to chat when step 2 Write failed)
162
- - [ ] Vault-context line appended via Edit (step 3); `Artifact` redeployed on the same URL
163
- - [ ] Decision extraction surfaced any unrecorded items
164
- - [ ] Session tidy ran session-tidy Phase 1 audit rules on the project folder (or stayed silent when clean)
165
- - [ ] `/rename` command copied to clipboard via `pwsh Set-Clipboard`
166
-
167
- ## Folder map
168
-
169
- - `SKILL.md` — this hub.
170
- - `templates/frontmatter.md` — the report frontmatter contract and the Step 3 notes block.
@@ -1,40 +0,0 @@
1
- # Session-log template blocks
2
-
3
- The two verbatim HTML blocks the `session-log` skill drops into every session
4
- page. The hub ([`../SKILL.md`](../SKILL.md)) points here from Step 1 / Step 2
5
- (frontmatter) and Step 3 (notes).
6
-
7
- ## Frontmatter contract
8
-
9
- The first child of `<body>`, inside an HTML comment. Substitute a concrete value
10
- for every placeholder; `vault_context_retrieved` starts `false` and Step 3 sets
11
- it.
12
-
13
- ```html
14
- <!--
15
- type: session-report
16
- project: [name]
17
- session: [N]
18
- session_id: [uuid]
19
- date: [YYYY-MM-DD]
20
- status: completed|in-progress|blocked
21
- blocked: true|false
22
- vault_context_retrieved: true|false
23
- tags: [session, [project-tag], [topic-tags]]
24
- -->
25
- ```
26
-
27
- ## Notes block (Step 3)
28
-
29
- Append one vault-context line. When the page already carries a notes /
30
- references section, add a matching child element to that section; use the block
31
- below only when the page has no such section.
32
-
33
- ```html
34
- <h2>Notes</h2>
35
- <ul>
36
- <!-- Pick exactly one of the two forms based on whether vault MCP tools fired this session: -->
37
- <li><strong>Vault context:</strong> Retrieved ([list of note paths])</li>
38
- <li><strong>Vault context:</strong> Not retrieved</li>
39
- </ul>
40
- ```
@@ -1 +0,0 @@
1
- @../AGENTS.md
@@ -1 +0,0 @@
1
-
@@ -1,191 +0,0 @@
1
- ---
2
- name: session-tidy
3
- description: Audit, clean, and consolidate session logs in the Obsidian vault. Fixes format drift, resolves orphaned next-steps, updates stale statuses, and generates project rollup summaries. Use when session logs feel cluttered or before starting a new project milestone. Triggers on '/session-tidy', 'tidy sessions', 'clean up session logs', 'session audit'.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Session Tidy: Session Log Consolidation
8
-
9
- ## Overview
10
-
11
- Audit and consolidate session logs in the Obsidian vault (`sessions/[Project]/`) by enforcing the tidy audit rules, categorizing uncategorized files into project subfolders, resolving orphaned next-steps, updating stale statuses, and generating project rollup summaries.
12
-
13
- **Announce at start:** "Running session log consolidation."
14
-
15
- **Context:** Standalone maintenance utility. Run periodically, after completing a project milestone, or when starting fresh on a project. Companion to `/dream` (memory consolidation) and `/session-log` (session creation).
16
-
17
- ## The Format Contract
18
-
19
- **Write-side HTML contract:** `/session-log` owns how new session reports are written — vault path, HTML frontmatter comment block, Artifact publish, and body design. Read `journal:session-log` SKILL.md for that contract. The markdown field shapes below describe files tidy may read; they are not the write path for new session reports.
20
-
21
- **What tidy audits:** Project folders under `sessions/` may hold `.html` session reports and `.md` session files. Audit every session file present. The rules in this skill are the single home for tidy audit criteria.
22
-
23
- **Directory structure:** `sessions/[Project]/`
24
- - Session files match `[N]. [Title].html` or `[N]. [Title].md`, where Title is a 2-5 word summary of the primary outcome (e.g., `3. Amazon Auth Migration.html`)
25
- - Summary files are `Summary.html` or `Summary.md` in the same project folder
26
- - No parenthetical suffixes like `(Wrap-Up)`
27
- - Files missing a title (e.g., `Session 1.md` or `1.html`) should be flagged for renaming — read the content to derive a title
28
-
29
- **Shared metadata fields (required on every session file):**
30
- `type`, `project`, `session`, `date`, `status`, `blocked`, `tags`
31
-
32
- **HTML session reports** — when tidy reads a `.html` session file, metadata sits in an HTML comment block at the start of the file content. The write-side comment shape lives in session-log SKILL.md. HTML reports also carry `session_id` and `vault_context_retrieved`.
33
-
34
- **Markdown session files** — when tidy reads a `.md` session file, metadata sits in YAML frontmatter:
35
-
36
- ```yaml
37
- ---
38
- type: session-report
39
- project: "[name]"
40
- session: [N]
41
- date: "[YYYY-MM-DD]"
42
- status: "completed" | "in-progress" | "blocked"
43
- blocked: true | false
44
- tags: ["session", "[project-tag]"]
45
- ---
46
- ```
47
-
48
- **Content structure for markdown session files:**
49
- - Section headers (`###`) use one emoji + outcome-oriented title
50
- - Valid emojis: ✅ (done), 🚫 (blocked), ⚠️ (note), 🔧 (in-progress), 📋 (queued)
51
- - Explanatory paragraphs under each header, not just bullets
52
- - Tables for 3+ rows of structured data
53
- - No play-by-play or process narration
54
-
55
- **Content structure for HTML session reports:** Body shape is session-specific (session-log designs per session). Tidy does not enforce a fixed HTML section template. Audit naming, metadata completeness, type, status coherence, orphaned next-steps text in the body, and categorization.
56
-
57
- ## The Process
58
-
59
- ### Phase 0: Preflight
60
-
61
- Determine which storage backend is available. First success wins:
62
-
63
- 1. **Headless vault** — same check as Backend Detection in `journal:session-log` SKILL.md: Bash `ob --version`, then `OBSIDIAN_VAULT_PATH` or `~/.claude/vault/`. When the CLI check succeeds and a vault directory resolves, set `backend = "headless"`.
64
-
65
- 2. **Obsidian MCP** — call `mcp__obsidian__list_directory` with `path="sessions"`. If it succeeds, set `backend = "obsidian"`.
66
-
67
- 3. **Local vault** — same fallback as session-log Backend Detection: `~/.claude/vault/`. Create `~/.claude/vault/sessions` via `mkdir -p` if missing. Set `backend = "local"`.
68
-
69
- **Capability notes by backend:**
70
- - **obsidian:** list, read, move, frontmatter update, and write via MCP tools (`list_directory`, `read_note`, `move_note`, `update_frontmatter`, `write_note`). For `.html` files, metadata edits use Read + Edit of the HTML comment block when MCP frontmatter tools do not apply.
71
- - **headless / local:** Move/rename via `mv` (Bash). Metadata update via Read + Edit/Write. Search via Bash `ls` + Grep.
72
-
73
- ### Phase 1: Audit
74
-
75
- List project subdirectories in `sessions/` (MCP `list_directory` when backend is obsidian; Bash `ls` when headless or local). For each project folder, read its files. Also check for any files sitting directly in `sessions/` (uncategorized). Audit both `.html` and `.md` session files. For each file, check:
76
-
77
- 1. **Naming convention?** Must match `[N]. [Title].html` or `[N]. [Title].md` where N is the session number and Title is a 2-5 word outcome summary. Flag bracket prefixes, date-only names, parenthetical suffixes, or patterns missing a title such as `Session 1.md` or `1.html`.
78
- 2. **Frontmatter complete?** All shared required fields present: `type`, `project`, `session`, `date`, `status`, `blocked`, `tags`. For `.html` session reports, also require `session_id` and `vault_context_retrieved`.
79
- 3. **Type correct?** Must be `session-report`. Flag other types.
80
- 4. **Status coherent?** `status: completed` with `blocked: true` is contradictory. `status: in-progress` or `status: blocked` on sessions older than 7 days is likely stale.
81
- 5. **Orphaned next-steps?** Scan content for sections containing "Next", "Queued", "Session N+1", "TODO", or clipboard emoji sections. Cross-reference against subsequent sessions for the same project to determine if the items were addressed.
82
- 6. **Categorized?** Files sitting directly in `sessions/` (not in a project subfolder) are uncategorized. Infer the project name from the filename pattern (e.g., `BudgetBridge Session 3.md` belongs in `sessions/BudgetBridge/`) or from the frontmatter `project` field. Flag for a move into the correct subfolder.
83
-
84
- ### Phase 2: Propose Changes
85
-
86
- Present a structured report:
87
-
88
- **Format violations** -- files with wrong naming, missing/wrong frontmatter fields, wrong type
89
- **Stale statuses** -- in-progress or blocked sessions older than 7 days, contradictory status+blocked combos
90
- **Orphaned next-steps** -- queued items from session N with no evidence of resolution in session N+1 or later. For each item, state whether it was:
91
- - **Resolved:** found evidence in a later session
92
- - **Orphaned:** no later session addresses it
93
- - **Unknown:** later sessions exist but don't clearly address or skip the item
94
- **Uncategorized files** -- files in `sessions/` root that should live in a project subfolder
95
- **Rollup candidates** -- projects with 3+ sessions that have no `Summary.html` or `Summary.md`
96
- **Proposed actions** -- numbered list of specific changes
97
-
98
- Do NOT execute any changes yet. Wait for user approval.
99
-
100
- ### Phase 3: Execute
101
-
102
- After user approves (all or selected items):
103
-
104
- 1. **Rename** non-conforming files via `mcp__obsidian__move_note` (obsidian) or `mv` (headless/local). Keep the file's extension (`.html` or `.md`).
105
- 2. **Fix frontmatter:**
106
- - `.md` files: `mcp__obsidian__update_frontmatter` when backend is obsidian; Read + Edit/Write of YAML frontmatter when headless or local. Set correct type; add missing shared fields.
107
- - `.html` files: Read + Edit of the HTML comment block fields (shape in session-log SKILL.md). Set correct type; add missing shared fields plus `session_id` and `vault_context_retrieved` when absent.
108
- 3. **Update stale statuses** -- change old in-progress/blocked to completed (or ask user for correct status).
109
- 4. **Clean orphaned next-steps** -- for confirmed orphaned items, either:
110
- - Remove the section if all items are orphaned and the session is old
111
- - Add a strikethrough or "(not pursued)" annotation if some items remain relevant
112
- - Leave unchanged if user declines
113
- 5. **Generate project rollups** -- for each qualifying project, write a summary note via `mcp__obsidian__write_note` (obsidian) or Write (headless/local):
114
- - **Path:** `sessions/[Project]/Summary.md`
115
- - **Frontmatter:** `{"type": "project-summary", "project": "[name]", "sessions": [count], "date_range": "[first] to [last]", "tags": ["summary", "[project-tag]"]}`
116
- - **Content:** Use this template:
117
-
118
- ```markdown
119
- ## [Project] -- Project Summary
120
-
121
- ### Timeline
122
-
123
- | # | Title | Date | Status |
124
- |---|-------|------|--------|
125
- | 1 | [title from filename] | [date] | ✅/🔧/🚫 |
126
-
127
- ### Key Outcomes
128
- - **Session [N]:** [one-line summary of primary outcome]
129
-
130
- ### Current Status
131
- [One paragraph: where the project stands now, what's active, what's done]
132
-
133
- ### Carried Forward
134
- - [ ] [unresolved item from latest session]
135
- ```
136
- 6. **Categorize uncategorized files** -- move files from `sessions/` root into the correct project subfolder via `mcp__obsidian__move_note` or `mv`. When moving, rename to match the `[N]. [Title].html` or `[N]. [Title].md` convention for that file's extension (e.g., `sessions/BudgetBridge Session 3.md` becomes `sessions/BudgetBridge/3. [Title derived from content].md`).
137
-
138
- ### Phase 4: Verify
139
-
140
- After execution, re-read the vault and confirm:
141
- - Every session file lives in a project subfolder under `sessions/[Project]/`
142
- - Every file has valid frontmatter with all required fields for its shape
143
- - Every filename matches the naming convention (`[N]. [Title].html`, `[N]. [Title].md`, `Summary.html`, or `Summary.md`)
144
- - No contradictory status/blocked combos
145
- - All orphaned next-steps resolved or annotated
146
- - Rollup summaries exist for qualifying projects
147
-
148
- Report the results: files renamed, frontmatter fixed, statuses updated, next-steps resolved, rollups generated.
149
-
150
- If Phase 1 finds zero issues across all checks, skip Phases 2-4 and report: "All session logs are tidy. Nothing to do."
151
-
152
- ## Output Format
153
-
154
- Phase 2 report structure:
155
-
156
- ```
157
- ## Session Tidy Report
158
-
159
- ### Format Violations (X found)
160
- - [file] -- [issue]
161
-
162
- ### Stale Statuses (X found)
163
- - [file] -- [status] since [date] ([age] days ago)
164
-
165
- ### Uncategorized Files (X found)
166
- - [file] -- move to sessions/[Project]/[new filename]
167
-
168
- ### Orphaned Next-Steps (X found)
169
- - [file] -- "[item text]" -- [resolved/orphaned/unknown]
170
-
171
- ### Rollup Candidates (X projects)
172
- - [project] -- [N] sessions, [date range], no summary exists
173
-
174
- ### Proposed Actions
175
- 1. [action] -- [file] -- [reason]
176
- 2. ...
177
-
178
- Approve all, select by number, or cancel?
179
- ```
180
-
181
- ## After Completion
182
-
183
- Report summary: files renamed, frontmatter fixes, status updates, next-steps cleaned, rollups generated.
184
-
185
- ## Best Practices
186
-
187
- - Run after finishing a multi-session project
188
- - Run before starting a new milestone on an existing project (clears stale context)
189
- - Cross-reference next-steps manually when the skill flags "unknown" -- it cannot determine intent from content alone
190
- - The 7-day staleness threshold is a heuristic -- adjust based on how frequently you session-log
191
- - Rollup summaries are not a replacement for individual session logs -- they are a navigational aid
@@ -1 +0,0 @@
1
- @../AGENTS.md
@@ -1,130 +0,0 @@
1
- # Delegation Map
2
-
3
- How skill-builder delegates authoring to the `skill-writer-agent` agent.
4
-
5
- ## Delegating to skill-writer-agent (Step 4)
6
-
7
- skill-builder orchestrates; the `skill-writer-agent` agent authors the SKILL.md and companion files. The caller spawns it with `Agent(subagent_type="skill-writer-agent", ...)`. The handoff must be structured so the agent has everything it needs.
8
-
9
- ### New skill handoff
10
-
11
- ```
12
- Create a skill with these parameters:
13
-
14
- **Skill type:** [one of 9 types from skill-types.md]
15
- **Folder structure:** [directories to create: reference/, scripts/, etc.]
16
- **What it does:** [one-sentence capability — single job]
17
- **Domain context:** [what Claude needs to know that it doesn't already]
18
- **Initial gotchas:** [failure patterns to document from the start]
19
- **Degree of freedom:** [high | medium | low — with reasoning]
20
- **Constraints:** [non-negotiables]
21
- **Composition plan:** [related skills; sub-skills with when/produces/missing; leaf vs orchestrator]
22
- **Description (exact frontmatter string):** [capability stem. Triggers: phrase, phrase, ...]
23
- — Trigger catalog only per description-field.md. No story prose.
24
- **Deterministic inventory:** [each process step → class → home path → paired test]
25
- — Per deterministic-elements.md. Deterministic steps must be code/artifacts, not prose-only.
26
-
27
- Produce:
28
- 1. SKILL.md with hub layout (principle, gotchas, when-applies, process, file index, folder map)
29
- 2. Frontmatter description set to the exact trigger-catalog string above
30
- 3. Sub-skills table in body when composition plan lists peer skills
31
- 4. Companion files as needed (reference docs, workflow steps, templates, scripts)
32
- 5. Scripts/workflows for every deterministic inventory row; body only points and handles exit codes
33
- 6. Skill scripts follow CODE_RULES (`*_constants/`, types, specific errors, paired tests)
34
- 7. Every file under 500 lines; TOC on files over 100 lines
35
- 8. File index listing every file and its purpose
36
- 9. No reimplementation of steps owned by named sub-skills
37
- ```
38
-
39
- ### Refine skill handoff
40
-
41
- ```
42
- Refine this existing skill:
43
-
44
- **Current SKILL.md:** [reference or paste]
45
- **What was observed:** [specific failures from Claude B usage]
46
- **What to change:** [specific instructions to add/remove/modify]
47
- **New gotchas to add:** [failure patterns discovered]
48
- **What to preserve:** [working content — do not touch]
49
- **Description rewrite (if activation issue):** [exact new trigger-catalog string]
50
- **Composition change (if modularity issue):** [sub-skills to add/invoke or split plan]
51
- **Deterministic fix (if prose-only mechanical work):** [steps to extract → script/workflow/template paths + tests]
52
-
53
- Constraint: Only change what the observations demand. Do not reorganize working content.
54
- Description must remain a trigger catalog (description-field.md), never story prose.
55
- Deterministic steps must not remain prose-only (deterministic-elements.md).
56
- ```
57
-
58
- ## Spawning a test subagent
59
-
60
- To observe how Claude B uses a skill on a real task:
61
-
62
- ```
63
- Agent(
64
- subagent_type="general-purpose",
65
- description="Test skill on real task",
66
- prompt="Read the skill at [skill-path]/SKILL.md and follow its instructions.
67
-
68
- Task: [realistic user prompt]
69
-
70
- Save a complete transcript of your work to: [workspace]/transcript.md"
71
- )
72
- ```
73
-
74
- Spawn with `run_in_background=true` for longer tasks. Read the transcript when the agent completes.
75
-
76
- ## Reading a transcript for observations
77
-
78
- > "Watch for unexpected exploration paths, missed connections, overreliance on certain sections, and ignored content."
79
-
80
- Scan the transcript for:
81
-
82
- 1. **File access order** — Did Claude read files in the expected order? Unexpected ordering means the structure is not intuitive.
83
- 2. **Missed files** — Were any reference files never accessed? They might be unnecessary or poorly signaled.
84
- 3. **Re-read files** — Did Claude re-read the same file multiple times? That content should be in SKILL.md.
85
- 4. **Gotcha moments** — Where did Claude make a wrong choice? That's a gotcha candidate.
86
- 5. **Script usage** — Did Claude execute scripts as expected, or did it try to read them instead?
87
- 6. **Prose-as-code** — Did Claude reconstruct a multi-step mechanical sequence from markdown when a script should have run? Flag as deterministic-elements failure.
88
- 7. **Tool call errors** — Any "tool not found" or path errors? Fix references.
89
-
90
- ## Delegating self-audit
91
-
92
- After building, spawn a subagent to run the audit independently (task-tool first):
93
-
94
- ```
95
- Agent(
96
- subagent_type="general-purpose",
97
- description="Self-audit skill via task seeds",
98
- prompt="Read the skill at [skill-path]/SKILL.md and all companion files.
99
-
100
- Then read the self-audit task seeds at [skill-builder-path]/references/self-audit-checklist.md.
101
-
102
- Register every bullet as a session task (TaskCreate / TodoWrite). Complete each with PASS, FAIL+file:line+fix, or N/A+reason. Do not use markdown checkboxes as the tracker.
103
-
104
- Report as:
105
- ## Audit Results
106
- - PASS: N
107
- - N/A: M
108
- - FAIL fixed: K
109
- - Remaining FAIL (must be empty): …
110
- "
111
- )
112
- ```
113
-
114
- This gives an independent verification. Fix failures, then re-deliver to user.
115
-
116
- ## Testing across models
117
-
118
- > "Test your Skill with all the models you plan to use it with."
119
-
120
- If the skill will be used with Haiku, spawn a haiku test subagent:
121
-
122
- ```
123
- Agent(
124
- subagent_type="general-purpose",
125
- model="haiku",
126
- ...
127
- )
128
- ```
129
-
130
- Haiku needs more explicit guidance than Opus. Observe whether the skill provides enough.