@hiai-gg/hiai-opencode 0.1.1 → 0.1.3

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 (1226) hide show
  1. package/.env.example +68 -57
  2. package/AGENTS.md +383 -281
  3. package/ARCHITECTURE.md +280 -281
  4. package/LICENSE.md +59 -59
  5. package/README.md +421 -301
  6. package/assets/mcp/mempalace.mjs +196 -153
  7. package/assets/mcp/playwright.mjs +76 -0
  8. package/assets/mcp/rag.mjs +236 -236
  9. package/assets/runtime/npm-package-runner.mjs +54 -54
  10. package/config/hiai-opencode.schema.json +82 -82
  11. package/config/opencode.json +4 -4
  12. package/dist/config/defaults.d.ts +3 -0
  13. package/dist/config/platform-schema.d.ts +2 -0
  14. package/dist/index.js +462 -417
  15. package/dist/mcp/registry.d.ts +14 -0
  16. package/dist/mcp/types.d.ts +6 -0
  17. package/hiai-opencode.json +58 -58
  18. package/package.json +86 -91
  19. package/skills/api-and-interface-design/SKILL.md +294 -294
  20. package/skills/brainstorming/SKILL.md +164 -164
  21. package/skills/brainstorming/scripts/frame-template.html +214 -214
  22. package/skills/brainstorming/scripts/helper.js +88 -88
  23. package/skills/brainstorming/scripts/server.cjs +354 -354
  24. package/skills/brainstorming/scripts/start-server.sh +148 -148
  25. package/skills/brainstorming/scripts/stop-server.sh +56 -56
  26. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -49
  27. package/skills/brainstorming/visual-companion.md +287 -287
  28. package/skills/browser-testing-with-devtools/SKILL.md +302 -302
  29. package/skills/ci-cd-and-automation/SKILL.md +390 -390
  30. package/skills/code-review-and-quality/SKILL.md +347 -347
  31. package/skills/code-simplification/SKILL.md +331 -331
  32. package/skills/context-engineering/SKILL.md +289 -289
  33. package/skills/deprecation-and-migration/SKILL.md +206 -206
  34. package/skills/dispatching-parallel-agents/SKILL.md +182 -182
  35. package/skills/documentation-and-adrs/SKILL.md +278 -278
  36. package/skills/executing-plans/SKILL.md +70 -70
  37. package/skills/finishing-a-development-branch/SKILL.md +200 -200
  38. package/skills/frontend-ui-engineering/SKILL.md +322 -322
  39. package/skills/git-workflow-and-versioning/SKILL.md +300 -300
  40. package/skills/incremental-implementation/SKILL.md +241 -241
  41. package/skills/performance-optimization/SKILL.md +350 -350
  42. package/skills/receiving-code-review/SKILL.md +213 -213
  43. package/skills/requesting-code-review/SKILL.md +105 -105
  44. package/skills/requesting-code-review/code-reviewer.md +146 -146
  45. package/skills/security-and-hardening/SKILL.md +349 -349
  46. package/skills/shipping-and-launch/SKILL.md +309 -309
  47. package/skills/source-driven-development/SKILL.md +194 -194
  48. package/skills/spec-driven-development/SKILL.md +200 -200
  49. package/skills/subagent-driven-development/SKILL.md +277 -277
  50. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -26
  51. package/skills/subagent-driven-development/implementer-prompt.md +113 -113
  52. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -61
  53. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  54. package/skills/systematic-debugging/SKILL.md +596 -596
  55. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  56. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  57. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  58. package/skills/systematic-debugging/find-polluter.sh +63 -63
  59. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  60. package/skills/systematic-debugging/test-academic.md +14 -14
  61. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  62. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  63. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  64. package/skills/test-driven-development/SKILL.md +379 -379
  65. package/skills/using-agent-skills/SKILL.md +174 -174
  66. package/skills/using-git-worktrees/SKILL.md +218 -218
  67. package/skills/using-superpowers/SKILL.md +117 -117
  68. package/skills/using-superpowers/references/codex-tools.md +100 -100
  69. package/skills/using-superpowers/references/copilot-tools.md +52 -52
  70. package/skills/using-superpowers/references/gemini-tools.md +33 -33
  71. package/skills/verification-before-completion/SKILL.md +139 -139
  72. package/skills/writing-plans/SKILL.md +152 -152
  73. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -49
  74. package/skills/writing-skills/SKILL.md +655 -655
  75. package/skills/writing-skills/anthropic-best-practices.md +1150 -1150
  76. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
  77. package/skills/writing-skills/graphviz-conventions.dot +171 -171
  78. package/skills/writing-skills/persuasion-principles.md +187 -187
  79. package/skills/writing-skills/render-graphs.js +168 -168
  80. package/skills/writing-skills/testing-skills-with-subagents.md +384 -384
  81. package/src/AGENTS.md +41 -41
  82. package/src/agents/AGENTS.md +74 -74
  83. package/src/agents/agent-builder.ts +50 -50
  84. package/src/agents/bob/AGENTS.md +29 -29
  85. package/src/agents/bob/default.ts +128 -128
  86. package/src/agents/bob/gemini.ts +237 -237
  87. package/src/agents/bob/gpt-pro.ts +430 -430
  88. package/src/agents/bob/index.ts +19 -19
  89. package/src/agents/bob.ts +528 -528
  90. package/src/agents/builtin-agents/agent-overrides.ts +75 -75
  91. package/src/agents/builtin-agents/available-skills.ts +35 -35
  92. package/src/agents/builtin-agents/bob-agent.ts +96 -96
  93. package/src/agents/builtin-agents/coder-agent.ts +98 -98
  94. package/src/agents/builtin-agents/environment-context.ts +16 -16
  95. package/src/agents/builtin-agents/general-agents.ts +122 -122
  96. package/src/agents/builtin-agents/guard-agent.ts +66 -66
  97. package/src/agents/builtin-agents/model-resolution.ts +31 -31
  98. package/src/agents/builtin-agents/resolve-file-uri.ts +42 -42
  99. package/src/agents/builtin-agents.ts +194 -194
  100. package/src/agents/coder/AGENTS.md +34 -34
  101. package/src/agents/coder/agent.ts +162 -162
  102. package/src/agents/coder/gpt-codex.ts +404 -404
  103. package/src/agents/coder/gpt-pro.ts +319 -319
  104. package/src/agents/coder/gpt.ts +253 -253
  105. package/src/agents/coder/index.ts +8 -8
  106. package/src/agents/critic/agent.ts +105 -105
  107. package/src/agents/custom-agent-summaries.ts +61 -61
  108. package/src/agents/dynamic-agent-category-skills-guide.ts +138 -138
  109. package/src/agents/dynamic-agent-core-sections.ts +237 -237
  110. package/src/agents/dynamic-agent-policy-sections.ts +182 -182
  111. package/src/agents/dynamic-agent-prompt-builder.ts +31 -31
  112. package/src/agents/dynamic-agent-prompt-types.ts +24 -24
  113. package/src/agents/dynamic-agent-tool-categorization.ts +45 -45
  114. package/src/agents/env-context.ts +16 -16
  115. package/src/agents/gpt-apply-patch-guard.ts +7 -7
  116. package/src/agents/guard/agent.ts +146 -146
  117. package/src/agents/guard/default-prompt-sections.ts +305 -305
  118. package/src/agents/guard/default.ts +22 -22
  119. package/src/agents/guard/gemini-prompt-sections.ts +293 -293
  120. package/src/agents/guard/gemini.ts +22 -22
  121. package/src/agents/guard/gpt-prompt-sections.ts +296 -296
  122. package/src/agents/guard/gpt.ts +22 -22
  123. package/src/agents/guard/index.ts +2 -2
  124. package/src/agents/guard/prompt-section-builder.ts +104 -104
  125. package/src/agents/guard/shared-prompt.ts +172 -172
  126. package/src/agents/index.ts +5 -5
  127. package/src/agents/platform-adapter.ts +236 -236
  128. package/src/agents/platform-manager.ts +57 -57
  129. package/src/agents/prompt-library/identity.ts +14 -14
  130. package/src/agents/prompt-library/index.ts +7 -7
  131. package/src/agents/prompt-library/intent-gate.ts +149 -149
  132. package/src/agents/prompt-library/orchestration.ts +60 -60
  133. package/src/agents/prompt-library/platform.ts +36 -36
  134. package/src/agents/prompt-library/specialized.ts +39 -39
  135. package/src/agents/prompt-library/strategy.ts +80 -80
  136. package/src/agents/prompt-library/todo-discipline.ts +22 -22
  137. package/src/agents/quality-guardian.ts +76 -76
  138. package/src/agents/researcher.ts +73 -73
  139. package/src/agents/strategist/AGENTS.md +37 -37
  140. package/src/agents/strategist/behavioral-summary.ts +79 -79
  141. package/src/agents/strategist/gemini.ts +333 -333
  142. package/src/agents/strategist/gpt.ts +460 -460
  143. package/src/agents/strategist/high-accuracy-mode.ts +78 -78
  144. package/src/agents/strategist/identity-constraints.ts +336 -336
  145. package/src/agents/strategist/index.ts +6 -6
  146. package/src/agents/strategist/interview-mode.ts +335 -335
  147. package/src/agents/strategist/plan-generation.ts +213 -213
  148. package/src/agents/strategist/plan-template.ts +325 -325
  149. package/src/agents/strategist/system-prompt.ts +68 -68
  150. package/src/agents/sub/agent.ts +141 -141
  151. package/src/agents/sub/default.ts +52 -52
  152. package/src/agents/sub/gemini.ts +194 -194
  153. package/src/agents/sub/gpt-codex.ts +156 -156
  154. package/src/agents/sub/gpt-pro.ts +161 -161
  155. package/src/agents/sub/gpt.ts +157 -157
  156. package/src/agents/sub/index.ts +13 -13
  157. package/src/agents/types.ts +144 -144
  158. package/src/agents/ui.ts +58 -58
  159. package/src/config/data/model-capabilities.json +40690 -40690
  160. package/src/config/defaults.ts +89 -146
  161. package/src/config/hiai-opencode.schema.json +12 -12
  162. package/src/config/index.ts +67 -67
  163. package/src/config/loader.test.ts +65 -65
  164. package/src/config/loader.ts +186 -183
  165. package/src/config/models.ts +32 -32
  166. package/src/config/platform-schema.ts +193 -192
  167. package/src/config/schema/agent-definitions.ts +5 -5
  168. package/src/config/schema/agent-names.ts +66 -66
  169. package/src/config/schema/agent-overrides.ts +95 -95
  170. package/src/config/schema/babysitting.ts +7 -7
  171. package/src/config/schema/background-task.ts +29 -29
  172. package/src/config/schema/bob-agent.ts +11 -11
  173. package/src/config/schema/bob.ts +17 -17
  174. package/src/config/schema/browser-automation.ts +24 -24
  175. package/src/config/schema/categories.ts +45 -45
  176. package/src/config/schema/claude-code.ts +13 -13
  177. package/src/config/schema/commands.ts +14 -14
  178. package/src/config/schema/comment-checker.ts +8 -8
  179. package/src/config/schema/dynamic-context-pruning.ts +53 -53
  180. package/src/config/schema/experimental.ts +27 -27
  181. package/src/config/schema/fallback-models.ts +31 -31
  182. package/src/config/schema/fast-apply.ts +14 -14
  183. package/src/config/schema/git-env-prefix.ts +28 -28
  184. package/src/config/schema/git-master.ts +14 -14
  185. package/src/config/schema/hooks.ts +61 -61
  186. package/src/config/schema/index.ts +52 -52
  187. package/src/config/schema/internal/permission.ts +20 -20
  188. package/src/config/schema/model-capabilities.ts +10 -10
  189. package/src/config/schema/notification.ts +8 -8
  190. package/src/config/schema/oh-my-opencode-config.ts +90 -90
  191. package/src/config/schema/openclaw.ts +50 -50
  192. package/src/config/schema/ralph-loop.ts +11 -11
  193. package/src/config/schema/runtime-fallback.ts +18 -18
  194. package/src/config/schema/skills.ts +39 -39
  195. package/src/config/schema/start-work.ts +7 -7
  196. package/src/config/schema/tmux.ts +28 -28
  197. package/src/config/schema/websearch.ts +15 -15
  198. package/src/config/types.ts +174 -174
  199. package/src/create-hooks.ts +93 -93
  200. package/src/create-managers.ts +116 -116
  201. package/src/create-runtime-tmux-config.ts +18 -18
  202. package/src/create-tools.ts +53 -53
  203. package/src/features/background-agent/AGENTS.md +56 -56
  204. package/src/features/background-agent/abort-with-timeout.ts +35 -35
  205. package/src/features/background-agent/background-task-notification-template.ts +74 -74
  206. package/src/features/background-agent/compaction-aware-message-resolver.ts +164 -164
  207. package/src/features/background-agent/concurrency.ts +137 -137
  208. package/src/features/background-agent/constants.ts +58 -58
  209. package/src/features/background-agent/duration-formatter.ts +14 -14
  210. package/src/features/background-agent/error-classifier.ts +83 -83
  211. package/src/features/background-agent/fallback-retry-handler.ts +134 -134
  212. package/src/features/background-agent/index.ts +2 -2
  213. package/src/features/background-agent/loop-detector.ts +102 -102
  214. package/src/features/background-agent/manager.ts +2220 -2220
  215. package/src/features/background-agent/opencode-client.ts +3 -3
  216. package/src/features/background-agent/process-cleanup.ts +98 -98
  217. package/src/features/background-agent/remove-task-toast-tracking.ts +8 -8
  218. package/src/features/background-agent/session-existence.ts +57 -57
  219. package/src/features/background-agent/session-idle-event-handler.ts +93 -93
  220. package/src/features/background-agent/session-status-classifier.ts +20 -20
  221. package/src/features/background-agent/spawner/parent-directory-resolver.ts +24 -24
  222. package/src/features/background-agent/spawner.ts +327 -327
  223. package/src/features/background-agent/state.ts +199 -199
  224. package/src/features/background-agent/subagent-spawn-limits.ts +97 -97
  225. package/src/features/background-agent/task-history.ts +79 -79
  226. package/src/features/background-agent/task-poller.ts +225 -225
  227. package/src/features/background-agent/types.ts +100 -100
  228. package/src/features/boulder-state/constants.ts +13 -13
  229. package/src/features/boulder-state/index.ts +4 -4
  230. package/src/features/boulder-state/storage.ts +336 -336
  231. package/src/features/boulder-state/top-level-task.ts +78 -78
  232. package/src/features/boulder-state/types.ts +61 -61
  233. package/src/features/builtin-commands/commands.ts +143 -143
  234. package/src/features/builtin-commands/index.ts +2 -2
  235. package/src/features/builtin-commands/templates/handoff.ts +177 -177
  236. package/src/features/builtin-commands/templates/init-deep.ts +305 -305
  237. package/src/features/builtin-commands/templates/ralph-loop.ts +66 -66
  238. package/src/features/builtin-commands/templates/refactor.ts +619 -619
  239. package/src/features/builtin-commands/templates/remove-ai-slops.ts +96 -96
  240. package/src/features/builtin-commands/templates/start-work.ts +128 -128
  241. package/src/features/builtin-commands/templates/stop-continuation.ts +13 -13
  242. package/src/features/builtin-commands/types.ts +9 -9
  243. package/src/features/builtin-skills/index.ts +2 -2
  244. package/src/features/builtin-skills/materialize.ts +338 -338
  245. package/src/features/builtin-skills/skills/ai-slop-remover.ts +145 -145
  246. package/src/features/builtin-skills/skills/dev-browser.ts +221 -221
  247. package/src/features/builtin-skills/skills/frontend-ui-ux.ts +79 -79
  248. package/src/features/builtin-skills/skills/git-master-sections/commit-workflow.ts +509 -509
  249. package/src/features/builtin-skills/skills/git-master-sections/history-search-workflow.ts +229 -229
  250. package/src/features/builtin-skills/skills/git-master-sections/overview.ts +64 -64
  251. package/src/features/builtin-skills/skills/git-master-sections/quick-reference.ts +86 -86
  252. package/src/features/builtin-skills/skills/git-master-sections/rebase-workflow.ts +181 -181
  253. package/src/features/builtin-skills/skills/git-master-skill-metadata.ts +4 -4
  254. package/src/features/builtin-skills/skills/git-master.ts +28 -28
  255. package/src/features/builtin-skills/skills/index.ts +7 -7
  256. package/src/features/builtin-skills/skills/playwright-cli.ts +268 -268
  257. package/src/features/builtin-skills/skills/playwright.ts +466 -466
  258. package/src/features/builtin-skills/skills/review-work.ts +536 -536
  259. package/src/features/builtin-skills/skills.ts +39 -39
  260. package/src/features/builtin-skills/types.ts +16 -16
  261. package/src/features/claude-code-agent-loader/agent-definitions-loader.ts +87 -87
  262. package/src/features/claude-code-agent-loader/claude-model-mapper.ts +53 -53
  263. package/src/features/claude-code-agent-loader/index.ts +5 -5
  264. package/src/features/claude-code-agent-loader/json-agent-loader.ts +53 -53
  265. package/src/features/claude-code-agent-loader/loader.ts +86 -86
  266. package/src/features/claude-code-agent-loader/opencode-config-agents-reader.ts +125 -125
  267. package/src/features/claude-code-agent-loader/types.ts +31 -31
  268. package/src/features/claude-code-command-loader/index.ts +2 -2
  269. package/src/features/claude-code-command-loader/loader.ts +169 -169
  270. package/src/features/claude-code-command-loader/types.ts +46 -46
  271. package/src/features/claude-code-mcp-loader/configure-allowed-env-vars.ts +48 -48
  272. package/src/features/claude-code-mcp-loader/env-expander.ts +51 -51
  273. package/src/features/claude-code-mcp-loader/index.ts +12 -12
  274. package/src/features/claude-code-mcp-loader/loader.ts +156 -156
  275. package/src/features/claude-code-mcp-loader/scope-filter.ts +17 -17
  276. package/src/features/claude-code-mcp-loader/transformer.ts +57 -57
  277. package/src/features/claude-code-mcp-loader/types.ts +51 -51
  278. package/src/features/claude-code-plugin-loader/agent-loader.ts +59 -59
  279. package/src/features/claude-code-plugin-loader/command-loader.ts +53 -53
  280. package/src/features/claude-code-plugin-loader/discovery.ts +251 -251
  281. package/src/features/claude-code-plugin-loader/hook-loader.ts +26 -26
  282. package/src/features/claude-code-plugin-loader/index.ts +10 -10
  283. package/src/features/claude-code-plugin-loader/loader.ts +134 -134
  284. package/src/features/claude-code-plugin-loader/mcp-server-loader.ts +59 -59
  285. package/src/features/claude-code-plugin-loader/plugin-path-resolver.ts +23 -23
  286. package/src/features/claude-code-plugin-loader/scope-filter.ts +29 -29
  287. package/src/features/claude-code-plugin-loader/skill-loader.ts +62 -62
  288. package/src/features/claude-code-plugin-loader/types.ts +255 -255
  289. package/src/features/claude-code-session-state/index.ts +1 -1
  290. package/src/features/claude-code-session-state/state.ts +154 -154
  291. package/src/features/claude-tasks/session-storage.ts +52 -52
  292. package/src/features/claude-tasks/storage.ts +169 -169
  293. package/src/features/claude-tasks/types.ts +20 -20
  294. package/src/features/context-injector/collector.ts +91 -91
  295. package/src/features/context-injector/index.ts +14 -14
  296. package/src/features/context-injector/injector.ts +167 -167
  297. package/src/features/context-injector/types.ts +91 -91
  298. package/src/features/hook-message-injector/constants.ts +1 -1
  299. package/src/features/hook-message-injector/index.ts +11 -11
  300. package/src/features/hook-message-injector/injector.ts +437 -437
  301. package/src/features/hook-message-injector/types.ts +49 -49
  302. package/src/features/mcp-oauth/AGENTS.md +54 -54
  303. package/src/features/mcp-oauth/callback-server.ts +106 -106
  304. package/src/features/mcp-oauth/dcr.ts +98 -98
  305. package/src/features/mcp-oauth/discovery.ts +134 -134
  306. package/src/features/mcp-oauth/oauth-authorization-flow.ts +150 -150
  307. package/src/features/mcp-oauth/provider.ts +215 -215
  308. package/src/features/mcp-oauth/refresh-mutex.ts +58 -58
  309. package/src/features/mcp-oauth/resource-indicator.ts +16 -16
  310. package/src/features/mcp-oauth/schema.ts +8 -8
  311. package/src/features/mcp-oauth/step-up.ts +79 -79
  312. package/src/features/mcp-oauth/storage.ts +155 -155
  313. package/src/features/opencode-skill-loader/AGENTS.md +59 -59
  314. package/src/features/opencode-skill-loader/allowed-tools-parser.ts +9 -9
  315. package/src/features/opencode-skill-loader/async-loader.ts +213 -213
  316. package/src/features/opencode-skill-loader/blocking.ts +62 -62
  317. package/src/features/opencode-skill-loader/config-source-discovery.ts +114 -114
  318. package/src/features/opencode-skill-loader/discover-worker.ts +56 -56
  319. package/src/features/opencode-skill-loader/git-master-template-injection.ts +150 -150
  320. package/src/features/opencode-skill-loader/index.ts +17 -17
  321. package/src/features/opencode-skill-loader/loaded-skill-from-path.ts +73 -73
  322. package/src/features/opencode-skill-loader/loaded-skill-template-extractor.ts +16 -16
  323. package/src/features/opencode-skill-loader/loader.ts +172 -172
  324. package/src/features/opencode-skill-loader/merger/builtin-skill-converter.ts +26 -26
  325. package/src/features/opencode-skill-loader/merger/config-skill-entry-loader.ts +117 -117
  326. package/src/features/opencode-skill-loader/merger/scope-priority.ts +10 -10
  327. package/src/features/opencode-skill-loader/merger/skill-definition-merger.ts +31 -31
  328. package/src/features/opencode-skill-loader/merger/skills-config-normalizer.ts +19 -19
  329. package/src/features/opencode-skill-loader/merger.ts +96 -96
  330. package/src/features/opencode-skill-loader/skill-content.ts +11 -11
  331. package/src/features/opencode-skill-loader/skill-deduplication.ts +13 -13
  332. package/src/features/opencode-skill-loader/skill-definition-record.ts +11 -11
  333. package/src/features/opencode-skill-loader/skill-directory-loader.ts +112 -112
  334. package/src/features/opencode-skill-loader/skill-discovery.ts +76 -76
  335. package/src/features/opencode-skill-loader/skill-mcp-config.ts +45 -45
  336. package/src/features/opencode-skill-loader/skill-resolution-options.ts +9 -9
  337. package/src/features/opencode-skill-loader/skill-template-resolver.ts +97 -97
  338. package/src/features/opencode-skill-loader/types.ts +38 -38
  339. package/src/features/run-continuation-state/constants.ts +1 -1
  340. package/src/features/run-continuation-state/index.ts +3 -3
  341. package/src/features/run-continuation-state/storage.ts +80 -80
  342. package/src/features/run-continuation-state/types.ts +15 -15
  343. package/src/features/skill-mcp-manager/AGENTS.md +111 -111
  344. package/src/features/skill-mcp-manager/cleanup.ts +153 -153
  345. package/src/features/skill-mcp-manager/connection-type.ts +26 -26
  346. package/src/features/skill-mcp-manager/connection.ts +146 -146
  347. package/src/features/skill-mcp-manager/env-cleaner.ts +59 -59
  348. package/src/features/skill-mcp-manager/error-redaction.ts +47 -47
  349. package/src/features/skill-mcp-manager/http-client.ts +126 -126
  350. package/src/features/skill-mcp-manager/index.ts +2 -2
  351. package/src/features/skill-mcp-manager/manager.ts +178 -178
  352. package/src/features/skill-mcp-manager/oauth-handler.ts +160 -160
  353. package/src/features/skill-mcp-manager/stdio-client.ts +112 -112
  354. package/src/features/skill-mcp-manager/types.ts +96 -96
  355. package/src/features/task-toast-manager/index.ts +2 -2
  356. package/src/features/task-toast-manager/manager.ts +251 -251
  357. package/src/features/task-toast-manager/types.ts +29 -29
  358. package/src/features/tmux-subagent/action-executor-core.ts +82 -82
  359. package/src/features/tmux-subagent/action-executor.ts +137 -137
  360. package/src/features/tmux-subagent/cleanup.ts +42 -42
  361. package/src/features/tmux-subagent/decision-engine.ts +22 -22
  362. package/src/features/tmux-subagent/event-handlers.ts +6 -6
  363. package/src/features/tmux-subagent/grid-planning.ts +137 -137
  364. package/src/features/tmux-subagent/index.ts +16 -16
  365. package/src/features/tmux-subagent/manager.ts +969 -969
  366. package/src/features/tmux-subagent/oldest-agent-pane.ts +37 -37
  367. package/src/features/tmux-subagent/pane-split-availability.ts +77 -77
  368. package/src/features/tmux-subagent/pane-state-parser.ts +135 -135
  369. package/src/features/tmux-subagent/pane-state-querier.ts +76 -76
  370. package/src/features/tmux-subagent/polling-constants.ts +6 -6
  371. package/src/features/tmux-subagent/polling-manager.ts +167 -167
  372. package/src/features/tmux-subagent/polling.ts +183 -183
  373. package/src/features/tmux-subagent/session-created-event.ts +44 -44
  374. package/src/features/tmux-subagent/session-created-handler.ts +175 -175
  375. package/src/features/tmux-subagent/session-deleted-handler.ts +50 -50
  376. package/src/features/tmux-subagent/session-message-count.ts +3 -3
  377. package/src/features/tmux-subagent/session-ready-waiter.ts +44 -44
  378. package/src/features/tmux-subagent/session-status-parser.ts +17 -17
  379. package/src/features/tmux-subagent/spawn-action-decider.ts +147 -147
  380. package/src/features/tmux-subagent/spawn-target-finder.ts +146 -146
  381. package/src/features/tmux-subagent/tmux-grid-constants.ts +57 -57
  382. package/src/features/tmux-subagent/tracked-session-state.ts +29 -29
  383. package/src/features/tmux-subagent/types.ts +54 -54
  384. package/src/features/tool-metadata-store/index.ts +7 -7
  385. package/src/features/tool-metadata-store/store.ts +84 -84
  386. package/src/hooks/agent-usage-reminder/constants.ts +52 -52
  387. package/src/hooks/agent-usage-reminder/hook.ts +134 -134
  388. package/src/hooks/agent-usage-reminder/index.ts +1 -1
  389. package/src/hooks/agent-usage-reminder/storage.ts +42 -42
  390. package/src/hooks/agent-usage-reminder/types.ts +6 -6
  391. package/src/hooks/anthropic-context-window-limit-recovery/AGENTS.md +49 -49
  392. package/src/hooks/anthropic-context-window-limit-recovery/aggressive-truncation-strategy.ts +87 -87
  393. package/src/hooks/anthropic-context-window-limit-recovery/client.ts +21 -21
  394. package/src/hooks/anthropic-context-window-limit-recovery/deduplication-recovery.ts +77 -77
  395. package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.ts +199 -199
  396. package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery.ts +149 -149
  397. package/src/hooks/anthropic-context-window-limit-recovery/executor.ts +83 -83
  398. package/src/hooks/anthropic-context-window-limit-recovery/index.ts +8 -8
  399. package/src/hooks/anthropic-context-window-limit-recovery/message-builder.ts +190 -190
  400. package/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts +40 -40
  401. package/src/hooks/anthropic-context-window-limit-recovery/parser.ts +209 -209
  402. package/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +189 -189
  403. package/src/hooks/anthropic-context-window-limit-recovery/pruning-tool-output-truncation.ts +142 -142
  404. package/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -44
  405. package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.test-support.ts +119 -119
  406. package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts +193 -193
  407. package/src/hooks/anthropic-context-window-limit-recovery/recovery-strategy.ts +2 -2
  408. package/src/hooks/anthropic-context-window-limit-recovery/session-timeout-map.ts +20 -20
  409. package/src/hooks/anthropic-context-window-limit-recovery/state.ts +78 -78
  410. package/src/hooks/anthropic-context-window-limit-recovery/storage-paths.ts +6 -6
  411. package/src/hooks/anthropic-context-window-limit-recovery/storage.ts +18 -18
  412. package/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts +218 -218
  413. package/src/hooks/anthropic-context-window-limit-recovery/target-token-truncation.ts +196 -196
  414. package/src/hooks/anthropic-context-window-limit-recovery/tool-part-types.ts +38 -38
  415. package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage-sdk.ts +123 -123
  416. package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage.ts +119 -119
  417. package/src/hooks/anthropic-context-window-limit-recovery/types.ts +44 -44
  418. package/src/hooks/anthropic-effort/hook.ts +93 -93
  419. package/src/hooks/anthropic-effort/index.ts +1 -1
  420. package/src/hooks/auto-slash-command/constants.ts +12 -12
  421. package/src/hooks/auto-slash-command/detector.ts +88 -88
  422. package/src/hooks/auto-slash-command/executor.ts +165 -165
  423. package/src/hooks/auto-slash-command/hook.ts +238 -238
  424. package/src/hooks/auto-slash-command/index.ts +7 -7
  425. package/src/hooks/auto-slash-command/processed-command-store.ts +74 -74
  426. package/src/hooks/auto-slash-command/types.ts +42 -42
  427. package/src/hooks/background-notification/hook.ts +54 -54
  428. package/src/hooks/background-notification/index.ts +2 -2
  429. package/src/hooks/background-notification/types.ts +5 -5
  430. package/src/hooks/bash-file-read-guard.ts +44 -44
  431. package/src/hooks/category-skill-reminder/formatter.ts +37 -37
  432. package/src/hooks/category-skill-reminder/hook.ts +142 -142
  433. package/src/hooks/category-skill-reminder/index.ts +1 -1
  434. package/src/hooks/claude-code-hooks/AGENTS.md +41 -41
  435. package/src/hooks/claude-code-hooks/claude-code-hooks-hook.ts +28 -28
  436. package/src/hooks/claude-code-hooks/config-loader.ts +151 -151
  437. package/src/hooks/claude-code-hooks/config.ts +147 -147
  438. package/src/hooks/claude-code-hooks/dispatch-hook.ts +27 -27
  439. package/src/hooks/claude-code-hooks/execute-http-hook.ts +116 -116
  440. package/src/hooks/claude-code-hooks/handlers/chat-message-handler.ts +140 -140
  441. package/src/hooks/claude-code-hooks/handlers/pre-compact-handler.ts +41 -41
  442. package/src/hooks/claude-code-hooks/handlers/session-event-handler.ts +137 -137
  443. package/src/hooks/claude-code-hooks/handlers/tool-execute-after-handler.ts +160 -160
  444. package/src/hooks/claude-code-hooks/handlers/tool-execute-before-handler.ts +93 -93
  445. package/src/hooks/claude-code-hooks/index.ts +1 -1
  446. package/src/hooks/claude-code-hooks/plugin-config.ts +12 -12
  447. package/src/hooks/claude-code-hooks/post-tool-use.ts +195 -195
  448. package/src/hooks/claude-code-hooks/pre-compact.ts +105 -105
  449. package/src/hooks/claude-code-hooks/pre-tool-use.ts +168 -168
  450. package/src/hooks/claude-code-hooks/session-hook-state.ts +17 -17
  451. package/src/hooks/claude-code-hooks/stop.ts +118 -118
  452. package/src/hooks/claude-code-hooks/todo.ts +76 -76
  453. package/src/hooks/claude-code-hooks/tool-input-cache.ts +82 -82
  454. package/src/hooks/claude-code-hooks/transcript.ts +248 -248
  455. package/src/hooks/claude-code-hooks/types.ts +214 -214
  456. package/src/hooks/claude-code-hooks/user-prompt-submit.ts +121 -121
  457. package/src/hooks/comment-checker/cli-runner.ts +127 -127
  458. package/src/hooks/comment-checker/cli.ts +269 -269
  459. package/src/hooks/comment-checker/downloader.ts +170 -170
  460. package/src/hooks/comment-checker/hook.ts +192 -192
  461. package/src/hooks/comment-checker/index.ts +1 -1
  462. package/src/hooks/comment-checker/pending-calls.ts +45 -45
  463. package/src/hooks/comment-checker/types.ts +33 -33
  464. package/src/hooks/compaction-context-injector/compaction-context-prompt.ts +56 -56
  465. package/src/hooks/compaction-context-injector/constants.ts +5 -5
  466. package/src/hooks/compaction-context-injector/hook.ts +164 -164
  467. package/src/hooks/compaction-context-injector/index.ts +1 -1
  468. package/src/hooks/compaction-context-injector/recovery-prompt-config.ts +77 -77
  469. package/src/hooks/compaction-context-injector/recovery.ts +163 -163
  470. package/src/hooks/compaction-context-injector/session-id.ts +8 -8
  471. package/src/hooks/compaction-context-injector/session-prompt-config-resolver.ts +120 -120
  472. package/src/hooks/compaction-context-injector/tail-monitor.ts +52 -52
  473. package/src/hooks/compaction-context-injector/types.ts +25 -25
  474. package/src/hooks/compaction-context-injector/validated-model.ts +47 -47
  475. package/src/hooks/compaction-todo-preserver/hook.ts +127 -127
  476. package/src/hooks/compaction-todo-preserver/index.ts +2 -2
  477. package/src/hooks/context-window-monitor.ts +113 -113
  478. package/src/hooks/delegate-task-retry/guidance.ts +45 -45
  479. package/src/hooks/delegate-task-retry/hook.ts +22 -22
  480. package/src/hooks/delegate-task-retry/index.ts +4 -4
  481. package/src/hooks/delegate-task-retry/patterns.ts +77 -77
  482. package/src/hooks/directory-agents-injector/constants.ts +7 -7
  483. package/src/hooks/directory-agents-injector/finder.ts +38 -38
  484. package/src/hooks/directory-agents-injector/hook.ts +80 -80
  485. package/src/hooks/directory-agents-injector/index.ts +1 -1
  486. package/src/hooks/directory-agents-injector/injector.ts +59 -59
  487. package/src/hooks/directory-agents-injector/storage.ts +8 -8
  488. package/src/hooks/directory-readme-injector/constants.ts +7 -7
  489. package/src/hooks/directory-readme-injector/finder.ts +33 -33
  490. package/src/hooks/directory-readme-injector/hook.ts +80 -80
  491. package/src/hooks/directory-readme-injector/index.ts +1 -1
  492. package/src/hooks/directory-readme-injector/injector.ts +59 -59
  493. package/src/hooks/directory-readme-injector/storage.ts +8 -8
  494. package/src/hooks/edit-error-recovery/hook.ts +58 -58
  495. package/src/hooks/edit-error-recovery/index.ts +5 -5
  496. package/src/hooks/empty-task-response-detector.ts +27 -27
  497. package/src/hooks/fast-apply/hook.ts +11 -11
  498. package/src/hooks/fast-apply/index.ts +1 -1
  499. package/src/hooks/fast-apply/ollama-client.ts +53 -53
  500. package/src/hooks/fast-apply/tool-execute-before-handler.ts +86 -86
  501. package/src/hooks/guard/AGENTS.md +64 -64
  502. package/src/hooks/guard/background-launch-session-tracking.ts +97 -97
  503. package/src/hooks/guard/bob-path.ts +8 -8
  504. package/src/hooks/guard/boulder-continuation-injector.ts +109 -109
  505. package/src/hooks/guard/boulder-session-lineage.ts +44 -44
  506. package/src/hooks/guard/event-handler.ts +104 -104
  507. package/src/hooks/guard/final-wave-approval-gate.ts +47 -47
  508. package/src/hooks/guard/final-wave-plan-state.ts +60 -60
  509. package/src/hooks/guard/guard-hook.ts +27 -27
  510. package/src/hooks/guard/hook-name.ts +1 -1
  511. package/src/hooks/guard/idle-event.ts +341 -341
  512. package/src/hooks/guard/index.ts +3 -3
  513. package/src/hooks/guard/is-abort-error.ts +20 -20
  514. package/src/hooks/guard/recent-model-resolver.ts +89 -89
  515. package/src/hooks/guard/resolve-active-boulder-session.ts +29 -29
  516. package/src/hooks/guard/session-last-agent.ts +153 -153
  517. package/src/hooks/guard/subagent-session-id.ts +54 -54
  518. package/src/hooks/guard/system-reminder-templates.ts +249 -249
  519. package/src/hooks/guard/task-context.ts +45 -45
  520. package/src/hooks/guard/tool-execute-after.ts +209 -209
  521. package/src/hooks/guard/tool-execute-before.ts +102 -102
  522. package/src/hooks/guard/tsconfig.json +9 -9
  523. package/src/hooks/guard/types.ts +45 -45
  524. package/src/hooks/guard/verification-reminders.ts +197 -197
  525. package/src/hooks/guard/write-edit-tool-policy.ts +5 -5
  526. package/src/hooks/hashline-edit-diff-enhancer/hook.ts +106 -106
  527. package/src/hooks/hashline-read-enhancer/hook.ts +193 -193
  528. package/src/hooks/hashline-read-enhancer/index.ts +1 -1
  529. package/src/hooks/index.ts +58 -58
  530. package/src/hooks/interactive-bash-session/constants.ts +13 -13
  531. package/src/hooks/interactive-bash-session/hook.ts +125 -125
  532. package/src/hooks/interactive-bash-session/index.ts +3 -3
  533. package/src/hooks/interactive-bash-session/interactive-bash-session-tracker.ts +119 -119
  534. package/src/hooks/interactive-bash-session/parser.ts +118 -118
  535. package/src/hooks/interactive-bash-session/state-manager.ts +35 -35
  536. package/src/hooks/interactive-bash-session/storage.ts +59 -59
  537. package/src/hooks/interactive-bash-session/tmux-command-parser.ts +125 -125
  538. package/src/hooks/interactive-bash-session/types.ts +11 -11
  539. package/src/hooks/json-error-recovery/hook.ts +58 -58
  540. package/src/hooks/json-error-recovery/index.ts +6 -6
  541. package/src/hooks/keyword-detector/AGENTS.md +57 -57
  542. package/src/hooks/keyword-detector/analyze/default.ts +28 -28
  543. package/src/hooks/keyword-detector/analyze/index.ts +1 -1
  544. package/src/hooks/keyword-detector/constants.ts +45 -45
  545. package/src/hooks/keyword-detector/detector.ts +53 -53
  546. package/src/hooks/keyword-detector/hook.ts +143 -143
  547. package/src/hooks/keyword-detector/index.ts +5 -5
  548. package/src/hooks/keyword-detector/search/default.ts +20 -20
  549. package/src/hooks/keyword-detector/search/index.ts +1 -1
  550. package/src/hooks/keyword-detector/types.ts +4 -4
  551. package/src/hooks/keyword-detector/ultrawork/default.ts +302 -302
  552. package/src/hooks/keyword-detector/ultrawork/gemini.ts +290 -290
  553. package/src/hooks/keyword-detector/ultrawork/gpt.ts +173 -173
  554. package/src/hooks/keyword-detector/ultrawork/index.ts +56 -56
  555. package/src/hooks/keyword-detector/ultrawork/planner.ts +140 -140
  556. package/src/hooks/keyword-detector/ultrawork/source-detector.ts +65 -65
  557. package/src/hooks/legacy-plugin-toast/auto-migrate-runner.ts +2 -2
  558. package/src/hooks/legacy-plugin-toast/auto-migrate.ts +64 -64
  559. package/src/hooks/legacy-plugin-toast/hook.ts +68 -68
  560. package/src/hooks/legacy-plugin-toast/index.ts +1 -1
  561. package/src/hooks/legacy-plugin-toast/plugin-entry-migrator.ts +1 -1
  562. package/src/hooks/model-fallback/chat-message-fallback-handler.ts +74 -74
  563. package/src/hooks/model-fallback/hook.ts +201 -201
  564. package/src/hooks/model-fallback/next-fallback.ts +84 -84
  565. package/src/hooks/no-bob-gpt/hook.ts +56 -56
  566. package/src/hooks/no-bob-gpt/index.ts +1 -1
  567. package/src/hooks/no-coder-non-gpt/hook.ts +67 -67
  568. package/src/hooks/no-coder-non-gpt/index.ts +1 -1
  569. package/src/hooks/non-interactive-env/constants.ts +70 -70
  570. package/src/hooks/non-interactive-env/detector.ts +19 -19
  571. package/src/hooks/non-interactive-env/index.ts +5 -5
  572. package/src/hooks/non-interactive-env/non-interactive-env-hook.ts +73 -73
  573. package/src/hooks/non-interactive-env/types.ts +3 -3
  574. package/src/hooks/preemptive-compaction-degradation-monitor.ts +212 -212
  575. package/src/hooks/preemptive-compaction-no-text-tail.ts +70 -70
  576. package/src/hooks/preemptive-compaction.ts +218 -218
  577. package/src/hooks/question-label-truncator/hook.ts +62 -62
  578. package/src/hooks/question-label-truncator/index.ts +1 -1
  579. package/src/hooks/ralph-loop/AGENTS.md +62 -62
  580. package/src/hooks/ralph-loop/command-arguments.ts +30 -30
  581. package/src/hooks/ralph-loop/completion-handler.ts +65 -65
  582. package/src/hooks/ralph-loop/completion-promise-detector-test-input.ts +23 -23
  583. package/src/hooks/ralph-loop/completion-promise-detector.ts +165 -165
  584. package/src/hooks/ralph-loop/constants.ts +7 -7
  585. package/src/hooks/ralph-loop/continuation-prompt-builder.ts +77 -77
  586. package/src/hooks/ralph-loop/continuation-prompt-injector.ts +91 -91
  587. package/src/hooks/ralph-loop/index.ts +6 -6
  588. package/src/hooks/ralph-loop/iteration-continuation.ts +64 -64
  589. package/src/hooks/ralph-loop/logician-verification-detector.ts +88 -88
  590. package/src/hooks/ralph-loop/loop-session-recovery.ts +33 -33
  591. package/src/hooks/ralph-loop/loop-state-controller.ts +178 -178
  592. package/src/hooks/ralph-loop/message-storage-directory.ts +1 -1
  593. package/src/hooks/ralph-loop/pending-verification-handler.ts +152 -152
  594. package/src/hooks/ralph-loop/ralph-loop-event-handler.ts +231 -231
  595. package/src/hooks/ralph-loop/ralph-loop-hook.ts +90 -90
  596. package/src/hooks/ralph-loop/session-event-handler.ts +56 -56
  597. package/src/hooks/ralph-loop/session-reset-strategy.ts +69 -69
  598. package/src/hooks/ralph-loop/storage.ts +164 -164
  599. package/src/hooks/ralph-loop/types.ts +25 -25
  600. package/src/hooks/ralph-loop/verification-failure-handler.ts +103 -103
  601. package/src/hooks/ralph-loop/with-timeout.ts +20 -20
  602. package/src/hooks/read-image-resizer/hook.ts +209 -209
  603. package/src/hooks/read-image-resizer/image-dimensions.ts +191 -191
  604. package/src/hooks/read-image-resizer/image-resizer.ts +191 -191
  605. package/src/hooks/read-image-resizer/index.ts +1 -1
  606. package/src/hooks/read-image-resizer/png-fallback-resizer.ts +359 -359
  607. package/src/hooks/read-image-resizer/types.ts +16 -16
  608. package/src/hooks/rules-injector/AGENTS.md +53 -53
  609. package/src/hooks/rules-injector/cache.ts +27 -27
  610. package/src/hooks/rules-injector/constants.ts +31 -31
  611. package/src/hooks/rules-injector/finder.ts +3 -3
  612. package/src/hooks/rules-injector/hook.ts +94 -94
  613. package/src/hooks/rules-injector/index.ts +2 -2
  614. package/src/hooks/rules-injector/injector.ts +189 -189
  615. package/src/hooks/rules-injector/matcher.ts +63 -63
  616. package/src/hooks/rules-injector/output-path.ts +22 -22
  617. package/src/hooks/rules-injector/parser.ts +211 -211
  618. package/src/hooks/rules-injector/project-root-finder.ts +36 -36
  619. package/src/hooks/rules-injector/rule-distance.ts +53 -53
  620. package/src/hooks/rules-injector/rule-file-finder.ts +139 -139
  621. package/src/hooks/rules-injector/rule-file-scanner.ts +55 -55
  622. package/src/hooks/rules-injector/storage.ts +59 -59
  623. package/src/hooks/rules-injector/types.ts +57 -57
  624. package/src/hooks/runtime-fallback/AGENTS.md +102 -102
  625. package/src/hooks/runtime-fallback/agent-resolver.ts +50 -50
  626. package/src/hooks/runtime-fallback/auto-retry-signal.ts +32 -32
  627. package/src/hooks/runtime-fallback/auto-retry.ts +228 -228
  628. package/src/hooks/runtime-fallback/chat-message-handler.ts +62 -62
  629. package/src/hooks/runtime-fallback/constants.ts +47 -47
  630. package/src/hooks/runtime-fallback/error-classifier.ts +183 -183
  631. package/src/hooks/runtime-fallback/event-handler.ts +213 -213
  632. package/src/hooks/runtime-fallback/fallback-bootstrap-model.ts +63 -63
  633. package/src/hooks/runtime-fallback/fallback-models.ts +86 -86
  634. package/src/hooks/runtime-fallback/fallback-retry-dispatcher.ts +55 -55
  635. package/src/hooks/runtime-fallback/fallback-state.ts +74 -74
  636. package/src/hooks/runtime-fallback/hook.ts +87 -87
  637. package/src/hooks/runtime-fallback/index.ts +2 -2
  638. package/src/hooks/runtime-fallback/last-user-retry-parts.ts +20 -20
  639. package/src/hooks/runtime-fallback/message-update-handler.ts +168 -168
  640. package/src/hooks/runtime-fallback/retry-model-payload.ts +30 -30
  641. package/src/hooks/runtime-fallback/session-messages.ts +38 -38
  642. package/src/hooks/runtime-fallback/session-status-handler.ts +126 -126
  643. package/src/hooks/runtime-fallback/types.ts +77 -77
  644. package/src/hooks/runtime-fallback/visible-assistant-response.ts +80 -80
  645. package/src/hooks/session-notification-content.ts +145 -145
  646. package/src/hooks/session-notification-formatting.ts +25 -25
  647. package/src/hooks/session-notification-scheduler.ts +188 -188
  648. package/src/hooks/session-notification-sender.ts +117 -117
  649. package/src/hooks/session-notification-utils.ts +80 -80
  650. package/src/hooks/session-notification.ts +219 -219
  651. package/src/hooks/session-recovery/AGENTS.md +59 -59
  652. package/src/hooks/session-recovery/constants.ts +5 -5
  653. package/src/hooks/session-recovery/detect-error-type.ts +102 -102
  654. package/src/hooks/session-recovery/hook.ts +166 -166
  655. package/src/hooks/session-recovery/index.ts +7 -7
  656. package/src/hooks/session-recovery/recover-empty-content-message-sdk.ts +201 -201
  657. package/src/hooks/session-recovery/recover-thinking-block-order.ts +137 -137
  658. package/src/hooks/session-recovery/recover-thinking-disabled-violation.ts +75 -75
  659. package/src/hooks/session-recovery/recover-tool-result-missing.ts +108 -108
  660. package/src/hooks/session-recovery/recover-unavailable-tool.ts +108 -108
  661. package/src/hooks/session-recovery/resume.ts +49 -49
  662. package/src/hooks/session-recovery/storage/empty-messages.ts +47 -47
  663. package/src/hooks/session-recovery/storage/empty-text.ts +118 -118
  664. package/src/hooks/session-recovery/storage/message-dir.ts +1 -1
  665. package/src/hooks/session-recovery/storage/messages-reader.ts +83 -83
  666. package/src/hooks/session-recovery/storage/orphan-thinking-search.ts +43 -43
  667. package/src/hooks/session-recovery/storage/part-content.ts +28 -28
  668. package/src/hooks/session-recovery/storage/part-id.ts +5 -5
  669. package/src/hooks/session-recovery/storage/parts-reader.ts +56 -56
  670. package/src/hooks/session-recovery/storage/text-part-injector.ts +63 -63
  671. package/src/hooks/session-recovery/storage/thinking-block-search.ts +42 -42
  672. package/src/hooks/session-recovery/storage/thinking-prepend.ts +223 -223
  673. package/src/hooks/session-recovery/storage/thinking-strip.ts +67 -67
  674. package/src/hooks/session-recovery/storage.ts +34 -34
  675. package/src/hooks/session-recovery/types.ts +101 -101
  676. package/src/hooks/session-todo-status.ts +20 -20
  677. package/src/hooks/shared/compaction-model-resolver.ts +34 -34
  678. package/src/hooks/shared/shared/compaction-model-resolver.ts +34 -34
  679. package/src/hooks/start-work/context-info-builder.ts +319 -319
  680. package/src/hooks/start-work/index.ts +4 -4
  681. package/src/hooks/start-work/parse-user-request.ts +32 -32
  682. package/src/hooks/start-work/start-work-hook.ts +135 -135
  683. package/src/hooks/start-work/worktree-block.ts +11 -11
  684. package/src/hooks/start-work/worktree-detector.ts +77 -77
  685. package/src/hooks/stop-continuation-guard/hook.ts +122 -122
  686. package/src/hooks/stop-continuation-guard/index.ts +2 -2
  687. package/src/hooks/strategist-md-only/agent-matcher.ts +5 -5
  688. package/src/hooks/strategist-md-only/agent-resolution.ts +70 -70
  689. package/src/hooks/strategist-md-only/constants.ts +78 -78
  690. package/src/hooks/strategist-md-only/hook.ts +82 -82
  691. package/src/hooks/strategist-md-only/index.ts +2 -2
  692. package/src/hooks/strategist-md-only/path-policy.ts +41 -41
  693. package/src/hooks/sub-notepad/constants.ts +29 -29
  694. package/src/hooks/sub-notepad/hook.ts +44 -44
  695. package/src/hooks/sub-notepad/index.ts +3 -3
  696. package/src/hooks/task-reminder/hook.ts +59 -59
  697. package/src/hooks/task-reminder/index.ts +1 -1
  698. package/src/hooks/task-resume-info/hook.ts +39 -39
  699. package/src/hooks/task-resume-info/index.ts +1 -1
  700. package/src/hooks/tasks-todowrite-disabler/constants.ts +30 -30
  701. package/src/hooks/tasks-todowrite-disabler/hook.ts +34 -34
  702. package/src/hooks/tasks-todowrite-disabler/index.ts +2 -2
  703. package/src/hooks/think-mode/detector.ts +59 -59
  704. package/src/hooks/think-mode/hook.ts +76 -76
  705. package/src/hooks/think-mode/index.ts +5 -5
  706. package/src/hooks/think-mode/switcher.ts +100 -100
  707. package/src/hooks/think-mode/types.ts +16 -16
  708. package/src/hooks/thinking-block-validator/hook.ts +181 -181
  709. package/src/hooks/thinking-block-validator/index.ts +1 -1
  710. package/src/hooks/todo-continuation-enforcer/AGENTS.md +65 -65
  711. package/src/hooks/todo-continuation-enforcer/abort-detection.ts +17 -17
  712. package/src/hooks/todo-continuation-enforcer/compaction-guard.ts +39 -39
  713. package/src/hooks/todo-continuation-enforcer/constants.ts +25 -25
  714. package/src/hooks/todo-continuation-enforcer/continuation-injection.ts +222 -222
  715. package/src/hooks/todo-continuation-enforcer/countdown.ts +86 -86
  716. package/src/hooks/todo-continuation-enforcer/handler.ts +99 -99
  717. package/src/hooks/todo-continuation-enforcer/idle-event.ts +225 -225
  718. package/src/hooks/todo-continuation-enforcer/index.ts +59 -59
  719. package/src/hooks/todo-continuation-enforcer/message-directory.ts +1 -1
  720. package/src/hooks/todo-continuation-enforcer/non-idle-events.ts +107 -107
  721. package/src/hooks/todo-continuation-enforcer/pending-question-detection.ts +40 -40
  722. package/src/hooks/todo-continuation-enforcer/resolve-message-info.ts +48 -48
  723. package/src/hooks/todo-continuation-enforcer/session-state.ts +283 -283
  724. package/src/hooks/todo-continuation-enforcer/stagnation-detection.ts +36 -36
  725. package/src/hooks/todo-continuation-enforcer/todo.ts +11 -11
  726. package/src/hooks/todo-continuation-enforcer/token-limit-detection.ts +38 -38
  727. package/src/hooks/todo-continuation-enforcer/types.ts +74 -74
  728. package/src/hooks/todo-description-override/description.ts +28 -28
  729. package/src/hooks/todo-description-override/hook.ts +14 -14
  730. package/src/hooks/todo-description-override/index.ts +1 -1
  731. package/src/hooks/tool-output-truncator.ts +66 -66
  732. package/src/hooks/tool-pair-validator/hook.ts +184 -184
  733. package/src/hooks/tool-pair-validator/index.ts +1 -1
  734. package/src/hooks/unstable-agent-babysitter/index.ts +9 -9
  735. package/src/hooks/unstable-agent-babysitter/task-message-analyzer.ts +110 -110
  736. package/src/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.ts +238 -238
  737. package/src/hooks/webfetch-redirect-guard/constants.ts +11 -11
  738. package/src/hooks/webfetch-redirect-guard/hook.ts +123 -123
  739. package/src/hooks/webfetch-redirect-guard/index.ts +1 -1
  740. package/src/hooks/webfetch-redirect-guard/redirect-resolution.ts +89 -89
  741. package/src/hooks/write-existing-file-guard/hook.ts +108 -108
  742. package/src/hooks/write-existing-file-guard/index.ts +1 -1
  743. package/src/hooks/write-existing-file-guard/session-read-permissions.ts +36 -36
  744. package/src/hooks/write-existing-file-guard/tool-execute-before-handler.ts +176 -176
  745. package/src/index.ts +285 -284
  746. package/src/internals/plugins/pty/LICENSE +21 -21
  747. package/src/internals/plugins/pty/constants.ts +7 -7
  748. package/src/internals/plugins/pty/plugin.ts +28 -28
  749. package/src/internals/plugins/pty/pty/buffer.ts +75 -75
  750. package/src/internals/plugins/pty/pty/formatters.ts +22 -22
  751. package/src/internals/plugins/pty/pty/manager.ts +175 -175
  752. package/src/internals/plugins/pty/pty/notification-manager.ts +75 -75
  753. package/src/internals/plugins/pty/pty/output-manager.ts +29 -29
  754. package/src/internals/plugins/pty/pty/permissions.ts +115 -115
  755. package/src/internals/plugins/pty/pty/session-lifecycle.ts +161 -161
  756. package/src/internals/plugins/pty/pty/tools/kill.ts +41 -41
  757. package/src/internals/plugins/pty/pty/tools/kill.txt +25 -25
  758. package/src/internals/plugins/pty/pty/tools/list.ts +25 -25
  759. package/src/internals/plugins/pty/pty/tools/list.txt +22 -22
  760. package/src/internals/plugins/pty/pty/tools/read.ts +234 -234
  761. package/src/internals/plugins/pty/pty/tools/read.txt +39 -39
  762. package/src/internals/plugins/pty/pty/tools/spawn.ts +71 -71
  763. package/src/internals/plugins/pty/pty/tools/spawn.txt +47 -47
  764. package/src/internals/plugins/pty/pty/tools/write.ts +96 -96
  765. package/src/internals/plugins/pty/pty/tools/write.txt +28 -28
  766. package/src/internals/plugins/pty/pty/types.ts +67 -67
  767. package/src/internals/plugins/pty/pty/utils.ts +21 -21
  768. package/src/internals/plugins/pty/pty/wildcard.ts +62 -62
  769. package/src/internals/plugins/pty/shared/constants.ts +7 -7
  770. package/src/internals/plugins/pty/types.ts +7 -7
  771. package/src/internals/plugins/subtask2/LICENSE +128 -128
  772. package/src/internals/plugins/subtask2/commands/index.ts +7 -7
  773. package/src/internals/plugins/subtask2/commands/loader.ts +39 -39
  774. package/src/internals/plugins/subtask2/commands/manifest.ts +64 -64
  775. package/src/internals/plugins/subtask2/commands/resolver.ts +28 -28
  776. package/src/internals/plugins/subtask2/core/plugin.ts +52 -52
  777. package/src/internals/plugins/subtask2/core/state.ts +764 -764
  778. package/src/internals/plugins/subtask2/features/auto.ts +57 -57
  779. package/src/internals/plugins/subtask2/features/index.ts +9 -9
  780. package/src/internals/plugins/subtask2/features/inline-subtasks.ts +205 -205
  781. package/src/internals/plugins/subtask2/features/parallel.ts +148 -148
  782. package/src/internals/plugins/subtask2/features/results.ts +48 -48
  783. package/src/internals/plugins/subtask2/features/returns.ts +273 -273
  784. package/src/internals/plugins/subtask2/features/turns.ts +190 -190
  785. package/src/internals/plugins/subtask2/hooks/command-hooks.ts +283 -283
  786. package/src/internals/plugins/subtask2/hooks/message-hooks.ts +603 -603
  787. package/src/internals/plugins/subtask2/hooks/session-idle-hook.ts +358 -358
  788. package/src/internals/plugins/subtask2/hooks/tool-hooks.ts +309 -309
  789. package/src/internals/plugins/subtask2/loop.ts +122 -122
  790. package/src/internals/plugins/subtask2/parsing/auto.ts +33 -33
  791. package/src/internals/plugins/subtask2/parsing/commands.ts +154 -154
  792. package/src/internals/plugins/subtask2/parsing/frontmatter.ts +20 -20
  793. package/src/internals/plugins/subtask2/parsing/index.ts +10 -10
  794. package/src/internals/plugins/subtask2/parsing/overrides.ts +68 -68
  795. package/src/internals/plugins/subtask2/parsing/parallel.ts +88 -88
  796. package/src/internals/plugins/subtask2/parsing/turns.ts +78 -78
  797. package/src/internals/plugins/subtask2/types.ts +41 -41
  798. package/src/internals/plugins/subtask2/utils/config.ts +100 -100
  799. package/src/internals/plugins/subtask2/utils/index.ts +7 -7
  800. package/src/internals/plugins/subtask2/utils/logger.ts +67 -67
  801. package/src/internals/plugins/subtask2/utils/prompts.ts +117 -117
  802. package/src/internals/plugins/websearch-cited/LICENSE +214 -214
  803. package/src/internals/plugins/websearch-cited/codex_prompt.txt +79 -79
  804. package/src/internals/plugins/websearch-cited/google.ts +749 -749
  805. package/src/internals/plugins/websearch-cited/index.ts +301 -301
  806. package/src/internals/plugins/websearch-cited/openai.ts +407 -407
  807. package/src/internals/plugins/websearch-cited/openrouter.ts +190 -190
  808. package/src/internals/plugins/websearch-cited/types.ts +7 -7
  809. package/src/lsp/index.ts +15 -15
  810. package/src/mcp/context7.ts +9 -9
  811. package/src/mcp/grep-app.ts +6 -6
  812. package/src/mcp/index.ts +54 -87
  813. package/src/mcp/omo-mcp-index.ts +30 -35
  814. package/src/mcp/registry.ts +132 -0
  815. package/src/mcp/types.ts +19 -9
  816. package/src/mcp/websearch.ts +44 -44
  817. package/src/permissions/index.ts +25 -25
  818. package/src/plugin/AGENTS.md +54 -54
  819. package/src/plugin/available-categories.ts +24 -24
  820. package/src/plugin/chat-headers.ts +141 -141
  821. package/src/plugin/chat-message.ts +309 -309
  822. package/src/plugin/chat-params.ts +182 -182
  823. package/src/plugin/command-execute-before.ts +80 -80
  824. package/src/plugin/event.ts +639 -639
  825. package/src/plugin/hooks/create-continuation-hooks.ts +128 -128
  826. package/src/plugin/hooks/create-core-hooks.ts +47 -47
  827. package/src/plugin/hooks/create-session-hooks.ts +286 -286
  828. package/src/plugin/hooks/create-skill-hooks.ts +50 -50
  829. package/src/plugin/hooks/create-tool-guard-hooks.ts +159 -159
  830. package/src/plugin/hooks/create-transform-hooks.ts +85 -85
  831. package/src/plugin/messages-transform.ts +28 -28
  832. package/src/plugin/normalize-tool-arg-schemas.ts +75 -75
  833. package/src/plugin/recent-synthetic-idles.ts +20 -20
  834. package/src/plugin/session-agent-resolver.ts +37 -37
  835. package/src/plugin/session-status-normalizer.ts +22 -22
  836. package/src/plugin/skill-context.ts +132 -132
  837. package/src/plugin/system-transform.ts +6 -6
  838. package/src/plugin/tool-execute-after.ts +178 -178
  839. package/src/plugin/tool-execute-before.ts +222 -222
  840. package/src/plugin/tool-registry.ts +282 -282
  841. package/src/plugin/types.ts +26 -26
  842. package/src/plugin/ultrawork-db-model-override.ts +142 -142
  843. package/src/plugin/ultrawork-model-override.ts +196 -196
  844. package/src/plugin/ultrawork-variant-availability.ts +51 -51
  845. package/src/plugin/unstable-agent-babysitter.ts +41 -41
  846. package/src/plugin-config.ts +314 -314
  847. package/src/plugin-dispose.ts +51 -51
  848. package/src/plugin-handlers/AGENTS.md +92 -92
  849. package/src/plugin-handlers/agent-config-handler.ts +502 -502
  850. package/src/plugin-handlers/agent-key-remapper.ts +39 -39
  851. package/src/plugin-handlers/agent-override-protection.ts +38 -38
  852. package/src/plugin-handlers/agent-priority-order.ts +63 -63
  853. package/src/plugin-handlers/category-config-resolver.ts +9 -9
  854. package/src/plugin-handlers/command-config-handler.ts +105 -105
  855. package/src/plugin-handlers/config-handler.ts +61 -61
  856. package/src/plugin-handlers/index.ts +10 -10
  857. package/src/plugin-handlers/mcp-config-handler.ts +205 -205
  858. package/src/plugin-handlers/plan-model-inheritance.ts +27 -27
  859. package/src/plugin-handlers/plugin-components-loader.ts +70 -70
  860. package/src/plugin-handlers/provider-config-handler.ts +73 -73
  861. package/src/plugin-handlers/strategist-agent-config-builder.ts +128 -128
  862. package/src/plugin-handlers/tool-config-handler.ts +193 -193
  863. package/src/plugin-interface.ts +83 -83
  864. package/src/plugin-state.ts +18 -18
  865. package/src/shared/AGENTS.md +54 -54
  866. package/src/shared/agent-display-names.ts +182 -182
  867. package/src/shared/agent-tool-restrictions.ts +80 -80
  868. package/src/shared/agent-variant.ts +101 -101
  869. package/src/shared/agents-config-dir.ts +23 -23
  870. package/src/shared/archive-entry-validator.ts +83 -83
  871. package/src/shared/background-output-consumption.ts +69 -69
  872. package/src/shared/binary-downloader.ts +127 -127
  873. package/src/shared/claude-config-dir.ts +16 -16
  874. package/src/shared/closure-protocol.ts +53 -53
  875. package/src/shared/command-executor/embedded-commands.ts +26 -26
  876. package/src/shared/command-executor/execute-command.ts +28 -28
  877. package/src/shared/command-executor/execute-hook-command.ts +129 -129
  878. package/src/shared/command-executor/home-directory.ts +5 -5
  879. package/src/shared/command-executor/resolve-commands-in-text.ts +49 -49
  880. package/src/shared/command-executor/shell-path.ts +27 -27
  881. package/src/shared/command-executor.ts +5 -5
  882. package/src/shared/compaction-agent-config-checkpoint.ts +42 -42
  883. package/src/shared/compaction-marker.ts +61 -61
  884. package/src/shared/config-errors.ts +18 -18
  885. package/src/shared/connected-providers-cache.ts +215 -215
  886. package/src/shared/contains-path.ts +50 -50
  887. package/src/shared/context-limit-resolver.ts +42 -42
  888. package/src/shared/data-path.ts +64 -64
  889. package/src/shared/deep-merge.ts +53 -53
  890. package/src/shared/disabled-tools.ts +19 -19
  891. package/src/shared/dynamic-truncator.ts +222 -222
  892. package/src/shared/external-plugin-detector.ts +139 -139
  893. package/src/shared/fallback-chain-from-models.ts +124 -124
  894. package/src/shared/fallback-model-availability.ts +102 -102
  895. package/src/shared/file-reference-resolver.ts +99 -99
  896. package/src/shared/file-utils.ts +34 -34
  897. package/src/shared/first-message-variant.ts +28 -28
  898. package/src/shared/frontmatter.ts +31 -31
  899. package/src/shared/git-worktree/collect-git-diff-stats.ts +56 -56
  900. package/src/shared/git-worktree/format-file-changes.ts +46 -46
  901. package/src/shared/git-worktree/index.ts +7 -7
  902. package/src/shared/git-worktree/parse-diff-numstat.ts +27 -27
  903. package/src/shared/git-worktree/parse-status-porcelain-line.ts +27 -27
  904. package/src/shared/git-worktree/parse-status-porcelain.ts +15 -15
  905. package/src/shared/git-worktree/types.ts +8 -8
  906. package/src/shared/hook-disabled.ts +22 -22
  907. package/src/shared/index.ts +80 -80
  908. package/src/shared/internal-initiator-marker.ts +18 -18
  909. package/src/shared/is-abort-error.ts +20 -20
  910. package/src/shared/json-file-cache-store.ts +98 -98
  911. package/src/shared/jsonc-parser.ts +98 -98
  912. package/src/shared/known-variants.ts +16 -16
  913. package/src/shared/legacy-plugin-warning.ts +68 -68
  914. package/src/shared/load-opencode-plugins.ts +60 -60
  915. package/src/shared/log-legacy-plugin-startup-warning.ts +46 -46
  916. package/src/shared/logger.ts +48 -48
  917. package/src/shared/merge-categories.ts +18 -18
  918. package/src/shared/migrate-legacy-config-file.ts +66 -66
  919. package/src/shared/migrate-legacy-plugin-entry.ts +75 -75
  920. package/src/shared/migration/agent-category.ts +60 -60
  921. package/src/shared/migration/agent-names.ts +100 -100
  922. package/src/shared/migration/config-migration.ts +210 -210
  923. package/src/shared/migration/hook-names.ts +40 -40
  924. package/src/shared/migration/migrations-sidecar.ts +92 -92
  925. package/src/shared/migration/model-versions.ts +50 -50
  926. package/src/shared/migration.ts +5 -5
  927. package/src/shared/model-availability.ts +294 -294
  928. package/src/shared/model-capabilities/bundled-snapshot.ts +15 -15
  929. package/src/shared/model-capabilities/get-model-capabilities.ts +140 -140
  930. package/src/shared/model-capabilities/index.ts +9 -9
  931. package/src/shared/model-capabilities/runtime-model-readers.ts +190 -190
  932. package/src/shared/model-capabilities/types.ts +80 -80
  933. package/src/shared/model-capabilities-cache.ts +213 -213
  934. package/src/shared/model-capability-aliases.ts +108 -108
  935. package/src/shared/model-capability-guardrails.ts +149 -149
  936. package/src/shared/model-capability-heuristics.ts +32 -32
  937. package/src/shared/model-error-classifier.ts +214 -214
  938. package/src/shared/model-format-normalizer.ts +20 -20
  939. package/src/shared/model-normalization.ts +8 -8
  940. package/src/shared/model-requirements.ts +26 -26
  941. package/src/shared/model-resolution-pipeline.ts +216 -216
  942. package/src/shared/model-resolution-types.ts +41 -41
  943. package/src/shared/model-resolver.ts +106 -106
  944. package/src/shared/model-sanitizer.ts +12 -12
  945. package/src/shared/model-settings-compatibility.ts +200 -200
  946. package/src/shared/model-suggestion-retry.ts +182 -182
  947. package/src/shared/normalize-sdk-response.ts +36 -36
  948. package/src/shared/opencode-command-dirs.ts +36 -36
  949. package/src/shared/opencode-config-dir-types.ts +15 -15
  950. package/src/shared/opencode-config-dir.ts +135 -135
  951. package/src/shared/opencode-http-api.ts +139 -139
  952. package/src/shared/opencode-message-dir.ts +29 -29
  953. package/src/shared/opencode-server-auth.ts +190 -190
  954. package/src/shared/opencode-storage-detection.ts +33 -33
  955. package/src/shared/opencode-storage-paths.ts +6 -6
  956. package/src/shared/opencode-version.ts +80 -80
  957. package/src/shared/parse-tools-config.ts +25 -25
  958. package/src/shared/pattern-matcher.ts +46 -46
  959. package/src/shared/permission-compat.ts +86 -86
  960. package/src/shared/plugin-command-discovery.ts +28 -28
  961. package/src/shared/plugin-entry-migrator.ts +21 -21
  962. package/src/shared/plugin-identity.ts +8 -8
  963. package/src/shared/port-utils.ts +48 -48
  964. package/src/shared/project-discovery-dirs.ts +101 -101
  965. package/src/shared/prompt-timeout-context.ts +49 -49
  966. package/src/shared/prompt-tools.ts +35 -35
  967. package/src/shared/provider-model-id-transform.ts +58 -58
  968. package/src/shared/question-denied-session-permission.ts +9 -9
  969. package/src/shared/record-type-guard.ts +3 -3
  970. package/src/shared/resolve-agent-definition-paths.ts +22 -22
  971. package/src/shared/retry-status-utils.ts +19 -19
  972. package/src/shared/runtime-plugin-config.ts +98 -98
  973. package/src/shared/safe-create-hook.ts +24 -24
  974. package/src/shared/session-category-registry.ts +27 -27
  975. package/src/shared/session-cursor.ts +108 -108
  976. package/src/shared/session-directory-resolver.ts +41 -41
  977. package/src/shared/session-injected-paths.ts +59 -59
  978. package/src/shared/session-model-state.ts +15 -15
  979. package/src/shared/session-prompt-params-helpers.ts +31 -31
  980. package/src/shared/session-prompt-params-state.ts +37 -37
  981. package/src/shared/session-tools-store.ts +18 -18
  982. package/src/shared/session-utils.ts +25 -25
  983. package/src/shared/shell-env.ts +175 -175
  984. package/src/shared/skill-path-resolver.ts +26 -26
  985. package/src/shared/snake-case.ts +44 -44
  986. package/src/shared/spawn-with-windows-hide.ts +84 -84
  987. package/src/shared/system-directive.ts +67 -67
  988. package/src/shared/task-system-enabled.ts +9 -9
  989. package/src/shared/tmux/constants.ts +12 -12
  990. package/src/shared/tmux/index.ts +3 -3
  991. package/src/shared/tmux/tmux-utils/environment.ts +13 -13
  992. package/src/shared/tmux/tmux-utils/layout.ts +96 -96
  993. package/src/shared/tmux/tmux-utils/pane-close.ts +48 -48
  994. package/src/shared/tmux/tmux-utils/pane-dimensions.ts +28 -28
  995. package/src/shared/tmux/tmux-utils/pane-replace.ts +73 -73
  996. package/src/shared/tmux/tmux-utils/pane-spawn.ts +94 -94
  997. package/src/shared/tmux/tmux-utils/server-health.ts +62 -62
  998. package/src/shared/tmux/tmux-utils/session-spawn.ts +145 -145
  999. package/src/shared/tmux/tmux-utils/window-spawn.ts +93 -93
  1000. package/src/shared/tmux/tmux-utils.ts +15 -15
  1001. package/src/shared/tmux/types.ts +4 -4
  1002. package/src/shared/tool-name.ts +27 -27
  1003. package/src/shared/truncate-description.ts +11 -11
  1004. package/src/shared/vision-capable-models-cache.ts +17 -17
  1005. package/src/shared/write-file-atomically.ts +31 -31
  1006. package/src/shared/zip-entry-listing/powershell-zip-entry-listing.ts +99 -99
  1007. package/src/shared/zip-entry-listing/python-zip-entry-listing.ts +55 -55
  1008. package/src/shared/zip-entry-listing/read-zip-symlink-target.ts +23 -23
  1009. package/src/shared/zip-entry-listing/tar-zip-entry-listing.ts +93 -93
  1010. package/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts +72 -72
  1011. package/src/shared/zip-entry-listing.ts +13 -13
  1012. package/src/shared/zip-extractor.ts +118 -118
  1013. package/src/skills/index.ts +56 -56
  1014. package/src/testing/module-mock-lifecycle.ts +143 -143
  1015. package/src/tools/AGENTS.md +108 -108
  1016. package/src/tools/ast-grep/cli-binary-path-resolution.ts +60 -60
  1017. package/src/tools/ast-grep/cli.ts +177 -177
  1018. package/src/tools/ast-grep/constants.ts +5 -5
  1019. package/src/tools/ast-grep/downloader.ts +119 -119
  1020. package/src/tools/ast-grep/environment-check.ts +89 -89
  1021. package/src/tools/ast-grep/index.ts +5 -5
  1022. package/src/tools/ast-grep/language-support.ts +63 -63
  1023. package/src/tools/ast-grep/process-output-timeout.ts +28 -28
  1024. package/src/tools/ast-grep/result-formatter.ts +102 -102
  1025. package/src/tools/ast-grep/sg-cli-path.ts +102 -102
  1026. package/src/tools/ast-grep/sg-compact-json-output.ts +54 -54
  1027. package/src/tools/ast-grep/tools.ts +117 -117
  1028. package/src/tools/ast-grep/types.ts +61 -61
  1029. package/src/tools/background-task/AGENTS.md +53 -53
  1030. package/src/tools/background-task/clients.ts +32 -32
  1031. package/src/tools/background-task/constants.ts +9 -9
  1032. package/src/tools/background-task/create-background-cancel.ts +115 -115
  1033. package/src/tools/background-task/create-background-output.ts +159 -159
  1034. package/src/tools/background-task/create-background-task.ts +126 -126
  1035. package/src/tools/background-task/delay.ts +3 -3
  1036. package/src/tools/background-task/full-session-format.ts +148 -148
  1037. package/src/tools/background-task/index.ts +8 -8
  1038. package/src/tools/background-task/message-dir.ts +1 -1
  1039. package/src/tools/background-task/session-messages.ts +22 -22
  1040. package/src/tools/background-task/task-result-format.ts +113 -113
  1041. package/src/tools/background-task/task-status-format.ts +72 -72
  1042. package/src/tools/background-task/time-format.ts +30 -30
  1043. package/src/tools/background-task/tools.ts +11 -11
  1044. package/src/tools/background-task/truncate-text.ts +4 -4
  1045. package/src/tools/background-task/types.ts +72 -72
  1046. package/src/tools/call-omo-agent/AGENTS.md +51 -51
  1047. package/src/tools/call-omo-agent/agent-resolver.ts +64 -64
  1048. package/src/tools/call-omo-agent/background-agent-executor.ts +91 -91
  1049. package/src/tools/call-omo-agent/background-executor.ts +98 -98
  1050. package/src/tools/call-omo-agent/completion-poller.ts +65 -65
  1051. package/src/tools/call-omo-agent/constants.ts +23 -23
  1052. package/src/tools/call-omo-agent/index.ts +3 -3
  1053. package/src/tools/call-omo-agent/message-dir.ts +1 -1
  1054. package/src/tools/call-omo-agent/message-processor.ts +86 -86
  1055. package/src/tools/call-omo-agent/message-storage-directory.ts +1 -1
  1056. package/src/tools/call-omo-agent/session-creator.ts +70 -70
  1057. package/src/tools/call-omo-agent/subagent-session-creator.ts +74 -74
  1058. package/src/tools/call-omo-agent/sync-executor.ts +148 -148
  1059. package/src/tools/call-omo-agent/tool-context-with-metadata.ts +10 -10
  1060. package/src/tools/call-omo-agent/tools.ts +192 -192
  1061. package/src/tools/call-omo-agent/types.ts +34 -34
  1062. package/src/tools/delegate-task/AGENTS.md +58 -58
  1063. package/src/tools/delegate-task/anthropic-categories.ts +62 -62
  1064. package/src/tools/delegate-task/available-models.ts +64 -64
  1065. package/src/tools/delegate-task/background-continuation.ts +68 -68
  1066. package/src/tools/delegate-task/background-task.ts +165 -165
  1067. package/src/tools/delegate-task/builtin-categories.ts +33 -33
  1068. package/src/tools/delegate-task/builtin-category-definition.ts +8 -8
  1069. package/src/tools/delegate-task/cancel-unstable-agent-task.ts +19 -19
  1070. package/src/tools/delegate-task/categories.ts +77 -77
  1071. package/src/tools/delegate-task/category-resolver.ts +310 -310
  1072. package/src/tools/delegate-task/constants.ts +351 -351
  1073. package/src/tools/delegate-task/delegated-model-config.ts +20 -20
  1074. package/src/tools/delegate-task/error-formatting.ts +51 -51
  1075. package/src/tools/delegate-task/executor-types.ts +39 -39
  1076. package/src/tools/delegate-task/executor.ts +16 -16
  1077. package/src/tools/delegate-task/fallback-entry-resolution.ts +27 -27
  1078. package/src/tools/delegate-task/fallback-entry-settings.ts +20 -20
  1079. package/src/tools/delegate-task/google-categories.ts +130 -130
  1080. package/src/tools/delegate-task/index.ts +4 -4
  1081. package/src/tools/delegate-task/kimi-categories.ts +40 -40
  1082. package/src/tools/delegate-task/model-selection.ts +201 -201
  1083. package/src/tools/delegate-task/model-string-parser.ts +63 -63
  1084. package/src/tools/delegate-task/openai-categories.ts +128 -128
  1085. package/src/tools/delegate-task/parent-context-resolver.ts +47 -47
  1086. package/src/tools/delegate-task/prompt-builder.ts +107 -107
  1087. package/src/tools/delegate-task/resolve-call-id.ts +5 -5
  1088. package/src/tools/delegate-task/skill-resolver.ts +22 -22
  1089. package/src/tools/delegate-task/sub-agent.ts +70 -70
  1090. package/src/tools/delegate-task/subagent-discovery.ts +152 -152
  1091. package/src/tools/delegate-task/subagent-resolver.ts +225 -225
  1092. package/src/tools/delegate-task/sync-continuation-deps.ts +9 -9
  1093. package/src/tools/delegate-task/sync-continuation.ts +149 -149
  1094. package/src/tools/delegate-task/sync-prompt-sender.ts +137 -137
  1095. package/src/tools/delegate-task/sync-result-fetcher.ts +60 -60
  1096. package/src/tools/delegate-task/sync-session-creator.ts +29 -29
  1097. package/src/tools/delegate-task/sync-session-poller.ts +188 -188
  1098. package/src/tools/delegate-task/sync-task-deps.ts +13 -13
  1099. package/src/tools/delegate-task/sync-task-fallback.ts +68 -68
  1100. package/src/tools/delegate-task/sync-task.ts +243 -243
  1101. package/src/tools/delegate-task/time-formatter.ts +13 -13
  1102. package/src/tools/delegate-task/timing.ts +46 -46
  1103. package/src/tools/delegate-task/token-limiter.ts +123 -123
  1104. package/src/tools/delegate-task/tools.ts +259 -259
  1105. package/src/tools/delegate-task/types.ts +89 -89
  1106. package/src/tools/delegate-task/unstable-agent-task.ts +243 -243
  1107. package/src/tools/glob/cli.ts +206 -206
  1108. package/src/tools/glob/constants.ts +12 -12
  1109. package/src/tools/glob/index.ts +1 -1
  1110. package/src/tools/glob/result-formatter.ts +26 -26
  1111. package/src/tools/glob/tools.ts +49 -49
  1112. package/src/tools/glob/types.ts +23 -23
  1113. package/src/tools/grep/cli.ts +279 -279
  1114. package/src/tools/grep/constants.ts +141 -141
  1115. package/src/tools/grep/downloader.ts +128 -128
  1116. package/src/tools/grep/index.ts +1 -1
  1117. package/src/tools/grep/result-formatter.ts +60 -60
  1118. package/src/tools/grep/tools.ts +75 -75
  1119. package/src/tools/grep/types.ts +42 -42
  1120. package/src/tools/hashline-edit/AGENTS.md +92 -92
  1121. package/src/tools/hashline-edit/autocorrect-replacement-lines.ts +179 -179
  1122. package/src/tools/hashline-edit/constants.ts +10 -10
  1123. package/src/tools/hashline-edit/diff-utils.ts +53 -53
  1124. package/src/tools/hashline-edit/edit-deduplication.ts +43 -43
  1125. package/src/tools/hashline-edit/edit-operation-primitives.ts +126 -126
  1126. package/src/tools/hashline-edit/edit-operations.ts +103 -103
  1127. package/src/tools/hashline-edit/edit-ordering.ts +56 -56
  1128. package/src/tools/hashline-edit/edit-text-normalization.ts +111 -111
  1129. package/src/tools/hashline-edit/file-text-canonicalization.ts +44 -44
  1130. package/src/tools/hashline-edit/formatter-trigger.ts +132 -132
  1131. package/src/tools/hashline-edit/hash-computation.ts +154 -154
  1132. package/src/tools/hashline-edit/hashline-chunk-formatter.ts +52 -52
  1133. package/src/tools/hashline-edit/hashline-edit-diff.ts +31 -31
  1134. package/src/tools/hashline-edit/hashline-edit-executor.ts +197 -197
  1135. package/src/tools/hashline-edit/index.ts +20 -20
  1136. package/src/tools/hashline-edit/normalize-edits.ts +95 -95
  1137. package/src/tools/hashline-edit/tool-description.ts +95 -95
  1138. package/src/tools/hashline-edit/tools.ts +42 -42
  1139. package/src/tools/hashline-edit/types.ts +20 -20
  1140. package/src/tools/hashline-edit/validation.ts +181 -181
  1141. package/src/tools/index.ts +64 -64
  1142. package/src/tools/interactive-bash/constants.ts +18 -18
  1143. package/src/tools/interactive-bash/index.ts +4 -4
  1144. package/src/tools/interactive-bash/tmux-path-resolver.ts +71 -71
  1145. package/src/tools/interactive-bash/tools.ts +136 -136
  1146. package/src/tools/look-at/assistant-message-extractor.ts +67 -67
  1147. package/src/tools/look-at/constants.ts +3 -3
  1148. package/src/tools/look-at/image-converter.ts +164 -164
  1149. package/src/tools/look-at/index.ts +3 -3
  1150. package/src/tools/look-at/look-at-arguments.ts +34 -34
  1151. package/src/tools/look-at/mime-type-inference.ts +94 -94
  1152. package/src/tools/look-at/multimodal-agent-metadata.ts +166 -166
  1153. package/src/tools/look-at/multimodal-fallback-chain.ts +66 -66
  1154. package/src/tools/look-at/session-poller.ts +42 -42
  1155. package/src/tools/look-at/tools.ts +245 -245
  1156. package/src/tools/look-at/types.ts +5 -5
  1157. package/src/tools/lsp/AGENTS.md +70 -70
  1158. package/src/tools/lsp/client.ts +3 -3
  1159. package/src/tools/lsp/config.ts +3 -3
  1160. package/src/tools/lsp/constants.ts +7 -7
  1161. package/src/tools/lsp/diagnostics-tool.ts +75 -75
  1162. package/src/tools/lsp/directory-diagnostics.ts +163 -163
  1163. package/src/tools/lsp/find-references-tool.ts +43 -43
  1164. package/src/tools/lsp/goto-definition-tool.ts +42 -42
  1165. package/src/tools/lsp/index.ts +9 -9
  1166. package/src/tools/lsp/infer-extension.ts +65 -65
  1167. package/src/tools/lsp/language-config.ts +5 -5
  1168. package/src/tools/lsp/language-mappings.ts +171 -171
  1169. package/src/tools/lsp/lsp-client-connection.ts +66 -66
  1170. package/src/tools/lsp/lsp-client-transport.ts +210 -210
  1171. package/src/tools/lsp/lsp-client-wrapper.ts +116 -116
  1172. package/src/tools/lsp/lsp-client.ts +129 -129
  1173. package/src/tools/lsp/lsp-formatters.ts +193 -193
  1174. package/src/tools/lsp/lsp-manager-process-cleanup.ts +83 -83
  1175. package/src/tools/lsp/lsp-manager-temp-directory-cleanup.ts +29 -29
  1176. package/src/tools/lsp/lsp-process.ts +158 -158
  1177. package/src/tools/lsp/lsp-server.ts +217 -217
  1178. package/src/tools/lsp/rename-tools.ts +53 -53
  1179. package/src/tools/lsp/server-config-loader.ts +116 -116
  1180. package/src/tools/lsp/server-definitions.ts +91 -91
  1181. package/src/tools/lsp/server-installation.ts +58 -58
  1182. package/src/tools/lsp/server-path-bases.ts +16 -16
  1183. package/src/tools/lsp/server-resolution.ts +109 -109
  1184. package/src/tools/lsp/symbols-tool.ts +76 -76
  1185. package/src/tools/lsp/tools.ts +5 -5
  1186. package/src/tools/lsp/types.ts +124 -124
  1187. package/src/tools/lsp/workspace-edit.ts +121 -121
  1188. package/src/tools/session-manager/constants.ts +93 -93
  1189. package/src/tools/session-manager/file-storage.ts +203 -203
  1190. package/src/tools/session-manager/index.ts +3 -3
  1191. package/src/tools/session-manager/sdk-storage.ts +135 -135
  1192. package/src/tools/session-manager/sdk-unavailable.ts +43 -43
  1193. package/src/tools/session-manager/session-formatter.ts +199 -199
  1194. package/src/tools/session-manager/storage.ts +161 -161
  1195. package/src/tools/session-manager/tools.ts +197 -197
  1196. package/src/tools/session-manager/types.ts +99 -99
  1197. package/src/tools/shared/semaphore.ts +32 -32
  1198. package/src/tools/skill/constants.ts +14 -14
  1199. package/src/tools/skill/description-formatter.ts +61 -61
  1200. package/src/tools/skill/index.ts +3 -3
  1201. package/src/tools/skill/mcp-capability-formatter.ts +97 -97
  1202. package/src/tools/skill/native-skills.ts +62 -62
  1203. package/src/tools/skill/scope-priority.ts +17 -17
  1204. package/src/tools/skill/skill-body.ts +26 -26
  1205. package/src/tools/skill/skill-matcher.ts +40 -40
  1206. package/src/tools/skill/tools.ts +196 -196
  1207. package/src/tools/skill/types.ts +48 -48
  1208. package/src/tools/skill-mcp/constants.ts +9 -9
  1209. package/src/tools/skill-mcp/index.ts +3 -3
  1210. package/src/tools/skill-mcp/tools.ts +204 -204
  1211. package/src/tools/skill-mcp/types.ts +8 -8
  1212. package/src/tools/slashcommand/command-discovery.ts +161 -161
  1213. package/src/tools/slashcommand/command-output-formatter.ts +75 -75
  1214. package/src/tools/slashcommand/index.ts +2 -2
  1215. package/src/tools/slashcommand/types.ts +21 -21
  1216. package/src/tools/task/index.ts +7 -7
  1217. package/src/tools/task/task-create.ts +113 -113
  1218. package/src/tools/task/task-get.ts +47 -47
  1219. package/src/tools/task/task-list.ts +79 -79
  1220. package/src/tools/task/task-update.ts +152 -152
  1221. package/src/tools/task/todo-sync.ts +205 -205
  1222. package/src/tools/task/types.ts +77 -77
  1223. package/scripts/check_docs.ts +0 -129
  1224. package/scripts/doctor.ts +0 -522
  1225. package/scripts/measure_prompts.ts +0 -193
  1226. package/scripts/test_routing.ts +0 -294
@@ -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.