@hiai-gg/hiai-opencode 0.1.0 → 0.1.1

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 (1236) hide show
  1. package/.env.example +57 -57
  2. package/AGENTS.md +281 -281
  3. package/ARCHITECTURE.md +281 -281
  4. package/LICENSE.md +59 -59
  5. package/README.md +301 -301
  6. package/assets/mcp/mempalace.mjs +153 -153
  7. package/assets/mcp/rag.mjs +236 -236
  8. package/assets/runtime/npm-package-runner.mjs +54 -54
  9. package/config/hiai-opencode.schema.json +82 -82
  10. package/config/opencode.json +4 -4
  11. package/dist/index.js +242 -242
  12. package/hiai-opencode.json +57 -57
  13. package/package.json +91 -91
  14. package/scripts/check_docs.ts +128 -128
  15. package/scripts/doctor.ts +522 -522
  16. package/scripts/measure_prompts.ts +192 -192
  17. package/scripts/test_routing.ts +294 -294
  18. package/skills/api-and-interface-design/SKILL.md +294 -294
  19. package/skills/brainstorming/SKILL.md +164 -164
  20. package/skills/brainstorming/scripts/frame-template.html +214 -214
  21. package/skills/brainstorming/scripts/helper.js +88 -88
  22. package/skills/brainstorming/scripts/server.cjs +354 -354
  23. package/skills/brainstorming/scripts/start-server.sh +148 -148
  24. package/skills/brainstorming/scripts/stop-server.sh +56 -56
  25. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -49
  26. package/skills/brainstorming/visual-companion.md +287 -287
  27. package/skills/browser-testing-with-devtools/SKILL.md +302 -302
  28. package/skills/ci-cd-and-automation/SKILL.md +390 -390
  29. package/skills/code-review-and-quality/SKILL.md +347 -347
  30. package/skills/code-simplification/SKILL.md +331 -331
  31. package/skills/context-engineering/SKILL.md +289 -289
  32. package/skills/deprecation-and-migration/SKILL.md +206 -206
  33. package/skills/dispatching-parallel-agents/SKILL.md +182 -182
  34. package/skills/documentation-and-adrs/SKILL.md +278 -278
  35. package/skills/executing-plans/SKILL.md +70 -70
  36. package/skills/finishing-a-development-branch/SKILL.md +200 -200
  37. package/skills/frontend-ui-engineering/SKILL.md +322 -322
  38. package/skills/git-workflow-and-versioning/SKILL.md +300 -300
  39. package/skills/incremental-implementation/SKILL.md +241 -241
  40. package/skills/performance-optimization/SKILL.md +350 -350
  41. package/skills/receiving-code-review/SKILL.md +213 -213
  42. package/skills/requesting-code-review/SKILL.md +105 -105
  43. package/skills/requesting-code-review/code-reviewer.md +146 -146
  44. package/skills/security-and-hardening/SKILL.md +349 -349
  45. package/skills/shipping-and-launch/SKILL.md +309 -309
  46. package/skills/source-driven-development/SKILL.md +194 -194
  47. package/skills/spec-driven-development/SKILL.md +200 -200
  48. package/skills/subagent-driven-development/SKILL.md +277 -277
  49. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -26
  50. package/skills/subagent-driven-development/implementer-prompt.md +113 -113
  51. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -61
  52. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  53. package/skills/systematic-debugging/SKILL.md +596 -596
  54. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  55. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  56. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  57. package/skills/systematic-debugging/find-polluter.sh +63 -63
  58. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  59. package/skills/systematic-debugging/test-academic.md +14 -14
  60. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  61. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  62. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  63. package/skills/test-driven-development/SKILL.md +379 -379
  64. package/skills/using-agent-skills/SKILL.md +174 -174
  65. package/skills/using-git-worktrees/SKILL.md +218 -218
  66. package/skills/using-superpowers/SKILL.md +117 -117
  67. package/skills/using-superpowers/references/codex-tools.md +100 -100
  68. package/skills/using-superpowers/references/copilot-tools.md +52 -52
  69. package/skills/using-superpowers/references/gemini-tools.md +33 -33
  70. package/skills/verification-before-completion/SKILL.md +139 -139
  71. package/skills/writing-plans/SKILL.md +152 -152
  72. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -49
  73. package/skills/writing-skills/SKILL.md +655 -655
  74. package/skills/writing-skills/anthropic-best-practices.md +1150 -1150
  75. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
  76. package/skills/writing-skills/graphviz-conventions.dot +171 -171
  77. package/skills/writing-skills/persuasion-principles.md +187 -187
  78. package/skills/writing-skills/render-graphs.js +168 -168
  79. package/skills/writing-skills/testing-skills-with-subagents.md +384 -384
  80. package/src/AGENTS.md +41 -41
  81. package/src/agents/AGENTS.md +74 -74
  82. package/src/agents/agent-builder.ts +50 -50
  83. package/src/agents/bob/AGENTS.md +29 -29
  84. package/src/agents/bob/default.ts +128 -128
  85. package/src/agents/bob/gemini.ts +237 -237
  86. package/src/agents/bob/gpt-pro.ts +430 -430
  87. package/src/agents/bob/index.ts +19 -19
  88. package/src/agents/bob.ts +528 -528
  89. package/src/agents/builtin-agents/agent-overrides.ts +75 -75
  90. package/src/agents/builtin-agents/available-skills.ts +35 -35
  91. package/src/agents/builtin-agents/bob-agent.ts +96 -96
  92. package/src/agents/builtin-agents/coder-agent.ts +98 -98
  93. package/src/agents/builtin-agents/environment-context.ts +16 -16
  94. package/src/agents/builtin-agents/general-agents.ts +122 -122
  95. package/src/agents/builtin-agents/guard-agent.ts +66 -66
  96. package/src/agents/builtin-agents/model-resolution.ts +31 -31
  97. package/src/agents/builtin-agents/resolve-file-uri.ts +42 -42
  98. package/src/agents/builtin-agents.ts +194 -194
  99. package/src/agents/coder/AGENTS.md +34 -34
  100. package/src/agents/coder/agent.ts +162 -162
  101. package/src/agents/coder/gpt-codex.ts +404 -404
  102. package/src/agents/coder/gpt-pro.ts +319 -319
  103. package/src/agents/coder/gpt.ts +253 -253
  104. package/src/agents/coder/index.ts +8 -8
  105. package/src/agents/critic/agent.ts +105 -105
  106. package/src/agents/custom-agent-summaries.ts +61 -61
  107. package/src/agents/dynamic-agent-category-skills-guide.ts +138 -138
  108. package/src/agents/dynamic-agent-core-sections.ts +237 -237
  109. package/src/agents/dynamic-agent-policy-sections.ts +182 -182
  110. package/src/agents/dynamic-agent-prompt-builder.ts +31 -31
  111. package/src/agents/dynamic-agent-prompt-types.ts +24 -24
  112. package/src/agents/dynamic-agent-tool-categorization.ts +45 -45
  113. package/src/agents/env-context.ts +16 -16
  114. package/src/agents/gpt-apply-patch-guard.ts +7 -7
  115. package/src/agents/guard/agent.ts +146 -146
  116. package/src/agents/guard/default-prompt-sections.ts +305 -305
  117. package/src/agents/guard/default.ts +22 -22
  118. package/src/agents/guard/gemini-prompt-sections.ts +293 -293
  119. package/src/agents/guard/gemini.ts +22 -22
  120. package/src/agents/guard/gpt-prompt-sections.ts +296 -296
  121. package/src/agents/guard/gpt.ts +22 -22
  122. package/src/agents/guard/index.ts +2 -2
  123. package/src/agents/guard/prompt-section-builder.ts +104 -104
  124. package/src/agents/guard/shared-prompt.ts +172 -172
  125. package/src/agents/index.ts +5 -5
  126. package/src/agents/platform-adapter.ts +236 -236
  127. package/src/agents/platform-manager.ts +57 -57
  128. package/src/agents/prompt-library/identity.ts +14 -14
  129. package/src/agents/prompt-library/index.ts +7 -7
  130. package/src/agents/prompt-library/intent-gate.ts +149 -149
  131. package/src/agents/prompt-library/orchestration.ts +60 -60
  132. package/src/agents/prompt-library/platform.ts +36 -36
  133. package/src/agents/prompt-library/specialized.ts +39 -39
  134. package/src/agents/prompt-library/strategy.ts +80 -80
  135. package/src/agents/prompt-library/todo-discipline.ts +22 -22
  136. package/src/agents/quality-guardian.ts +76 -76
  137. package/src/agents/researcher.ts +73 -73
  138. package/src/agents/strategist/AGENTS.md +37 -37
  139. package/src/agents/strategist/behavioral-summary.ts +79 -79
  140. package/src/agents/strategist/gemini.ts +333 -333
  141. package/src/agents/strategist/gpt.ts +460 -460
  142. package/src/agents/strategist/high-accuracy-mode.ts +78 -78
  143. package/src/agents/strategist/identity-constraints.ts +336 -336
  144. package/src/agents/strategist/index.ts +6 -6
  145. package/src/agents/strategist/interview-mode.ts +335 -335
  146. package/src/agents/strategist/plan-generation.ts +213 -213
  147. package/src/agents/strategist/plan-template.ts +325 -325
  148. package/src/agents/strategist/system-prompt.ts +68 -68
  149. package/src/agents/sub/agent.ts +141 -141
  150. package/src/agents/sub/default.ts +52 -52
  151. package/src/agents/sub/gemini.ts +194 -194
  152. package/src/agents/sub/gpt-codex.ts +156 -156
  153. package/src/agents/sub/gpt-pro.ts +161 -161
  154. package/src/agents/sub/gpt.ts +157 -157
  155. package/src/agents/sub/index.ts +13 -13
  156. package/src/agents/types.ts +144 -144
  157. package/src/agents/ui.ts +58 -58
  158. package/src/config/data/model-capabilities.json +40690 -40690
  159. package/src/config/defaults.ts +146 -146
  160. package/src/config/hiai-opencode.schema.json +12 -12
  161. package/src/config/index.ts +67 -67
  162. package/src/config/loader.test.ts +65 -65
  163. package/src/config/loader.ts +183 -183
  164. package/src/config/models.ts +32 -32
  165. package/src/config/platform-schema.ts +192 -192
  166. package/src/config/schema/agent-definitions.ts +5 -5
  167. package/src/config/schema/agent-names.ts +66 -66
  168. package/src/config/schema/agent-overrides.ts +95 -95
  169. package/src/config/schema/babysitting.ts +7 -7
  170. package/src/config/schema/background-task.ts +29 -29
  171. package/src/config/schema/bob-agent.ts +11 -11
  172. package/src/config/schema/bob.ts +17 -17
  173. package/src/config/schema/browser-automation.ts +24 -24
  174. package/src/config/schema/categories.ts +45 -45
  175. package/src/config/schema/claude-code.ts +13 -13
  176. package/src/config/schema/commands.ts +14 -14
  177. package/src/config/schema/comment-checker.ts +8 -8
  178. package/src/config/schema/dynamic-context-pruning.ts +53 -53
  179. package/src/config/schema/experimental.ts +27 -27
  180. package/src/config/schema/fallback-models.ts +31 -31
  181. package/src/config/schema/fast-apply.ts +14 -14
  182. package/src/config/schema/git-env-prefix.ts +28 -28
  183. package/src/config/schema/git-master.ts +14 -14
  184. package/src/config/schema/hooks.ts +61 -61
  185. package/src/config/schema/index.ts +52 -52
  186. package/src/config/schema/internal/permission.ts +20 -20
  187. package/src/config/schema/model-capabilities.ts +10 -10
  188. package/src/config/schema/notification.ts +8 -8
  189. package/src/config/schema/oh-my-opencode-config.ts +90 -90
  190. package/src/config/schema/openclaw.ts +50 -50
  191. package/src/config/schema/ralph-loop.ts +11 -11
  192. package/src/config/schema/runtime-fallback.ts +18 -18
  193. package/src/config/schema/skills.ts +39 -39
  194. package/src/config/schema/start-work.ts +7 -7
  195. package/src/config/schema/tmux.ts +28 -28
  196. package/src/config/schema/websearch.ts +15 -15
  197. package/src/config/types.ts +174 -174
  198. package/src/create-hooks.ts +93 -93
  199. package/src/create-managers.ts +116 -116
  200. package/src/create-runtime-tmux-config.ts +18 -18
  201. package/src/create-tools.ts +53 -53
  202. package/src/features/background-agent/AGENTS.md +56 -56
  203. package/src/features/background-agent/abort-with-timeout.ts +35 -35
  204. package/src/features/background-agent/background-task-notification-template.ts +74 -74
  205. package/src/features/background-agent/compaction-aware-message-resolver.ts +164 -164
  206. package/src/features/background-agent/concurrency.ts +137 -137
  207. package/src/features/background-agent/constants.ts +58 -58
  208. package/src/features/background-agent/duration-formatter.ts +14 -14
  209. package/src/features/background-agent/error-classifier.ts +83 -83
  210. package/src/features/background-agent/fallback-retry-handler.ts +134 -134
  211. package/src/features/background-agent/index.ts +2 -2
  212. package/src/features/background-agent/loop-detector.ts +102 -102
  213. package/src/features/background-agent/manager.ts +2220 -2220
  214. package/src/features/background-agent/opencode-client.ts +3 -3
  215. package/src/features/background-agent/process-cleanup.ts +98 -98
  216. package/src/features/background-agent/remove-task-toast-tracking.ts +8 -8
  217. package/src/features/background-agent/session-existence.ts +57 -57
  218. package/src/features/background-agent/session-idle-event-handler.ts +93 -93
  219. package/src/features/background-agent/session-status-classifier.ts +20 -20
  220. package/src/features/background-agent/spawner/parent-directory-resolver.ts +24 -24
  221. package/src/features/background-agent/spawner.ts +327 -327
  222. package/src/features/background-agent/state.ts +199 -199
  223. package/src/features/background-agent/subagent-spawn-limits.ts +97 -97
  224. package/src/features/background-agent/task-history.ts +79 -79
  225. package/src/features/background-agent/task-poller.ts +225 -225
  226. package/src/features/background-agent/types.ts +100 -100
  227. package/src/features/boulder-state/constants.ts +13 -13
  228. package/src/features/boulder-state/index.ts +4 -4
  229. package/src/features/boulder-state/storage.ts +336 -336
  230. package/src/features/boulder-state/top-level-task.ts +78 -78
  231. package/src/features/boulder-state/types.ts +61 -61
  232. package/src/features/builtin-commands/commands.ts +143 -143
  233. package/src/features/builtin-commands/index.ts +2 -2
  234. package/src/features/builtin-commands/templates/handoff.ts +177 -177
  235. package/src/features/builtin-commands/templates/init-deep.ts +305 -305
  236. package/src/features/builtin-commands/templates/ralph-loop.ts +66 -66
  237. package/src/features/builtin-commands/templates/refactor.ts +619 -619
  238. package/src/features/builtin-commands/templates/remove-ai-slops.ts +96 -96
  239. package/src/features/builtin-commands/templates/start-work.ts +128 -128
  240. package/src/features/builtin-commands/templates/stop-continuation.ts +13 -13
  241. package/src/features/builtin-commands/types.ts +9 -9
  242. package/src/features/builtin-skills/index.ts +2 -2
  243. package/src/features/builtin-skills/materialize.ts +338 -338
  244. package/src/features/builtin-skills/skills/ai-slop-remover.ts +145 -145
  245. package/src/features/builtin-skills/skills/dev-browser.ts +221 -221
  246. package/src/features/builtin-skills/skills/frontend-ui-ux.ts +79 -79
  247. package/src/features/builtin-skills/skills/git-master-sections/commit-workflow.ts +509 -509
  248. package/src/features/builtin-skills/skills/git-master-sections/history-search-workflow.ts +229 -229
  249. package/src/features/builtin-skills/skills/git-master-sections/overview.ts +64 -64
  250. package/src/features/builtin-skills/skills/git-master-sections/quick-reference.ts +86 -86
  251. package/src/features/builtin-skills/skills/git-master-sections/rebase-workflow.ts +181 -181
  252. package/src/features/builtin-skills/skills/git-master-skill-metadata.ts +4 -4
  253. package/src/features/builtin-skills/skills/git-master.ts +28 -28
  254. package/src/features/builtin-skills/skills/index.ts +7 -7
  255. package/src/features/builtin-skills/skills/playwright-cli.ts +268 -268
  256. package/src/features/builtin-skills/skills/playwright.ts +466 -466
  257. package/src/features/builtin-skills/skills/review-work.ts +536 -536
  258. package/src/features/builtin-skills/skills.ts +39 -39
  259. package/src/features/builtin-skills/types.ts +16 -16
  260. package/src/features/claude-code-agent-loader/agent-definitions-loader.ts +87 -87
  261. package/src/features/claude-code-agent-loader/claude-model-mapper.ts +53 -53
  262. package/src/features/claude-code-agent-loader/index.ts +5 -5
  263. package/src/features/claude-code-agent-loader/json-agent-loader.ts +53 -53
  264. package/src/features/claude-code-agent-loader/loader.ts +86 -86
  265. package/src/features/claude-code-agent-loader/opencode-config-agents-reader.ts +125 -125
  266. package/src/features/claude-code-agent-loader/types.ts +31 -31
  267. package/src/features/claude-code-command-loader/index.ts +2 -2
  268. package/src/features/claude-code-command-loader/loader.ts +169 -169
  269. package/src/features/claude-code-command-loader/types.ts +46 -46
  270. package/src/features/claude-code-mcp-loader/configure-allowed-env-vars.ts +48 -48
  271. package/src/features/claude-code-mcp-loader/env-expander.ts +51 -51
  272. package/src/features/claude-code-mcp-loader/index.ts +12 -12
  273. package/src/features/claude-code-mcp-loader/loader.ts +156 -156
  274. package/src/features/claude-code-mcp-loader/scope-filter.ts +17 -17
  275. package/src/features/claude-code-mcp-loader/transformer.ts +57 -57
  276. package/src/features/claude-code-mcp-loader/types.ts +51 -51
  277. package/src/features/claude-code-plugin-loader/agent-loader.ts +59 -59
  278. package/src/features/claude-code-plugin-loader/command-loader.ts +53 -53
  279. package/src/features/claude-code-plugin-loader/discovery.ts +251 -251
  280. package/src/features/claude-code-plugin-loader/hook-loader.ts +26 -26
  281. package/src/features/claude-code-plugin-loader/index.ts +10 -10
  282. package/src/features/claude-code-plugin-loader/loader.ts +134 -134
  283. package/src/features/claude-code-plugin-loader/mcp-server-loader.ts +59 -59
  284. package/src/features/claude-code-plugin-loader/plugin-path-resolver.ts +23 -23
  285. package/src/features/claude-code-plugin-loader/scope-filter.ts +29 -29
  286. package/src/features/claude-code-plugin-loader/skill-loader.ts +62 -62
  287. package/src/features/claude-code-plugin-loader/types.ts +255 -255
  288. package/src/features/claude-code-session-state/index.ts +1 -1
  289. package/src/features/claude-code-session-state/state.ts +154 -154
  290. package/src/features/claude-tasks/session-storage.ts +52 -52
  291. package/src/features/claude-tasks/storage.ts +169 -169
  292. package/src/features/claude-tasks/types.ts +20 -20
  293. package/src/features/context-injector/collector.ts +91 -91
  294. package/src/features/context-injector/index.ts +14 -14
  295. package/src/features/context-injector/injector.ts +167 -167
  296. package/src/features/context-injector/types.ts +91 -91
  297. package/src/features/hook-message-injector/constants.ts +1 -1
  298. package/src/features/hook-message-injector/index.ts +11 -11
  299. package/src/features/hook-message-injector/injector.ts +437 -437
  300. package/src/features/hook-message-injector/types.ts +49 -49
  301. package/src/features/mcp-oauth/AGENTS.md +54 -54
  302. package/src/features/mcp-oauth/callback-server.ts +106 -106
  303. package/src/features/mcp-oauth/dcr.ts +98 -98
  304. package/src/features/mcp-oauth/discovery.ts +134 -134
  305. package/src/features/mcp-oauth/oauth-authorization-flow.ts +150 -150
  306. package/src/features/mcp-oauth/provider.ts +215 -215
  307. package/src/features/mcp-oauth/refresh-mutex.ts +58 -58
  308. package/src/features/mcp-oauth/resource-indicator.ts +16 -16
  309. package/src/features/mcp-oauth/schema.ts +8 -8
  310. package/src/features/mcp-oauth/step-up.ts +79 -79
  311. package/src/features/mcp-oauth/storage.ts +155 -155
  312. package/src/features/opencode-skill-loader/AGENTS.md +59 -59
  313. package/src/features/opencode-skill-loader/allowed-tools-parser.ts +9 -9
  314. package/src/features/opencode-skill-loader/async-loader.ts +213 -213
  315. package/src/features/opencode-skill-loader/blocking.ts +62 -62
  316. package/src/features/opencode-skill-loader/config-source-discovery.ts +114 -114
  317. package/src/features/opencode-skill-loader/discover-worker.ts +56 -56
  318. package/src/features/opencode-skill-loader/git-master-template-injection.ts +150 -150
  319. package/src/features/opencode-skill-loader/index.ts +17 -17
  320. package/src/features/opencode-skill-loader/loaded-skill-from-path.ts +73 -73
  321. package/src/features/opencode-skill-loader/loaded-skill-template-extractor.ts +16 -16
  322. package/src/features/opencode-skill-loader/loader.ts +172 -172
  323. package/src/features/opencode-skill-loader/merger/builtin-skill-converter.ts +26 -26
  324. package/src/features/opencode-skill-loader/merger/config-skill-entry-loader.ts +117 -117
  325. package/src/features/opencode-skill-loader/merger/scope-priority.ts +10 -10
  326. package/src/features/opencode-skill-loader/merger/skill-definition-merger.ts +31 -31
  327. package/src/features/opencode-skill-loader/merger/skills-config-normalizer.ts +19 -19
  328. package/src/features/opencode-skill-loader/merger.ts +96 -96
  329. package/src/features/opencode-skill-loader/skill-content.ts +11 -11
  330. package/src/features/opencode-skill-loader/skill-deduplication.ts +13 -13
  331. package/src/features/opencode-skill-loader/skill-definition-record.ts +11 -11
  332. package/src/features/opencode-skill-loader/skill-directory-loader.ts +112 -112
  333. package/src/features/opencode-skill-loader/skill-discovery.ts +76 -76
  334. package/src/features/opencode-skill-loader/skill-mcp-config.ts +45 -45
  335. package/src/features/opencode-skill-loader/skill-resolution-options.ts +9 -9
  336. package/src/features/opencode-skill-loader/skill-template-resolver.ts +97 -97
  337. package/src/features/opencode-skill-loader/types.ts +38 -38
  338. package/src/features/run-continuation-state/constants.ts +1 -1
  339. package/src/features/run-continuation-state/index.ts +3 -3
  340. package/src/features/run-continuation-state/storage.ts +80 -80
  341. package/src/features/run-continuation-state/types.ts +15 -15
  342. package/src/features/skill-mcp-manager/AGENTS.md +111 -111
  343. package/src/features/skill-mcp-manager/cleanup.ts +153 -153
  344. package/src/features/skill-mcp-manager/connection-type.ts +26 -26
  345. package/src/features/skill-mcp-manager/connection.ts +146 -146
  346. package/src/features/skill-mcp-manager/env-cleaner.ts +59 -59
  347. package/src/features/skill-mcp-manager/error-redaction.ts +47 -47
  348. package/src/features/skill-mcp-manager/http-client.ts +126 -126
  349. package/src/features/skill-mcp-manager/index.ts +2 -2
  350. package/src/features/skill-mcp-manager/manager.ts +178 -178
  351. package/src/features/skill-mcp-manager/oauth-handler.ts +160 -160
  352. package/src/features/skill-mcp-manager/stdio-client.ts +112 -112
  353. package/src/features/skill-mcp-manager/types.ts +96 -96
  354. package/src/features/task-toast-manager/index.ts +2 -2
  355. package/src/features/task-toast-manager/manager.ts +251 -251
  356. package/src/features/task-toast-manager/types.ts +29 -29
  357. package/src/features/tmux-subagent/action-executor-core.ts +82 -82
  358. package/src/features/tmux-subagent/action-executor.ts +137 -137
  359. package/src/features/tmux-subagent/cleanup.ts +42 -42
  360. package/src/features/tmux-subagent/decision-engine.ts +22 -22
  361. package/src/features/tmux-subagent/event-handlers.ts +6 -6
  362. package/src/features/tmux-subagent/grid-planning.ts +137 -137
  363. package/src/features/tmux-subagent/index.ts +16 -16
  364. package/src/features/tmux-subagent/manager.ts +969 -969
  365. package/src/features/tmux-subagent/oldest-agent-pane.ts +37 -37
  366. package/src/features/tmux-subagent/pane-split-availability.ts +77 -77
  367. package/src/features/tmux-subagent/pane-state-parser.ts +135 -135
  368. package/src/features/tmux-subagent/pane-state-querier.ts +76 -76
  369. package/src/features/tmux-subagent/polling-constants.ts +6 -6
  370. package/src/features/tmux-subagent/polling-manager.ts +167 -167
  371. package/src/features/tmux-subagent/polling.ts +183 -183
  372. package/src/features/tmux-subagent/session-created-event.ts +44 -44
  373. package/src/features/tmux-subagent/session-created-handler.ts +175 -175
  374. package/src/features/tmux-subagent/session-deleted-handler.ts +50 -50
  375. package/src/features/tmux-subagent/session-message-count.ts +3 -3
  376. package/src/features/tmux-subagent/session-ready-waiter.ts +44 -44
  377. package/src/features/tmux-subagent/session-status-parser.ts +17 -17
  378. package/src/features/tmux-subagent/spawn-action-decider.ts +147 -147
  379. package/src/features/tmux-subagent/spawn-target-finder.ts +146 -146
  380. package/src/features/tmux-subagent/tmux-grid-constants.ts +57 -57
  381. package/src/features/tmux-subagent/tracked-session-state.ts +29 -29
  382. package/src/features/tmux-subagent/types.ts +54 -54
  383. package/src/features/tool-metadata-store/index.ts +7 -7
  384. package/src/features/tool-metadata-store/store.ts +84 -84
  385. package/src/hooks/agent-usage-reminder/constants.ts +52 -52
  386. package/src/hooks/agent-usage-reminder/hook.ts +134 -134
  387. package/src/hooks/agent-usage-reminder/index.ts +1 -1
  388. package/src/hooks/agent-usage-reminder/storage.ts +42 -42
  389. package/src/hooks/agent-usage-reminder/types.ts +6 -6
  390. package/src/hooks/anthropic-context-window-limit-recovery/AGENTS.md +49 -49
  391. package/src/hooks/anthropic-context-window-limit-recovery/aggressive-truncation-strategy.ts +87 -87
  392. package/src/hooks/anthropic-context-window-limit-recovery/client.ts +21 -21
  393. package/src/hooks/anthropic-context-window-limit-recovery/deduplication-recovery.ts +77 -77
  394. package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.ts +199 -199
  395. package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery.ts +149 -149
  396. package/src/hooks/anthropic-context-window-limit-recovery/executor.ts +83 -83
  397. package/src/hooks/anthropic-context-window-limit-recovery/index.ts +8 -8
  398. package/src/hooks/anthropic-context-window-limit-recovery/message-builder.ts +190 -190
  399. package/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts +40 -40
  400. package/src/hooks/anthropic-context-window-limit-recovery/parser.ts +209 -209
  401. package/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +189 -189
  402. package/src/hooks/anthropic-context-window-limit-recovery/pruning-tool-output-truncation.ts +142 -142
  403. package/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -44
  404. package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.test-support.ts +119 -119
  405. package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts +193 -193
  406. package/src/hooks/anthropic-context-window-limit-recovery/recovery-strategy.ts +2 -2
  407. package/src/hooks/anthropic-context-window-limit-recovery/session-timeout-map.ts +20 -20
  408. package/src/hooks/anthropic-context-window-limit-recovery/state.ts +78 -78
  409. package/src/hooks/anthropic-context-window-limit-recovery/storage-paths.ts +6 -6
  410. package/src/hooks/anthropic-context-window-limit-recovery/storage.ts +18 -18
  411. package/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts +218 -218
  412. package/src/hooks/anthropic-context-window-limit-recovery/target-token-truncation.ts +196 -196
  413. package/src/hooks/anthropic-context-window-limit-recovery/tool-part-types.ts +38 -38
  414. package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage-sdk.ts +123 -123
  415. package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage.ts +119 -119
  416. package/src/hooks/anthropic-context-window-limit-recovery/types.ts +44 -44
  417. package/src/hooks/anthropic-effort/hook.ts +93 -93
  418. package/src/hooks/anthropic-effort/index.ts +1 -1
  419. package/src/hooks/auto-slash-command/constants.ts +12 -12
  420. package/src/hooks/auto-slash-command/detector.ts +88 -88
  421. package/src/hooks/auto-slash-command/executor.ts +165 -165
  422. package/src/hooks/auto-slash-command/hook.ts +238 -238
  423. package/src/hooks/auto-slash-command/index.ts +7 -7
  424. package/src/hooks/auto-slash-command/processed-command-store.ts +74 -74
  425. package/src/hooks/auto-slash-command/types.ts +42 -42
  426. package/src/hooks/background-notification/hook.ts +54 -54
  427. package/src/hooks/background-notification/index.ts +2 -2
  428. package/src/hooks/background-notification/types.ts +5 -5
  429. package/src/hooks/bash-file-read-guard.ts +44 -44
  430. package/src/hooks/category-skill-reminder/formatter.ts +37 -37
  431. package/src/hooks/category-skill-reminder/hook.ts +142 -142
  432. package/src/hooks/category-skill-reminder/index.ts +1 -1
  433. package/src/hooks/claude-code-hooks/AGENTS.md +41 -41
  434. package/src/hooks/claude-code-hooks/claude-code-hooks-hook.ts +28 -28
  435. package/src/hooks/claude-code-hooks/config-loader.ts +151 -151
  436. package/src/hooks/claude-code-hooks/config.ts +147 -147
  437. package/src/hooks/claude-code-hooks/dispatch-hook.ts +27 -27
  438. package/src/hooks/claude-code-hooks/execute-http-hook.ts +116 -116
  439. package/src/hooks/claude-code-hooks/handlers/chat-message-handler.ts +140 -140
  440. package/src/hooks/claude-code-hooks/handlers/pre-compact-handler.ts +41 -41
  441. package/src/hooks/claude-code-hooks/handlers/session-event-handler.ts +137 -137
  442. package/src/hooks/claude-code-hooks/handlers/tool-execute-after-handler.ts +160 -160
  443. package/src/hooks/claude-code-hooks/handlers/tool-execute-before-handler.ts +93 -93
  444. package/src/hooks/claude-code-hooks/index.ts +1 -1
  445. package/src/hooks/claude-code-hooks/plugin-config.ts +12 -12
  446. package/src/hooks/claude-code-hooks/post-tool-use.ts +195 -195
  447. package/src/hooks/claude-code-hooks/pre-compact.ts +105 -105
  448. package/src/hooks/claude-code-hooks/pre-tool-use.ts +168 -168
  449. package/src/hooks/claude-code-hooks/session-hook-state.ts +17 -17
  450. package/src/hooks/claude-code-hooks/stop.ts +118 -118
  451. package/src/hooks/claude-code-hooks/todo.ts +76 -76
  452. package/src/hooks/claude-code-hooks/tool-input-cache.ts +82 -82
  453. package/src/hooks/claude-code-hooks/transcript.ts +248 -248
  454. package/src/hooks/claude-code-hooks/types.ts +214 -214
  455. package/src/hooks/claude-code-hooks/user-prompt-submit.ts +121 -121
  456. package/src/hooks/comment-checker/cli-runner.ts +127 -127
  457. package/src/hooks/comment-checker/cli.ts +269 -269
  458. package/src/hooks/comment-checker/downloader.ts +170 -170
  459. package/src/hooks/comment-checker/hook.ts +192 -192
  460. package/src/hooks/comment-checker/index.ts +1 -1
  461. package/src/hooks/comment-checker/pending-calls.ts +45 -45
  462. package/src/hooks/comment-checker/types.ts +33 -33
  463. package/src/hooks/compaction-context-injector/compaction-context-prompt.ts +56 -56
  464. package/src/hooks/compaction-context-injector/constants.ts +5 -5
  465. package/src/hooks/compaction-context-injector/hook.ts +164 -164
  466. package/src/hooks/compaction-context-injector/index.ts +1 -1
  467. package/src/hooks/compaction-context-injector/recovery-prompt-config.ts +77 -77
  468. package/src/hooks/compaction-context-injector/recovery.ts +163 -163
  469. package/src/hooks/compaction-context-injector/session-id.ts +8 -8
  470. package/src/hooks/compaction-context-injector/session-prompt-config-resolver.ts +120 -120
  471. package/src/hooks/compaction-context-injector/tail-monitor.ts +52 -52
  472. package/src/hooks/compaction-context-injector/types.ts +25 -25
  473. package/src/hooks/compaction-context-injector/validated-model.ts +47 -47
  474. package/src/hooks/compaction-todo-preserver/hook.ts +127 -127
  475. package/src/hooks/compaction-todo-preserver/index.ts +2 -2
  476. package/src/hooks/context-window-monitor.ts +113 -113
  477. package/src/hooks/delegate-task-retry/guidance.ts +45 -45
  478. package/src/hooks/delegate-task-retry/hook.ts +22 -22
  479. package/src/hooks/delegate-task-retry/index.ts +4 -4
  480. package/src/hooks/delegate-task-retry/patterns.ts +77 -77
  481. package/src/hooks/directory-agents-injector/constants.ts +7 -7
  482. package/src/hooks/directory-agents-injector/finder.ts +38 -38
  483. package/src/hooks/directory-agents-injector/hook.ts +80 -80
  484. package/src/hooks/directory-agents-injector/index.ts +1 -1
  485. package/src/hooks/directory-agents-injector/injector.ts +59 -59
  486. package/src/hooks/directory-agents-injector/storage.ts +8 -8
  487. package/src/hooks/directory-readme-injector/constants.ts +7 -7
  488. package/src/hooks/directory-readme-injector/finder.ts +33 -33
  489. package/src/hooks/directory-readme-injector/hook.ts +80 -80
  490. package/src/hooks/directory-readme-injector/index.ts +1 -1
  491. package/src/hooks/directory-readme-injector/injector.ts +59 -59
  492. package/src/hooks/directory-readme-injector/storage.ts +8 -8
  493. package/src/hooks/edit-error-recovery/hook.ts +58 -58
  494. package/src/hooks/edit-error-recovery/index.ts +5 -5
  495. package/src/hooks/empty-task-response-detector.ts +27 -27
  496. package/src/hooks/fast-apply/hook.ts +11 -11
  497. package/src/hooks/fast-apply/index.ts +1 -1
  498. package/src/hooks/fast-apply/ollama-client.ts +53 -53
  499. package/src/hooks/fast-apply/tool-execute-before-handler.ts +86 -86
  500. package/src/hooks/guard/AGENTS.md +64 -64
  501. package/src/hooks/guard/background-launch-session-tracking.ts +97 -97
  502. package/src/hooks/guard/bob-path.ts +8 -8
  503. package/src/hooks/guard/boulder-continuation-injector.ts +109 -109
  504. package/src/hooks/guard/boulder-session-lineage.ts +44 -44
  505. package/src/hooks/guard/event-handler.ts +104 -104
  506. package/src/hooks/guard/final-wave-approval-gate.ts +47 -47
  507. package/src/hooks/guard/final-wave-plan-state.ts +60 -60
  508. package/src/hooks/guard/guard-hook.ts +27 -27
  509. package/src/hooks/guard/hook-name.ts +1 -1
  510. package/src/hooks/guard/idle-event.ts +341 -341
  511. package/src/hooks/guard/index.ts +3 -3
  512. package/src/hooks/guard/is-abort-error.ts +20 -20
  513. package/src/hooks/guard/recent-model-resolver.ts +89 -89
  514. package/src/hooks/guard/resolve-active-boulder-session.ts +29 -29
  515. package/src/hooks/guard/session-last-agent.ts +153 -153
  516. package/src/hooks/guard/subagent-session-id.ts +54 -54
  517. package/src/hooks/guard/system-reminder-templates.ts +249 -249
  518. package/src/hooks/guard/task-context.ts +45 -45
  519. package/src/hooks/guard/tool-execute-after.ts +209 -209
  520. package/src/hooks/guard/tool-execute-before.ts +102 -102
  521. package/src/hooks/guard/tsconfig.json +9 -9
  522. package/src/hooks/guard/types.ts +45 -45
  523. package/src/hooks/guard/verification-reminders.ts +197 -197
  524. package/src/hooks/guard/write-edit-tool-policy.ts +5 -5
  525. package/src/hooks/hashline-edit-diff-enhancer/hook.ts +106 -106
  526. package/src/hooks/hashline-read-enhancer/hook.ts +193 -193
  527. package/src/hooks/hashline-read-enhancer/index.ts +1 -1
  528. package/src/hooks/index.ts +58 -58
  529. package/src/hooks/interactive-bash-session/constants.ts +13 -13
  530. package/src/hooks/interactive-bash-session/hook.ts +125 -125
  531. package/src/hooks/interactive-bash-session/index.ts +3 -3
  532. package/src/hooks/interactive-bash-session/interactive-bash-session-tracker.ts +119 -119
  533. package/src/hooks/interactive-bash-session/parser.ts +118 -118
  534. package/src/hooks/interactive-bash-session/state-manager.ts +35 -35
  535. package/src/hooks/interactive-bash-session/storage.ts +59 -59
  536. package/src/hooks/interactive-bash-session/tmux-command-parser.ts +125 -125
  537. package/src/hooks/interactive-bash-session/types.ts +11 -11
  538. package/src/hooks/json-error-recovery/hook.ts +58 -58
  539. package/src/hooks/json-error-recovery/index.ts +6 -6
  540. package/src/hooks/keyword-detector/AGENTS.md +57 -57
  541. package/src/hooks/keyword-detector/analyze/default.ts +28 -28
  542. package/src/hooks/keyword-detector/analyze/index.ts +1 -1
  543. package/src/hooks/keyword-detector/constants.ts +45 -45
  544. package/src/hooks/keyword-detector/detector.ts +53 -53
  545. package/src/hooks/keyword-detector/hook.ts +143 -143
  546. package/src/hooks/keyword-detector/index.ts +5 -5
  547. package/src/hooks/keyword-detector/search/default.ts +20 -20
  548. package/src/hooks/keyword-detector/search/index.ts +1 -1
  549. package/src/hooks/keyword-detector/types.ts +4 -4
  550. package/src/hooks/keyword-detector/ultrawork/default.ts +302 -302
  551. package/src/hooks/keyword-detector/ultrawork/gemini.ts +290 -290
  552. package/src/hooks/keyword-detector/ultrawork/gpt.ts +173 -173
  553. package/src/hooks/keyword-detector/ultrawork/index.ts +56 -56
  554. package/src/hooks/keyword-detector/ultrawork/planner.ts +140 -140
  555. package/src/hooks/keyword-detector/ultrawork/source-detector.ts +65 -65
  556. package/src/hooks/legacy-plugin-toast/auto-migrate-runner.ts +2 -2
  557. package/src/hooks/legacy-plugin-toast/auto-migrate.ts +64 -64
  558. package/src/hooks/legacy-plugin-toast/hook.ts +68 -68
  559. package/src/hooks/legacy-plugin-toast/index.ts +1 -1
  560. package/src/hooks/legacy-plugin-toast/plugin-entry-migrator.ts +1 -1
  561. package/src/hooks/model-fallback/chat-message-fallback-handler.ts +74 -74
  562. package/src/hooks/model-fallback/hook.ts +201 -201
  563. package/src/hooks/model-fallback/next-fallback.ts +84 -84
  564. package/src/hooks/no-bob-gpt/hook.ts +56 -56
  565. package/src/hooks/no-bob-gpt/index.ts +1 -1
  566. package/src/hooks/no-coder-non-gpt/hook.ts +67 -67
  567. package/src/hooks/no-coder-non-gpt/index.ts +1 -1
  568. package/src/hooks/non-interactive-env/constants.ts +70 -70
  569. package/src/hooks/non-interactive-env/detector.ts +19 -19
  570. package/src/hooks/non-interactive-env/index.ts +5 -5
  571. package/src/hooks/non-interactive-env/non-interactive-env-hook.ts +73 -73
  572. package/src/hooks/non-interactive-env/types.ts +3 -3
  573. package/src/hooks/preemptive-compaction-degradation-monitor.ts +212 -212
  574. package/src/hooks/preemptive-compaction-no-text-tail.ts +70 -70
  575. package/src/hooks/preemptive-compaction.ts +218 -218
  576. package/src/hooks/question-label-truncator/hook.ts +62 -62
  577. package/src/hooks/question-label-truncator/index.ts +1 -1
  578. package/src/hooks/ralph-loop/AGENTS.md +62 -62
  579. package/src/hooks/ralph-loop/command-arguments.ts +30 -30
  580. package/src/hooks/ralph-loop/completion-handler.ts +65 -65
  581. package/src/hooks/ralph-loop/completion-promise-detector-test-input.ts +23 -23
  582. package/src/hooks/ralph-loop/completion-promise-detector.ts +165 -165
  583. package/src/hooks/ralph-loop/constants.ts +7 -7
  584. package/src/hooks/ralph-loop/continuation-prompt-builder.ts +77 -77
  585. package/src/hooks/ralph-loop/continuation-prompt-injector.ts +91 -91
  586. package/src/hooks/ralph-loop/index.ts +6 -6
  587. package/src/hooks/ralph-loop/iteration-continuation.ts +64 -64
  588. package/src/hooks/ralph-loop/logician-verification-detector.ts +88 -88
  589. package/src/hooks/ralph-loop/loop-session-recovery.ts +33 -33
  590. package/src/hooks/ralph-loop/loop-state-controller.ts +178 -178
  591. package/src/hooks/ralph-loop/message-storage-directory.ts +1 -1
  592. package/src/hooks/ralph-loop/pending-verification-handler.ts +152 -152
  593. package/src/hooks/ralph-loop/ralph-loop-event-handler.ts +231 -231
  594. package/src/hooks/ralph-loop/ralph-loop-hook.ts +90 -90
  595. package/src/hooks/ralph-loop/session-event-handler.ts +56 -56
  596. package/src/hooks/ralph-loop/session-reset-strategy.ts +69 -69
  597. package/src/hooks/ralph-loop/storage.ts +164 -164
  598. package/src/hooks/ralph-loop/types.ts +25 -25
  599. package/src/hooks/ralph-loop/verification-failure-handler.ts +103 -103
  600. package/src/hooks/ralph-loop/with-timeout.ts +20 -20
  601. package/src/hooks/read-image-resizer/hook.ts +209 -209
  602. package/src/hooks/read-image-resizer/image-dimensions.ts +191 -191
  603. package/src/hooks/read-image-resizer/image-resizer.ts +191 -191
  604. package/src/hooks/read-image-resizer/index.ts +1 -1
  605. package/src/hooks/read-image-resizer/png-fallback-resizer.ts +359 -359
  606. package/src/hooks/read-image-resizer/types.ts +16 -16
  607. package/src/hooks/rules-injector/AGENTS.md +53 -53
  608. package/src/hooks/rules-injector/cache.ts +27 -27
  609. package/src/hooks/rules-injector/constants.ts +31 -31
  610. package/src/hooks/rules-injector/finder.ts +3 -3
  611. package/src/hooks/rules-injector/hook.ts +94 -94
  612. package/src/hooks/rules-injector/index.ts +2 -2
  613. package/src/hooks/rules-injector/injector.ts +189 -189
  614. package/src/hooks/rules-injector/matcher.ts +63 -63
  615. package/src/hooks/rules-injector/output-path.ts +22 -22
  616. package/src/hooks/rules-injector/parser.ts +211 -211
  617. package/src/hooks/rules-injector/project-root-finder.ts +36 -36
  618. package/src/hooks/rules-injector/rule-distance.ts +53 -53
  619. package/src/hooks/rules-injector/rule-file-finder.ts +139 -139
  620. package/src/hooks/rules-injector/rule-file-scanner.ts +55 -55
  621. package/src/hooks/rules-injector/storage.ts +59 -59
  622. package/src/hooks/rules-injector/types.ts +57 -57
  623. package/src/hooks/runtime-fallback/AGENTS.md +102 -102
  624. package/src/hooks/runtime-fallback/agent-resolver.ts +50 -50
  625. package/src/hooks/runtime-fallback/auto-retry-signal.ts +32 -32
  626. package/src/hooks/runtime-fallback/auto-retry.ts +228 -228
  627. package/src/hooks/runtime-fallback/chat-message-handler.ts +62 -62
  628. package/src/hooks/runtime-fallback/constants.ts +47 -47
  629. package/src/hooks/runtime-fallback/error-classifier.ts +183 -183
  630. package/src/hooks/runtime-fallback/event-handler.ts +213 -213
  631. package/src/hooks/runtime-fallback/fallback-bootstrap-model.ts +63 -63
  632. package/src/hooks/runtime-fallback/fallback-models.ts +86 -86
  633. package/src/hooks/runtime-fallback/fallback-retry-dispatcher.ts +55 -55
  634. package/src/hooks/runtime-fallback/fallback-state.ts +74 -74
  635. package/src/hooks/runtime-fallback/hook.ts +87 -87
  636. package/src/hooks/runtime-fallback/index.ts +2 -2
  637. package/src/hooks/runtime-fallback/last-user-retry-parts.ts +20 -20
  638. package/src/hooks/runtime-fallback/message-update-handler.ts +168 -168
  639. package/src/hooks/runtime-fallback/retry-model-payload.ts +30 -30
  640. package/src/hooks/runtime-fallback/session-messages.ts +38 -38
  641. package/src/hooks/runtime-fallback/session-status-handler.ts +126 -126
  642. package/src/hooks/runtime-fallback/types.ts +77 -77
  643. package/src/hooks/runtime-fallback/visible-assistant-response.ts +80 -80
  644. package/src/hooks/session-notification-content.ts +145 -145
  645. package/src/hooks/session-notification-formatting.ts +25 -25
  646. package/src/hooks/session-notification-scheduler.ts +188 -188
  647. package/src/hooks/session-notification-sender.ts +117 -117
  648. package/src/hooks/session-notification-utils.ts +80 -80
  649. package/src/hooks/session-notification.ts +219 -219
  650. package/src/hooks/session-recovery/AGENTS.md +59 -59
  651. package/src/hooks/session-recovery/constants.ts +5 -5
  652. package/src/hooks/session-recovery/detect-error-type.ts +102 -102
  653. package/src/hooks/session-recovery/hook.ts +166 -166
  654. package/src/hooks/session-recovery/index.ts +7 -7
  655. package/src/hooks/session-recovery/recover-empty-content-message-sdk.ts +201 -201
  656. package/src/hooks/session-recovery/recover-thinking-block-order.ts +137 -137
  657. package/src/hooks/session-recovery/recover-thinking-disabled-violation.ts +75 -75
  658. package/src/hooks/session-recovery/recover-tool-result-missing.ts +108 -108
  659. package/src/hooks/session-recovery/recover-unavailable-tool.ts +108 -108
  660. package/src/hooks/session-recovery/resume.ts +49 -49
  661. package/src/hooks/session-recovery/storage/empty-messages.ts +47 -47
  662. package/src/hooks/session-recovery/storage/empty-text.ts +118 -118
  663. package/src/hooks/session-recovery/storage/message-dir.ts +1 -1
  664. package/src/hooks/session-recovery/storage/messages-reader.ts +83 -83
  665. package/src/hooks/session-recovery/storage/orphan-thinking-search.ts +43 -43
  666. package/src/hooks/session-recovery/storage/part-content.ts +28 -28
  667. package/src/hooks/session-recovery/storage/part-id.ts +5 -5
  668. package/src/hooks/session-recovery/storage/parts-reader.ts +56 -56
  669. package/src/hooks/session-recovery/storage/text-part-injector.ts +63 -63
  670. package/src/hooks/session-recovery/storage/thinking-block-search.ts +42 -42
  671. package/src/hooks/session-recovery/storage/thinking-prepend.ts +223 -223
  672. package/src/hooks/session-recovery/storage/thinking-strip.ts +67 -67
  673. package/src/hooks/session-recovery/storage.ts +34 -34
  674. package/src/hooks/session-recovery/types.ts +101 -101
  675. package/src/hooks/session-todo-status.ts +20 -20
  676. package/src/hooks/shared/compaction-model-resolver.ts +34 -34
  677. package/src/hooks/shared/shared/compaction-model-resolver.ts +34 -34
  678. package/src/hooks/start-work/context-info-builder.ts +319 -319
  679. package/src/hooks/start-work/index.ts +4 -4
  680. package/src/hooks/start-work/parse-user-request.ts +32 -32
  681. package/src/hooks/start-work/start-work-hook.ts +135 -135
  682. package/src/hooks/start-work/worktree-block.ts +11 -11
  683. package/src/hooks/start-work/worktree-detector.ts +77 -77
  684. package/src/hooks/stop-continuation-guard/hook.ts +122 -122
  685. package/src/hooks/stop-continuation-guard/index.ts +2 -2
  686. package/src/hooks/strategist-md-only/agent-matcher.ts +5 -5
  687. package/src/hooks/strategist-md-only/agent-resolution.ts +70 -70
  688. package/src/hooks/strategist-md-only/constants.ts +78 -78
  689. package/src/hooks/strategist-md-only/hook.ts +82 -82
  690. package/src/hooks/strategist-md-only/index.ts +2 -2
  691. package/src/hooks/strategist-md-only/path-policy.ts +41 -41
  692. package/src/hooks/sub-notepad/constants.ts +29 -29
  693. package/src/hooks/sub-notepad/hook.ts +44 -44
  694. package/src/hooks/sub-notepad/index.ts +3 -3
  695. package/src/hooks/task-reminder/hook.ts +59 -59
  696. package/src/hooks/task-reminder/index.ts +1 -1
  697. package/src/hooks/task-resume-info/hook.ts +39 -39
  698. package/src/hooks/task-resume-info/index.ts +1 -1
  699. package/src/hooks/tasks-todowrite-disabler/constants.ts +30 -30
  700. package/src/hooks/tasks-todowrite-disabler/hook.ts +34 -34
  701. package/src/hooks/tasks-todowrite-disabler/index.ts +2 -2
  702. package/src/hooks/think-mode/detector.ts +59 -59
  703. package/src/hooks/think-mode/hook.ts +76 -76
  704. package/src/hooks/think-mode/index.ts +5 -5
  705. package/src/hooks/think-mode/switcher.ts +100 -100
  706. package/src/hooks/think-mode/types.ts +16 -16
  707. package/src/hooks/thinking-block-validator/hook.ts +181 -181
  708. package/src/hooks/thinking-block-validator/index.ts +1 -1
  709. package/src/hooks/todo-continuation-enforcer/AGENTS.md +65 -65
  710. package/src/hooks/todo-continuation-enforcer/abort-detection.ts +17 -17
  711. package/src/hooks/todo-continuation-enforcer/compaction-guard.ts +39 -39
  712. package/src/hooks/todo-continuation-enforcer/constants.ts +25 -25
  713. package/src/hooks/todo-continuation-enforcer/continuation-injection.ts +222 -222
  714. package/src/hooks/todo-continuation-enforcer/countdown.ts +86 -86
  715. package/src/hooks/todo-continuation-enforcer/handler.ts +99 -99
  716. package/src/hooks/todo-continuation-enforcer/idle-event.ts +225 -225
  717. package/src/hooks/todo-continuation-enforcer/index.ts +59 -59
  718. package/src/hooks/todo-continuation-enforcer/message-directory.ts +1 -1
  719. package/src/hooks/todo-continuation-enforcer/non-idle-events.ts +107 -107
  720. package/src/hooks/todo-continuation-enforcer/pending-question-detection.ts +40 -40
  721. package/src/hooks/todo-continuation-enforcer/resolve-message-info.ts +48 -48
  722. package/src/hooks/todo-continuation-enforcer/session-state.ts +283 -283
  723. package/src/hooks/todo-continuation-enforcer/stagnation-detection.ts +36 -36
  724. package/src/hooks/todo-continuation-enforcer/todo.ts +11 -11
  725. package/src/hooks/todo-continuation-enforcer/token-limit-detection.ts +38 -38
  726. package/src/hooks/todo-continuation-enforcer/types.ts +74 -74
  727. package/src/hooks/todo-description-override/description.ts +28 -28
  728. package/src/hooks/todo-description-override/hook.ts +14 -14
  729. package/src/hooks/todo-description-override/index.ts +1 -1
  730. package/src/hooks/tool-output-truncator.ts +66 -66
  731. package/src/hooks/tool-pair-validator/hook.ts +184 -184
  732. package/src/hooks/tool-pair-validator/index.ts +1 -1
  733. package/src/hooks/unstable-agent-babysitter/index.ts +9 -9
  734. package/src/hooks/unstable-agent-babysitter/task-message-analyzer.ts +110 -110
  735. package/src/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.ts +238 -238
  736. package/src/hooks/webfetch-redirect-guard/constants.ts +11 -11
  737. package/src/hooks/webfetch-redirect-guard/hook.ts +123 -123
  738. package/src/hooks/webfetch-redirect-guard/index.ts +1 -1
  739. package/src/hooks/webfetch-redirect-guard/redirect-resolution.ts +89 -89
  740. package/src/hooks/write-existing-file-guard/hook.ts +108 -108
  741. package/src/hooks/write-existing-file-guard/index.ts +1 -1
  742. package/src/hooks/write-existing-file-guard/session-read-permissions.ts +36 -36
  743. package/src/hooks/write-existing-file-guard/tool-execute-before-handler.ts +176 -176
  744. package/src/index.ts +284 -284
  745. package/src/internals/plugins/pty/LICENSE +21 -21
  746. package/src/internals/plugins/pty/constants.ts +7 -7
  747. package/src/internals/plugins/pty/plugin.ts +28 -28
  748. package/src/internals/plugins/pty/pty/buffer.ts +75 -75
  749. package/src/internals/plugins/pty/pty/formatters.ts +22 -22
  750. package/src/internals/plugins/pty/pty/manager.ts +175 -175
  751. package/src/internals/plugins/pty/pty/notification-manager.ts +75 -75
  752. package/src/internals/plugins/pty/pty/output-manager.ts +29 -29
  753. package/src/internals/plugins/pty/pty/permissions.ts +115 -115
  754. package/src/internals/plugins/pty/pty/session-lifecycle.ts +161 -161
  755. package/src/internals/plugins/pty/pty/tools/kill.ts +41 -41
  756. package/src/internals/plugins/pty/pty/tools/kill.txt +25 -25
  757. package/src/internals/plugins/pty/pty/tools/list.ts +25 -25
  758. package/src/internals/plugins/pty/pty/tools/list.txt +22 -22
  759. package/src/internals/plugins/pty/pty/tools/read.ts +234 -234
  760. package/src/internals/plugins/pty/pty/tools/read.txt +39 -39
  761. package/src/internals/plugins/pty/pty/tools/spawn.ts +71 -71
  762. package/src/internals/plugins/pty/pty/tools/spawn.txt +47 -47
  763. package/src/internals/plugins/pty/pty/tools/write.ts +96 -96
  764. package/src/internals/plugins/pty/pty/tools/write.txt +28 -28
  765. package/src/internals/plugins/pty/pty/types.ts +67 -67
  766. package/src/internals/plugins/pty/pty/utils.ts +21 -21
  767. package/src/internals/plugins/pty/pty/wildcard.ts +62 -62
  768. package/src/internals/plugins/pty/shared/constants.ts +7 -7
  769. package/src/internals/plugins/pty/types.ts +7 -7
  770. package/src/internals/plugins/subtask2/LICENSE +128 -128
  771. package/src/internals/plugins/subtask2/commands/index.ts +7 -7
  772. package/src/internals/plugins/subtask2/commands/loader.ts +39 -39
  773. package/src/internals/plugins/subtask2/commands/manifest.ts +64 -64
  774. package/src/internals/plugins/subtask2/commands/resolver.ts +28 -28
  775. package/src/internals/plugins/subtask2/core/plugin.ts +52 -52
  776. package/src/internals/plugins/subtask2/core/state.ts +764 -764
  777. package/src/internals/plugins/subtask2/features/auto.ts +57 -57
  778. package/src/internals/plugins/subtask2/features/index.ts +9 -9
  779. package/src/internals/plugins/subtask2/features/inline-subtasks.ts +205 -205
  780. package/src/internals/plugins/subtask2/features/parallel.ts +148 -148
  781. package/src/internals/plugins/subtask2/features/results.ts +48 -48
  782. package/src/internals/plugins/subtask2/features/returns.ts +273 -273
  783. package/src/internals/plugins/subtask2/features/turns.ts +190 -190
  784. package/src/internals/plugins/subtask2/hooks/command-hooks.ts +283 -283
  785. package/src/internals/plugins/subtask2/hooks/message-hooks.ts +603 -603
  786. package/src/internals/plugins/subtask2/hooks/session-idle-hook.ts +358 -358
  787. package/src/internals/plugins/subtask2/hooks/tool-hooks.ts +309 -309
  788. package/src/internals/plugins/subtask2/loop.ts +122 -122
  789. package/src/internals/plugins/subtask2/parsing/auto.ts +33 -33
  790. package/src/internals/plugins/subtask2/parsing/commands.ts +154 -154
  791. package/src/internals/plugins/subtask2/parsing/frontmatter.ts +20 -20
  792. package/src/internals/plugins/subtask2/parsing/index.ts +10 -10
  793. package/src/internals/plugins/subtask2/parsing/overrides.ts +68 -68
  794. package/src/internals/plugins/subtask2/parsing/parallel.ts +88 -88
  795. package/src/internals/plugins/subtask2/parsing/turns.ts +78 -78
  796. package/src/internals/plugins/subtask2/types.ts +41 -41
  797. package/src/internals/plugins/subtask2/utils/config.ts +100 -100
  798. package/src/internals/plugins/subtask2/utils/index.ts +7 -7
  799. package/src/internals/plugins/subtask2/utils/logger.ts +67 -67
  800. package/src/internals/plugins/subtask2/utils/prompts.ts +117 -117
  801. package/src/internals/plugins/websearch-cited/LICENSE +214 -214
  802. package/src/internals/plugins/websearch-cited/codex_prompt.txt +79 -79
  803. package/src/internals/plugins/websearch-cited/google.ts +749 -749
  804. package/src/internals/plugins/websearch-cited/index.ts +301 -301
  805. package/src/internals/plugins/websearch-cited/openai.ts +407 -407
  806. package/src/internals/plugins/websearch-cited/openrouter.ts +190 -190
  807. package/src/internals/plugins/websearch-cited/types.ts +7 -7
  808. package/src/lsp/index.ts +15 -15
  809. package/src/mcp/context7.ts +9 -9
  810. package/src/mcp/grep-app.ts +6 -6
  811. package/src/mcp/index.ts +87 -87
  812. package/src/mcp/omo-mcp-index.ts +35 -35
  813. package/src/mcp/types.ts +9 -9
  814. package/src/mcp/websearch.ts +44 -44
  815. package/src/permissions/index.ts +25 -25
  816. package/src/plugin/AGENTS.md +54 -54
  817. package/src/plugin/available-categories.ts +24 -24
  818. package/src/plugin/chat-headers.ts +141 -141
  819. package/src/plugin/chat-message.ts +309 -309
  820. package/src/plugin/chat-params.ts +182 -182
  821. package/src/plugin/command-execute-before.ts +80 -80
  822. package/src/plugin/event.ts +639 -639
  823. package/src/plugin/hooks/create-continuation-hooks.ts +128 -128
  824. package/src/plugin/hooks/create-core-hooks.ts +47 -47
  825. package/src/plugin/hooks/create-session-hooks.ts +286 -286
  826. package/src/plugin/hooks/create-skill-hooks.ts +50 -50
  827. package/src/plugin/hooks/create-tool-guard-hooks.ts +159 -159
  828. package/src/plugin/hooks/create-transform-hooks.ts +85 -85
  829. package/src/plugin/messages-transform.ts +28 -28
  830. package/src/plugin/normalize-tool-arg-schemas.ts +75 -75
  831. package/src/plugin/recent-synthetic-idles.ts +20 -20
  832. package/src/plugin/session-agent-resolver.ts +37 -37
  833. package/src/plugin/session-status-normalizer.ts +22 -22
  834. package/src/plugin/skill-context.ts +132 -132
  835. package/src/plugin/system-transform.ts +6 -6
  836. package/src/plugin/tool-execute-after.ts +178 -178
  837. package/src/plugin/tool-execute-before.ts +222 -222
  838. package/src/plugin/tool-registry.ts +282 -282
  839. package/src/plugin/types.ts +26 -26
  840. package/src/plugin/ultrawork-db-model-override.ts +142 -142
  841. package/src/plugin/ultrawork-model-override.ts +196 -196
  842. package/src/plugin/ultrawork-variant-availability.ts +51 -51
  843. package/src/plugin/unstable-agent-babysitter.ts +41 -41
  844. package/src/plugin-config.ts +314 -314
  845. package/src/plugin-dispose.ts +51 -51
  846. package/src/plugin-handlers/AGENTS.md +92 -92
  847. package/src/plugin-handlers/agent-config-handler.ts +502 -502
  848. package/src/plugin-handlers/agent-key-remapper.ts +39 -39
  849. package/src/plugin-handlers/agent-override-protection.ts +38 -38
  850. package/src/plugin-handlers/agent-priority-order.ts +63 -63
  851. package/src/plugin-handlers/category-config-resolver.ts +9 -9
  852. package/src/plugin-handlers/command-config-handler.ts +105 -105
  853. package/src/plugin-handlers/config-handler.ts +61 -61
  854. package/src/plugin-handlers/index.ts +10 -10
  855. package/src/plugin-handlers/mcp-config-handler.ts +205 -205
  856. package/src/plugin-handlers/plan-model-inheritance.ts +27 -27
  857. package/src/plugin-handlers/plugin-components-loader.ts +70 -70
  858. package/src/plugin-handlers/provider-config-handler.ts +73 -73
  859. package/src/plugin-handlers/strategist-agent-config-builder.ts +128 -128
  860. package/src/plugin-handlers/tool-config-handler.ts +193 -193
  861. package/src/plugin-interface.ts +83 -83
  862. package/src/plugin-state.ts +18 -18
  863. package/src/shared/AGENTS.md +54 -54
  864. package/src/shared/agent-display-names.ts +182 -182
  865. package/src/shared/agent-tool-restrictions.ts +80 -80
  866. package/src/shared/agent-variant.ts +101 -101
  867. package/src/shared/agents-config-dir.ts +23 -23
  868. package/src/shared/archive-entry-validator.ts +83 -83
  869. package/src/shared/background-output-consumption.ts +69 -69
  870. package/src/shared/binary-downloader.ts +127 -127
  871. package/src/shared/claude-config-dir.ts +16 -16
  872. package/src/shared/closure-protocol.ts +53 -53
  873. package/src/shared/command-executor/embedded-commands.ts +26 -26
  874. package/src/shared/command-executor/execute-command.ts +28 -28
  875. package/src/shared/command-executor/execute-hook-command.ts +129 -129
  876. package/src/shared/command-executor/home-directory.ts +5 -5
  877. package/src/shared/command-executor/resolve-commands-in-text.ts +49 -49
  878. package/src/shared/command-executor/shell-path.ts +27 -27
  879. package/src/shared/command-executor.ts +5 -5
  880. package/src/shared/compaction-agent-config-checkpoint.ts +42 -42
  881. package/src/shared/compaction-marker.ts +61 -61
  882. package/src/shared/config-errors.ts +18 -18
  883. package/src/shared/connected-providers-cache.ts +215 -215
  884. package/src/shared/contains-path.ts +50 -50
  885. package/src/shared/context-limit-resolver.ts +42 -42
  886. package/src/shared/data-path.ts +64 -64
  887. package/src/shared/deep-merge.ts +53 -53
  888. package/src/shared/disabled-tools.ts +19 -19
  889. package/src/shared/dynamic-truncator.ts +222 -222
  890. package/src/shared/external-plugin-detector.ts +139 -139
  891. package/src/shared/fallback-chain-from-models.ts +124 -124
  892. package/src/shared/fallback-model-availability.ts +102 -102
  893. package/src/shared/file-reference-resolver.ts +99 -99
  894. package/src/shared/file-utils.ts +34 -34
  895. package/src/shared/first-message-variant.ts +28 -28
  896. package/src/shared/frontmatter.ts +31 -31
  897. package/src/shared/git-worktree/collect-git-diff-stats.ts +56 -56
  898. package/src/shared/git-worktree/format-file-changes.ts +46 -46
  899. package/src/shared/git-worktree/index.ts +7 -7
  900. package/src/shared/git-worktree/parse-diff-numstat.ts +27 -27
  901. package/src/shared/git-worktree/parse-status-porcelain-line.ts +27 -27
  902. package/src/shared/git-worktree/parse-status-porcelain.ts +15 -15
  903. package/src/shared/git-worktree/types.ts +8 -8
  904. package/src/shared/hook-disabled.ts +22 -22
  905. package/src/shared/index.ts +80 -80
  906. package/src/shared/internal-initiator-marker.ts +18 -18
  907. package/src/shared/is-abort-error.ts +20 -20
  908. package/src/shared/json-file-cache-store.ts +98 -98
  909. package/src/shared/jsonc-parser.ts +98 -98
  910. package/src/shared/known-variants.ts +16 -16
  911. package/src/shared/legacy-plugin-warning.ts +68 -68
  912. package/src/shared/load-opencode-plugins.ts +60 -60
  913. package/src/shared/log-legacy-plugin-startup-warning.ts +46 -46
  914. package/src/shared/logger.ts +48 -48
  915. package/src/shared/merge-categories.ts +18 -18
  916. package/src/shared/migrate-legacy-config-file.ts +66 -66
  917. package/src/shared/migrate-legacy-plugin-entry.ts +75 -75
  918. package/src/shared/migration/agent-category.ts +60 -60
  919. package/src/shared/migration/agent-names.ts +100 -100
  920. package/src/shared/migration/config-migration.ts +210 -210
  921. package/src/shared/migration/hook-names.ts +40 -40
  922. package/src/shared/migration/migrations-sidecar.ts +92 -92
  923. package/src/shared/migration/model-versions.ts +50 -50
  924. package/src/shared/migration.ts +5 -5
  925. package/src/shared/model-availability.ts +294 -294
  926. package/src/shared/model-capabilities/bundled-snapshot.ts +15 -15
  927. package/src/shared/model-capabilities/get-model-capabilities.ts +140 -140
  928. package/src/shared/model-capabilities/index.ts +9 -9
  929. package/src/shared/model-capabilities/runtime-model-readers.ts +190 -190
  930. package/src/shared/model-capabilities/types.ts +80 -80
  931. package/src/shared/model-capabilities-cache.ts +213 -213
  932. package/src/shared/model-capability-aliases.ts +108 -108
  933. package/src/shared/model-capability-guardrails.ts +149 -149
  934. package/src/shared/model-capability-heuristics.ts +32 -32
  935. package/src/shared/model-error-classifier.ts +214 -214
  936. package/src/shared/model-format-normalizer.ts +20 -20
  937. package/src/shared/model-normalization.ts +8 -8
  938. package/src/shared/model-requirements.ts +26 -26
  939. package/src/shared/model-resolution-pipeline.ts +216 -216
  940. package/src/shared/model-resolution-types.ts +41 -41
  941. package/src/shared/model-resolver.ts +106 -106
  942. package/src/shared/model-sanitizer.ts +12 -12
  943. package/src/shared/model-settings-compatibility.ts +200 -200
  944. package/src/shared/model-suggestion-retry.ts +182 -182
  945. package/src/shared/normalize-sdk-response.ts +36 -36
  946. package/src/shared/opencode-command-dirs.ts +36 -36
  947. package/src/shared/opencode-config-dir-types.ts +15 -15
  948. package/src/shared/opencode-config-dir.ts +135 -135
  949. package/src/shared/opencode-http-api.ts +139 -139
  950. package/src/shared/opencode-message-dir.ts +29 -29
  951. package/src/shared/opencode-server-auth.ts +190 -190
  952. package/src/shared/opencode-storage-detection.ts +33 -33
  953. package/src/shared/opencode-storage-paths.ts +6 -6
  954. package/src/shared/opencode-version.ts +80 -80
  955. package/src/shared/parse-tools-config.ts +25 -25
  956. package/src/shared/pattern-matcher.ts +46 -46
  957. package/src/shared/permission-compat.ts +86 -86
  958. package/src/shared/plugin-command-discovery.ts +28 -28
  959. package/src/shared/plugin-entry-migrator.ts +21 -21
  960. package/src/shared/plugin-identity.ts +8 -8
  961. package/src/shared/port-utils.ts +48 -48
  962. package/src/shared/project-discovery-dirs.ts +101 -101
  963. package/src/shared/prompt-timeout-context.ts +49 -49
  964. package/src/shared/prompt-tools.ts +35 -35
  965. package/src/shared/provider-model-id-transform.ts +58 -58
  966. package/src/shared/question-denied-session-permission.ts +9 -9
  967. package/src/shared/record-type-guard.ts +3 -3
  968. package/src/shared/resolve-agent-definition-paths.ts +22 -22
  969. package/src/shared/retry-status-utils.ts +19 -19
  970. package/src/shared/runtime-plugin-config.ts +98 -98
  971. package/src/shared/safe-create-hook.ts +24 -24
  972. package/src/shared/session-category-registry.ts +27 -27
  973. package/src/shared/session-cursor.ts +108 -108
  974. package/src/shared/session-directory-resolver.ts +41 -41
  975. package/src/shared/session-injected-paths.ts +59 -59
  976. package/src/shared/session-model-state.ts +15 -15
  977. package/src/shared/session-prompt-params-helpers.ts +31 -31
  978. package/src/shared/session-prompt-params-state.ts +37 -37
  979. package/src/shared/session-tools-store.ts +18 -18
  980. package/src/shared/session-utils.ts +25 -25
  981. package/src/shared/shell-env.ts +175 -175
  982. package/src/shared/skill-path-resolver.ts +26 -26
  983. package/src/shared/snake-case.ts +44 -44
  984. package/src/shared/spawn-with-windows-hide.ts +84 -84
  985. package/src/shared/system-directive.ts +67 -67
  986. package/src/shared/task-system-enabled.ts +9 -9
  987. package/src/shared/tmux/constants.ts +12 -12
  988. package/src/shared/tmux/index.ts +3 -3
  989. package/src/shared/tmux/tmux-utils/environment.ts +13 -13
  990. package/src/shared/tmux/tmux-utils/layout.ts +96 -96
  991. package/src/shared/tmux/tmux-utils/pane-close.ts +48 -48
  992. package/src/shared/tmux/tmux-utils/pane-dimensions.ts +28 -28
  993. package/src/shared/tmux/tmux-utils/pane-replace.ts +73 -73
  994. package/src/shared/tmux/tmux-utils/pane-spawn.ts +94 -94
  995. package/src/shared/tmux/tmux-utils/server-health.ts +62 -62
  996. package/src/shared/tmux/tmux-utils/session-spawn.ts +145 -145
  997. package/src/shared/tmux/tmux-utils/window-spawn.ts +93 -93
  998. package/src/shared/tmux/tmux-utils.ts +15 -15
  999. package/src/shared/tmux/types.ts +4 -4
  1000. package/src/shared/tool-name.ts +27 -27
  1001. package/src/shared/truncate-description.ts +11 -11
  1002. package/src/shared/vision-capable-models-cache.ts +17 -17
  1003. package/src/shared/write-file-atomically.ts +31 -31
  1004. package/src/shared/zip-entry-listing/powershell-zip-entry-listing.ts +99 -99
  1005. package/src/shared/zip-entry-listing/python-zip-entry-listing.ts +55 -55
  1006. package/src/shared/zip-entry-listing/read-zip-symlink-target.ts +23 -23
  1007. package/src/shared/zip-entry-listing/tar-zip-entry-listing.ts +93 -93
  1008. package/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts +72 -72
  1009. package/src/shared/zip-entry-listing.ts +13 -13
  1010. package/src/shared/zip-extractor.ts +118 -118
  1011. package/src/skills/index.ts +56 -56
  1012. package/src/testing/module-mock-lifecycle.ts +143 -143
  1013. package/src/tools/AGENTS.md +108 -108
  1014. package/src/tools/ast-grep/cli-binary-path-resolution.ts +60 -60
  1015. package/src/tools/ast-grep/cli.ts +177 -177
  1016. package/src/tools/ast-grep/constants.ts +5 -5
  1017. package/src/tools/ast-grep/downloader.ts +119 -119
  1018. package/src/tools/ast-grep/environment-check.ts +89 -89
  1019. package/src/tools/ast-grep/index.ts +5 -5
  1020. package/src/tools/ast-grep/language-support.ts +63 -63
  1021. package/src/tools/ast-grep/process-output-timeout.ts +28 -28
  1022. package/src/tools/ast-grep/result-formatter.ts +102 -102
  1023. package/src/tools/ast-grep/sg-cli-path.ts +102 -102
  1024. package/src/tools/ast-grep/sg-compact-json-output.ts +54 -54
  1025. package/src/tools/ast-grep/tools.ts +117 -117
  1026. package/src/tools/ast-grep/types.ts +61 -61
  1027. package/src/tools/background-task/AGENTS.md +53 -53
  1028. package/src/tools/background-task/clients.ts +32 -32
  1029. package/src/tools/background-task/constants.ts +9 -9
  1030. package/src/tools/background-task/create-background-cancel.ts +115 -115
  1031. package/src/tools/background-task/create-background-output.ts +159 -159
  1032. package/src/tools/background-task/create-background-task.ts +126 -126
  1033. package/src/tools/background-task/delay.ts +3 -3
  1034. package/src/tools/background-task/full-session-format.ts +148 -148
  1035. package/src/tools/background-task/index.ts +8 -8
  1036. package/src/tools/background-task/message-dir.ts +1 -1
  1037. package/src/tools/background-task/session-messages.ts +22 -22
  1038. package/src/tools/background-task/task-result-format.ts +113 -113
  1039. package/src/tools/background-task/task-status-format.ts +72 -72
  1040. package/src/tools/background-task/time-format.ts +30 -30
  1041. package/src/tools/background-task/tools.ts +11 -11
  1042. package/src/tools/background-task/truncate-text.ts +4 -4
  1043. package/src/tools/background-task/types.ts +72 -72
  1044. package/src/tools/call-omo-agent/AGENTS.md +51 -51
  1045. package/src/tools/call-omo-agent/agent-resolver.ts +64 -64
  1046. package/src/tools/call-omo-agent/background-agent-executor.ts +91 -91
  1047. package/src/tools/call-omo-agent/background-executor.ts +98 -98
  1048. package/src/tools/call-omo-agent/completion-poller.ts +65 -65
  1049. package/src/tools/call-omo-agent/constants.ts +23 -23
  1050. package/src/tools/call-omo-agent/index.ts +3 -3
  1051. package/src/tools/call-omo-agent/message-dir.ts +1 -1
  1052. package/src/tools/call-omo-agent/message-processor.ts +86 -86
  1053. package/src/tools/call-omo-agent/message-storage-directory.ts +1 -1
  1054. package/src/tools/call-omo-agent/session-creator.ts +70 -70
  1055. package/src/tools/call-omo-agent/subagent-session-creator.ts +74 -74
  1056. package/src/tools/call-omo-agent/sync-executor.ts +148 -148
  1057. package/src/tools/call-omo-agent/tool-context-with-metadata.ts +10 -10
  1058. package/src/tools/call-omo-agent/tools.ts +192 -192
  1059. package/src/tools/call-omo-agent/types.ts +34 -34
  1060. package/src/tools/delegate-task/AGENTS.md +58 -58
  1061. package/src/tools/delegate-task/anthropic-categories.ts +62 -62
  1062. package/src/tools/delegate-task/available-models.ts +64 -64
  1063. package/src/tools/delegate-task/background-continuation.ts +68 -68
  1064. package/src/tools/delegate-task/background-task.ts +165 -165
  1065. package/src/tools/delegate-task/builtin-categories.ts +33 -33
  1066. package/src/tools/delegate-task/builtin-category-definition.ts +8 -8
  1067. package/src/tools/delegate-task/cancel-unstable-agent-task.ts +19 -19
  1068. package/src/tools/delegate-task/categories.ts +77 -77
  1069. package/src/tools/delegate-task/category-resolver.ts +310 -310
  1070. package/src/tools/delegate-task/constants.ts +351 -351
  1071. package/src/tools/delegate-task/delegated-model-config.ts +20 -20
  1072. package/src/tools/delegate-task/error-formatting.ts +51 -51
  1073. package/src/tools/delegate-task/executor-types.ts +39 -39
  1074. package/src/tools/delegate-task/executor.ts +16 -16
  1075. package/src/tools/delegate-task/fallback-entry-resolution.ts +27 -27
  1076. package/src/tools/delegate-task/fallback-entry-settings.ts +20 -20
  1077. package/src/tools/delegate-task/google-categories.ts +130 -130
  1078. package/src/tools/delegate-task/index.ts +4 -4
  1079. package/src/tools/delegate-task/kimi-categories.ts +40 -40
  1080. package/src/tools/delegate-task/model-selection.ts +201 -201
  1081. package/src/tools/delegate-task/model-string-parser.ts +63 -63
  1082. package/src/tools/delegate-task/openai-categories.ts +128 -128
  1083. package/src/tools/delegate-task/parent-context-resolver.ts +47 -47
  1084. package/src/tools/delegate-task/prompt-builder.ts +107 -107
  1085. package/src/tools/delegate-task/resolve-call-id.ts +5 -5
  1086. package/src/tools/delegate-task/skill-resolver.ts +22 -22
  1087. package/src/tools/delegate-task/sub-agent.ts +70 -70
  1088. package/src/tools/delegate-task/subagent-discovery.ts +152 -152
  1089. package/src/tools/delegate-task/subagent-resolver.ts +225 -225
  1090. package/src/tools/delegate-task/sync-continuation-deps.ts +9 -9
  1091. package/src/tools/delegate-task/sync-continuation.ts +149 -149
  1092. package/src/tools/delegate-task/sync-prompt-sender.ts +137 -137
  1093. package/src/tools/delegate-task/sync-result-fetcher.ts +60 -60
  1094. package/src/tools/delegate-task/sync-session-creator.ts +29 -29
  1095. package/src/tools/delegate-task/sync-session-poller.ts +188 -188
  1096. package/src/tools/delegate-task/sync-task-deps.ts +13 -13
  1097. package/src/tools/delegate-task/sync-task-fallback.ts +68 -68
  1098. package/src/tools/delegate-task/sync-task.ts +243 -243
  1099. package/src/tools/delegate-task/time-formatter.ts +13 -13
  1100. package/src/tools/delegate-task/timing.ts +46 -46
  1101. package/src/tools/delegate-task/token-limiter.ts +123 -123
  1102. package/src/tools/delegate-task/tools.ts +259 -259
  1103. package/src/tools/delegate-task/types.ts +89 -89
  1104. package/src/tools/delegate-task/unstable-agent-task.ts +243 -243
  1105. package/src/tools/glob/cli.ts +206 -206
  1106. package/src/tools/glob/constants.ts +12 -12
  1107. package/src/tools/glob/index.ts +1 -1
  1108. package/src/tools/glob/result-formatter.ts +26 -26
  1109. package/src/tools/glob/tools.ts +49 -49
  1110. package/src/tools/glob/types.ts +23 -23
  1111. package/src/tools/grep/cli.ts +279 -279
  1112. package/src/tools/grep/constants.ts +141 -141
  1113. package/src/tools/grep/downloader.ts +128 -128
  1114. package/src/tools/grep/index.ts +1 -1
  1115. package/src/tools/grep/result-formatter.ts +60 -60
  1116. package/src/tools/grep/tools.ts +75 -75
  1117. package/src/tools/grep/types.ts +42 -42
  1118. package/src/tools/hashline-edit/AGENTS.md +92 -92
  1119. package/src/tools/hashline-edit/autocorrect-replacement-lines.ts +179 -179
  1120. package/src/tools/hashline-edit/constants.ts +10 -10
  1121. package/src/tools/hashline-edit/diff-utils.ts +53 -53
  1122. package/src/tools/hashline-edit/edit-deduplication.ts +43 -43
  1123. package/src/tools/hashline-edit/edit-operation-primitives.ts +126 -126
  1124. package/src/tools/hashline-edit/edit-operations.ts +103 -103
  1125. package/src/tools/hashline-edit/edit-ordering.ts +56 -56
  1126. package/src/tools/hashline-edit/edit-text-normalization.ts +111 -111
  1127. package/src/tools/hashline-edit/file-text-canonicalization.ts +44 -44
  1128. package/src/tools/hashline-edit/formatter-trigger.ts +132 -132
  1129. package/src/tools/hashline-edit/hash-computation.ts +154 -154
  1130. package/src/tools/hashline-edit/hashline-chunk-formatter.ts +52 -52
  1131. package/src/tools/hashline-edit/hashline-edit-diff.ts +31 -31
  1132. package/src/tools/hashline-edit/hashline-edit-executor.ts +197 -197
  1133. package/src/tools/hashline-edit/index.ts +20 -20
  1134. package/src/tools/hashline-edit/normalize-edits.ts +95 -95
  1135. package/src/tools/hashline-edit/tool-description.ts +95 -95
  1136. package/src/tools/hashline-edit/tools.ts +42 -42
  1137. package/src/tools/hashline-edit/types.ts +20 -20
  1138. package/src/tools/hashline-edit/validation.ts +181 -181
  1139. package/src/tools/index.ts +64 -64
  1140. package/src/tools/interactive-bash/constants.ts +18 -18
  1141. package/src/tools/interactive-bash/index.ts +4 -4
  1142. package/src/tools/interactive-bash/tmux-path-resolver.ts +71 -71
  1143. package/src/tools/interactive-bash/tools.ts +136 -136
  1144. package/src/tools/look-at/assistant-message-extractor.ts +67 -67
  1145. package/src/tools/look-at/constants.ts +3 -3
  1146. package/src/tools/look-at/image-converter.ts +164 -164
  1147. package/src/tools/look-at/index.ts +3 -3
  1148. package/src/tools/look-at/look-at-arguments.ts +34 -34
  1149. package/src/tools/look-at/mime-type-inference.ts +94 -94
  1150. package/src/tools/look-at/multimodal-agent-metadata.ts +166 -166
  1151. package/src/tools/look-at/multimodal-fallback-chain.ts +66 -66
  1152. package/src/tools/look-at/session-poller.ts +42 -42
  1153. package/src/tools/look-at/tools.ts +245 -245
  1154. package/src/tools/look-at/types.ts +5 -5
  1155. package/src/tools/lsp/AGENTS.md +70 -70
  1156. package/src/tools/lsp/client.ts +3 -3
  1157. package/src/tools/lsp/config.ts +3 -3
  1158. package/src/tools/lsp/constants.ts +7 -7
  1159. package/src/tools/lsp/diagnostics-tool.ts +75 -75
  1160. package/src/tools/lsp/directory-diagnostics.ts +163 -163
  1161. package/src/tools/lsp/find-references-tool.ts +43 -43
  1162. package/src/tools/lsp/goto-definition-tool.ts +42 -42
  1163. package/src/tools/lsp/index.ts +9 -9
  1164. package/src/tools/lsp/infer-extension.ts +65 -65
  1165. package/src/tools/lsp/language-config.ts +5 -5
  1166. package/src/tools/lsp/language-mappings.ts +171 -171
  1167. package/src/tools/lsp/lsp-client-connection.ts +66 -66
  1168. package/src/tools/lsp/lsp-client-transport.ts +210 -210
  1169. package/src/tools/lsp/lsp-client-wrapper.ts +116 -116
  1170. package/src/tools/lsp/lsp-client.ts +129 -129
  1171. package/src/tools/lsp/lsp-formatters.ts +193 -193
  1172. package/src/tools/lsp/lsp-manager-process-cleanup.ts +83 -83
  1173. package/src/tools/lsp/lsp-manager-temp-directory-cleanup.ts +29 -29
  1174. package/src/tools/lsp/lsp-process.ts +158 -158
  1175. package/src/tools/lsp/lsp-server.ts +217 -217
  1176. package/src/tools/lsp/rename-tools.ts +53 -53
  1177. package/src/tools/lsp/server-config-loader.ts +116 -116
  1178. package/src/tools/lsp/server-definitions.ts +91 -91
  1179. package/src/tools/lsp/server-installation.ts +58 -58
  1180. package/src/tools/lsp/server-path-bases.ts +16 -16
  1181. package/src/tools/lsp/server-resolution.ts +109 -109
  1182. package/src/tools/lsp/symbols-tool.ts +76 -76
  1183. package/src/tools/lsp/tools.ts +5 -5
  1184. package/src/tools/lsp/types.ts +124 -124
  1185. package/src/tools/lsp/workspace-edit.ts +121 -121
  1186. package/src/tools/session-manager/constants.ts +93 -93
  1187. package/src/tools/session-manager/file-storage.ts +203 -203
  1188. package/src/tools/session-manager/index.ts +3 -3
  1189. package/src/tools/session-manager/sdk-storage.ts +135 -135
  1190. package/src/tools/session-manager/sdk-unavailable.ts +43 -43
  1191. package/src/tools/session-manager/session-formatter.ts +199 -199
  1192. package/src/tools/session-manager/storage.ts +161 -161
  1193. package/src/tools/session-manager/tools.ts +197 -197
  1194. package/src/tools/session-manager/types.ts +99 -99
  1195. package/src/tools/shared/semaphore.ts +32 -32
  1196. package/src/tools/skill/constants.ts +14 -14
  1197. package/src/tools/skill/description-formatter.ts +61 -61
  1198. package/src/tools/skill/index.ts +3 -3
  1199. package/src/tools/skill/mcp-capability-formatter.ts +97 -97
  1200. package/src/tools/skill/native-skills.ts +62 -62
  1201. package/src/tools/skill/scope-priority.ts +17 -17
  1202. package/src/tools/skill/skill-body.ts +26 -26
  1203. package/src/tools/skill/skill-matcher.ts +40 -40
  1204. package/src/tools/skill/tools.ts +196 -196
  1205. package/src/tools/skill/types.ts +48 -48
  1206. package/src/tools/skill-mcp/constants.ts +9 -9
  1207. package/src/tools/skill-mcp/index.ts +3 -3
  1208. package/src/tools/skill-mcp/tools.ts +204 -204
  1209. package/src/tools/skill-mcp/types.ts +8 -8
  1210. package/src/tools/slashcommand/command-discovery.ts +161 -161
  1211. package/src/tools/slashcommand/command-output-formatter.ts +75 -75
  1212. package/src/tools/slashcommand/index.ts +2 -2
  1213. package/src/tools/slashcommand/types.ts +21 -21
  1214. package/src/tools/task/index.ts +7 -7
  1215. package/src/tools/task/task-create.ts +113 -113
  1216. package/src/tools/task/task-get.ts +47 -47
  1217. package/src/tools/task/task-list.ts +79 -79
  1218. package/src/tools/task/task-update.ts +152 -152
  1219. package/src/tools/task/todo-sync.ts +205 -205
  1220. package/src/tools/task/types.ts +77 -77
  1221. package/dist/ast-grep-napi.linux-x64-gnu-d8zfa2q0.node +0 -0
  1222. package/dist/ast-grep-napi.linux-x64-musl-0wywtr8y.node +0 -0
  1223. package/dist/prompt-snapshots/bob.default.md +0 -514
  1224. package/dist/prompt-snapshots/bob.gemini.md +0 -725
  1225. package/dist/prompt-snapshots/bob.gpt-pro.md +0 -514
  1226. package/dist/prompt-snapshots/coder.gpt-codex.md +0 -299
  1227. package/dist/prompt-snapshots/coder.gpt-pro.md +0 -315
  1228. package/dist/prompt-snapshots/coder.gpt.md +0 -315
  1229. package/dist/prompt-snapshots/critic.md +0 -68
  1230. package/dist/prompt-snapshots/guard.md +0 -599
  1231. package/dist/prompt-snapshots/multimodal.md +0 -39
  1232. package/dist/prompt-snapshots/platform-manager.md +0 -222
  1233. package/dist/prompt-snapshots/quality-guardian.md +0 -32
  1234. package/dist/prompt-snapshots/researcher.md +0 -29
  1235. package/dist/prompt-snapshots/strategist.md +0 -573
  1236. package/dist/prompt-snapshots/sub.md +0 -105
