opencode-repos 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/AGENTS.md +180 -0
  2. package/README.md +103 -3
  3. package/TODO.md +3 -0
  4. package/bun.lock +0 -85
  5. package/index.ts +1585 -153
  6. package/oh-my-opencode/.github/FUNDING.yml +15 -0
  7. package/oh-my-opencode/.github/ISSUE_TEMPLATE/bug_report.yml +129 -0
  8. package/oh-my-opencode/.github/ISSUE_TEMPLATE/config.yml +8 -0
  9. package/oh-my-opencode/.github/ISSUE_TEMPLATE/feature_request.yml +100 -0
  10. package/oh-my-opencode/.github/ISSUE_TEMPLATE/general.yml +83 -0
  11. package/oh-my-opencode/.github/assets/google.jpg +0 -0
  12. package/oh-my-opencode/.github/assets/hero.jpg +0 -0
  13. package/oh-my-opencode/.github/assets/indent.jpg +0 -0
  14. package/oh-my-opencode/.github/assets/microsoft.jpg +0 -0
  15. package/oh-my-opencode/.github/assets/omo.png +0 -0
  16. package/oh-my-opencode/.github/assets/orchestrator-atlas.png +0 -0
  17. package/oh-my-opencode/.github/assets/sisyphus.png +0 -0
  18. package/oh-my-opencode/.github/assets/sisyphuslabs.png +0 -0
  19. package/oh-my-opencode/.github/pull_request_template.md +34 -0
  20. package/oh-my-opencode/.github/workflows/ci.yml +138 -0
  21. package/oh-my-opencode/.github/workflows/cla.yml +41 -0
  22. package/oh-my-opencode/.github/workflows/lint-workflows.yml +22 -0
  23. package/oh-my-opencode/.github/workflows/publish.yml +165 -0
  24. package/oh-my-opencode/.github/workflows/sisyphus-agent.yml +500 -0
  25. package/oh-my-opencode/.opencode/background-tasks.json +27 -0
  26. package/oh-my-opencode/.opencode/command/get-unpublished-changes.md +84 -0
  27. package/oh-my-opencode/.opencode/command/omomomo.md +37 -0
  28. package/oh-my-opencode/.opencode/command/publish.md +257 -0
  29. package/oh-my-opencode/AGENTS.md +179 -0
  30. package/oh-my-opencode/CLA.md +58 -0
  31. package/oh-my-opencode/CONTRIBUTING.md +268 -0
  32. package/oh-my-opencode/LICENSE.md +82 -0
  33. package/oh-my-opencode/README.ja.md +370 -0
  34. package/oh-my-opencode/README.md +376 -0
  35. package/oh-my-opencode/README.zh-cn.md +380 -0
  36. package/oh-my-opencode/assets/oh-my-opencode.schema.json +2171 -0
  37. package/oh-my-opencode/bin/oh-my-opencode.js +80 -0
  38. package/oh-my-opencode/bin/platform.js +38 -0
  39. package/oh-my-opencode/bin/platform.test.ts +148 -0
  40. package/oh-my-opencode/bun.lock +314 -0
  41. package/oh-my-opencode/bunfig.toml +2 -0
  42. package/oh-my-opencode/docs/category-skill-guide.md +200 -0
  43. package/oh-my-opencode/docs/cli-guide.md +272 -0
  44. package/oh-my-opencode/docs/configurations.md +654 -0
  45. package/oh-my-opencode/docs/features.md +550 -0
  46. package/oh-my-opencode/docs/guide/installation.md +288 -0
  47. package/oh-my-opencode/docs/guide/overview.md +97 -0
  48. package/oh-my-opencode/docs/guide/understanding-orchestration-system.md +445 -0
  49. package/oh-my-opencode/docs/orchestration-guide.md +152 -0
  50. package/oh-my-opencode/docs/ultrawork-manifesto.md +197 -0
  51. package/oh-my-opencode/package.json +89 -0
  52. package/oh-my-opencode/packages/darwin-arm64/bin/.gitkeep +0 -0
  53. package/oh-my-opencode/packages/darwin-arm64/package.json +22 -0
  54. package/oh-my-opencode/packages/darwin-x64/bin/.gitkeep +0 -0
  55. package/oh-my-opencode/packages/darwin-x64/package.json +22 -0
  56. package/oh-my-opencode/packages/linux-arm64/bin/.gitkeep +0 -0
  57. package/oh-my-opencode/packages/linux-arm64/package.json +25 -0
  58. package/oh-my-opencode/packages/linux-arm64-musl/bin/.gitkeep +0 -0
  59. package/oh-my-opencode/packages/linux-arm64-musl/package.json +25 -0
  60. package/oh-my-opencode/packages/linux-x64/bin/.gitkeep +0 -0
  61. package/oh-my-opencode/packages/linux-x64/package.json +25 -0
  62. package/oh-my-opencode/packages/linux-x64-musl/bin/.gitkeep +0 -0
  63. package/oh-my-opencode/packages/linux-x64-musl/package.json +25 -0
  64. package/oh-my-opencode/packages/windows-x64/bin/.gitkeep +0 -0
  65. package/oh-my-opencode/packages/windows-x64/package.json +22 -0
  66. package/oh-my-opencode/postinstall.mjs +43 -0
  67. package/oh-my-opencode/script/build-binaries.ts +103 -0
  68. package/oh-my-opencode/script/build-schema.ts +28 -0
  69. package/oh-my-opencode/script/generate-changelog.ts +92 -0
  70. package/oh-my-opencode/script/publish.ts +344 -0
  71. package/oh-my-opencode/signatures/cla.json +676 -0
  72. package/oh-my-opencode/src/agents/AGENTS.md +67 -0
  73. package/oh-my-opencode/src/agents/atlas.ts +1383 -0
  74. package/oh-my-opencode/src/agents/dynamic-agent-prompt-builder.ts +400 -0
  75. package/oh-my-opencode/src/agents/explore.ts +122 -0
  76. package/oh-my-opencode/src/agents/index.ts +13 -0
  77. package/oh-my-opencode/src/agents/librarian.ts +326 -0
  78. package/oh-my-opencode/src/agents/metis.ts +315 -0
  79. package/oh-my-opencode/src/agents/momus.test.ts +57 -0
  80. package/oh-my-opencode/src/agents/momus.ts +444 -0
  81. package/oh-my-opencode/src/agents/multimodal-looker.ts +56 -0
  82. package/oh-my-opencode/src/agents/oracle.ts +122 -0
  83. package/oh-my-opencode/src/agents/prometheus-prompt.test.ts +22 -0
  84. package/oh-my-opencode/src/agents/prometheus-prompt.ts +1196 -0
  85. package/oh-my-opencode/src/agents/sisyphus-junior.test.ts +232 -0
  86. package/oh-my-opencode/src/agents/sisyphus-junior.ts +134 -0
  87. package/oh-my-opencode/src/agents/sisyphus.ts +633 -0
  88. package/oh-my-opencode/src/agents/types.ts +80 -0
  89. package/oh-my-opencode/src/agents/utils.test.ts +311 -0
  90. package/oh-my-opencode/src/agents/utils.ts +240 -0
  91. package/oh-my-opencode/src/cli/AGENTS.md +91 -0
  92. package/oh-my-opencode/src/cli/config-manager.test.ts +364 -0
  93. package/oh-my-opencode/src/cli/config-manager.ts +641 -0
  94. package/oh-my-opencode/src/cli/doctor/checks/auth.test.ts +114 -0
  95. package/oh-my-opencode/src/cli/doctor/checks/auth.ts +115 -0
  96. package/oh-my-opencode/src/cli/doctor/checks/config.test.ts +103 -0
  97. package/oh-my-opencode/src/cli/doctor/checks/config.ts +123 -0
  98. package/oh-my-opencode/src/cli/doctor/checks/dependencies.test.ts +152 -0
  99. package/oh-my-opencode/src/cli/doctor/checks/dependencies.ts +163 -0
  100. package/oh-my-opencode/src/cli/doctor/checks/gh.test.ts +151 -0
  101. package/oh-my-opencode/src/cli/doctor/checks/gh.ts +171 -0
  102. package/oh-my-opencode/src/cli/doctor/checks/index.ts +34 -0
  103. package/oh-my-opencode/src/cli/doctor/checks/lsp.test.ts +134 -0
  104. package/oh-my-opencode/src/cli/doctor/checks/lsp.ts +77 -0
  105. package/oh-my-opencode/src/cli/doctor/checks/mcp.test.ts +115 -0
  106. package/oh-my-opencode/src/cli/doctor/checks/mcp.ts +128 -0
  107. package/oh-my-opencode/src/cli/doctor/checks/opencode.test.ts +227 -0
  108. package/oh-my-opencode/src/cli/doctor/checks/opencode.ts +178 -0
  109. package/oh-my-opencode/src/cli/doctor/checks/plugin.test.ts +109 -0
  110. package/oh-my-opencode/src/cli/doctor/checks/plugin.ts +124 -0
  111. package/oh-my-opencode/src/cli/doctor/checks/version.test.ts +148 -0
  112. package/oh-my-opencode/src/cli/doctor/checks/version.ts +135 -0
  113. package/oh-my-opencode/src/cli/doctor/constants.ts +72 -0
  114. package/oh-my-opencode/src/cli/doctor/formatter.test.ts +218 -0
  115. package/oh-my-opencode/src/cli/doctor/formatter.ts +140 -0
  116. package/oh-my-opencode/src/cli/doctor/index.ts +11 -0
  117. package/oh-my-opencode/src/cli/doctor/runner.test.ts +153 -0
  118. package/oh-my-opencode/src/cli/doctor/runner.ts +132 -0
  119. package/oh-my-opencode/src/cli/doctor/types.ts +113 -0
  120. package/oh-my-opencode/src/cli/get-local-version/formatter.ts +66 -0
  121. package/oh-my-opencode/src/cli/get-local-version/index.ts +106 -0
  122. package/oh-my-opencode/src/cli/get-local-version/types.ts +14 -0
  123. package/oh-my-opencode/src/cli/index.ts +153 -0
  124. package/oh-my-opencode/src/cli/install.ts +523 -0
  125. package/oh-my-opencode/src/cli/model-fallback.ts +246 -0
  126. package/oh-my-opencode/src/cli/run/completion.test.ts +170 -0
  127. package/oh-my-opencode/src/cli/run/completion.ts +79 -0
  128. package/oh-my-opencode/src/cli/run/events.test.ts +155 -0
  129. package/oh-my-opencode/src/cli/run/events.ts +325 -0
  130. package/oh-my-opencode/src/cli/run/index.ts +2 -0
  131. package/oh-my-opencode/src/cli/run/runner.ts +159 -0
  132. package/oh-my-opencode/src/cli/run/types.ts +76 -0
  133. package/oh-my-opencode/src/cli/types.ts +40 -0
  134. package/oh-my-opencode/src/config/index.ts +26 -0
  135. package/oh-my-opencode/src/config/schema.test.ts +444 -0
  136. package/oh-my-opencode/src/config/schema.ts +339 -0
  137. package/oh-my-opencode/src/features/AGENTS.md +77 -0
  138. package/oh-my-opencode/src/features/background-agent/concurrency.test.ts +418 -0
  139. package/oh-my-opencode/src/features/background-agent/concurrency.ts +137 -0
  140. package/oh-my-opencode/src/features/background-agent/index.ts +3 -0
  141. package/oh-my-opencode/src/features/background-agent/manager.test.ts +1928 -0
  142. package/oh-my-opencode/src/features/background-agent/manager.ts +1335 -0
  143. package/oh-my-opencode/src/features/background-agent/types.ts +66 -0
  144. package/oh-my-opencode/src/features/boulder-state/constants.ts +13 -0
  145. package/oh-my-opencode/src/features/boulder-state/index.ts +3 -0
  146. package/oh-my-opencode/src/features/boulder-state/storage.test.ts +250 -0
  147. package/oh-my-opencode/src/features/boulder-state/storage.ts +150 -0
  148. package/oh-my-opencode/src/features/boulder-state/types.ts +26 -0
  149. package/oh-my-opencode/src/features/builtin-commands/commands.ts +89 -0
  150. package/oh-my-opencode/src/features/builtin-commands/index.ts +2 -0
  151. package/oh-my-opencode/src/features/builtin-commands/templates/init-deep.ts +300 -0
  152. package/oh-my-opencode/src/features/builtin-commands/templates/ralph-loop.ts +38 -0
  153. package/oh-my-opencode/src/features/builtin-commands/templates/refactor.ts +619 -0
  154. package/oh-my-opencode/src/features/builtin-commands/templates/start-work.ts +72 -0
  155. package/oh-my-opencode/src/features/builtin-commands/types.ts +9 -0
  156. package/oh-my-opencode/src/features/builtin-skills/frontend-ui-ux/SKILL.md +78 -0
  157. package/oh-my-opencode/src/features/builtin-skills/git-master/SKILL.md +1105 -0
  158. package/oh-my-opencode/src/features/builtin-skills/index.ts +2 -0
  159. package/oh-my-opencode/src/features/builtin-skills/skills.ts +1203 -0
  160. package/oh-my-opencode/src/features/builtin-skills/types.ts +16 -0
  161. package/oh-my-opencode/src/features/claude-code-agent-loader/index.ts +2 -0
  162. package/oh-my-opencode/src/features/claude-code-agent-loader/loader.ts +90 -0
  163. package/oh-my-opencode/src/features/claude-code-agent-loader/types.ts +17 -0
  164. package/oh-my-opencode/src/features/claude-code-command-loader/index.ts +2 -0
  165. package/oh-my-opencode/src/features/claude-code-command-loader/loader.ts +144 -0
  166. package/oh-my-opencode/src/features/claude-code-command-loader/types.ts +46 -0
  167. package/oh-my-opencode/src/features/claude-code-mcp-loader/env-expander.ts +27 -0
  168. package/oh-my-opencode/src/features/claude-code-mcp-loader/index.ts +11 -0
  169. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.test.ts +162 -0
  170. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.ts +113 -0
  171. package/oh-my-opencode/src/features/claude-code-mcp-loader/transformer.ts +53 -0
  172. package/oh-my-opencode/src/features/claude-code-mcp-loader/types.ts +42 -0
  173. package/oh-my-opencode/src/features/claude-code-plugin-loader/index.ts +3 -0
  174. package/oh-my-opencode/src/features/claude-code-plugin-loader/loader.ts +486 -0
  175. package/oh-my-opencode/src/features/claude-code-plugin-loader/types.ts +210 -0
  176. package/oh-my-opencode/src/features/claude-code-session-state/index.ts +1 -0
  177. package/oh-my-opencode/src/features/claude-code-session-state/state.test.ts +126 -0
  178. package/oh-my-opencode/src/features/claude-code-session-state/state.ts +37 -0
  179. package/oh-my-opencode/src/features/context-injector/collector.test.ts +330 -0
  180. package/oh-my-opencode/src/features/context-injector/collector.ts +85 -0
  181. package/oh-my-opencode/src/features/context-injector/index.ts +14 -0
  182. package/oh-my-opencode/src/features/context-injector/injector.test.ts +122 -0
  183. package/oh-my-opencode/src/features/context-injector/injector.ts +167 -0
  184. package/oh-my-opencode/src/features/context-injector/types.ts +91 -0
  185. package/oh-my-opencode/src/features/hook-message-injector/constants.ts +6 -0
  186. package/oh-my-opencode/src/features/hook-message-injector/index.ts +4 -0
  187. package/oh-my-opencode/src/features/hook-message-injector/injector.ts +195 -0
  188. package/oh-my-opencode/src/features/hook-message-injector/types.ts +47 -0
  189. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.test.ts +448 -0
  190. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.ts +180 -0
  191. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.test.ts +210 -0
  192. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.ts +62 -0
  193. package/oh-my-opencode/src/features/opencode-skill-loader/discover-worker.ts +59 -0
  194. package/oh-my-opencode/src/features/opencode-skill-loader/index.ts +4 -0
  195. package/oh-my-opencode/src/features/opencode-skill-loader/loader.test.ts +273 -0
  196. package/oh-my-opencode/src/features/opencode-skill-loader/loader.ts +259 -0
  197. package/oh-my-opencode/src/features/opencode-skill-loader/merger.ts +267 -0
  198. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.test.ts +267 -0
  199. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.ts +206 -0
  200. package/oh-my-opencode/src/features/opencode-skill-loader/types.ts +38 -0
  201. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.test.ts +201 -0
  202. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.ts +27 -0
  203. package/oh-my-opencode/src/features/skill-mcp-manager/index.ts +2 -0
  204. package/oh-my-opencode/src/features/skill-mcp-manager/manager.test.ts +611 -0
  205. package/oh-my-opencode/src/features/skill-mcp-manager/manager.ts +520 -0
  206. package/oh-my-opencode/src/features/skill-mcp-manager/types.ts +14 -0
  207. package/oh-my-opencode/src/features/task-toast-manager/index.ts +2 -0
  208. package/oh-my-opencode/src/features/task-toast-manager/manager.test.ts +249 -0
  209. package/oh-my-opencode/src/features/task-toast-manager/manager.ts +215 -0
  210. package/oh-my-opencode/src/features/task-toast-manager/types.ts +24 -0
  211. package/oh-my-opencode/src/hooks/AGENTS.md +73 -0
  212. package/oh-my-opencode/src/hooks/agent-usage-reminder/constants.ts +54 -0
  213. package/oh-my-opencode/src/hooks/agent-usage-reminder/index.ts +109 -0
  214. package/oh-my-opencode/src/hooks/agent-usage-reminder/storage.ts +42 -0
  215. package/oh-my-opencode/src/hooks/agent-usage-reminder/types.ts +6 -0
  216. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.test.ts +307 -0
  217. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.ts +485 -0
  218. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/index.ts +151 -0
  219. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/parser.ts +201 -0
  220. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.ts +33 -0
  221. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +184 -0
  222. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -0
  223. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.test.ts +77 -0
  224. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.ts +250 -0
  225. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/types.ts +42 -0
  226. package/oh-my-opencode/src/hooks/atlas/index.test.ts +953 -0
  227. package/oh-my-opencode/src/hooks/atlas/index.ts +771 -0
  228. package/oh-my-opencode/src/hooks/auto-slash-command/constants.ts +12 -0
  229. package/oh-my-opencode/src/hooks/auto-slash-command/detector.test.ts +296 -0
  230. package/oh-my-opencode/src/hooks/auto-slash-command/detector.ts +65 -0
  231. package/oh-my-opencode/src/hooks/auto-slash-command/executor.ts +205 -0
  232. package/oh-my-opencode/src/hooks/auto-slash-command/index.test.ts +254 -0
  233. package/oh-my-opencode/src/hooks/auto-slash-command/index.ts +89 -0
  234. package/oh-my-opencode/src/hooks/auto-slash-command/types.ts +23 -0
  235. package/oh-my-opencode/src/hooks/auto-update-checker/cache.ts +93 -0
  236. package/oh-my-opencode/src/hooks/auto-update-checker/checker.test.ts +24 -0
  237. package/oh-my-opencode/src/hooks/auto-update-checker/checker.ts +284 -0
  238. package/oh-my-opencode/src/hooks/auto-update-checker/constants.ts +64 -0
  239. package/oh-my-opencode/src/hooks/auto-update-checker/index.test.ts +254 -0
  240. package/oh-my-opencode/src/hooks/auto-update-checker/index.ts +260 -0
  241. package/oh-my-opencode/src/hooks/auto-update-checker/types.ts +29 -0
  242. package/oh-my-opencode/src/hooks/background-compaction/index.ts +87 -0
  243. package/oh-my-opencode/src/hooks/background-notification/index.ts +28 -0
  244. package/oh-my-opencode/src/hooks/background-notification/types.ts +5 -0
  245. package/oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md +70 -0
  246. package/oh-my-opencode/src/hooks/claude-code-hooks/config-loader.ts +107 -0
  247. package/oh-my-opencode/src/hooks/claude-code-hooks/config.ts +103 -0
  248. package/oh-my-opencode/src/hooks/claude-code-hooks/index.ts +401 -0
  249. package/oh-my-opencode/src/hooks/claude-code-hooks/plugin-config.ts +12 -0
  250. package/oh-my-opencode/src/hooks/claude-code-hooks/post-tool-use.ts +199 -0
  251. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-compact.ts +109 -0
  252. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-tool-use.ts +172 -0
  253. package/oh-my-opencode/src/hooks/claude-code-hooks/stop.ts +118 -0
  254. package/oh-my-opencode/src/hooks/claude-code-hooks/todo.ts +76 -0
  255. package/oh-my-opencode/src/hooks/claude-code-hooks/tool-input-cache.ts +47 -0
  256. package/oh-my-opencode/src/hooks/claude-code-hooks/transcript.ts +252 -0
  257. package/oh-my-opencode/src/hooks/claude-code-hooks/types.ts +204 -0
  258. package/oh-my-opencode/src/hooks/claude-code-hooks/user-prompt-submit.ts +117 -0
  259. package/oh-my-opencode/src/hooks/comment-checker/cli.test.ts +68 -0
  260. package/oh-my-opencode/src/hooks/comment-checker/cli.ts +221 -0
  261. package/oh-my-opencode/src/hooks/comment-checker/downloader.ts +196 -0
  262. package/oh-my-opencode/src/hooks/comment-checker/index.ts +171 -0
  263. package/oh-my-opencode/src/hooks/comment-checker/types.ts +33 -0
  264. package/oh-my-opencode/src/hooks/compaction-context-injector/index.ts +61 -0
  265. package/oh-my-opencode/src/hooks/context-window-monitor.ts +99 -0
  266. package/oh-my-opencode/src/hooks/delegate-task-retry/index.test.ts +119 -0
  267. package/oh-my-opencode/src/hooks/delegate-task-retry/index.ts +136 -0
  268. package/oh-my-opencode/src/hooks/directory-agents-injector/constants.ts +9 -0
  269. package/oh-my-opencode/src/hooks/directory-agents-injector/index.ts +182 -0
  270. package/oh-my-opencode/src/hooks/directory-agents-injector/storage.ts +48 -0
  271. package/oh-my-opencode/src/hooks/directory-agents-injector/types.ts +5 -0
  272. package/oh-my-opencode/src/hooks/directory-readme-injector/constants.ts +9 -0
  273. package/oh-my-opencode/src/hooks/directory-readme-injector/index.ts +177 -0
  274. package/oh-my-opencode/src/hooks/directory-readme-injector/storage.ts +48 -0
  275. package/oh-my-opencode/src/hooks/directory-readme-injector/types.ts +5 -0
  276. package/oh-my-opencode/src/hooks/edit-error-recovery/index.test.ts +126 -0
  277. package/oh-my-opencode/src/hooks/edit-error-recovery/index.ts +57 -0
  278. package/oh-my-opencode/src/hooks/empty-task-response-detector.ts +27 -0
  279. package/oh-my-opencode/src/hooks/index.ts +32 -0
  280. package/oh-my-opencode/src/hooks/interactive-bash-session/constants.ts +15 -0
  281. package/oh-my-opencode/src/hooks/interactive-bash-session/index.ts +262 -0
  282. package/oh-my-opencode/src/hooks/interactive-bash-session/storage.ts +59 -0
  283. package/oh-my-opencode/src/hooks/interactive-bash-session/types.ts +11 -0
  284. package/oh-my-opencode/src/hooks/keyword-detector/constants.ts +300 -0
  285. package/oh-my-opencode/src/hooks/keyword-detector/detector.ts +52 -0
  286. package/oh-my-opencode/src/hooks/keyword-detector/index.test.ts +529 -0
  287. package/oh-my-opencode/src/hooks/keyword-detector/index.ts +100 -0
  288. package/oh-my-opencode/src/hooks/keyword-detector/types.ts +4 -0
  289. package/oh-my-opencode/src/hooks/non-interactive-env/constants.ts +70 -0
  290. package/oh-my-opencode/src/hooks/non-interactive-env/detector.ts +19 -0
  291. package/oh-my-opencode/src/hooks/non-interactive-env/index.test.ts +323 -0
  292. package/oh-my-opencode/src/hooks/non-interactive-env/index.ts +63 -0
  293. package/oh-my-opencode/src/hooks/non-interactive-env/types.ts +3 -0
  294. package/oh-my-opencode/src/hooks/prometheus-md-only/constants.ts +32 -0
  295. package/oh-my-opencode/src/hooks/prometheus-md-only/index.test.ts +488 -0
  296. package/oh-my-opencode/src/hooks/prometheus-md-only/index.ts +136 -0
  297. package/oh-my-opencode/src/hooks/ralph-loop/constants.ts +5 -0
  298. package/oh-my-opencode/src/hooks/ralph-loop/index.test.ts +835 -0
  299. package/oh-my-opencode/src/hooks/ralph-loop/index.ts +417 -0
  300. package/oh-my-opencode/src/hooks/ralph-loop/storage.ts +115 -0
  301. package/oh-my-opencode/src/hooks/ralph-loop/types.ts +19 -0
  302. package/oh-my-opencode/src/hooks/rules-injector/constants.ts +30 -0
  303. package/oh-my-opencode/src/hooks/rules-injector/finder.test.ts +381 -0
  304. package/oh-my-opencode/src/hooks/rules-injector/finder.ts +263 -0
  305. package/oh-my-opencode/src/hooks/rules-injector/index.ts +223 -0
  306. package/oh-my-opencode/src/hooks/rules-injector/matcher.ts +63 -0
  307. package/oh-my-opencode/src/hooks/rules-injector/parser.test.ts +226 -0
  308. package/oh-my-opencode/src/hooks/rules-injector/parser.ts +211 -0
  309. package/oh-my-opencode/src/hooks/rules-injector/storage.ts +59 -0
  310. package/oh-my-opencode/src/hooks/rules-injector/types.ts +57 -0
  311. package/oh-my-opencode/src/hooks/session-notification-utils.ts +140 -0
  312. package/oh-my-opencode/src/hooks/session-notification.test.ts +361 -0
  313. package/oh-my-opencode/src/hooks/session-notification.ts +330 -0
  314. package/oh-my-opencode/src/hooks/session-recovery/constants.ts +10 -0
  315. package/oh-my-opencode/src/hooks/session-recovery/index.test.ts +223 -0
  316. package/oh-my-opencode/src/hooks/session-recovery/index.ts +435 -0
  317. package/oh-my-opencode/src/hooks/session-recovery/storage.ts +390 -0
  318. package/oh-my-opencode/src/hooks/session-recovery/types.ts +98 -0
  319. package/oh-my-opencode/src/hooks/start-work/index.test.ts +402 -0
  320. package/oh-my-opencode/src/hooks/start-work/index.ts +242 -0
  321. package/oh-my-opencode/src/hooks/task-resume-info/index.ts +36 -0
  322. package/oh-my-opencode/src/hooks/think-mode/detector.ts +57 -0
  323. package/oh-my-opencode/src/hooks/think-mode/index.test.ts +353 -0
  324. package/oh-my-opencode/src/hooks/think-mode/index.ts +89 -0
  325. package/oh-my-opencode/src/hooks/think-mode/switcher.test.ts +461 -0
  326. package/oh-my-opencode/src/hooks/think-mode/switcher.ts +222 -0
  327. package/oh-my-opencode/src/hooks/think-mode/types.ts +21 -0
  328. package/oh-my-opencode/src/hooks/thinking-block-validator/index.ts +171 -0
  329. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.test.ts +876 -0
  330. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.ts +480 -0
  331. package/oh-my-opencode/src/hooks/tool-output-truncator.test.ts +168 -0
  332. package/oh-my-opencode/src/hooks/tool-output-truncator.ts +61 -0
  333. package/oh-my-opencode/src/index.ts +589 -0
  334. package/oh-my-opencode/src/mcp/AGENTS.md +70 -0
  335. package/oh-my-opencode/src/mcp/context7.ts +6 -0
  336. package/oh-my-opencode/src/mcp/grep-app.ts +6 -0
  337. package/oh-my-opencode/src/mcp/index.test.ts +86 -0
  338. package/oh-my-opencode/src/mcp/index.ts +32 -0
  339. package/oh-my-opencode/src/mcp/types.ts +9 -0
  340. package/oh-my-opencode/src/mcp/websearch.ts +10 -0
  341. package/oh-my-opencode/src/plugin-config.test.ts +119 -0
  342. package/oh-my-opencode/src/plugin-config.ts +135 -0
  343. package/oh-my-opencode/src/plugin-handlers/config-handler.test.ts +103 -0
  344. package/oh-my-opencode/src/plugin-handlers/config-handler.ts +399 -0
  345. package/oh-my-opencode/src/plugin-handlers/index.ts +1 -0
  346. package/oh-my-opencode/src/plugin-state.ts +30 -0
  347. package/oh-my-opencode/src/shared/AGENTS.md +63 -0
  348. package/oh-my-opencode/src/shared/agent-tool-restrictions.ts +44 -0
  349. package/oh-my-opencode/src/shared/agent-variant.test.ts +83 -0
  350. package/oh-my-opencode/src/shared/agent-variant.ts +40 -0
  351. package/oh-my-opencode/src/shared/claude-config-dir.test.ts +60 -0
  352. package/oh-my-opencode/src/shared/claude-config-dir.ts +11 -0
  353. package/oh-my-opencode/src/shared/command-executor.ts +225 -0
  354. package/oh-my-opencode/src/shared/config-errors.ts +18 -0
  355. package/oh-my-opencode/src/shared/config-path.ts +47 -0
  356. package/oh-my-opencode/src/shared/data-path.ts +22 -0
  357. package/oh-my-opencode/src/shared/deep-merge.test.ts +336 -0
  358. package/oh-my-opencode/src/shared/deep-merge.ts +53 -0
  359. package/oh-my-opencode/src/shared/dynamic-truncator.ts +193 -0
  360. package/oh-my-opencode/src/shared/external-plugin-detector.test.ts +133 -0
  361. package/oh-my-opencode/src/shared/external-plugin-detector.ts +132 -0
  362. package/oh-my-opencode/src/shared/file-reference-resolver.ts +85 -0
  363. package/oh-my-opencode/src/shared/file-utils.ts +40 -0
  364. package/oh-my-opencode/src/shared/first-message-variant.test.ts +32 -0
  365. package/oh-my-opencode/src/shared/first-message-variant.ts +28 -0
  366. package/oh-my-opencode/src/shared/frontmatter.test.ts +262 -0
  367. package/oh-my-opencode/src/shared/frontmatter.ts +31 -0
  368. package/oh-my-opencode/src/shared/hook-disabled.ts +22 -0
  369. package/oh-my-opencode/src/shared/index.ts +29 -0
  370. package/oh-my-opencode/src/shared/jsonc-parser.test.ts +266 -0
  371. package/oh-my-opencode/src/shared/jsonc-parser.ts +66 -0
  372. package/oh-my-opencode/src/shared/logger.ts +20 -0
  373. package/oh-my-opencode/src/shared/migration.test.ts +602 -0
  374. package/oh-my-opencode/src/shared/migration.ts +191 -0
  375. package/oh-my-opencode/src/shared/model-resolver.test.ts +101 -0
  376. package/oh-my-opencode/src/shared/model-resolver.ts +35 -0
  377. package/oh-my-opencode/src/shared/model-sanitizer.ts +12 -0
  378. package/oh-my-opencode/src/shared/opencode-config-dir.test.ts +318 -0
  379. package/oh-my-opencode/src/shared/opencode-config-dir.ts +142 -0
  380. package/oh-my-opencode/src/shared/opencode-version.test.ts +223 -0
  381. package/oh-my-opencode/src/shared/opencode-version.ts +72 -0
  382. package/oh-my-opencode/src/shared/pattern-matcher.ts +29 -0
  383. package/oh-my-opencode/src/shared/permission-compat.test.ts +134 -0
  384. package/oh-my-opencode/src/shared/permission-compat.ts +77 -0
  385. package/oh-my-opencode/src/shared/session-cursor.test.ts +66 -0
  386. package/oh-my-opencode/src/shared/session-cursor.ts +85 -0
  387. package/oh-my-opencode/src/shared/shell-env.test.ts +278 -0
  388. package/oh-my-opencode/src/shared/shell-env.ts +111 -0
  389. package/oh-my-opencode/src/shared/snake-case.ts +49 -0
  390. package/oh-my-opencode/src/shared/system-directive.ts +40 -0
  391. package/oh-my-opencode/src/shared/tool-name.ts +26 -0
  392. package/oh-my-opencode/src/shared/zip-extractor.ts +83 -0
  393. package/oh-my-opencode/src/tools/AGENTS.md +74 -0
  394. package/oh-my-opencode/src/tools/ast-grep/cli.ts +230 -0
  395. package/oh-my-opencode/src/tools/ast-grep/constants.ts +261 -0
  396. package/oh-my-opencode/src/tools/ast-grep/downloader.ts +128 -0
  397. package/oh-my-opencode/src/tools/ast-grep/index.ts +13 -0
  398. package/oh-my-opencode/src/tools/ast-grep/tools.ts +112 -0
  399. package/oh-my-opencode/src/tools/ast-grep/types.ts +61 -0
  400. package/oh-my-opencode/src/tools/ast-grep/utils.ts +102 -0
  401. package/oh-my-opencode/src/tools/background-task/constants.ts +7 -0
  402. package/oh-my-opencode/src/tools/background-task/index.ts +7 -0
  403. package/oh-my-opencode/src/tools/background-task/tools.ts +479 -0
  404. package/oh-my-opencode/src/tools/background-task/types.ts +16 -0
  405. package/oh-my-opencode/src/tools/call-omo-agent/constants.ts +7 -0
  406. package/oh-my-opencode/src/tools/call-omo-agent/index.ts +3 -0
  407. package/oh-my-opencode/src/tools/call-omo-agent/tools.ts +338 -0
  408. package/oh-my-opencode/src/tools/call-omo-agent/types.ts +27 -0
  409. package/oh-my-opencode/src/tools/delegate-task/constants.ts +205 -0
  410. package/oh-my-opencode/src/tools/delegate-task/index.ts +3 -0
  411. package/oh-my-opencode/src/tools/delegate-task/tools.test.ts +1575 -0
  412. package/oh-my-opencode/src/tools/delegate-task/tools.ts +885 -0
  413. package/oh-my-opencode/src/tools/delegate-task/types.ts +9 -0
  414. package/oh-my-opencode/src/tools/glob/cli.test.ts +158 -0
  415. package/oh-my-opencode/src/tools/glob/cli.ts +191 -0
  416. package/oh-my-opencode/src/tools/glob/constants.ts +12 -0
  417. package/oh-my-opencode/src/tools/glob/index.ts +3 -0
  418. package/oh-my-opencode/src/tools/glob/tools.ts +41 -0
  419. package/oh-my-opencode/src/tools/glob/types.ts +22 -0
  420. package/oh-my-opencode/src/tools/glob/utils.ts +26 -0
  421. package/oh-my-opencode/src/tools/grep/cli.ts +229 -0
  422. package/oh-my-opencode/src/tools/grep/constants.ts +127 -0
  423. package/oh-my-opencode/src/tools/grep/downloader.test.ts +103 -0
  424. package/oh-my-opencode/src/tools/grep/downloader.ts +145 -0
  425. package/oh-my-opencode/src/tools/grep/index.ts +3 -0
  426. package/oh-my-opencode/src/tools/grep/tools.ts +40 -0
  427. package/oh-my-opencode/src/tools/grep/types.ts +39 -0
  428. package/oh-my-opencode/src/tools/grep/utils.ts +53 -0
  429. package/oh-my-opencode/src/tools/index.ts +72 -0
  430. package/oh-my-opencode/src/tools/interactive-bash/constants.ts +18 -0
  431. package/oh-my-opencode/src/tools/interactive-bash/index.ts +4 -0
  432. package/oh-my-opencode/src/tools/interactive-bash/tools.ts +126 -0
  433. package/oh-my-opencode/src/tools/interactive-bash/utils.ts +71 -0
  434. package/oh-my-opencode/src/tools/look-at/constants.ts +3 -0
  435. package/oh-my-opencode/src/tools/look-at/index.ts +3 -0
  436. package/oh-my-opencode/src/tools/look-at/tools.test.ts +73 -0
  437. package/oh-my-opencode/src/tools/look-at/tools.ts +173 -0
  438. package/oh-my-opencode/src/tools/look-at/types.ts +4 -0
  439. package/oh-my-opencode/src/tools/lsp/client.ts +596 -0
  440. package/oh-my-opencode/src/tools/lsp/config.test.ts +130 -0
  441. package/oh-my-opencode/src/tools/lsp/config.ts +285 -0
  442. package/oh-my-opencode/src/tools/lsp/constants.ts +390 -0
  443. package/oh-my-opencode/src/tools/lsp/index.ts +7 -0
  444. package/oh-my-opencode/src/tools/lsp/tools.ts +261 -0
  445. package/oh-my-opencode/src/tools/lsp/types.ts +124 -0
  446. package/oh-my-opencode/src/tools/lsp/utils.ts +406 -0
  447. package/oh-my-opencode/src/tools/session-manager/constants.ts +97 -0
  448. package/oh-my-opencode/src/tools/session-manager/index.ts +3 -0
  449. package/oh-my-opencode/src/tools/session-manager/storage.test.ts +315 -0
  450. package/oh-my-opencode/src/tools/session-manager/storage.ts +238 -0
  451. package/oh-my-opencode/src/tools/session-manager/tools.test.ts +124 -0
  452. package/oh-my-opencode/src/tools/session-manager/tools.ts +146 -0
  453. package/oh-my-opencode/src/tools/session-manager/types.ts +99 -0
  454. package/oh-my-opencode/src/tools/session-manager/utils.test.ts +160 -0
  455. package/oh-my-opencode/src/tools/session-manager/utils.ts +199 -0
  456. package/oh-my-opencode/src/tools/skill/constants.ts +8 -0
  457. package/oh-my-opencode/src/tools/skill/index.ts +3 -0
  458. package/oh-my-opencode/src/tools/skill/tools.test.ts +239 -0
  459. package/oh-my-opencode/src/tools/skill/tools.ts +200 -0
  460. package/oh-my-opencode/src/tools/skill/types.ts +31 -0
  461. package/oh-my-opencode/src/tools/skill-mcp/constants.ts +3 -0
  462. package/oh-my-opencode/src/tools/skill-mcp/index.ts +3 -0
  463. package/oh-my-opencode/src/tools/skill-mcp/tools.test.ts +215 -0
  464. package/oh-my-opencode/src/tools/skill-mcp/tools.ts +172 -0
  465. package/oh-my-opencode/src/tools/skill-mcp/types.ts +8 -0
  466. package/oh-my-opencode/src/tools/slashcommand/index.ts +2 -0
  467. package/oh-my-opencode/src/tools/slashcommand/tools.ts +252 -0
  468. package/oh-my-opencode/src/tools/slashcommand/types.ts +28 -0
  469. package/oh-my-opencode/test-setup.ts +6 -0
  470. package/oh-my-opencode/tsconfig.json +20 -0
  471. package/package.json +1 -4
  472. package/src/__tests__/git.test.ts +7 -2
  473. package/src/__tests__/manifest.test.ts +5 -5
  474. package/src/agents/repo-explorer.ts +2 -1
  475. package/src/git.ts +18 -3
  476. package/src/manifest.ts +22 -15
  477. package/src/scanner.ts +41 -32
