@selesai/code 0.9.10 → 0.9.11

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 (302) hide show
  1. package/CHANGELOG.md +260 -255
  2. package/dist/cli/args.js +13 -2
  3. package/dist/cli/args.test.js +8 -0
  4. package/dist/cli/credential-print.js +4 -4
  5. package/dist/cli.js +0 -0
  6. package/dist/core/agent-session-auto-handoff.test.js +24 -1
  7. package/dist/core/agent-session.d.ts +11 -4
  8. package/dist/core/agent-session.js +96 -35
  9. package/dist/core/compaction/branch-summarization.js +30 -30
  10. package/dist/core/compaction/compaction.js +81 -81
  11. package/dist/core/compaction/utils.js +2 -2
  12. package/dist/core/defaults.d.ts +1 -0
  13. package/dist/core/defaults.js +9 -0
  14. package/dist/core/export-html/template.css +1066 -1066
  15. package/dist/core/export-html/template.html +55 -55
  16. package/dist/core/export-html/template.js +1864 -1864
  17. package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
  18. package/dist/core/export-html/vendor/marked.min.js +78 -78
  19. package/dist/core/extensions/loader.js +108 -35
  20. package/dist/core/extensions/loader.test.d.ts +1 -0
  21. package/dist/core/extensions/loader.test.js +21 -0
  22. package/dist/core/extensions/types.d.ts +12 -2
  23. package/dist/core/keybindings.d.ts +2 -2
  24. package/dist/core/messages.js +7 -7
  25. package/dist/core/model-resolver.d.ts +1 -0
  26. package/dist/core/model-resolver.js +10 -4
  27. package/dist/core/package-manager.js +4 -4
  28. package/dist/core/sdk.d.ts +5 -5
  29. package/dist/core/sdk.js +16 -4
  30. package/dist/core/settings-manager.d.ts +6 -0
  31. package/dist/core/settings-manager.js +22 -0
  32. package/dist/core/tools/bash.d.ts +18 -1
  33. package/dist/core/tools/bash.js +41 -23
  34. package/dist/core/tools/index.d.ts +4 -1
  35. package/dist/core/tools/index.js +9 -1
  36. package/dist/core/tools/powershell.d.ts +15 -0
  37. package/dist/core/tools/powershell.js +38 -0
  38. package/dist/core/tools/powershell.test.d.ts +1 -0
  39. package/dist/core/tools/powershell.test.js +20 -0
  40. package/dist/extensions/context-compaction-reminder.test.ts +82 -82
  41. package/dist/extensions/context-compaction-reminder.ts +28 -28
  42. package/dist/extensions/pi-intercom/LICENSE +21 -21
  43. package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
  44. package/dist/extensions/pi-intercom/broker/extension.test.ts +387 -387
  45. package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
  46. package/dist/extensions/pi-intercom/broker/paths.test.ts +153 -153
  47. package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
  48. package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
  49. package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
  50. package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
  51. package/dist/extensions/pi-intercom/cwd.ts +31 -31
  52. package/dist/extensions/pi-intercom/extension-api.ts +44 -44
  53. package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
  54. package/dist/extensions/pi-intercom/format-context.ts +32 -32
  55. package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
  56. package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
  57. package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
  58. package/dist/extensions/pi-powerline-footer/bash-mode/shell-session.ts +286 -286
  59. package/dist/extensions/pi-powerline-footer/bash-mode/transcript.ts +108 -108
  60. package/dist/extensions/pi-powerline-footer/separators.ts +57 -57
  61. package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +47 -47
  62. package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +39 -39
  63. package/dist/extensions/pi-powerline-footer/theme.example.json +24 -24
  64. package/dist/extensions/pi-powerline-footer/theme.json +12 -12
  65. package/dist/extensions/pi-powerline-footer/tps.ts +345 -345
  66. package/dist/extensions/pi-rewind-hook/README.md +245 -245
  67. package/dist/extensions/pi-rewind-hook/index.ts +1445 -1445
  68. package/dist/extensions/pi-rewind-hook/package.json +29 -29
  69. package/dist/extensions/pi-subagents/install.mjs +0 -0
  70. package/dist/extensions/pi-web-agent/package.json +31 -31
  71. package/dist/extensions/pi-web-agent/src/backends/config.ts +205 -205
  72. package/dist/extensions/pi-web-agent/src/backends/doctor.ts +136 -136
  73. package/dist/extensions/pi-web-agent/src/backends/factory.ts +152 -152
  74. package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
  75. package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
  76. package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
  77. package/dist/extensions/pi-web-agent/src/commands/web-agent-config.ts +946 -946
  78. package/dist/extensions/pi-web-agent/src/extension.ts +126 -126
  79. package/dist/extensions/pi-web-agent/src/extract/readability.ts +118 -118
  80. package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
  81. package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
  82. package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
  83. package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
  84. package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
  85. package/dist/extensions/pi-web-agent/src/orchestration/candidate-selector.ts +50 -50
  86. package/dist/extensions/pi-web-agent/src/orchestration/direct-url.ts +52 -52
  87. package/dist/extensions/pi-web-agent/src/orchestration/evidence-quality.ts +105 -105
  88. package/dist/extensions/pi-web-agent/src/orchestration/evidence-ranker.ts +45 -45
  89. package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
  90. package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
  91. package/dist/extensions/pi-web-agent/src/orchestration/research-orchestrator.ts +376 -376
  92. package/dist/extensions/pi-web-agent/src/orchestration/research-types.ts +64 -64
  93. package/dist/extensions/pi-web-agent/src/orchestration/research-worker.ts +181 -181
  94. package/dist/extensions/pi-web-agent/src/orchestration/source-profile.ts +101 -101
  95. package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
  96. package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
  97. package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
  98. package/dist/extensions/pi-web-agent/src/presentation/explore-presentation.ts +61 -61
  99. package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
  100. package/dist/extensions/pi-web-agent/src/presentation/search-presentation.ts +41 -41
  101. package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
  102. package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
  103. package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
  104. package/dist/extensions/pi-web-agent/src/search/duckduckgo.ts +72 -72
  105. package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
  106. package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
  107. package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
  108. package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
  109. package/dist/extensions/pi-web-agent/src/tools/web-search.ts +157 -157
  110. package/dist/extensions/pi-web-agent/src/types.ts +88 -88
  111. package/dist/extensions/ponytail/package.json +8 -8
  112. package/dist/extensions/question/batch.ts +103 -103
  113. package/dist/extensions/question/constants.ts +30 -30
  114. package/dist/extensions/question/helpers.ts +58 -58
  115. package/dist/extensions/question/navigation.ts +14 -14
  116. package/dist/extensions/question/package.json +19 -19
  117. package/dist/extensions/question/schemas.ts +43 -43
  118. package/dist/extensions/question/selection-mode.ts +46 -46
  119. package/dist/extensions/question/shortcuts.ts +44 -44
  120. package/dist/extensions/question/types.ts +132 -132
  121. package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
  122. package/dist/extensions/test-resolve-hook.mjs +6 -6
  123. package/dist/extensions/web-agent-onboarding.ts +222 -222
  124. package/dist/extensions/workflow/package.json +17 -17
  125. package/dist/package-manager-cli.js +71 -71
  126. package/dist/rpc-entry.js +0 -0
  127. package/dist/skills/agent-browser/SKILL.md +52 -52
  128. package/dist/skills/batch-grill-me/SKILL.md +19 -19
  129. package/dist/skills/grill-me/SKILL.md +10 -10
  130. package/dist/skills/handoff/SKILL.md +16 -16
  131. package/dist/skills/handoff-text/SKILL.md +14 -14
  132. package/dist/skills/implanger/SKILL.md +69 -69
  133. package/dist/skills/improve-codebase/REFERENCE.md +78 -78
  134. package/dist/skills/improve-codebase/SKILL.md +178 -178
  135. package/dist/skills/planger/SKILL.md +166 -166
  136. package/dist/skills/ponytail/SKILL.md +116 -116
  137. package/dist/skills/ponytail-audit/SKILL.md +42 -42
  138. package/dist/skills/ponytail-debt/SKILL.md +45 -45
  139. package/dist/skills/ponytail-gain/SKILL.md +51 -51
  140. package/dist/skills/ponytail-help/SKILL.md +70 -70
  141. package/dist/skills/ponytail-review/SKILL.md +58 -58
  142. package/dist/skills/selesai-handoff/SKILL.md +20 -20
  143. package/dist/skills/workflow-creation/SKILL.md +73 -73
  144. package/dist/themes/powerline-footer/theme.json +33 -33
  145. package/dist/utils/shell.d.ts +3 -0
  146. package/dist/utils/shell.js +17 -5
  147. package/docs/compaction.md +396 -396
  148. package/docs/containerization.md +111 -111
  149. package/docs/development.md +71 -71
  150. package/docs/docs.json +164 -164
  151. package/docs/environment-variables.md +86 -86
  152. package/docs/index.md +83 -83
  153. package/docs/json.md +82 -82
  154. package/docs/models.md +502 -502
  155. package/docs/packages.md +227 -227
  156. package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
  157. package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
  158. package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
  159. package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
  160. package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
  161. package/docs/prompt-templates.md +95 -95
  162. package/docs/providers.md +293 -293
  163. package/docs/sdk.md +1144 -1143
  164. package/docs/security.md +59 -59
  165. package/docs/session-format.md +414 -414
  166. package/docs/sessions.md +145 -145
  167. package/docs/shared-host-extensions.md +109 -109
  168. package/docs/shell-aliases.md +13 -13
  169. package/docs/skills.md +231 -231
  170. package/docs/terminal-setup.md +142 -142
  171. package/docs/termux.md +127 -127
  172. package/docs/themes.md +295 -295
  173. package/docs/tmux.md +63 -63
  174. package/docs/tui.md +927 -927
  175. package/docs/windows.md +17 -17
  176. package/examples/README.md +25 -25
  177. package/examples/extensions/README.md +211 -211
  178. package/examples/extensions/auto-commit-on-exit.ts +49 -49
  179. package/examples/extensions/bash-spawn-hook.ts +30 -30
  180. package/examples/extensions/bookmark.ts +50 -50
  181. package/examples/extensions/border-status-editor.ts +150 -150
  182. package/examples/extensions/built-in-tool-renderer.ts +249 -249
  183. package/examples/extensions/claude-rules.ts +86 -86
  184. package/examples/extensions/commands.ts +72 -72
  185. package/examples/extensions/confirm-destructive.ts +59 -59
  186. package/examples/extensions/custom-compaction.ts +130 -130
  187. package/examples/extensions/custom-footer.ts +64 -64
  188. package/examples/extensions/custom-header.ts +73 -73
  189. package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
  190. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
  191. package/examples/extensions/custom-provider-anthropic/package.json +19 -19
  192. package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
  193. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
  194. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
  195. package/examples/extensions/dirty-repo-guard.ts +56 -56
  196. package/examples/extensions/doom-overlay/README.md +46 -46
  197. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
  198. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  199. package/examples/extensions/doom-overlay/doom/build.sh +152 -152
  200. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
  201. package/examples/extensions/doom-overlay/doom-component.ts +132 -132
  202. package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
  203. package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
  204. package/examples/extensions/doom-overlay/index.ts +74 -74
  205. package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
  206. package/examples/extensions/dynamic-resources/SKILL.md +8 -8
  207. package/examples/extensions/dynamic-resources/dynamic.json +79 -79
  208. package/examples/extensions/dynamic-resources/dynamic.md +5 -5
  209. package/examples/extensions/dynamic-resources/index.ts +15 -15
  210. package/examples/extensions/dynamic-tools.ts +74 -74
  211. package/examples/extensions/event-bus.ts +43 -43
  212. package/examples/extensions/file-trigger.ts +41 -41
  213. package/examples/extensions/git-checkpoint.ts +53 -53
  214. package/examples/extensions/git-merge-and-resolve.ts +115 -115
  215. package/examples/extensions/github-issue-autocomplete.ts +185 -185
  216. package/examples/extensions/gondolin/index.ts +531 -531
  217. package/examples/extensions/gondolin/package-lock.json +185 -185
  218. package/examples/extensions/gondolin/package.json +19 -19
  219. package/examples/extensions/handoff.ts +199 -199
  220. package/examples/extensions/hello.ts +26 -26
  221. package/examples/extensions/hidden-thinking-label.ts +53 -53
  222. package/examples/extensions/inline-bash.ts +94 -94
  223. package/examples/extensions/input-transform-streaming.ts +39 -39
  224. package/examples/extensions/input-transform.ts +43 -43
  225. package/examples/extensions/interactive-shell.ts +196 -196
  226. package/examples/extensions/mac-system-theme.ts +47 -47
  227. package/examples/extensions/message-renderer.ts +59 -59
  228. package/examples/extensions/minimal-mode.ts +426 -426
  229. package/examples/extensions/modal-editor.ts +85 -85
  230. package/examples/extensions/model-status.ts +31 -31
  231. package/examples/extensions/notify.ts +55 -55
  232. package/examples/extensions/overlay-qa-tests.ts +1450 -1450
  233. package/examples/extensions/overlay-test.ts +153 -153
  234. package/examples/extensions/permission-gate.ts +34 -34
  235. package/examples/extensions/pirate.ts +47 -47
  236. package/examples/extensions/plan-mode/README.md +66 -66
  237. package/examples/extensions/plan-mode/index.ts +390 -390
  238. package/examples/extensions/plan-mode/utils.ts +168 -168
  239. package/examples/extensions/preset.ts +436 -436
  240. package/examples/extensions/project-trust.ts +64 -64
  241. package/examples/extensions/prompt-customizer.ts +97 -97
  242. package/examples/extensions/protected-paths.ts +30 -30
  243. package/examples/extensions/provider-payload.ts +18 -18
  244. package/examples/extensions/qna.ts +122 -122
  245. package/examples/extensions/question.ts +285 -285
  246. package/examples/extensions/questionnaire.ts +448 -448
  247. package/examples/extensions/rainbow-editor.ts +88 -88
  248. package/examples/extensions/reload-runtime.ts +37 -37
  249. package/examples/extensions/rpc-demo.ts +118 -118
  250. package/examples/extensions/sandbox/index.ts +321 -321
  251. package/examples/extensions/sandbox/package-lock.json +92 -92
  252. package/examples/extensions/sandbox/package.json +19 -19
  253. package/examples/extensions/send-user-message.ts +97 -97
  254. package/examples/extensions/session-name.ts +27 -27
  255. package/examples/extensions/shutdown-command.ts +63 -63
  256. package/examples/extensions/snake.ts +343 -343
  257. package/examples/extensions/space-invaders.ts +560 -560
  258. package/examples/extensions/ssh.ts +220 -220
  259. package/examples/extensions/status-line.ts +32 -32
  260. package/examples/extensions/structured-output.ts +65 -65
  261. package/examples/extensions/subagent/README.md +175 -175
  262. package/examples/extensions/subagent/agents/planner.md +37 -37
  263. package/examples/extensions/subagent/agents/reviewer.md +35 -35
  264. package/examples/extensions/subagent/agents/scout.md +50 -50
  265. package/examples/extensions/subagent/agents/worker.md +24 -24
  266. package/examples/extensions/subagent/agents.ts +126 -126
  267. package/examples/extensions/subagent/index.ts +1015 -1015
  268. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
  269. package/examples/extensions/subagent/prompts/implement.md +10 -10
  270. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
  271. package/examples/extensions/summarize.ts +209 -209
  272. package/examples/extensions/system-prompt-header.ts +17 -17
  273. package/examples/extensions/tic-tac-toe.ts +1008 -1008
  274. package/examples/extensions/timed-confirm.ts +70 -70
  275. package/examples/extensions/titlebar-spinner.ts +58 -58
  276. package/examples/extensions/todo.ts +297 -297
  277. package/examples/extensions/tool-override.ts +144 -144
  278. package/examples/extensions/tools.ts +146 -146
  279. package/examples/extensions/trigger-compact.ts +50 -50
  280. package/examples/extensions/truncated-tool.ts +195 -195
  281. package/examples/extensions/widget-placement.ts +9 -9
  282. package/examples/extensions/with-deps/index.ts +32 -32
  283. package/examples/extensions/with-deps/package-lock.json +31 -31
  284. package/examples/extensions/with-deps/package.json +22 -22
  285. package/examples/extensions/working-indicator.ts +123 -123
  286. package/examples/extensions/working-message-test.ts +25 -25
  287. package/examples/rpc-extension-ui.ts +632 -632
  288. package/examples/sdk/01-minimal.ts +26 -26
  289. package/examples/sdk/02-custom-model.ts +53 -53
  290. package/examples/sdk/03-custom-prompt.ts +75 -75
  291. package/examples/sdk/04-skills.ts +55 -55
  292. package/examples/sdk/05-tools.ts +48 -48
  293. package/examples/sdk/06-extensions.ts +99 -99
  294. package/examples/sdk/07-context-files.ts +47 -47
  295. package/examples/sdk/08-prompt-templates.ts +51 -51
  296. package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
  297. package/examples/sdk/10-settings.ts +53 -53
  298. package/examples/sdk/11-sessions.ts +52 -52
  299. package/examples/sdk/12-full-control.ts +79 -79
  300. package/examples/sdk/13-session-runtime.ts +67 -67
  301. package/examples/sdk/README.md +144 -144
  302. package/package.json +4 -4