@@ -1,655 +1,655 @@
1
- ---
2
- name: writing-skills
3
- description: Use when creating new skills, editing existing skills, or verifying skills work before deployment
4
- ---
5
-
6
- # Writing Skills
7
-
8
- ## Overview
9
-
10
- **Writing skills IS Test-Driven Development applied to process documentation.**
11
-
12
- **Personal skills live in agent-specific directories (`~/.claude/skills` for Claude Code, `~/.agents/skills/` for Codex)**
13
-
14
- You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes).
15
-
16
- **Core principle:** If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.
17
-
18
- **REQUIRED BACKGROUND:** You MUST understand superpowers:test-driven-development before using this skill. That skill defines the fundamental RED-GREEN-REFACTOR cycle. This skill adapts TDD to documentation.
19
-
20
- **Official guidance:** For Anthropic's official skill authoring best practices, see anthropic-best-practices.md. This document provides additional patterns and guidelines that complement the TDD-focused approach in this skill.
21
-
22
- ## What is a Skill?
23
-
24
- A **skill** is a reference guide for proven techniques, patterns, or tools. Skills help future Claude instances find and apply effective approaches.
25
-
26
- **Skills are:** Reusable techniques, patterns, tools, reference guides
27
-
28
- **Skills are NOT:** Narratives about how you solved a problem once
29
-
30
- ## TDD Mapping for Skills
31
-
32
- | TDD Concept | Skill Creation |
33
- |-------------|----------------|
34
- | **Test case** | Pressure scenario with subagent |
35
- | **Production code** | Skill document (SKILL.md) |
36
- | **Test fails (RED)** | Agent violates rule without skill (baseline) |
37
- | **Test passes (GREEN)** | Agent complies with skill present |
38
- | **Refactor** | Close loopholes while maintaining compliance |
39
- | **Write test first** | Run baseline scenario BEFORE writing skill |
40
- | **Watch it fail** | Document exact rationalizations agent uses |
41
- | **Minimal code** | Write skill addressing those specific violations |
42
- | **Watch it pass** | Verify agent now complies |
43
- | **Refactor cycle** | Find new rationalizations → plug → re-verify |
44
-
45
- The entire skill creation process follows RED-GREEN-REFACTOR.
46
-
47
- ## When to Create a Skill
48
-
49
- **Create when:**
50
- - Technique wasn't intuitively obvious to you
51
- - You'd reference this again across projects
52
- - Pattern applies broadly (not project-specific)
53
- - Others would benefit
54
-
55
- **Don't create for:**
56
- - One-off solutions
57
- - Standard practices well-documented elsewhere
58
- - Project-specific conventions (put in CLAUDE.md)
59
- - Mechanical constraints (if it's enforceable with regex/validation, automate it—save documentation for judgment calls)
60
-
61
- ## Skill Types
62
-
63
- ### Technique
64
- Concrete method with steps to follow (condition-based-waiting, root-cause-tracing)
65
-
66
- ### Pattern
67
- Way of thinking about problems (flatten-with-flags, test-invariants)
68
-
69
- ### Reference
70
- API docs, syntax guides, tool documentation (office docs)
71
-
72
- ## Directory Structure
73
-
74
-
75
- ```
76
- skills/
77
- skill-name/
78
- SKILL.md # Main reference (required)
79
- supporting-file.* # Only if needed
80
- ```
81
-
82
- **Flat namespace** - all skills in one searchable namespace
83
-
84
- **Separate files for:**
85
- 1. **Heavy reference** (100+ lines) - API docs, comprehensive syntax
86
- 2. **Reusable tools** - Scripts, utilities, templates
87
-
88
- **Keep inline:**
89
- - Principles and concepts
90
- - Code patterns (< 50 lines)
91
- - Everything else
92
-
93
- ## SKILL.md Structure
94
-
95
- **Frontmatter (YAML):**
96
- - Two required fields: `name` and `description` (see [agentskills.io/specification](https://agentskills.io/specification) for all supported fields)
97
- - Max 1024 characters total
98
- - `name`: Use letters, numbers, and hyphens only (no parentheses, special chars)
99
- - `description`: Third-person, describes ONLY when to use (NOT what it does)
100
- - Start with "Use when..." to focus on triggering conditions
101
- - Include specific symptoms, situations, and contexts
102
- - **NEVER summarize the skill's process or workflow** (see CSO section for why)
103
- - Keep under 500 characters if possible
104
-
105
- ```markdown
106
- ---
107
- name: Skill-Name-With-Hyphens
108
- description: Use when [specific triggering conditions and symptoms]
109
- ---
110
-
111
- # Skill Name
112
-
113
- ## Overview
114
- What is this? Core principle in 1-2 sentences.
115
-
116
- ## When to Use
117
- [Small inline flowchart IF decision non-obvious]
118
-
119
- Bullet list with SYMPTOMS and use cases
120
- When NOT to use
121
-
122
- ## Core Pattern (for techniques/patterns)
123
- Before/after code comparison
124
-
125
- ## Quick Reference
126
- Table or bullets for scanning common operations
127
-
128
- ## Implementation
129
- Inline code for simple patterns
130
- Link to file for heavy reference or reusable tools
131
-
132
- ## Common Mistakes
133
- What goes wrong + fixes
134
-
135
- ## Real-World Impact (optional)
136
- Concrete results
137
- ```
138
-
139
-
140
- ## Claude Search Optimization (CSO)
141
-
142
- **Critical for discovery:** Future Claude needs to FIND your skill
143
-
144
- ### 1. Rich Description Field
145
-
146
- **Purpose:** Claude reads description to decide which skills to load for a given task. Make it answer: "Should I read this skill right now?"
147
-
148
- **Format:** Start with "Use when..." to focus on triggering conditions
149
-
150
- **CRITICAL: Description = When to Use, NOT What the Skill Does**
151
-
152
- The description should ONLY describe triggering conditions. Do NOT summarize the skill's process or workflow in the description.
153
-
154
- **Why this matters:** Testing revealed that when a description summarizes the skill's workflow, Claude may follow the description instead of reading the full skill content. A description saying "code review between tasks" caused Claude to do ONE review, even though the skill's flowchart clearly showed TWO reviews (spec compliance then code quality).
155
-
156
- When the description was changed to just "Use when executing implementation plans with independent tasks" (no workflow summary), Claude correctly read the flowchart and followed the two-stage review process.
157
-
158
- **The trap:** Descriptions that summarize workflow create a shortcut Claude will take. The skill body becomes documentation Claude skips.
159
-
160
- ```yaml
161
- # ❌ BAD: Summarizes workflow - Claude may follow this instead of reading skill
162
- description: Use when executing plans - dispatches subagent per task with code review between tasks
163
-
164
- # ❌ BAD: Too much process detail
165
- description: Use for TDD - write test first, watch it fail, write minimal code, refactor
166
-
167
- # ✅ GOOD: Just triggering conditions, no workflow summary
168
- description: Use when executing implementation plans with independent tasks in the current session
169
-
170
- # ✅ GOOD: Triggering conditions only
171
- description: Use when implementing any feature or bugfix, before writing implementation code
172
- ```
173
-
174
- **Content:**
175
- - Use concrete triggers, symptoms, and situations that signal this skill applies
176
- - Describe the *problem* (race conditions, inconsistent behavior) not *language-specific symptoms* (setTimeout, sleep)
177
- - Keep triggers technology-agnostic unless the skill itself is technology-specific
178
- - If skill is technology-specific, make that explicit in the trigger
179
- - Write in third person (injected into system prompt)
180
- - **NEVER summarize the skill's process or workflow**
181
-
182
- ```yaml
183
- # ❌ BAD: Too abstract, vague, doesn't include when to use
184
- description: For async testing
185
-
186
- # ❌ BAD: First person
187
- description: I can help you with async tests when they're flaky
188
-
189
- # ❌ BAD: Mentions technology but skill isn't specific to it
190
- description: Use when tests use setTimeout/sleep and are flaky
191
-
192
- # ✅ GOOD: Starts with "Use when", describes problem, no workflow
193
- description: Use when tests have race conditions, timing dependencies, or pass/fail inconsistently
194
-
195
- # ✅ GOOD: Technology-specific skill with explicit trigger
196
- description: Use when using React Router and handling authentication redirects
197
- ```
198
-
199
- ### 2. Keyword Coverage
200
-
201
- Use words Claude would search for:
202
- - Error messages: "Hook timed out", "ENOTEMPTY", "race condition"
203
- - Symptoms: "flaky", "hanging", "zombie", "pollution"
204
- - Synonyms: "timeout/hang/freeze", "cleanup/teardown/afterEach"
205
- - Tools: Actual commands, library names, file types
206
-
207
- ### 3. Descriptive Naming
208
-
209
- **Use active voice, verb-first:**
210
- - ✅ `creating-skills` not `skill-creation`
211
- - ✅ `condition-based-waiting` not `async-test-helpers`
212
-
213
- ### 4. Token Efficiency (Critical)
214
-
215
- **Problem:** getting-started and frequently-referenced skills load into EVERY conversation. Every token counts.
216
-
217
- **Target word counts:**
218
- - getting-started workflows: <150 words each
219
- - Frequently-loaded skills: <200 words total
220
- - Other skills: <500 words (still be concise)
221
-
222
- **Techniques:**
223
-
224
- **Move details to tool help:**
225
- ```bash
226
- # ❌ BAD: Document all flags in SKILL.md
227
- search-conversations supports --text, --both, --after DATE, --before DATE, --limit N
228
-
229
- # ✅ GOOD: Reference --help
230
- search-conversations supports multiple modes and filters. Run --help for details.
231
- ```
232
-
233
- **Use cross-references:**
234
- ```markdown
235
- # ❌ BAD: Repeat workflow details
236
- When searching, dispatch subagent with template...
237
- [20 lines of repeated instructions]
238
-
239
- # ✅ GOOD: Reference other skill
240
- Always use subagents (50-100x context savings). REQUIRED: Use [other-skill-name] for workflow.
241
- ```
242
-
243
- **Compress examples:**
244
- ```markdown
245
- # ❌ BAD: Verbose example (42 words)
246
- your human partner: "How did we handle authentication errors in React Router before?"
247
- You: I'll search past conversations for React Router authentication patterns.
248
- [Dispatch subagent with search query: "React Router authentication error handling 401"]
249
-
250
- # ✅ GOOD: Minimal example (20 words)
251
- Partner: "How did we handle auth errors in React Router?"
252
- You: Searching...
253
- [Dispatch subagent → synthesis]
254
- ```
255
-
256
- **Eliminate redundancy:**
257
- - Don't repeat what's in cross-referenced skills
258
- - Don't explain what's obvious from command
259
- - Don't include multiple examples of same pattern
260
-
261
- **Verification:**
262
- ```bash
263
- wc -w skills/path/SKILL.md
264
- # getting-started workflows: aim for <150 each
265
- # Other frequently-loaded: aim for <200 total
266
- ```
267
-
268
- **Name by what you DO or core insight:**
269
- - ✅ `condition-based-waiting` > `async-test-helpers`
270
- - ✅ `using-skills` not `skill-usage`
271
- - ✅ `flatten-with-flags` > `data-structure-refactoring`
272
- - ✅ `root-cause-tracing` > `debugging-techniques`
273
-
274
- **Gerunds (-ing) work well for processes:**
275
- - `creating-skills`, `testing-skills`, `debugging-with-logs`
276
- - Active, describes the action you're taking
277
-
278
- ### 4. Cross-Referencing Other Skills
279
-
280
- **When writing documentation that references other skills:**
281
-
282
- Use skill name only, with explicit requirement markers:
283
- - ✅ Good: `**REQUIRED SUB-SKILL:** Use superpowers:test-driven-development`
284
- - ✅ Good: `**REQUIRED BACKGROUND:** You MUST understand superpowers:systematic-debugging`
285
- - ❌ Bad: `See skills/testing/test-driven-development` (unclear if required)
286
- - ❌ Bad: `@skills/testing/test-driven-development/SKILL.md` (force-loads, burns context)
287
-
288
- **Why no @ links:** `@` syntax force-loads files immediately, consuming 200k+ context before you need them.
289
-
290
- ## Flowchart Usage
291
-
292
- ```dot
293
- digraph when_flowchart {
294
- "Need to show information?" [shape=diamond];
295
- "Decision where I might go wrong?" [shape=diamond];
296
- "Use markdown" [shape=box];
297
- "Small inline flowchart" [shape=box];
298
-
299
- "Need to show information?" -> "Decision where I might go wrong?" [label="yes"];
300
- "Decision where I might go wrong?" -> "Small inline flowchart" [label="yes"];
301
- "Decision where I might go wrong?" -> "Use markdown" [label="no"];
302
- }
303
- ```
304
-
305
- **Use flowcharts ONLY for:**
306
- - Non-obvious decision points
307
- - Process loops where you might stop too early
308
- - "When to use A vs B" decisions
309
-
310
- **Never use flowcharts for:**
311
- - Reference material → Tables, lists
312
- - Code examples → Markdown blocks
313
- - Linear instructions → Numbered lists
314
- - Labels without semantic meaning (step1, helper2)
315
-
316
- See @graphviz-conventions.dot for graphviz style rules.
317
-
318
- **Visualizing for your human partner:** Use `render-graphs.js` in this directory to render a skill's flowcharts to SVG:
319
- ```bash
320
- ./render-graphs.js ../some-skill # Each diagram separately
321
- ./render-graphs.js ../some-skill --combine # All diagrams in one SVG
322
- ```
323
-
324
- ## Code Examples
325
-
326
- **One excellent example beats many mediocre ones**
327
-
328
- Choose most relevant language:
329
- - Testing techniques → TypeScript/JavaScript
330
- - System debugging → Shell/Python
331
- - Data processing → Python
332
-
333
- **Good example:**
334
- - Complete and runnable
335
- - Well-commented explaining WHY
336
- - From real scenario
337
- - Shows pattern clearly
338
- - Ready to adapt (not generic template)
339
-
340
- **Don't:**
341
- - Implement in 5+ languages
342
- - Create fill-in-the-blank templates
343
- - Write contrived examples
344
-
345
- You're good at porting - one great example is enough.
346
-
347
- ## File Organization
348
-
349
- ### Self-Contained Skill
350
- ```
351
- defense-in-depth/
352
- SKILL.md # Everything inline
353
- ```
354
- When: All content fits, no heavy reference needed
355
-
356
- ### Skill with Reusable Tool
357
- ```
358
- condition-based-waiting/
359
- SKILL.md # Overview + patterns
360
- example.ts # Working helpers to adapt
361
- ```
362
- When: Tool is reusable code, not just narrative
363
-
364
- ### Skill with Heavy Reference
365
- ```
366
- pptx/
367
- SKILL.md # Overview + workflows
368
- pptxgenjs.md # 600 lines API reference
369
- ooxml.md # 500 lines XML structure
370
- scripts/ # Executable tools
371
- ```
372
- When: Reference material too large for inline
373
-
374
- ## The Iron Law (Same as TDD)
375
-
376
- ```
377
- NO SKILL WITHOUT A FAILING TEST FIRST
378
- ```
379
-
380
- This applies to NEW skills AND EDITS to existing skills.
381
-
382
- Write skill before testing? Delete it. Start over.
383
- Edit skill without testing? Same violation.
384
-
385
- **No exceptions:**
386
- - Not for "simple additions"
387
- - Not for "just adding a section"
388
- - Not for "documentation updates"
389
- - Don't keep untested changes as "reference"
390
- - Don't "adapt" while running tests
391
- - Delete means delete
392
-
393
- **REQUIRED BACKGROUND:** The superpowers:test-driven-development skill explains why this matters. Same principles apply to documentation.
394
-
395
- ## Testing All Skill Types
396
-
397
- Different skill types need different test approaches:
398
-
399
- ### Discipline-Enforcing Skills (rules/requirements)
400
-
401
- **Examples:** TDD, verification-before-completion, designing-before-coding
402
-
403
- **Test with:**
404
- - Academic questions: Do they understand the rules?
405
- - Pressure scenarios: Do they comply under stress?
406
- - Multiple pressures combined: time + sunk cost + exhaustion
407
- - Identify rationalizations and add explicit counters
408
-
409
- **Success criteria:** Agent follows rule under maximum pressure
410
-
411
- ### Technique Skills (how-to guides)
412
-
413
- **Examples:** condition-based-waiting, root-cause-tracing, defensive-programming
414
-
415
- **Test with:**
416
- - Application scenarios: Can they apply the technique correctly?
417
- - Variation scenarios: Do they handle edge cases?
418
- - Missing information tests: Do instructions have gaps?
419
-
420
- **Success criteria:** Agent successfully applies technique to new scenario
421
-
422
- ### Pattern Skills (mental models)
423
-
424
- **Examples:** reducing-complexity, information-hiding concepts
425
-
426
- **Test with:**
427
- - Recognition scenarios: Do they recognize when pattern applies?
428
- - Application scenarios: Can they use the mental model?
429
- - Counter-examples: Do they know when NOT to apply?
430
-
431
- **Success criteria:** Agent correctly identifies when/how to apply pattern
432
-
433
- ### Reference Skills (documentation/APIs)
434
-
435
- **Examples:** API documentation, command references, library guides
436
-
437
- **Test with:**
438
- - Retrieval scenarios: Can they find the right information?
439
- - Application scenarios: Can they use what they found correctly?
440
- - Gap testing: Are common use cases covered?
441
-
442
- **Success criteria:** Agent finds and correctly applies reference information
443
-
444
- ## Common Rationalizations for Skipping Testing
445
-
446
- | Excuse | Reality |
447
- |--------|---------|
448
- | "Skill is obviously clear" | Clear to you ≠ clear to other agents. Test it. |
449
- | "It's just a reference" | References can have gaps, unclear sections. Test retrieval. |
450
- | "Testing is overkill" | Untested skills have issues. Always. 15 min testing saves hours. |
451
- | "I'll test if problems emerge" | Problems = agents can't use skill. Test BEFORE deploying. |
452
- | "Too tedious to test" | Testing is less tedious than debugging bad skill in production. |
453
- | "I'm confident it's good" | Overconfidence guarantees issues. Test anyway. |
454
- | "Academic review is enough" | Reading ≠ using. Test application scenarios. |
455
- | "No time to test" | Deploying untested skill wastes more time fixing it later. |
456
-
457
- **All of these mean: Test before deploying. No exceptions.**
458
-
459
- ## Bulletproofing Skills Against Rationalization
460
-
461
- Skills that enforce discipline (like TDD) need to resist rationalization. Agents are smart and will find loopholes when under pressure.
462
-
463
- **Psychology note:** Understanding WHY persuasion techniques work helps you apply them systematically. See persuasion-principles.md for research foundation (Cialdini, 2021; Meincke et al., 2025) on authority, commitment, scarcity, social proof, and unity principles.
464
-
465
- ### Close Every Loophole Explicitly
466
-
467
- Don't just state the rule - forbid specific workarounds:
468
-
469
- <Bad>
470
- ```markdown
471
- Write code before test? Delete it.
472
- ```
473
- </Bad>
474
-
475
- <Good>
476
- ```markdown
477
- Write code before test? Delete it. Start over.
478
-
479
- **No exceptions:**
480
- - Don't keep it as "reference"
481
- - Don't "adapt" it while writing tests
482
- - Don't look at it
483
- - Delete means delete
484
- ```
485
- </Good>
486
-
487
- ### Address "Spirit vs Letter" Arguments
488
-
489
- Add foundational principle early:
490
-
491
- ```markdown
492
- **Violating the letter of the rules is violating the spirit of the rules.**
493
- ```
494
-
495
- This cuts off entire class of "I'm following the spirit" rationalizations.
496
-
497
- ### Build Rationalization Table
498
-
499
- Capture rationalizations from baseline testing (see Testing section below). Every excuse agents make goes in the table:
500
-
501
- ```markdown
502
- | Excuse | Reality |
503
- |--------|---------|
504
- | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
505
- | "I'll test after" | Tests passing immediately prove nothing. |
506
- | "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
507
- ```
508
-
509
- ### Create Red Flags List
510
-
511
- Make it easy for agents to self-check when rationalizing:
512
-
513
- ```markdown
514
- ## Red Flags - STOP and Start Over
515
-
516
- - Code before test
517
- - "I already manually tested it"
518
- - "Tests after achieve the same purpose"
519
- - "It's about spirit not ritual"
520
- - "This is different because..."
521
-
522
- **All of these mean: Delete code. Start over with TDD.**
523
- ```
524
-
525
- ### Update CSO for Violation Symptoms
526
-
527
- Add to description: symptoms of when you're ABOUT to violate the rule:
528
-
529
- ```yaml
530
- description: use when implementing any feature or bugfix, before writing implementation code
531
- ```
532
-
533
- ## RED-GREEN-REFACTOR for Skills
534
-
535
- Follow the TDD cycle:
536
-
537
- ### RED: Write Failing Test (Baseline)
538
-
539
- Run pressure scenario with subagent WITHOUT the skill. Document exact behavior:
540
- - What choices did they make?
541
- - What rationalizations did they use (verbatim)?
542
- - Which pressures triggered violations?
543
-
544
- This is "watch the test fail" - you must see what agents naturally do before writing the skill.
545
-
546
- ### GREEN: Write Minimal Skill
547
-
548
- Write skill that addresses those specific rationalizations. Don't add extra content for hypothetical cases.
549
-
550
- Run same scenarios WITH skill. Agent should now comply.
551
-
552
- ### REFACTOR: Close Loopholes
553
-
554
- Agent found new rationalization? Add explicit counter. Re-test until bulletproof.
555
-
556
- **Testing methodology:** See @testing-skills-with-subagents.md for the complete testing methodology:
557
- - How to write pressure scenarios
558
- - Pressure types (time, sunk cost, authority, exhaustion)
559
- - Plugging holes systematically
560
- - Meta-testing techniques
561
-
562
- ## Anti-Patterns
563
-
564
- ### ❌ Narrative Example
565
- "In session 2025-10-03, we found empty projectDir caused..."
566
- **Why bad:** Too specific, not reusable
567
-
568
- ### ❌ Multi-Language Dilution
569
- example-js.js, example-py.py, example-go.go
570
- **Why bad:** Mediocre quality, maintenance burden
571
-
572
- ### ❌ Code in Flowcharts
573
- ```dot
574
- step1 [label="import fs"];
575
- step2 [label="read file"];
576
- ```
577
- **Why bad:** Can't copy-paste, hard to read
578
-
579
- ### ❌ Generic Labels
580
- helper1, helper2, step3, pattern4
581
- **Why bad:** Labels should have semantic meaning
582
-
583
- ## STOP: Before Moving to Next Skill
584
-
585
- **After writing ANY skill, you MUST STOP and complete the deployment process.**
586
-
587
- **Do NOT:**
588
- - Create multiple skills in batch without testing each
589
- - Move to next skill before current one is verified
590
- - Skip testing because "batching is more efficient"
591
-
592
- **The deployment checklist below is MANDATORY for EACH skill.**
593
-
594
- Deploying untested skills = deploying untested code. It's a violation of quality standards.
595
-
596
- ## Skill Creation Checklist (TDD Adapted)
597
-
598
- **IMPORTANT: Use TodoWrite to create todos for EACH checklist item below.**
599
-
600
- **RED Phase - Write Failing Test:**
601
- - [ ] Create pressure scenarios (3+ combined pressures for discipline skills)
602
- - [ ] Run scenarios WITHOUT skill - document baseline behavior verbatim
603
- - [ ] Identify patterns in rationalizations/failures
604
-
605
- **GREEN Phase - Write Minimal Skill:**
606
- - [ ] Name uses only letters, numbers, hyphens (no parentheses/special chars)
607
- - [ ] YAML frontmatter with required `name` and `description` fields (max 1024 chars; see [spec](https://agentskills.io/specification))
608
- - [ ] Description starts with "Use when..." and includes specific triggers/symptoms
609
- - [ ] Description written in third person
610
- - [ ] Keywords throughout for search (errors, symptoms, tools)
611
- - [ ] Clear overview with core principle
612
- - [ ] Address specific baseline failures identified in RED
613
- - [ ] Code inline OR link to separate file
614
- - [ ] One excellent example (not multi-language)
615
- - [ ] Run scenarios WITH skill - verify agents now comply
616
-
617
- **REFACTOR Phase - Close Loopholes:**
618
- - [ ] Identify NEW rationalizations from testing
619
- - [ ] Add explicit counters (if discipline skill)
620
- - [ ] Build rationalization table from all test iterations
621
- - [ ] Create red flags list
622
- - [ ] Re-test until bulletproof
623
-
624
- **Quality Checks:**
625
- - [ ] Small flowchart only if decision non-obvious
626
- - [ ] Quick reference table
627
- - [ ] Common mistakes section
628
- - [ ] No narrative storytelling
629
- - [ ] Supporting files only for tools or heavy reference
630
-
631
- **Deployment:**
632
- - [ ] Commit skill to git and push to your fork (if configured)
633
- - [ ] Consider contributing back via PR (if broadly useful)
634
-
635
- ## Discovery Workflow
636
-
637
- How future Claude finds your skill:
638
-
639
- 1. **Encounters problem** ("tests are flaky")
640
- 3. **Finds SKILL** (description matches)
641
- 4. **Scans overview** (is this relevant?)
642
- 5. **Reads patterns** (quick reference table)
643
- 6. **Loads example** (only when implementing)
644
-
645
- **Optimize for this flow** - put searchable terms early and often.
646
-
647
- ## The Bottom Line
648
-
649
- **Creating skills IS TDD for process documentation.**
650
-
651
- Same Iron Law: No skill without failing test first.
652
- Same cycle: RED (baseline) → GREEN (write skill) → REFACTOR (close loopholes).
653
- Same benefits: Better quality, fewer surprises, bulletproof results.
654
-
655
- If you follow TDD for code, follow it for skills. It's the same discipline applied to documentation.
1
+ ---
2
+ name: writing-skills
3
+ description: Use when creating new skills, editing existing skills, or verifying skills work before deployment
4
+ ---
5
+
6
+ # Writing Skills
7
+
8
+ ## Overview
9
+
10
+ **Writing skills IS Test-Driven Development applied to process documentation.**
11
+
12
+ **Personal skills live in agent-specific directories (`~/.claude/skills` for Claude Code, `~/.agents/skills/` for Codex)**
13
+
14
+ You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes).
15
+
16
+ **Core principle:** If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.
17
+
18
+ **REQUIRED BACKGROUND:** You MUST understand superpowers:test-driven-development before using this skill. That skill defines the fundamental RED-GREEN-REFACTOR cycle. This skill adapts TDD to documentation.
19
+
20
+ **Official guidance:** For Anthropic's official skill authoring best practices, see anthropic-best-practices.md. This document provides additional patterns and guidelines that complement the TDD-focused approach in this skill.
21
+
22
+ ## What is a Skill?
23
+
24
+ A **skill** is a reference guide for proven techniques, patterns, or tools. Skills help future Claude instances find and apply effective approaches.
25
+
26
+ **Skills are:** Reusable techniques, patterns, tools, reference guides
27
+
28
+ **Skills are NOT:** Narratives about how you solved a problem once
29
+
30
+ ## TDD Mapping for Skills
31
+
32
+ | TDD Concept | Skill Creation |
33
+ |-------------|----------------|
34
+ | **Test case** | Pressure scenario with subagent |
35
+ | **Production code** | Skill document (SKILL.md) |
36
+ | **Test fails (RED)** | Agent violates rule without skill (baseline) |
37
+ | **Test passes (GREEN)** | Agent complies with skill present |
38
+ | **Refactor** | Close loopholes while maintaining compliance |
39
+ | **Write test first** | Run baseline scenario BEFORE writing skill |
40
+ | **Watch it fail** | Document exact rationalizations agent uses |
41
+ | **Minimal code** | Write skill addressing those specific violations |
42
+ | **Watch it pass** | Verify agent now complies |
43
+ | **Refactor cycle** | Find new rationalizations → plug → re-verify |
44
+
45
+ The entire skill creation process follows RED-GREEN-REFACTOR.
46
+
47
+ ## When to Create a Skill
48
+
49
+ **Create when:**
50
+ - Technique wasn't intuitively obvious to you
51
+ - You'd reference this again across projects
52
+ - Pattern applies broadly (not project-specific)
53
+ - Others would benefit
54
+
55
+ **Don't create for:**
56
+ - One-off solutions
57
+ - Standard practices well-documented elsewhere
58
+ - Project-specific conventions (put in CLAUDE.md)
59
+ - Mechanical constraints (if it's enforceable with regex/validation, automate it—save documentation for judgment calls)
60
+
61
+ ## Skill Types
62
+
63
+ ### Technique
64
+ Concrete method with steps to follow (condition-based-waiting, root-cause-tracing)
65
+
66
+ ### Pattern
67
+ Way of thinking about problems (flatten-with-flags, test-invariants)
68
+
69
+ ### Reference
70
+ API docs, syntax guides, tool documentation (office docs)
71
+
72
+ ## Directory Structure
73
+
74
+
75
+ ```
76
+ skills/
77
+ skill-name/
78
+ SKILL.md # Main reference (required)
79
+ supporting-file.* # Only if needed
80
+ ```
81
+
82
+ **Flat namespace** - all skills in one searchable namespace
83
+
84
+ **Separate files for:**
85
+ 1. **Heavy reference** (100+ lines) - API docs, comprehensive syntax
86
+ 2. **Reusable tools** - Scripts, utilities, templates
87
+
88
+ **Keep inline:**
89
+ - Principles and concepts
90
+ - Code patterns (< 50 lines)
91
+ - Everything else
92
+
93
+ ## SKILL.md Structure
94
+
95
+ **Frontmatter (YAML):**
96
+ - Two required fields: `name` and `description` (see [agentskills.io/specification](https://agentskills.io/specification) for all supported fields)
97
+ - Max 1024 characters total
98
+ - `name`: Use letters, numbers, and hyphens only (no parentheses, special chars)
99
+ - `description`: Third-person, describes ONLY when to use (NOT what it does)
100
+ - Start with "Use when..." to focus on triggering conditions
101
+ - Include specific symptoms, situations, and contexts
102
+ - **NEVER summarize the skill's process or workflow** (see CSO section for why)
103
+ - Keep under 500 characters if possible
104
+
105
+ ```markdown
106
+ ---
107
+ name: Skill-Name-With-Hyphens
108
+ description: Use when [specific triggering conditions and symptoms]
109
+ ---
110
+
111
+ # Skill Name
112
+
113
+ ## Overview
114
+ What is this? Core principle in 1-2 sentences.
115
+
116
+ ## When to Use
117
+ [Small inline flowchart IF decision non-obvious]
118
+
119
+ Bullet list with SYMPTOMS and use cases
120
+ When NOT to use
121
+
122
+ ## Core Pattern (for techniques/patterns)
123
+ Before/after code comparison
124
+
125
+ ## Quick Reference
126
+ Table or bullets for scanning common operations
127
+
128
+ ## Implementation
129
+ Inline code for simple patterns
130
+ Link to file for heavy reference or reusable tools
131
+
132
+ ## Common Mistakes
133
+ What goes wrong + fixes
134
+
135
+ ## Real-World Impact (optional)
136
+ Concrete results
137
+ ```
138
+
139
+
140
+ ## Claude Search Optimization (CSO)
141
+
142
+ **Critical for discovery:** Future Claude needs to FIND your skill
143
+
144
+ ### 1. Rich Description Field
145
+
146
+ **Purpose:** Claude reads description to decide which skills to load for a given task. Make it answer: "Should I read this skill right now?"
147
+
148
+ **Format:** Start with "Use when..." to focus on triggering conditions
149
+
150
+ **CRITICAL: Description = When to Use, NOT What the Skill Does**
151
+
152
+ The description should ONLY describe triggering conditions. Do NOT summarize the skill's process or workflow in the description.
153
+
154
+ **Why this matters:** Testing revealed that when a description summarizes the skill's workflow, Claude may follow the description instead of reading the full skill content. A description saying "code review between tasks" caused Claude to do ONE review, even though the skill's flowchart clearly showed TWO reviews (spec compliance then code quality).
155
+
156
+ When the description was changed to just "Use when executing implementation plans with independent tasks" (no workflow summary), Claude correctly read the flowchart and followed the two-stage review process.
157
+
158
+ **The trap:** Descriptions that summarize workflow create a shortcut Claude will take. The skill body becomes documentation Claude skips.
159
+
160
+ ```yaml
161
+ # ❌ BAD: Summarizes workflow - Claude may follow this instead of reading skill
162
+ description: Use when executing plans - dispatches subagent per task with code review between tasks
163
+
164
+ # ❌ BAD: Too much process detail
165
+ description: Use for TDD - write test first, watch it fail, write minimal code, refactor
166
+
167
+ # ✅ GOOD: Just triggering conditions, no workflow summary
168
+ description: Use when executing implementation plans with independent tasks in the current session
169
+
170
+ # ✅ GOOD: Triggering conditions only
171
+ description: Use when implementing any feature or bugfix, before writing implementation code
172
+ ```
173
+
174
+ **Content:**
175
+ - Use concrete triggers, symptoms, and situations that signal this skill applies
176
+ - Describe the *problem* (race conditions, inconsistent behavior) not *language-specific symptoms* (setTimeout, sleep)
177
+ - Keep triggers technology-agnostic unless the skill itself is technology-specific
178
+ - If skill is technology-specific, make that explicit in the trigger
179
+ - Write in third person (injected into system prompt)
180
+ - **NEVER summarize the skill's process or workflow**
181
+
182
+ ```yaml
183
+ # ❌ BAD: Too abstract, vague, doesn't include when to use
184
+ description: For async testing
185
+
186
+ # ❌ BAD: First person
187
+ description: I can help you with async tests when they're flaky
188
+
189
+ # ❌ BAD: Mentions technology but skill isn't specific to it
190
+ description: Use when tests use setTimeout/sleep and are flaky
191
+
192
+ # ✅ GOOD: Starts with "Use when", describes problem, no workflow
193
+ description: Use when tests have race conditions, timing dependencies, or pass/fail inconsistently
194
+
195
+ # ✅ GOOD: Technology-specific skill with explicit trigger
196
+ description: Use when using React Router and handling authentication redirects
197
+ ```
198
+
199
+ ### 2. Keyword Coverage
200
+
201
+ Use words Claude would search for:
202
+ - Error messages: "Hook timed out", "ENOTEMPTY", "race condition"
203
+ - Symptoms: "flaky", "hanging", "zombie", "pollution"
204
+ - Synonyms: "timeout/hang/freeze", "cleanup/teardown/afterEach"
205
+ - Tools: Actual commands, library names, file types
206
+
207
+ ### 3. Descriptive Naming
208
+
209
+ **Use active voice, verb-first:**
210
+ - ✅ `creating-skills` not `skill-creation`
211
+ - ✅ `condition-based-waiting` not `async-test-helpers`
212
+
213
+ ### 4. Token Efficiency (Critical)
214
+
215
+ **Problem:** getting-started and frequently-referenced skills load into EVERY conversation. Every token counts.
216
+
217
+ **Target word counts:**
218
+ - getting-started workflows: <150 words each
219
+ - Frequently-loaded skills: <200 words total
220
+ - Other skills: <500 words (still be concise)
221
+
222
+ **Techniques:**
223
+
224
+ **Move details to tool help:**
225
+ ```bash
226
+ # ❌ BAD: Document all flags in SKILL.md
227
+ search-conversations supports --text, --both, --after DATE, --before DATE, --limit N
228
+
229
+ # ✅ GOOD: Reference --help
230
+ search-conversations supports multiple modes and filters. Run --help for details.
231
+ ```
232
+
233
+ **Use cross-references:**
234
+ ```markdown
235
+ # ❌ BAD: Repeat workflow details
236
+ When searching, dispatch subagent with template...
237
+ [20 lines of repeated instructions]
238
+
239
+ # ✅ GOOD: Reference other skill
240
+ Always use subagents (50-100x context savings). REQUIRED: Use [other-skill-name] for workflow.
241
+ ```
242
+
243
+ **Compress examples:**
244
+ ```markdown
245
+ # ❌ BAD: Verbose example (42 words)
246
+ your human partner: "How did we handle authentication errors in React Router before?"
247
+ You: I'll search past conversations for React Router authentication patterns.
248
+ [Dispatch subagent with search query: "React Router authentication error handling 401"]
249
+
250
+ # ✅ GOOD: Minimal example (20 words)
251
+ Partner: "How did we handle auth errors in React Router?"
252
+ You: Searching...
253
+ [Dispatch subagent → synthesis]
254
+ ```
255
+
256
+ **Eliminate redundancy:**
257
+ - Don't repeat what's in cross-referenced skills
258
+ - Don't explain what's obvious from command
259
+ - Don't include multiple examples of same pattern
260
+
261
+ **Verification:**
262
+ ```bash
263
+ wc -w skills/path/SKILL.md
264
+ # getting-started workflows: aim for <150 each
265
+ # Other frequently-loaded: aim for <200 total
266
+ ```
267
+
268
+ **Name by what you DO or core insight:**
269
+ - ✅ `condition-based-waiting` > `async-test-helpers`
270
+ - ✅ `using-skills` not `skill-usage`
271
+ - ✅ `flatten-with-flags` > `data-structure-refactoring`
272
+ - ✅ `root-cause-tracing` > `debugging-techniques`
273
+
274
+ **Gerunds (-ing) work well for processes:**
275
+ - `creating-skills`, `testing-skills`, `debugging-with-logs`
276
+ - Active, describes the action you're taking
277
+
278
+ ### 4. Cross-Referencing Other Skills
279
+
280
+ **When writing documentation that references other skills:**
281
+
282
+ Use skill name only, with explicit requirement markers:
283
+ - ✅ Good: `**REQUIRED SUB-SKILL:** Use superpowers:test-driven-development`
284
+ - ✅ Good: `**REQUIRED BACKGROUND:** You MUST understand superpowers:systematic-debugging`
285
+ - ❌ Bad: `See skills/testing/test-driven-development` (unclear if required)
286
+ - ❌ Bad: `@skills/testing/test-driven-development/SKILL.md` (force-loads, burns context)
287
+
288
+ **Why no @ links:** `@` syntax force-loads files immediately, consuming 200k+ context before you need them.
289
+
290
+ ## Flowchart Usage
291
+
292
+ ```dot
293
+ digraph when_flowchart {
294
+ "Need to show information?" [shape=diamond];
295
+ "Decision where I might go wrong?" [shape=diamond];
296
+ "Use markdown" [shape=box];
297
+ "Small inline flowchart" [shape=box];
298
+
299
+ "Need to show information?" -> "Decision where I might go wrong?" [label="yes"];
300
+ "Decision where I might go wrong?" -> "Small inline flowchart" [label="yes"];
301
+ "Decision where I might go wrong?" -> "Use markdown" [label="no"];
302
+ }
303
+ ```
304
+
305
+ **Use flowcharts ONLY for:**
306
+ - Non-obvious decision points
307
+ - Process loops where you might stop too early
308
+ - "When to use A vs B" decisions
309
+
310
+ **Never use flowcharts for:**
311
+ - Reference material → Tables, lists
312
+ - Code examples → Markdown blocks
313
+ - Linear instructions → Numbered lists
314
+ - Labels without semantic meaning (step1, helper2)
315
+
316
+ See @graphviz-conventions.dot for graphviz style rules.
317
+
318
+ **Visualizing for your human partner:** Use `render-graphs.js` in this directory to render a skill's flowcharts to SVG:
319
+ ```bash
320
+ ./render-graphs.js ../some-skill # Each diagram separately
321
+ ./render-graphs.js ../some-skill --combine # All diagrams in one SVG
322
+ ```
323
+
324
+ ## Code Examples
325
+
326
+ **One excellent example beats many mediocre ones**
327
+
328
+ Choose most relevant language:
329
+ - Testing techniques → TypeScript/JavaScript
330
+ - System debugging → Shell/Python
331
+ - Data processing → Python
332
+
333
+ **Good example:**
334
+ - Complete and runnable
335
+ - Well-commented explaining WHY
336
+ - From real scenario
337
+ - Shows pattern clearly
338
+ - Ready to adapt (not generic template)
339
+
340
+ **Don't:**
341
+ - Implement in 5+ languages
342
+ - Create fill-in-the-blank templates
343
+ - Write contrived examples
344
+
345
+ You're good at porting - one great example is enough.
346
+
347
+ ## File Organization
348
+
349
+ ### Self-Contained Skill
350
+ ```
351
+ defense-in-depth/
352
+ SKILL.md # Everything inline
353
+ ```
354
+ When: All content fits, no heavy reference needed
355
+
356
+ ### Skill with Reusable Tool
357
+ ```
358
+ condition-based-waiting/
359
+ SKILL.md # Overview + patterns
360
+ example.ts # Working helpers to adapt
361
+ ```
362
+ When: Tool is reusable code, not just narrative
363
+
364
+ ### Skill with Heavy Reference
365
+ ```
366
+ pptx/
367
+ SKILL.md # Overview + workflows
368
+ pptxgenjs.md # 600 lines API reference
369
+ ooxml.md # 500 lines XML structure
370
+ scripts/ # Executable tools
371
+ ```
372
+ When: Reference material too large for inline
373
+
374
+ ## The Iron Law (Same as TDD)
375
+
376
+ ```
377
+ NO SKILL WITHOUT A FAILING TEST FIRST
378
+ ```
379
+
380
+ This applies to NEW skills AND EDITS to existing skills.
381
+
382
+ Write skill before testing? Delete it. Start over.
383
+ Edit skill without testing? Same violation.
384
+
385
+ **No exceptions:**
386
+ - Not for "simple additions"
387
+ - Not for "just adding a section"
388
+ - Not for "documentation updates"
389
+ - Don't keep untested changes as "reference"
390
+ - Don't "adapt" while running tests
391
+ - Delete means delete
392
+
393
+ **REQUIRED BACKGROUND:** The superpowers:test-driven-development skill explains why this matters. Same principles apply to documentation.
394
+
395
+ ## Testing All Skill Types
396
+
397
+ Different skill types need different test approaches:
398
+
399
+ ### Discipline-Enforcing Skills (rules/requirements)
400
+
401
+ **Examples:** TDD, verification-before-completion, designing-before-coding
402
+
403
+ **Test with:**
404
+ - Academic questions: Do they understand the rules?
405
+ - Pressure scenarios: Do they comply under stress?
406
+ - Multiple pressures combined: time + sunk cost + exhaustion
407
+ - Identify rationalizations and add explicit counters
408
+
409
+ **Success criteria:** Agent follows rule under maximum pressure
410
+
411
+ ### Technique Skills (how-to guides)
412
+
413
+ **Examples:** condition-based-waiting, root-cause-tracing, defensive-programming
414
+
415
+ **Test with:**
416
+ - Application scenarios: Can they apply the technique correctly?
417
+ - Variation scenarios: Do they handle edge cases?
418
+ - Missing information tests: Do instructions have gaps?
419
+
420
+ **Success criteria:** Agent successfully applies technique to new scenario
421
+
422
+ ### Pattern Skills (mental models)
423
+
424
+ **Examples:** reducing-complexity, information-hiding concepts
425
+
426
+ **Test with:**
427
+ - Recognition scenarios: Do they recognize when pattern applies?
428
+ - Application scenarios: Can they use the mental model?
429
+ - Counter-examples: Do they know when NOT to apply?
430
+
431
+ **Success criteria:** Agent correctly identifies when/how to apply pattern
432
+
433
+ ### Reference Skills (documentation/APIs)
434
+
435
+ **Examples:** API documentation, command references, library guides
436
+
437
+ **Test with:**
438
+ - Retrieval scenarios: Can they find the right information?
439
+ - Application scenarios: Can they use what they found correctly?
440
+ - Gap testing: Are common use cases covered?
441
+
442
+ **Success criteria:** Agent finds and correctly applies reference information
443
+
444
+ ## Common Rationalizations for Skipping Testing
445
+
446
+ | Excuse | Reality |
447
+ |--------|---------|
448
+ | "Skill is obviously clear" | Clear to you ≠ clear to other agents. Test it. |
449
+ | "It's just a reference" | References can have gaps, unclear sections. Test retrieval. |
450
+ | "Testing is overkill" | Untested skills have issues. Always. 15 min testing saves hours. |
451
+ | "I'll test if problems emerge" | Problems = agents can't use skill. Test BEFORE deploying. |
452
+ | "Too tedious to test" | Testing is less tedious than debugging bad skill in production. |
453
+ | "I'm confident it's good" | Overconfidence guarantees issues. Test anyway. |
454
+ | "Academic review is enough" | Reading ≠ using. Test application scenarios. |
455
+ | "No time to test" | Deploying untested skill wastes more time fixing it later. |
456
+
457
+ **All of these mean: Test before deploying. No exceptions.**
458
+
459
+ ## Bulletproofing Skills Against Rationalization
460
+
461
+ Skills that enforce discipline (like TDD) need to resist rationalization. Agents are smart and will find loopholes when under pressure.
462
+
463
+ **Psychology note:** Understanding WHY persuasion techniques work helps you apply them systematically. See persuasion-principles.md for research foundation (Cialdini, 2021; Meincke et al., 2025) on authority, commitment, scarcity, social proof, and unity principles.
464
+
465
+ ### Close Every Loophole Explicitly
466
+
467
+ Don't just state the rule - forbid specific workarounds:
468
+
469
+ <Bad>
470
+ ```markdown
471
+ Write code before test? Delete it.
472
+ ```
473
+ </Bad>
474
+
475
+ <Good>
476
+ ```markdown
477
+ Write code before test? Delete it. Start over.
478
+
479
+ **No exceptions:**
480
+ - Don't keep it as "reference"
481
+ - Don't "adapt" it while writing tests
482
+ - Don't look at it
483
+ - Delete means delete
484
+ ```
485
+ </Good>
486
+
487
+ ### Address "Spirit vs Letter" Arguments
488
+
489
+ Add foundational principle early:
490
+
491
+ ```markdown
492
+ **Violating the letter of the rules is violating the spirit of the rules.**
493
+ ```
494
+
495
+ This cuts off entire class of "I'm following the spirit" rationalizations.
496
+
497
+ ### Build Rationalization Table
498
+
499
+ Capture rationalizations from baseline testing (see Testing section below). Every excuse agents make goes in the table:
500
+
501
+ ```markdown
502
+ | Excuse | Reality |
503
+ |--------|---------|
504
+ | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
505
+ | "I'll test after" | Tests passing immediately prove nothing. |
506
+ | "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
507
+ ```
508
+
509
+ ### Create Red Flags List
510
+
511
+ Make it easy for agents to self-check when rationalizing:
512
+
513
+ ```markdown
514
+ ## Red Flags - STOP and Start Over
515
+
516
+ - Code before test
517
+ - "I already manually tested it"
518
+ - "Tests after achieve the same purpose"
519
+ - "It's about spirit not ritual"
520
+ - "This is different because..."
521
+
522
+ **All of these mean: Delete code. Start over with TDD.**
523
+ ```
524
+
525
+ ### Update CSO for Violation Symptoms
526
+
527
+ Add to description: symptoms of when you're ABOUT to violate the rule:
528
+
529
+ ```yaml
530
+ description: use when implementing any feature or bugfix, before writing implementation code
531
+ ```
532
+
533
+ ## RED-GREEN-REFACTOR for Skills
534
+
535
+ Follow the TDD cycle:
536
+
537
+ ### RED: Write Failing Test (Baseline)
538
+
539
+ Run pressure scenario with subagent WITHOUT the skill. Document exact behavior:
540
+ - What choices did they make?
541
+ - What rationalizations did they use (verbatim)?
542
+ - Which pressures triggered violations?
543
+
544
+ This is "watch the test fail" - you must see what agents naturally do before writing the skill.
545
+
546
+ ### GREEN: Write Minimal Skill
547
+
548
+ Write skill that addresses those specific rationalizations. Don't add extra content for hypothetical cases.
549
+
550
+ Run same scenarios WITH skill. Agent should now comply.
551
+
552
+ ### REFACTOR: Close Loopholes
553
+
554
+ Agent found new rationalization? Add explicit counter. Re-test until bulletproof.
555
+
556
+ **Testing methodology:** See @testing-skills-with-subagents.md for the complete testing methodology:
557
+ - How to write pressure scenarios
558
+ - Pressure types (time, sunk cost, authority, exhaustion)
559
+ - Plugging holes systematically
560
+ - Meta-testing techniques
561
+
562
+ ## Anti-Patterns
563
+
564
+ ### ❌ Narrative Example
565
+ "In session 2025-10-03, we found empty projectDir caused..."
566
+ **Why bad:** Too specific, not reusable
567
+
568
+ ### ❌ Multi-Language Dilution
569
+ example-js.js, example-py.py, example-go.go
570
+ **Why bad:** Mediocre quality, maintenance burden
571
+
572
+ ### ❌ Code in Flowcharts
573
+ ```dot
574
+ step1 [label="import fs"];
575
+ step2 [label="read file"];
576
+ ```
577
+ **Why bad:** Can't copy-paste, hard to read
578
+
579
+ ### ❌ Generic Labels
580
+ helper1, helper2, step3, pattern4
581
+ **Why bad:** Labels should have semantic meaning
582
+
583
+ ## STOP: Before Moving to Next Skill
584
+
585
+ **After writing ANY skill, you MUST STOP and complete the deployment process.**
586
+
587
+ **Do NOT:**
588
+ - Create multiple skills in batch without testing each
589
+ - Move to next skill before current one is verified
590
+ - Skip testing because "batching is more efficient"
591
+
592
+ **The deployment checklist below is MANDATORY for EACH skill.**
593
+
594
+ Deploying untested skills = deploying untested code. It's a violation of quality standards.
595
+
596
+ ## Skill Creation Checklist (TDD Adapted)
597
+
598
+ **IMPORTANT: Use TodoWrite to create todos for EACH checklist item below.**
599
+
600
+ **RED Phase - Write Failing Test:**
601
+ - [ ] Create pressure scenarios (3+ combined pressures for discipline skills)
602
+ - [ ] Run scenarios WITHOUT skill - document baseline behavior verbatim
603
+ - [ ] Identify patterns in rationalizations/failures
604
+
605
+ **GREEN Phase - Write Minimal Skill:**
606
+ - [ ] Name uses only letters, numbers, hyphens (no parentheses/special chars)
607
+ - [ ] YAML frontmatter with required `name` and `description` fields (max 1024 chars; see [spec](https://agentskills.io/specification))
608
+ - [ ] Description starts with "Use when..." and includes specific triggers/symptoms
609
+ - [ ] Description written in third person
610
+ - [ ] Keywords throughout for search (errors, symptoms, tools)
611
+ - [ ] Clear overview with core principle
612
+ - [ ] Address specific baseline failures identified in RED
613
+ - [ ] Code inline OR link to separate file
614
+ - [ ] One excellent example (not multi-language)
615
+ - [ ] Run scenarios WITH skill - verify agents now comply
616
+
617
+ **REFACTOR Phase - Close Loopholes:**
618
+ - [ ] Identify NEW rationalizations from testing
619
+ - [ ] Add explicit counters (if discipline skill)
620
+ - [ ] Build rationalization table from all test iterations
621
+ - [ ] Create red flags list
622
+ - [ ] Re-test until bulletproof
623
+
624
+ **Quality Checks:**
625
+ - [ ] Small flowchart only if decision non-obvious
626
+ - [ ] Quick reference table
627
+ - [ ] Common mistakes section
628
+ - [ ] No narrative storytelling
629
+ - [ ] Supporting files only for tools or heavy reference
630
+
631
+ **Deployment:**
632
+ - [ ] Commit skill to git and push to your fork (if configured)
633
+ - [ ] Consider contributing back via PR (if broadly useful)
634
+
635
+ ## Discovery Workflow
636
+
637
+ How future Claude finds your skill:
638
+
639
+ 1. **Encounters problem** ("tests are flaky")
640
+ 3. **Finds SKILL** (description matches)
641
+ 4. **Scans overview** (is this relevant?)
642
+ 5. **Reads patterns** (quick reference table)
643
+ 6. **Loads example** (only when implementing)
644
+
645
+ **Optimize for this flow** - put searchable terms early and often.
646
+
647
+ ## The Bottom Line
648
+
649
+ **Creating skills IS TDD for process documentation.**
650
+
651
+ Same Iron Law: No skill without failing test first.
652
+ Same cycle: RED (baseline) → GREEN (write skill) → REFACTOR (close loopholes).
653
+ Same benefits: Better quality, fewer surprises, bulletproof results.
654
+
655
+ If you follow TDD for code, follow it for skills. It's the same discipline applied to documentation.