@@ -0,0 +1,84 @@
1
+ ---
2
+ description: Compare HEAD with the latest published npm version and list all unpublished changes
3
+ model: anthropic/claude-haiku-4-5
4
+ ---
5
+
6
+ <command-instruction>
7
+ IMMEDIATELY output the analysis. NO questions. NO preamble.
8
+
9
+ ## CRITICAL: DO NOT just copy commit messages!
10
+
11
+ For each commit, you MUST:
12
+ 1. Read the actual diff to understand WHAT CHANGED
13
+ 2. Describe the REAL change in plain language
14
+ 3. Explain WHY it matters (if not obvious)
15
+
16
+ ## Steps:
17
+ 1. Run `git diff v{published-version}..HEAD` to see actual changes
18
+ 2. Group by type (feat/fix/refactor/docs) with REAL descriptions
19
+ 3. Note breaking changes if any
20
+ 4. Recommend version bump (major/minor/patch)
21
+
22
+ ## Output Format:
23
+ - feat: "Added X that does Y" (not just "add X feature")
24
+ - fix: "Fixed bug where X happened, now Y" (not just "fix X bug")
25
+ - refactor: "Changed X from A to B, now supports C" (not just "rename X")
26
+ </command-instruction>
27
+
28
+ <version-context>
29
+ <published-version>
30
+ !`npm view oh-my-opencode version 2>/dev/null || echo "not published"`
31
+ </published-version>
32
+ <local-version>
33
+ !`node -p "require('./package.json').version" 2>/dev/null || echo "unknown"`
34
+ </local-version>
35
+ <latest-tag>
36
+ !`git tag --sort=-v:refname | head -1 2>/dev/null || echo "no tags"`
37
+ </latest-tag>
38
+ </version-context>
39
+
40
+ <git-context>
41
+ <commits-since-release>
42
+ !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git log "v{}"..HEAD --oneline 2>/dev/null || echo "no commits since release"`
43
+ </commits-since-release>
44
+ <diff-stat>
45
+ !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git diff "v{}"..HEAD --stat 2>/dev/null || echo "no diff available"`
46
+ </diff-stat>
47
+ <files-changed-summary>
48
+ !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git diff "v{}"..HEAD --stat 2>/dev/null | tail -1 || echo ""`
49
+ </files-changed-summary>
50
+ </git-context>
51
+
52
+ <output-format>
53
+ ## Unpublished Changes (v{published} → HEAD)
54
+
55
+ ### feat
56
+ | Scope | What Changed |
57
+ |-------|--------------|
58
+ | X | 실제 변경 내용 설명 |
59
+
60
+ ### fix
61
+ | Scope | What Changed |
62
+ |-------|--------------|
63
+ | X | 실제 변경 내용 설명 |
64
+
65
+ ### refactor
66
+ | Scope | What Changed |
67
+ |-------|--------------|
68
+ | X | 실제 변경 내용 설명 |
69
+
70
+ ### docs
71
+ | Scope | What Changed |
72
+ |-------|--------------|
73
+ | X | 실제 변경 내용 설명 |
74
+
75
+ ### Breaking Changes
76
+ None 또는 목록
77
+
78
+ ### Files Changed
79
+ {diff-stat}
80
+
81
+ ### Suggested Version Bump
82
+ - **Recommendation**: patch|minor|major
83
+ - **Reason**: 이유
84
+ </output-format>
@@ -0,0 +1,37 @@
1
+ ---
2
+ description: Easter egg command - about oh-my-opencode
3
+ ---
4
+
5
+ <command-instruction>
6
+ You found an easter egg! 🥚✨
7
+
8
+ Print the following message to the user EXACTLY as written (in a friendly, celebratory tone):
9
+
10
+ ---
11
+
12
+ # 🎉 oMoMoMoMoMo···
13
+
14
+ **You found the easter egg!** 🥚✨
15
+
16
+ ## What is Oh My OpenCode?
17
+
18
+ **Oh My OpenCode** is a powerful OpenCode plugin that transforms your AI agent into a full development team:
19
+
20
+ - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.2), Librarian (Claude), Explore (Grok), Frontend Engineer (Gemini), and more
21
+ - 🔧 **LSP Tools**: Full IDE capabilities for your agents - hover, goto definition, find references, rename, code actions
22
+ - 🔍 **AST-Grep**: Structural code search and replace across 25 languages
23
+ - 📚 **Built-in MCPs**: Context7 for docs, Exa for web search, grep.app for GitHub code search
24
+ - 🔄 **Background Agents**: Run multiple agents in parallel like a real dev team
25
+ - 🎯 **Claude Code Compatibility**: Your existing Claude Code config just works
26
+
27
+ ## Who Made This?
28
+
29
+ Created with ❤️ by **[code-yeongyu](https://github.com/code-yeongyu)**
30
+
31
+ 🔗 **GitHub**: https://github.com/code-yeongyu/oh-my-opencode
32
+
33
+ ---
34
+
35
+ *Enjoy coding on steroids!* 🚀
36
+
37
+ </command-instruction>
@@ -0,0 +1,257 @@
1
+ ---
2
+ description: Publish oh-my-opencode to npm via GitHub Actions workflow
3
+ argument-hint: <patch|minor|major>
4
+ ---
5
+
6
+ <command-instruction>
7
+ You are the release manager for oh-my-opencode. Execute the FULL publish workflow from start to finish.
8
+
9
+ ## CRITICAL: ARGUMENT REQUIREMENT
10
+
11
+ **You MUST receive a version bump type from the user.** Valid options:
12
+ - `patch`: Bug fixes, backward-compatible (1.1.7 → 1.1.8)
13
+ - `minor`: New features, backward-compatible (1.1.7 → 1.2.0)
14
+ - `major`: Breaking changes (1.1.7 → 2.0.0)
15
+
16
+ **If the user did not provide a bump type argument, STOP IMMEDIATELY and ask:**
17
+ > "배포를 진행하려면 버전 범프 타입을 지정해주세요: `patch`, `minor`, 또는 `major`"
18
+
19
+ **DO NOT PROCEED without explicit user confirmation of bump type.**
20
+
21
+ ---
22
+
23
+ ## STEP 0: REGISTER TODO LIST (MANDATORY FIRST ACTION)
24
+
25
+ **Before doing ANYTHING else**, create a detailed todo list using TodoWrite:
26
+
27
+ ```
28
+ [
29
+ { "id": "confirm-bump", "content": "Confirm version bump type with user (patch/minor/major)", "status": "in_progress", "priority": "high" },
30
+ { "id": "check-uncommitted", "content": "Check for uncommitted changes and commit if needed", "status": "pending", "priority": "high" },
31
+ { "id": "sync-remote", "content": "Sync with remote (pull --rebase && push if unpushed commits)", "status": "pending", "priority": "high" },
32
+ { "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
33
+ { "id": "wait-workflow", "content": "Wait for workflow completion (poll every 30s)", "status": "pending", "priority": "high" },
34
+ { "id": "verify-release", "content": "Verify GitHub release was created", "status": "pending", "priority": "high" },
35
+ { "id": "draft-release-notes", "content": "Draft enhanced release notes content", "status": "pending", "priority": "high" },
36
+ { "id": "update-release-notes", "content": "Update GitHub release with enhanced notes", "status": "pending", "priority": "high" },
37
+ { "id": "verify-npm", "content": "Verify npm package published successfully", "status": "pending", "priority": "high" },
38
+ { "id": "final-confirmation", "content": "Final confirmation to user with links", "status": "pending", "priority": "low" }
39
+ ]
40
+ ```
41
+
42
+ **Mark each todo as `in_progress` when starting, `completed` when done. ONE AT A TIME.**
43
+
44
+ ---
45
+
46
+ ## STEP 1: CONFIRM BUMP TYPE
47
+
48
+ If bump type provided as argument, confirm with user:
49
+ > "버전 범프 타입: `{bump}`. 진행할까요? (y/n)"
50
+
51
+ Wait for user confirmation before proceeding.
52
+
53
+ ---
54
+
55
+ ## STEP 2: CHECK UNCOMMITTED CHANGES
56
+
57
+ Run: `git status --porcelain`
58
+
59
+ - If there are uncommitted changes, warn user and ask if they want to commit first
60
+ - If clean, proceed
61
+
62
+ ---
63
+
64
+ ## STEP 2.5: SYNC WITH REMOTE (MANDATORY)
65
+
66
+ Check if there are unpushed commits:
67
+ ```bash
68
+ git log origin/master..HEAD --oneline
69
+ ```
70
+
71
+ **If there are unpushed commits, you MUST sync before triggering workflow:**
72
+ ```bash
73
+ git pull --rebase && git push
74
+ ```
75
+
76
+ This ensures the GitHub Actions workflow runs on the latest code including all local commits.
77
+
78
+ ---
79
+
80
+ ## STEP 3: TRIGGER GITHUB ACTIONS WORKFLOW
81
+
82
+ Run the publish workflow:
83
+ ```bash
84
+ gh workflow run publish -f bump={bump_type}
85
+ ```
86
+
87
+ Wait 3 seconds, then get the run ID:
88
+ ```bash
89
+ gh run list --workflow=publish --limit=1 --json databaseId,status --jq '.[0]'
90
+ ```
91
+
92
+ ---
93
+
94
+ ## STEP 4: WAIT FOR WORKFLOW COMPLETION
95
+
96
+ Poll workflow status every 30 seconds until completion:
97
+ ```bash
98
+ gh run view {run_id} --json status,conclusion --jq '{status: .status, conclusion: .conclusion}'
99
+ ```
100
+
101
+ Status flow: `queued` → `in_progress` → `completed`
102
+
103
+ **IMPORTANT: Use polling loop, NOT sleep commands.**
104
+
105
+ If conclusion is `failure`, show error and stop:
106
+ ```bash
107
+ gh run view {run_id} --log-failed
108
+ ```
109
+
110
+ ---
111
+
112
+ ## STEP 5: VERIFY GITHUB RELEASE
113
+
114
+ Get the new version and verify release exists:
115
+ ```bash
116
+ # Get new version from package.json (workflow updates it)
117
+ git pull --rebase
118
+ NEW_VERSION=$(node -p "require('./package.json').version")
119
+ gh release view "v${NEW_VERSION}"
120
+ ```
121
+
122
+ ---
123
+
124
+ ## STEP 6: DRAFT ENHANCED RELEASE NOTES
125
+
126
+ Analyze commits since the previous version and draft release notes following project conventions:
127
+
128
+ ### For PATCH releases:
129
+ Keep simple format - just list commits:
130
+ ```markdown
131
+ - {hash} {conventional commit message}
132
+ - ...
133
+ ```
134
+
135
+ ### For MINOR releases:
136
+ Use feature-focused format:
137
+ ```markdown
138
+ ## New Features
139
+
140
+ ### Feature Name
141
+ - Description of what it does
142
+ - Why it matters
143
+
144
+ ## Bug Fixes
145
+ - fix(scope): description
146
+
147
+ ## Improvements
148
+ - refactor(scope): description
149
+ ```
150
+
151
+ ### For MAJOR releases:
152
+ Full changelog format:
153
+ ```markdown
154
+ # v{version}
155
+
156
+ Brief description of the release.
157
+
158
+ ## What's New Since v{previous}
159
+
160
+ ### Breaking Changes
161
+ - Description of breaking change
162
+
163
+ ### Features
164
+ - **Feature Name**: Description
165
+
166
+ ### Bug Fixes
167
+ - Description
168
+
169
+ ### Documentation
170
+ - Description
171
+
172
+ ## Migration Guide (if applicable)
173
+ ...
174
+ ```
175
+
176
+ **CRITICAL: The enhanced notes must ADD to existing workflow-generated notes, not replace them.**
177
+
178
+ ---
179
+
180
+ ## STEP 7: UPDATE GITHUB RELEASE
181
+
182
+ **ZERO CONTENT LOSS POLICY:**
183
+ - First, fetch the existing release body with `gh release view`
184
+ - Your enhanced notes must be PREPENDED to the existing content
185
+ - **NOT A SINGLE CHARACTER of existing content may be removed or modified**
186
+ - The final release body = `{your_enhanced_notes}\n\n---\n\n{existing_body_exactly_as_is}`
187
+
188
+ ```bash
189
+ # Get existing body
190
+ EXISTING_BODY=$(gh release view "v${NEW_VERSION}" --json body --jq '.body')
191
+
192
+ # Write enhanced notes to temp file (prepend to existing)
193
+ cat > /tmp/release-notes-v${NEW_VERSION}.md << 'EOF'
194
+ {your_enhanced_notes}
195
+
196
+ ---
197
+
198
+ EOF
199
+
200
+ # Append existing body EXACTLY as-is (zero modifications)
201
+ echo "$EXISTING_BODY" >> /tmp/release-notes-v${NEW_VERSION}.md
202
+
203
+ # Update release
204
+ gh release edit "v${NEW_VERSION}" --notes-file /tmp/release-notes-v${NEW_VERSION}.md
205
+ ```
206
+
207
+ **CRITICAL: This is ADDITIVE ONLY. You are adding your notes on top. The existing content remains 100% intact.**
208
+
209
+ ---
210
+
211
+ ## STEP 8: VERIFY NPM PUBLICATION
212
+
213
+ Poll npm registry until the new version appears:
214
+ ```bash
215
+ npm view oh-my-opencode version
216
+ ```
217
+
218
+ Compare with expected version. If not matching after 2 minutes, warn user about npm propagation delay.
219
+
220
+ ---
221
+
222
+ ## STEP 9: FINAL CONFIRMATION
223
+
224
+ Report success to user with:
225
+ - New version number
226
+ - GitHub release URL: https://github.com/code-yeongyu/oh-my-opencode/releases/tag/v{version}
227
+ - npm package URL: https://www.npmjs.com/package/oh-my-opencode
228
+
229
+ ---
230
+
231
+ ## ERROR HANDLING
232
+
233
+ - **Workflow fails**: Show failed logs, suggest checking Actions tab
234
+ - **Release not found**: Wait and retry, may be propagation delay
235
+ - **npm not updated**: npm can take 1-5 minutes to propagate, inform user
236
+ - **Permission denied**: User may need to re-authenticate with `gh auth login`
237
+
238
+ ## LANGUAGE
239
+
240
+ Respond to user in Korean (한국어).
241
+
242
+ </command-instruction>
243
+
244
+ <current-context>
245
+ <published-version>
246
+ !`npm view oh-my-opencode version 2>/dev/null || echo "not published"`
247
+ </published-version>
248
+ <local-version>
249
+ !`node -p "require('./package.json').version" 2>/dev/null || echo "unknown"`
250
+ </local-version>
251
+ <git-status>
252
+ !`git status --porcelain`
253
+ </git-status>
254
+ <recent-commits>
255
+ !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git log "v{}"..HEAD --oneline 2>/dev/null | head -15 || echo "no commits"`
256
+ </recent-commits>
257
+ </current-context>
@@ -0,0 +1,179 @@
1
+ # PROJECT KNOWLEDGE BASE
2
+
3
+ **Generated:** 2026-01-20T17:18:00+09:00
4
+ **Commit:** 3d3d3e49
5
+ **Branch:** dev
6
+
7
+ ## OVERVIEW
8
+
9
+ ClaudeCode plugin implementing multi-model agent orchestration (Claude Opus 4.5, GPT-5.2, Gemini 3, Grok, GLM-4.7). 31 lifecycle hooks, 20+ tools (LSP, AST-Grep, delegation), 10 specialized agents, Claude Code compatibility layer. "oh-my-zsh" for ClaudeCode.
10
+
11
+ ## STRUCTURE
12
+
13
+ ```
14
+ oh-my-opencode/
15
+ ├── src/
16
+ │ ├── agents/ # 10 AI agents (Sisyphus, oracle, librarian, explore, frontend, etc.) - see src/agents/AGENTS.md
17
+ │ ├── hooks/ # 31 lifecycle hooks (PreToolUse, PostToolUse, Stop, etc.) - see src/hooks/AGENTS.md
18
+ │ ├── tools/ # 20+ tools (LSP, AST-Grep, delegation, session) - see src/tools/AGENTS.md
19
+ │ ├── features/ # Background agents, Claude Code compat layer - see src/features/AGENTS.md
20
+ │ ├── shared/ # 43 cross-cutting utilities - see src/shared/AGENTS.md
21
+ │ ├── cli/ # CLI installer, doctor, run - see src/cli/AGENTS.md
22
+ │ ├── mcp/ # Built-in MCPs: websearch, context7, grep_app
23
+ │ ├── config/ # Zod schema, TypeScript types
24
+ │ └── index.ts # Main plugin entry (589 lines)
25
+ ├── script/ # build-schema.ts, publish.ts, build-binaries.ts
26
+ ├── packages/ # 7 platform-specific binaries
27
+ └── dist/ # Build output (ESM + .d.ts)
28
+ ```
29
+
30
+ ## WHERE TO LOOK
31
+
32
+ | Task | Location | Notes |
33
+ |------|----------|-------|
34
+ | Add agent | `src/agents/` | Create .ts with factory, add to `builtinAgents` in index.ts |
35
+ | Add hook | `src/hooks/` | Create dir with `createXXXHook()`, register in index.ts |
36
+ | Add tool | `src/tools/` | Dir with index/types/constants/tools.ts, add to `builtinTools` |
37
+ | Add MCP | `src/mcp/` | Create config, add to index.ts |
38
+ | Add skill | `src/features/builtin-skills/` | Create dir with SKILL.md |
39
+ | LSP behavior | `src/tools/lsp/` | client.ts (connection), tools.ts (handlers) |
40
+ | AST-Grep | `src/tools/ast-grep/` | napi.ts for @ast-grep/napi binding |
41
+ | Config schema | `src/config/schema.ts` | Zod schema, run `bun run build:schema` after changes |
42
+ | Claude Code compat | `src/features/claude-code-*-loader/` | Command, skill, agent, mcp loaders |
43
+ | Background agents | `src/features/background-agent/` | manager.ts (1165 lines) for task lifecycle |
44
+ | Skill MCP | `src/features/skill-mcp-manager/` | MCP servers embedded in skills |
45
+ | CLI installer | `src/cli/install.ts` | Interactive TUI (462 lines) |
46
+ | Doctor checks | `src/cli/doctor/checks/` | 14 health checks across 6 categories |
47
+ | Orchestrator | `src/hooks/atlas/` | Main orchestration hook (771 lines) |
48
+
49
+ ## TDD (Test-Driven Development)
50
+
51
+ **MANDATORY for new features and bug fixes.** Follow RED-GREEN-REFACTOR:
52
+
53
+ | Phase | Action | Verification |
54
+ |-------|--------|--------------|
55
+ | **RED** | Write test describing expected behavior | `bun test` → FAIL (expected) |
56
+ | **GREEN** | Implement minimum code to pass | `bun test` → PASS |
57
+ | **REFACTOR** | Improve code quality, remove duplication | `bun test` → PASS (must stay green) |
58
+
59
+ **Rules:**
60
+ - NEVER write implementation before test
61
+ - NEVER delete failing tests to "pass" - fix the code
62
+ - Test file naming: `*.test.ts` alongside source
63
+ - BDD comments: `#given`, `#when`, `#then` (same as AAA)
64
+
65
+ ## CONVENTIONS
66
+
67
+ - **Package manager**: Bun only (`bun run`, `bun build`, `bunx`)
68
+ - **Types**: bun-types (not @types/node)
69
+ - **Build**: `bun build` (ESM) + `tsc --emitDeclarationOnly`
70
+ - **Exports**: Barrel pattern in index.ts; explicit named exports
71
+ - **Naming**: kebab-case directories, `createXXXHook`/`createXXXTool` factories
72
+ - **Testing**: BDD comments `#given/#when/#then`, 83 test files
73
+ - **Temperature**: 0.1 for code agents, max 0.3
74
+
75
+ ## ANTI-PATTERNS (THIS PROJECT)
76
+
77
+ | Category | Forbidden |
78
+ |----------|-----------|
79
+ | **Package Manager** | npm, yarn - use Bun exclusively |
80
+ | **Types** | @types/node - use bun-types |
81
+ | **File Ops** | mkdir/touch/rm/cp/mv in code - agents use bash tool |
82
+ | **Publishing** | Direct `bun publish` - use GitHub Actions workflow_dispatch |
83
+ | **Versioning** | Local version bump - managed by CI |
84
+ | **Date References** | Year 2024 - use current year |
85
+ | **Type Safety** | `as any`, `@ts-ignore`, `@ts-expect-error` |
86
+ | **Error Handling** | Empty catch blocks `catch(e) {}` |
87
+ | **Testing** | Deleting failing tests to "pass" |
88
+ | **Agent Calls** | Sequential agent calls - use `delegate_task` for parallel |
89
+ | **Tool Access** | Broad tool access - prefer explicit `include` |
90
+ | **Hook Logic** | Heavy PreToolUse computation - slows every tool call |
91
+ | **Commits** | Giant commits (3+ files = 2+ commits), separate test from impl |
92
+ | **Temperature** | >0.3 for code agents |
93
+ | **Trust** | Trust agent self-reports - ALWAYS verify independently |
94
+
95
+ ## UNIQUE STYLES
96
+
97
+ - **Platform**: Union type `"darwin" | "linux" | "win32" | "unsupported"`
98
+ - **Optional props**: Extensive `?` for optional interface properties
99
+ - **Flexible objects**: `Record<string, unknown>` for dynamic configs
100
+ - **Agent tools**: `tools: { include: [...] }` or `tools: { exclude: [...] }`
101
+ - **Hook naming**: `createXXXHook` function convention
102
+ - **Factory pattern**: Components created via `createXXX()` functions
103
+
104
+ ## AGENT MODELS
105
+
106
+ | Agent | Default Model | Purpose |
107
+ |-------|---------------|---------|
108
+ | Sisyphus | anthropic/claude-opus-4-5 | Primary orchestrator with extended thinking |
109
+ | oracle | openai/gpt-5.2 | Read-only consultation, high-IQ debugging |
110
+ | librarian | opencode/glm-4.7-free | Multi-repo analysis, docs, GitHub search |
111
+ | explore | opencode/grok-code | Fast codebase exploration (contextual grep) |
112
+ | multimodal-looker | google/gemini-3-flash | PDF/image analysis |
113
+ | Prometheus (Planner) | anthropic/claude-opus-4-5 | Strategic planning, interview mode |
114
+ | Metis (Plan Consultant) | anthropic/claude-sonnet-4-5 | Pre-planning analysis |
115
+ | Momus (Plan Reviewer) | anthropic/claude-sonnet-4-5 | Plan validation |
116
+
117
+ ## COMMANDS
118
+
119
+ ```bash
120
+ bun run typecheck # Type check
121
+ bun run build # ESM + declarations + schema
122
+ bun run rebuild # Clean + Build
123
+ bun run build:schema # Schema only
124
+ bun test # Run tests (83 test files)
125
+ ```
126
+
127
+ ## DEPLOYMENT
128
+
129
+ **GitHub Actions workflow_dispatch only**
130
+
131
+ 1. Never modify package.json version locally
132
+ 2. Commit & push changes
133
+ 3. Trigger `publish` workflow: `gh workflow run publish -f bump=patch`
134
+
135
+ **Critical**: Never `bun publish` directly. Never bump version locally.
136
+
137
+ ## CI PIPELINE
138
+
139
+ - **ci.yml**: Parallel test/typecheck → build → auto-commit schema on master → rolling `next` draft release
140
+ - **publish.yml**: Manual workflow_dispatch → version bump → changelog → 8-package OIDC npm publish → force-push master
141
+
142
+ ## COMPLEXITY HOTSPOTS
143
+
144
+ | File | Lines | Description |
145
+ |------|-------|-------------|
146
+ | `src/agents/atlas.ts` | 1383 | Orchestrator agent, 7-section delegation, wisdom accumulation |
147
+ | `src/features/builtin-skills/skills.ts` | 1203 | Skill definitions (playwright, git-master, frontend-ui-ux) |
148
+ | `src/agents/prometheus-prompt.ts` | 1196 | Planning agent, interview mode, Momus loop |
149
+ | `src/features/background-agent/manager.ts` | 1165 | Task lifecycle, concurrency, notification batching |
150
+ | `src/hooks/atlas/index.ts` | 771 | Orchestrator hook implementation |
151
+ | `src/tools/delegate-task/tools.ts` | 770 | Category-based task delegation |
152
+ | `src/cli/config-manager.ts` | 616 | JSONC parsing, multi-level config |
153
+ | `src/agents/sisyphus.ts` | 615 | Main Sisyphus prompt |
154
+ | `src/features/builtin-commands/templates/refactor.ts` | 619 | Refactoring command template |
155
+ | `src/tools/lsp/client.ts` | 596 | LSP protocol, JSON-RPC |
156
+
157
+ ## MCP ARCHITECTURE
158
+
159
+ Three-tier MCP system:
160
+ 1. **Built-in**: `websearch` (Exa), `context7` (docs), `grep_app` (GitHub search)
161
+ 2. **Claude Code compatible**: `.mcp.json` files with `${VAR}` expansion
162
+ 3. **Skill-embedded**: YAML frontmatter in skills (e.g., playwright)
163
+
164
+ ## CONFIG SYSTEM
165
+
166
+ - **Zod validation**: `src/config/schema.ts`
167
+ - **JSONC support**: Comments and trailing commas
168
+ - **Multi-level**: Project (`.opencode/`) → User (`~/.config/opencode/`)
169
+ - **CLI doctor**: Validates config and reports errors
170
+
171
+ ## NOTES
172
+
173
+ - **Testing**: Bun native test (`bun test`), BDD-style, 83 test files
174
+ - **ClaudeCode**: Requires >= 1.0.150
175
+ - **Multi-lang docs**: README.md (EN), README.ko.md (KO), README.ja.md (JA), README.zh-cn.md (ZH-CN)
176
+ - **Config**: `~/.config/opencode/oh-my-opencode.json` (user) or `.opencode/oh-my-opencode.json` (project)
177
+ - **Trusted deps**: @ast-grep/cli, @ast-grep/napi, @code-yeongyu/comment-checker
178
+ - **Claude Code Compat**: Full compatibility layer for settings.json hooks, commands, skills, agents, MCPs
179
+ - **Flaky tests**: 2 known flaky tests (ralph-loop CI timeout, session-state parallel pollution)
@@ -0,0 +1,58 @@
1
+ # Contributor License Agreement
2
+
3
+ Thank you for your interest in contributing to oh-my-opencode ("Project"), owned by YeonGyu Kim ("Owner").
4
+
5
+ By signing this Contributor License Agreement ("Agreement"), you agree to the following terms:
6
+
7
+ ## 1. Definitions
8
+
9
+ - **"Contribution"** means any original work of authorship, including any modifications or additions to existing work, that you submit to the Project.
10
+ - **"Submit"** means any form of communication sent to the Project, including but not limited to pull requests, issues, commits, and documentation changes.
11
+
12
+ ## 2. Grant of Rights
13
+
14
+ By submitting a Contribution, you grant the Owner:
15
+
16
+ 1. **Copyright License**: A perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your Contributions and such derivative works.
17
+
18
+ 2. **Patent License**: A perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Contribution.
19
+
20
+ 3. **Relicensing Rights**: The right to relicense the Contribution under any license, including proprietary licenses, without requiring additional permission from you.
21
+
22
+ ## 3. Representations
23
+
24
+ You represent that:
25
+
26
+ 1. You are legally entitled to grant the above licenses.
27
+ 2. Each Contribution is your original creation or you have sufficient rights to submit it.
28
+ 3. Your Contribution does not violate any third party's intellectual property rights.
29
+ 4. If your employer has rights to intellectual property that you create, you have received permission to make Contributions on behalf of that employer.
30
+
31
+ ## 4. No Obligation
32
+
33
+ You understand that:
34
+
35
+ 1. The Owner is not obligated to use or include your Contribution.
36
+ 2. The decision to include any Contribution is at the sole discretion of the Owner.
37
+ 3. You are not entitled to any compensation for your Contributions.
38
+
39
+ ## 5. Future License Changes
40
+
41
+ You acknowledge and agree that:
42
+
43
+ 1. The Project may change its license in the future.
44
+ 2. Your Contributions may be distributed under a different license than the one in effect at the time of your Contribution.
45
+ 3. This includes, but is not limited to, relicensing under source-available or proprietary licenses.
46
+
47
+ ## 6. Miscellaneous
48
+
49
+ - This Agreement is governed by the laws of the Republic of Korea.
50
+ - This Agreement represents the entire agreement between you and the Owner concerning Contributions.
51
+
52
+ ---
53
+
54
+ ## How to Sign
55
+
56
+ By submitting a pull request to this repository, you agree to the terms of this Contributor License Agreement. The CLA Assistant bot will automatically track your agreement.
57
+
58
+ If you have any questions, please open an issue or contact the Owner.