@@ -1,179 +1,179 @@
1
- ---
2
- name: improve-codebase
3
- description: improve codebase quality
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Improve Codebase Architecture
8
-
9
- Explore a codebase (or provided context) like an AI would. Surface architectural friction, identify deepening opportunities, and propose refactors as GitHub issue RFCs.
10
-
11
- The input is already provided inline. Do NOT describe or restate it — use it directly.
12
-
13
- ---
14
-
15
- ## Core Principle
16
-
17
- A **deep module** (John Ousterhout, "A Philosophy of Software Design") has a small interface hiding a large implementation.
18
-
19
- Your goal:
20
- - Reduce cognitive load
21
- - Collapse shallow abstractions
22
- - Move complexity behind stable boundaries
23
- - Improve testability at module boundaries
24
-
25
- ---
26
-
27
- ## Process
28
-
29
- ### 1. Explore the context
30
-
31
- Call the subagent tool with `{ agent: "explorer", task: "..." }` (do not pass a model) when possible.
32
-
33
- If the context is partial:
34
- - Infer surrounding architecture cautiously
35
- - Focus on local friction signals
36
- - Avoid blocking on missing information
37
-
38
- Explore organically. Do NOT follow rigid heuristics.
39
-
40
- Look for friction:
41
-
42
- - Does understanding one concept require jumping across multiple files or layers?
43
- - Are modules shallow (interface ≈ implementation complexity)?
44
- - Are “pure functions” extracted for testability, but orchestration is fragile?
45
- - Are modules tightly coupled through shared types or call sequences?
46
- - Are there hidden integration risks between layers?
47
- - What is hard or impossible to test from the outside?
48
-
49
- The friction you encounter IS the signal.
50
-
51
- ### 2. Identify candidate(s) and frame the problem
52
-
53
- Analyze the context and identify deepening opportunities.
54
-
55
- If the input clearly implies a specific target (file, module, diff, or instruction):
56
- - Select the most relevant candidate automatically
57
- - Do NOT present multiple options
58
- - Proceed directly to framing the problem space below
59
-
60
- If the input is ambiguous or spans multiple concerns:
61
- - Present a numbered list of candidates
62
-
63
- Each candidate must include:
64
-
65
- - **Cluster**
66
- Modules / files / concepts involved
67
-
68
- - **Why they're coupled**
69
- Shared types, execution flow, ownership of a concept
70
-
71
- - **Dependency category**
72
- Classify using `REFERENCE.md`:
73
- - In-process
74
- - Local-substitutable
75
- - Ports & adapters
76
- - True external
77
-
78
- - **Test impact**
79
- - Which tests become obsolete
80
- - What boundary tests would replace them
81
-
82
- Then ask:
83
- "Which of these would you like to explore?"
84
- Wait for user input before continuing.
85
-
86
- ---
87
-
88
- ### Problem framing (execute immediately if a candidate is selected or inferred)
89
-
90
- Explain the selected candidate clearly:
91
-
92
- - Constraints a new interface must satisfy
93
- - Dependencies it must handle
94
- - What complexity needs to be hidden
95
-
96
- Include a small illustrative code sketch to make constraints concrete.
97
- This is NOT a proposal.
98
-
99
- After writing this, immediately proceed to Step 5: Design multiple interfaces.
100
-
101
- ### 5. Design multiple interfaces
102
-
103
- Spawn 3+ sub-agents in parallel using the subagent tool (`tasks: [...]`).
104
-
105
- Each sub-agent gets:
106
- - A focused technical brief derived from the provided context
107
- - Clear coupling + dependency context
108
- - A distinct design constraint
109
-
110
- Required variants:
111
-
112
- - Agent 1: Minimize interface (1–3 entry points max)
113
- - Agent 2: Maximize flexibility / extensibility
114
- - Agent 3: Optimize for the most common caller
115
- - Agent 4 (if relevant): Ports & adapters oriented design
116
- - ...
117
-
118
- ---
119
-
120
- ### Each sub-agent must output:
121
-
122
- 1. Interface signature (types, methods, params)
123
- 2. Usage example
124
- 3. Hidden complexity (what gets absorbed internally)
125
- 4. Dependency strategy (per `REFERENCE.md`)
126
- 5. Trade-offs
127
-
128
- ---
129
-
130
- ### Synthesis
131
-
132
- After all designs:
133
-
134
- - Compare approaches in prose
135
- - Highlight meaningful differences (not superficial ones)
136
- - Identify where each design wins/fails
137
-
138
- Then give a strong recommendation:
139
- - Pick the best design OR
140
- - Propose a hybrid
141
-
142
- Be opinionated.
143
-
144
- ---
145
-
146
- ### 6. User picks an interface (or accepts recommendation)
147
-
148
- ---
149
-
150
- ### 7. Create Branch
151
-
152
- Create a new branch for implementation.
153
-
154
- Branch name should reflect the domain concept being deepened.
155
-
156
- Examples:
157
- - deepen-payment-orchestration
158
- - deepen-map-rendering-pipeline
159
-
160
- ---
161
-
162
- ## Behavior Rules
163
-
164
- - Do NOT restate or summarize the provided input
165
- - Do NOT overfit to file structure — think in conceptual modules
166
- - Do NOT suggest incremental refactors — prefer boundary redefinition
167
- - Do NOT preserve bad abstractions — collapse aggressively
168
- - Prefer fewer, deeper modules over many shallow ones
169
- - Tests must move to the boundary, not remain internal
170
-
171
- ---
172
-
173
- ## Handling Incomplete Context
174
-
175
- - Make reasonable assumptions
176
- - State them explicitly
177
- - Continue without blocking
178
-
1
+ ---
2
+ name: improve-codebase
3
+ description: improve codebase quality
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Improve Codebase Architecture
8
+
9
+ Explore a codebase (or provided context) like an AI would. Surface architectural friction, identify deepening opportunities, and propose refactors as GitHub issue RFCs.
10
+
11
+ The input is already provided inline. Do NOT describe or restate it — use it directly.
12
+
13
+ ---
14
+
15
+ ## Core Principle
16
+
17
+ A **deep module** (John Ousterhout, "A Philosophy of Software Design") has a small interface hiding a large implementation.
18
+
19
+ Your goal:
20
+ - Reduce cognitive load
21
+ - Collapse shallow abstractions
22
+ - Move complexity behind stable boundaries
23
+ - Improve testability at module boundaries
24
+
25
+ ---
26
+
27
+ ## Process
28
+
29
+ ### 1. Explore the context
30
+
31
+ Call the subagent tool with `{ agent: "explorer", task: "..." }` (do not pass a model) when possible.
32
+
33
+ If the context is partial:
34
+ - Infer surrounding architecture cautiously
35
+ - Focus on local friction signals
36
+ - Avoid blocking on missing information
37
+
38
+ Explore organically. Do NOT follow rigid heuristics.
39
+
40
+ Look for friction:
41
+
42
+ - Does understanding one concept require jumping across multiple files or layers?
43
+ - Are modules shallow (interface ≈ implementation complexity)?
44
+ - Are “pure functions” extracted for testability, but orchestration is fragile?
45
+ - Are modules tightly coupled through shared types or call sequences?
46
+ - Are there hidden integration risks between layers?
47
+ - What is hard or impossible to test from the outside?
48
+
49
+ The friction you encounter IS the signal.
50
+
51
+ ### 2. Identify candidate(s) and frame the problem
52
+
53
+ Analyze the context and identify deepening opportunities.
54
+
55
+ If the input clearly implies a specific target (file, module, diff, or instruction):
56
+ - Select the most relevant candidate automatically
57
+ - Do NOT present multiple options
58
+ - Proceed directly to framing the problem space below
59
+
60
+ If the input is ambiguous or spans multiple concerns:
61
+ - Present a numbered list of candidates
62
+
63
+ Each candidate must include:
64
+
65
+ - **Cluster**
66
+ Modules / files / concepts involved
67
+
68
+ - **Why they're coupled**
69
+ Shared types, execution flow, ownership of a concept
70
+
71
+ - **Dependency category**
72
+ Classify using `REFERENCE.md`:
73
+ - In-process
74
+ - Local-substitutable
75
+ - Ports & adapters
76
+ - True external
77
+
78
+ - **Test impact**
79
+ - Which tests become obsolete
80
+ - What boundary tests would replace them
81
+
82
+ Then ask:
83
+ "Which of these would you like to explore?"
84
+ Wait for user input before continuing.
85
+
86
+ ---
87
+
88
+ ### Problem framing (execute immediately if a candidate is selected or inferred)
89
+
90
+ Explain the selected candidate clearly:
91
+
92
+ - Constraints a new interface must satisfy
93
+ - Dependencies it must handle
94
+ - What complexity needs to be hidden
95
+
96
+ Include a small illustrative code sketch to make constraints concrete.
97
+ This is NOT a proposal.
98
+
99
+ After writing this, immediately proceed to Step 5: Design multiple interfaces.
100
+
101
+ ### 5. Design multiple interfaces
102
+
103
+ Spawn 3+ sub-agents in parallel using the subagent tool (`tasks: [...]`).
104
+
105
+ Each sub-agent gets:
106
+ - A focused technical brief derived from the provided context
107
+ - Clear coupling + dependency context
108
+ - A distinct design constraint
109
+
110
+ Required variants:
111
+
112
+ - Agent 1: Minimize interface (1–3 entry points max)
113
+ - Agent 2: Maximize flexibility / extensibility
114
+ - Agent 3: Optimize for the most common caller
115
+ - Agent 4 (if relevant): Ports & adapters oriented design
116
+ - ...
117
+
118
+ ---
119
+
120
+ ### Each sub-agent must output:
121
+
122
+ 1. Interface signature (types, methods, params)
123
+ 2. Usage example
124
+ 3. Hidden complexity (what gets absorbed internally)
125
+ 4. Dependency strategy (per `REFERENCE.md`)
126
+ 5. Trade-offs
127
+
128
+ ---
129
+
130
+ ### Synthesis
131
+
132
+ After all designs:
133
+
134
+ - Compare approaches in prose
135
+ - Highlight meaningful differences (not superficial ones)
136
+ - Identify where each design wins/fails
137
+
138
+ Then give a strong recommendation:
139
+ - Pick the best design OR
140
+ - Propose a hybrid
141
+
142
+ Be opinionated.
143
+
144
+ ---
145
+
146
+ ### 6. User picks an interface (or accepts recommendation)
147
+
148
+ ---
149
+
150
+ ### 7. Create Branch
151
+
152
+ Create a new branch for implementation.
153
+
154
+ Branch name should reflect the domain concept being deepened.
155
+
156
+ Examples:
157
+ - deepen-payment-orchestration
158
+ - deepen-map-rendering-pipeline
159
+
160
+ ---
161
+
162
+ ## Behavior Rules
163
+
164
+ - Do NOT restate or summarize the provided input
165
+ - Do NOT overfit to file structure — think in conceptual modules
166
+ - Do NOT suggest incremental refactors — prefer boundary redefinition
167
+ - Do NOT preserve bad abstractions — collapse aggressively
168
+ - Prefer fewer, deeper modules over many shallow ones
169
+ - Tests must move to the boundary, not remain internal
170
+
171
+ ---
172
+
173
+ ## Handling Incomplete Context
174
+
175
+ - Make reasonable assumptions
176
+ - State them explicitly
177
+ - Continue without blocking
178
+
179
179
  Do NOT ask for more information unless absolutely necessary.
@@ -1,166 +1,166 @@
1
- ---
2
- name: planger
3
- description: Create decomposed planning for sub agent
4
- argument-hint: "How i provide a good plan for subagent"
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Planning Skill
9
-
10
- ## Goal
11
-
12
- Create implementation plans that can be executed by a small coding model with:
13
-
14
- - Limited context window
15
- - No project knowledge
16
- - No memory of previous conversation
17
- - Weak architectural understanding
18
- - No ability to infer missing steps
19
-
20
- Assume the executor only knows what is written in the plan.
21
-
22
- # Core Principles
23
-
24
- ## Discovery First
25
-
26
- Never assume:
27
-
28
- - File names
29
- - File locations
30
- - Ownership of behavior
31
- - Existing abstractions
32
- - Existing utilities
33
-
34
- If the code has not been inspected, the plan must begin with discovery.
35
- You research the codebase (using explore agent) → clarify with the user (using questions tool) → capture findings and decisions into a comprehensive plan. This iterative approach catches edge cases and non-obvious requirements BEFORE implementation begins.
36
-
37
- ## Simplicity First
38
-
39
- Prefer the smallest maintainable solution that satisfies the requirement.
40
-
41
- Avoid:
42
-
43
- - New abstractions
44
- - New services
45
- - New dependencies
46
- - Large refactors
47
- - Generic frameworks
48
- - Future-proofing for hypothetical requirements
49
-
50
- Choose the lowest-complexity solution that works.
51
-
52
- ## Reuse Before Build
53
-
54
- Before creating anything new (use explorer agent):
55
-
56
- - Search for existing implementations
57
- - Search for existing utilities
58
- - Search for existing patterns
59
- - Search for existing tests
60
-
61
- Reuse existing code when reasonable.
62
-
63
- Do not duplicate behavior unless duplication is clearly preferable.
64
-
65
- ## Scope Discipline
66
-
67
- Only modify code required for the task.
68
-
69
- Allowed:
70
-
71
- - Small cleanup in touched files
72
- - Remove unused imports
73
- - Remove obvious dead code
74
- - Improve nearby naming
75
-
76
- Not allowed:
77
-
78
- - Unrelated refactors
79
- - Architecture changes
80
- - Broad cleanup efforts
81
- - Dependency migrations
82
-
83
- # Task Structure
84
-
85
- Every implementation task must contain:
86
-
87
- ## 1. Discovery
88
-
89
- Describe:
90
-
91
- - What to search for
92
- - Where to search
93
- - How to identify relevant code
94
-
95
- Example:
96
-
97
- Search for:
98
-
99
- - Authorization
100
- - Bearer
101
- - Interceptor
102
- - Refresh token
103
-
104
- Inspect matching files and identify where authentication headers are attached.
105
-
106
- ## 2. Identification
107
-
108
- Describe:
109
-
110
- - Exact file(s) to modify
111
- - Why those files own the behavior
112
- - Why other files should not be modified
113
-
114
- ## 3. Change
115
-
116
- Describe:
117
-
118
- - Exact modification required
119
- - Functions/classes affected
120
- - Existing code to reuse
121
- - New code to add
122
- - Code explicitly not to add
123
-
124
- The executor should know exactly what to implement.
125
-
126
- ## 4. Verification
127
-
128
- Include:
129
-
130
- ### Success Cases
131
-
132
- Expected working behavior.
133
-
134
- ### Failure Cases
135
-
136
- Expected error behavior.
137
-
138
- ### Regression Checks
139
-
140
- Existing behavior that must remain unchanged.
141
-
142
- # Granularity Rule
143
-
144
- A task is too large if it can be split into smaller independently verifiable work.
145
-
146
- Keep decomposing until each task:
147
-
148
- - Has one objective
149
- - Has clear ownership
150
- - Can be implemented independently
151
- - Can be verified independently
152
-
153
- Prefer 5 small tasks over 1 large task.
154
-
155
- # Final Review
156
-
157
- Before returning a plan verify:
158
-
159
- - Discovery exists
160
- - Ownership is justified
161
- - Solution is the simplest acceptable approach
162
- - Existing code is reused when possible
163
- - No unnecessary abstractions are introduced
164
- - Scope remains limited
165
- - Verification is included
166
- - Every step is executable without additional assumptions
1
+ ---
2
+ name: planger
3
+ description: Create decomposed planning for sub agent
4
+ argument-hint: "How i provide a good plan for subagent"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Planning Skill
9
+
10
+ ## Goal
11
+
12
+ Create implementation plans that can be executed by a small coding model with:
13
+
14
+ - Limited context window
15
+ - No project knowledge
16
+ - No memory of previous conversation
17
+ - Weak architectural understanding
18
+ - No ability to infer missing steps
19
+
20
+ Assume the executor only knows what is written in the plan.
21
+
22
+ # Core Principles
23
+
24
+ ## Discovery First
25
+
26
+ Never assume:
27
+
28
+ - File names
29
+ - File locations
30
+ - Ownership of behavior
31
+ - Existing abstractions
32
+ - Existing utilities
33
+
34
+ If the code has not been inspected, the plan must begin with discovery.
35
+ You research the codebase (using explore agent) → clarify with the user (using questions tool) → capture findings and decisions into a comprehensive plan. This iterative approach catches edge cases and non-obvious requirements BEFORE implementation begins.
36
+
37
+ ## Simplicity First
38
+
39
+ Prefer the smallest maintainable solution that satisfies the requirement.
40
+
41
+ Avoid:
42
+
43
+ - New abstractions
44
+ - New services
45
+ - New dependencies
46
+ - Large refactors
47
+ - Generic frameworks
48
+ - Future-proofing for hypothetical requirements
49
+
50
+ Choose the lowest-complexity solution that works.
51
+
52
+ ## Reuse Before Build
53
+
54
+ Before creating anything new (use explorer agent):
55
+
56
+ - Search for existing implementations
57
+ - Search for existing utilities
58
+ - Search for existing patterns
59
+ - Search for existing tests
60
+
61
+ Reuse existing code when reasonable.
62
+
63
+ Do not duplicate behavior unless duplication is clearly preferable.
64
+
65
+ ## Scope Discipline
66
+
67
+ Only modify code required for the task.
68
+
69
+ Allowed:
70
+
71
+ - Small cleanup in touched files
72
+ - Remove unused imports
73
+ - Remove obvious dead code
74
+ - Improve nearby naming
75
+
76
+ Not allowed:
77
+
78
+ - Unrelated refactors
79
+ - Architecture changes
80
+ - Broad cleanup efforts
81
+ - Dependency migrations
82
+
83
+ # Task Structure
84
+
85
+ Every implementation task must contain:
86
+
87
+ ## 1. Discovery
88
+
89
+ Describe:
90
+
91
+ - What to search for
92
+ - Where to search
93
+ - How to identify relevant code
94
+
95
+ Example:
96
+
97
+ Search for:
98
+
99
+ - Authorization
100
+ - Bearer
101
+ - Interceptor
102
+ - Refresh token
103
+
104
+ Inspect matching files and identify where authentication headers are attached.
105
+
106
+ ## 2. Identification
107
+
108
+ Describe:
109
+
110
+ - Exact file(s) to modify
111
+ - Why those files own the behavior
112
+ - Why other files should not be modified
113
+
114
+ ## 3. Change
115
+
116
+ Describe:
117
+
118
+ - Exact modification required
119
+ - Functions/classes affected
120
+ - Existing code to reuse
121
+ - New code to add
122
+ - Code explicitly not to add
123
+
124
+ The executor should know exactly what to implement.
125
+
126
+ ## 4. Verification
127
+
128
+ Include:
129
+
130
+ ### Success Cases
131
+
132
+ Expected working behavior.
133
+
134
+ ### Failure Cases
135
+
136
+ Expected error behavior.
137
+
138
+ ### Regression Checks
139
+
140
+ Existing behavior that must remain unchanged.
141
+
142
+ # Granularity Rule
143
+
144
+ A task is too large if it can be split into smaller independently verifiable work.
145
+
146
+ Keep decomposing until each task:
147
+
148
+ - Has one objective
149
+ - Has clear ownership
150
+ - Can be implemented independently
151
+ - Can be verified independently
152
+
153
+ Prefer 5 small tasks over 1 large task.
154
+
155
+ # Final Review
156
+
157
+ Before returning a plan verify:
158
+
159
+ - Discovery exists
160
+ - Ownership is justified
161
+ - Solution is the simplest acceptable approach
162
+ - Existing code is reused when possible
163
+ - No unnecessary abstractions are introduced
164
+ - Scope remains limited
165
+ - Verification is included
166
+ - Every step is executable without additional assumptions