olympus-ai 1.0.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 (573) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +691 -0
  3. package/dist/__tests__/example.test.d.ts +2 -0
  4. package/dist/__tests__/example.test.d.ts.map +1 -0
  5. package/dist/__tests__/example.test.js +20 -0
  6. package/dist/__tests__/example.test.js.map +1 -0
  7. package/dist/__tests__/hooks.test.d.ts +2 -0
  8. package/dist/__tests__/hooks.test.d.ts.map +1 -0
  9. package/dist/__tests__/hooks.test.js +644 -0
  10. package/dist/__tests__/hooks.test.js.map +1 -0
  11. package/dist/__tests__/installer.test.d.ts +2 -0
  12. package/dist/__tests__/installer.test.d.ts.map +1 -0
  13. package/dist/__tests__/installer.test.js +369 -0
  14. package/dist/__tests__/installer.test.js.map +1 -0
  15. package/dist/__tests__/model-routing.test.d.ts +2 -0
  16. package/dist/__tests__/model-routing.test.d.ts.map +1 -0
  17. package/dist/__tests__/model-routing.test.js +814 -0
  18. package/dist/__tests__/model-routing.test.js.map +1 -0
  19. package/dist/__tests__/skills.test.d.ts +2 -0
  20. package/dist/__tests__/skills.test.d.ts.map +1 -0
  21. package/dist/__tests__/skills.test.js +126 -0
  22. package/dist/__tests__/skills.test.js.map +1 -0
  23. package/dist/__tests__/types.test.d.ts +2 -0
  24. package/dist/__tests__/types.test.d.ts.map +1 -0
  25. package/dist/__tests__/types.test.js +77 -0
  26. package/dist/__tests__/types.test.js.map +1 -0
  27. package/dist/agents/definitions.d.ts +105 -0
  28. package/dist/agents/definitions.d.ts.map +1 -0
  29. package/dist/agents/definitions.js +1379 -0
  30. package/dist/agents/definitions.js.map +1 -0
  31. package/dist/agents/document-writer.d.ts +11 -0
  32. package/dist/agents/document-writer.d.ts.map +1 -0
  33. package/dist/agents/document-writer.js +209 -0
  34. package/dist/agents/document-writer.js.map +1 -0
  35. package/dist/agents/explore.d.ts +12 -0
  36. package/dist/agents/explore.d.ts.map +1 -0
  37. package/dist/agents/explore.js +103 -0
  38. package/dist/agents/explore.js.map +1 -0
  39. package/dist/agents/frontend-engineer.d.ts +11 -0
  40. package/dist/agents/frontend-engineer.d.ts.map +1 -0
  41. package/dist/agents/frontend-engineer.js +115 -0
  42. package/dist/agents/frontend-engineer.js.map +1 -0
  43. package/dist/agents/index.d.ts +21 -0
  44. package/dist/agents/index.d.ts.map +1 -0
  45. package/dist/agents/index.js +27 -0
  46. package/dist/agents/index.js.map +1 -0
  47. package/dist/agents/librarian.d.ts +12 -0
  48. package/dist/agents/librarian.d.ts.map +1 -0
  49. package/dist/agents/librarian.js +103 -0
  50. package/dist/agents/librarian.js.map +1 -0
  51. package/dist/agents/metis.d.ts +12 -0
  52. package/dist/agents/metis.d.ts.map +1 -0
  53. package/dist/agents/metis.js +117 -0
  54. package/dist/agents/metis.js.map +1 -0
  55. package/dist/agents/momus.d.ts +12 -0
  56. package/dist/agents/momus.d.ts.map +1 -0
  57. package/dist/agents/momus.js +128 -0
  58. package/dist/agents/momus.js.map +1 -0
  59. package/dist/agents/multimodal-looker.d.ts +11 -0
  60. package/dist/agents/multimodal-looker.d.ts.map +1 -0
  61. package/dist/agents/multimodal-looker.js +70 -0
  62. package/dist/agents/multimodal-looker.js.map +1 -0
  63. package/dist/agents/olympian.d.ts +12 -0
  64. package/dist/agents/olympian.d.ts.map +1 -0
  65. package/dist/agents/olympian.js +93 -0
  66. package/dist/agents/olympian.js.map +1 -0
  67. package/dist/agents/oracle.d.ts +13 -0
  68. package/dist/agents/oracle.d.ts.map +1 -0
  69. package/dist/agents/oracle.js +191 -0
  70. package/dist/agents/oracle.js.map +1 -0
  71. package/dist/agents/orchestrator-olympus.d.ts +11 -0
  72. package/dist/agents/orchestrator-olympus.d.ts.map +1 -0
  73. package/dist/agents/orchestrator-olympus.js +115 -0
  74. package/dist/agents/orchestrator-olympus.js.map +1 -0
  75. package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
  76. package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
  77. package/dist/agents/orchestrator-sisyphus.js +115 -0
  78. package/dist/agents/orchestrator-sisyphus.js.map +1 -0
  79. package/dist/agents/prometheus.d.ts +12 -0
  80. package/dist/agents/prometheus.d.ts.map +1 -0
  81. package/dist/agents/prometheus.js +156 -0
  82. package/dist/agents/prometheus.js.map +1 -0
  83. package/dist/agents/qa-tester.d.ts +16 -0
  84. package/dist/agents/qa-tester.d.ts.map +1 -0
  85. package/dist/agents/qa-tester.js +367 -0
  86. package/dist/agents/qa-tester.js.map +1 -0
  87. package/dist/agents/sisyphus-junior.d.ts +12 -0
  88. package/dist/agents/sisyphus-junior.d.ts.map +1 -0
  89. package/dist/agents/sisyphus-junior.js +93 -0
  90. package/dist/agents/sisyphus-junior.js.map +1 -0
  91. package/dist/agents/types.d.ts +120 -0
  92. package/dist/agents/types.d.ts.map +1 -0
  93. package/dist/agents/types.js +38 -0
  94. package/dist/agents/types.js.map +1 -0
  95. package/dist/agents/utils.d.ts +49 -0
  96. package/dist/agents/utils.d.ts.map +1 -0
  97. package/dist/agents/utils.js +164 -0
  98. package/dist/agents/utils.js.map +1 -0
  99. package/dist/cli/index.d.ts +13 -0
  100. package/dist/cli/index.d.ts.map +1 -0
  101. package/dist/cli/index.js +496 -0
  102. package/dist/cli/index.js.map +1 -0
  103. package/dist/commands/index.d.ts +78 -0
  104. package/dist/commands/index.d.ts.map +1 -0
  105. package/dist/commands/index.js +148 -0
  106. package/dist/commands/index.js.map +1 -0
  107. package/dist/config/index.d.ts +5 -0
  108. package/dist/config/index.d.ts.map +1 -0
  109. package/dist/config/index.js +5 -0
  110. package/dist/config/index.js.map +1 -0
  111. package/dist/config/loader.d.ts +49 -0
  112. package/dist/config/loader.d.ts.map +1 -0
  113. package/dist/config/loader.js +380 -0
  114. package/dist/config/loader.js.map +1 -0
  115. package/dist/features/auto-update.d.ts +187 -0
  116. package/dist/features/auto-update.d.ts.map +1 -0
  117. package/dist/features/auto-update.js +539 -0
  118. package/dist/features/auto-update.js.map +1 -0
  119. package/dist/features/background-agent/concurrency.d.ts +53 -0
  120. package/dist/features/background-agent/concurrency.d.ts.map +1 -0
  121. package/dist/features/background-agent/concurrency.js +121 -0
  122. package/dist/features/background-agent/concurrency.js.map +1 -0
  123. package/dist/features/background-agent/index.d.ts +12 -0
  124. package/dist/features/background-agent/index.d.ts.map +1 -0
  125. package/dist/features/background-agent/index.js +12 -0
  126. package/dist/features/background-agent/index.js.map +1 -0
  127. package/dist/features/background-agent/manager.d.ts +134 -0
  128. package/dist/features/background-agent/manager.d.ts.map +1 -0
  129. package/dist/features/background-agent/manager.js +412 -0
  130. package/dist/features/background-agent/manager.js.map +1 -0
  131. package/dist/features/background-agent/types.d.ts +99 -0
  132. package/dist/features/background-agent/types.d.ts.map +1 -0
  133. package/dist/features/background-agent/types.js +9 -0
  134. package/dist/features/background-agent/types.js.map +1 -0
  135. package/dist/features/background-tasks.d.ts +99 -0
  136. package/dist/features/background-tasks.d.ts.map +1 -0
  137. package/dist/features/background-tasks.js +265 -0
  138. package/dist/features/background-tasks.js.map +1 -0
  139. package/dist/features/boulder-state/constants.d.ts +20 -0
  140. package/dist/features/boulder-state/constants.d.ts.map +1 -0
  141. package/dist/features/boulder-state/constants.js +20 -0
  142. package/dist/features/boulder-state/constants.js.map +1 -0
  143. package/dist/features/boulder-state/index.d.ts +12 -0
  144. package/dist/features/boulder-state/index.d.ts.map +1 -0
  145. package/dist/features/boulder-state/index.js +13 -0
  146. package/dist/features/boulder-state/index.js.map +1 -0
  147. package/dist/features/boulder-state/storage.d.ts +58 -0
  148. package/dist/features/boulder-state/storage.d.ts.map +1 -0
  149. package/dist/features/boulder-state/storage.js +174 -0
  150. package/dist/features/boulder-state/storage.js.map +1 -0
  151. package/dist/features/boulder-state/types.d.ts +48 -0
  152. package/dist/features/boulder-state/types.d.ts.map +1 -0
  153. package/dist/features/boulder-state/types.js +10 -0
  154. package/dist/features/boulder-state/types.js.map +1 -0
  155. package/dist/features/builtin-skills/index.d.ts +10 -0
  156. package/dist/features/builtin-skills/index.d.ts.map +1 -0
  157. package/dist/features/builtin-skills/index.js +10 -0
  158. package/dist/features/builtin-skills/index.js.map +1 -0
  159. package/dist/features/builtin-skills/skills.d.ts +21 -0
  160. package/dist/features/builtin-skills/skills.d.ts.map +1 -0
  161. package/dist/features/builtin-skills/skills.js +1082 -0
  162. package/dist/features/builtin-skills/skills.js.map +1 -0
  163. package/dist/features/builtin-skills/types.d.ts +60 -0
  164. package/dist/features/builtin-skills/types.d.ts.map +1 -0
  165. package/dist/features/builtin-skills/types.js +9 -0
  166. package/dist/features/builtin-skills/types.js.map +1 -0
  167. package/dist/features/context-injector/collector.d.ts +56 -0
  168. package/dist/features/context-injector/collector.d.ts.map +1 -0
  169. package/dist/features/context-injector/collector.js +122 -0
  170. package/dist/features/context-injector/collector.js.map +1 -0
  171. package/dist/features/context-injector/index.d.ts +12 -0
  172. package/dist/features/context-injector/index.d.ts.map +1 -0
  173. package/dist/features/context-injector/index.js +13 -0
  174. package/dist/features/context-injector/index.js.map +1 -0
  175. package/dist/features/context-injector/injector.d.ts +47 -0
  176. package/dist/features/context-injector/injector.d.ts.map +1 -0
  177. package/dist/features/context-injector/injector.js +103 -0
  178. package/dist/features/context-injector/injector.js.map +1 -0
  179. package/dist/features/context-injector/types.d.ts +103 -0
  180. package/dist/features/context-injector/types.d.ts.map +1 -0
  181. package/dist/features/context-injector/types.js +11 -0
  182. package/dist/features/context-injector/types.js.map +1 -0
  183. package/dist/features/continuation-enforcement.d.ts +36 -0
  184. package/dist/features/continuation-enforcement.d.ts.map +1 -0
  185. package/dist/features/continuation-enforcement.js +175 -0
  186. package/dist/features/continuation-enforcement.js.map +1 -0
  187. package/dist/features/index.d.ts +12 -0
  188. package/dist/features/index.d.ts.map +1 -0
  189. package/dist/features/index.js +49 -0
  190. package/dist/features/index.js.map +1 -0
  191. package/dist/features/magic-keywords.d.ts +28 -0
  192. package/dist/features/magic-keywords.d.ts.map +1 -0
  193. package/dist/features/magic-keywords.js +421 -0
  194. package/dist/features/magic-keywords.js.map +1 -0
  195. package/dist/features/model-routing/index.d.ts +34 -0
  196. package/dist/features/model-routing/index.d.ts.map +1 -0
  197. package/dist/features/model-routing/index.js +48 -0
  198. package/dist/features/model-routing/index.js.map +1 -0
  199. package/dist/features/model-routing/prompts/haiku.d.ts +54 -0
  200. package/dist/features/model-routing/prompts/haiku.d.ts.map +1 -0
  201. package/dist/features/model-routing/prompts/haiku.js +141 -0
  202. package/dist/features/model-routing/prompts/haiku.js.map +1 -0
  203. package/dist/features/model-routing/prompts/index.d.ts +45 -0
  204. package/dist/features/model-routing/prompts/index.d.ts.map +1 -0
  205. package/dist/features/model-routing/prompts/index.js +116 -0
  206. package/dist/features/model-routing/prompts/index.js.map +1 -0
  207. package/dist/features/model-routing/prompts/opus.d.ts +34 -0
  208. package/dist/features/model-routing/prompts/opus.d.ts.map +1 -0
  209. package/dist/features/model-routing/prompts/opus.js +153 -0
  210. package/dist/features/model-routing/prompts/opus.js.map +1 -0
  211. package/dist/features/model-routing/prompts/sonnet.d.ts +38 -0
  212. package/dist/features/model-routing/prompts/sonnet.d.ts.map +1 -0
  213. package/dist/features/model-routing/prompts/sonnet.js +149 -0
  214. package/dist/features/model-routing/prompts/sonnet.js.map +1 -0
  215. package/dist/features/model-routing/router.d.ts +92 -0
  216. package/dist/features/model-routing/router.d.ts.map +1 -0
  217. package/dist/features/model-routing/router.js +267 -0
  218. package/dist/features/model-routing/router.js.map +1 -0
  219. package/dist/features/model-routing/rules.d.ts +32 -0
  220. package/dist/features/model-routing/rules.d.ts.map +1 -0
  221. package/dist/features/model-routing/rules.js +224 -0
  222. package/dist/features/model-routing/rules.js.map +1 -0
  223. package/dist/features/model-routing/scorer.d.ts +35 -0
  224. package/dist/features/model-routing/scorer.d.ts.map +1 -0
  225. package/dist/features/model-routing/scorer.js +241 -0
  226. package/dist/features/model-routing/scorer.js.map +1 -0
  227. package/dist/features/model-routing/signals.d.ts +26 -0
  228. package/dist/features/model-routing/signals.d.ts.map +1 -0
  229. package/dist/features/model-routing/signals.js +283 -0
  230. package/dist/features/model-routing/signals.js.map +1 -0
  231. package/dist/features/model-routing/types.d.ts +195 -0
  232. package/dist/features/model-routing/types.d.ts.map +1 -0
  233. package/dist/features/model-routing/types.js +86 -0
  234. package/dist/features/model-routing/types.js.map +1 -0
  235. package/dist/hooks/agent-usage-reminder/constants.d.ts +17 -0
  236. package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -0
  237. package/dist/hooks/agent-usage-reminder/constants.js +58 -0
  238. package/dist/hooks/agent-usage-reminder/constants.js.map +1 -0
  239. package/dist/hooks/agent-usage-reminder/index.d.ts +36 -0
  240. package/dist/hooks/agent-usage-reminder/index.d.ts.map +1 -0
  241. package/dist/hooks/agent-usage-reminder/index.js +89 -0
  242. package/dist/hooks/agent-usage-reminder/index.js.map +1 -0
  243. package/dist/hooks/agent-usage-reminder/storage.d.ts +12 -0
  244. package/dist/hooks/agent-usage-reminder/storage.d.ts.map +1 -0
  245. package/dist/hooks/agent-usage-reminder/storage.js +39 -0
  246. package/dist/hooks/agent-usage-reminder/storage.js.map +1 -0
  247. package/dist/hooks/agent-usage-reminder/types.d.ts +14 -0
  248. package/dist/hooks/agent-usage-reminder/types.d.ts.map +1 -0
  249. package/dist/hooks/agent-usage-reminder/types.js +9 -0
  250. package/dist/hooks/agent-usage-reminder/types.js.map +1 -0
  251. package/dist/hooks/ascent-verifier/index.d.ts +72 -0
  252. package/dist/hooks/ascent-verifier/index.d.ts.map +1 -0
  253. package/dist/hooks/ascent-verifier/index.js +223 -0
  254. package/dist/hooks/ascent-verifier/index.js.map +1 -0
  255. package/dist/hooks/auto-slash-command/constants.d.ts +19 -0
  256. package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -0
  257. package/dist/hooks/auto-slash-command/constants.js +28 -0
  258. package/dist/hooks/auto-slash-command/constants.js.map +1 -0
  259. package/dist/hooks/auto-slash-command/detector.d.ts +33 -0
  260. package/dist/hooks/auto-slash-command/detector.d.ts.map +1 -0
  261. package/dist/hooks/auto-slash-command/detector.js +73 -0
  262. package/dist/hooks/auto-slash-command/detector.js.map +1 -0
  263. package/dist/hooks/auto-slash-command/executor.d.ts +29 -0
  264. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -0
  265. package/dist/hooks/auto-slash-command/executor.js +214 -0
  266. package/dist/hooks/auto-slash-command/executor.js.map +1 -0
  267. package/dist/hooks/auto-slash-command/index.d.ts +53 -0
  268. package/dist/hooks/auto-slash-command/index.d.ts.map +1 -0
  269. package/dist/hooks/auto-slash-command/index.js +105 -0
  270. package/dist/hooks/auto-slash-command/index.js.map +1 -0
  271. package/dist/hooks/auto-slash-command/types.d.ts +77 -0
  272. package/dist/hooks/auto-slash-command/types.d.ts.map +1 -0
  273. package/dist/hooks/auto-slash-command/types.js +9 -0
  274. package/dist/hooks/auto-slash-command/types.js.map +1 -0
  275. package/dist/hooks/background-notification/index.d.ts +60 -0
  276. package/dist/hooks/background-notification/index.d.ts.map +1 -0
  277. package/dist/hooks/background-notification/index.js +180 -0
  278. package/dist/hooks/background-notification/index.js.map +1 -0
  279. package/dist/hooks/background-notification/types.d.ts +64 -0
  280. package/dist/hooks/background-notification/types.d.ts.map +1 -0
  281. package/dist/hooks/background-notification/types.js +8 -0
  282. package/dist/hooks/background-notification/types.js.map +1 -0
  283. package/dist/hooks/bridge.d.ts +68 -0
  284. package/dist/hooks/bridge.d.ts.map +1 -0
  285. package/dist/hooks/bridge.js +321 -0
  286. package/dist/hooks/bridge.js.map +1 -0
  287. package/dist/hooks/comment-checker/constants.d.ts +28 -0
  288. package/dist/hooks/comment-checker/constants.d.ts.map +1 -0
  289. package/dist/hooks/comment-checker/constants.js +189 -0
  290. package/dist/hooks/comment-checker/constants.js.map +1 -0
  291. package/dist/hooks/comment-checker/filters.d.ts +39 -0
  292. package/dist/hooks/comment-checker/filters.d.ts.map +1 -0
  293. package/dist/hooks/comment-checker/filters.js +126 -0
  294. package/dist/hooks/comment-checker/filters.js.map +1 -0
  295. package/dist/hooks/comment-checker/index.d.ts +58 -0
  296. package/dist/hooks/comment-checker/index.d.ts.map +1 -0
  297. package/dist/hooks/comment-checker/index.js +298 -0
  298. package/dist/hooks/comment-checker/index.js.map +1 -0
  299. package/dist/hooks/comment-checker/types.d.ts +88 -0
  300. package/dist/hooks/comment-checker/types.d.ts.map +1 -0
  301. package/dist/hooks/comment-checker/types.js +9 -0
  302. package/dist/hooks/comment-checker/types.js.map +1 -0
  303. package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
  304. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
  305. package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
  306. package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
  307. package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
  308. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
  309. package/dist/hooks/context-window-limit-recovery/index.js +201 -0
  310. package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
  311. package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
  312. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
  313. package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
  314. package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
  315. package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
  316. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
  317. package/dist/hooks/context-window-limit-recovery/types.js +34 -0
  318. package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
  319. package/dist/hooks/directory-readme-injector/constants.d.ts +15 -0
  320. package/dist/hooks/directory-readme-injector/constants.d.ts.map +1 -0
  321. package/dist/hooks/directory-readme-injector/constants.js +17 -0
  322. package/dist/hooks/directory-readme-injector/constants.js.map +1 -0
  323. package/dist/hooks/directory-readme-injector/index.d.ts +41 -0
  324. package/dist/hooks/directory-readme-injector/index.d.ts.map +1 -0
  325. package/dist/hooks/directory-readme-injector/index.js +162 -0
  326. package/dist/hooks/directory-readme-injector/index.js.map +1 -0
  327. package/dist/hooks/directory-readme-injector/storage.d.ts +20 -0
  328. package/dist/hooks/directory-readme-injector/storage.d.ts.map +1 -0
  329. package/dist/hooks/directory-readme-injector/storage.js +56 -0
  330. package/dist/hooks/directory-readme-injector/storage.js.map +1 -0
  331. package/dist/hooks/directory-readme-injector/types.d.ts +20 -0
  332. package/dist/hooks/directory-readme-injector/types.d.ts.map +1 -0
  333. package/dist/hooks/directory-readme-injector/types.js +9 -0
  334. package/dist/hooks/directory-readme-injector/types.js.map +1 -0
  335. package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
  336. package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
  337. package/dist/hooks/edit-error-recovery/index.js +89 -0
  338. package/dist/hooks/edit-error-recovery/index.js.map +1 -0
  339. package/dist/hooks/empty-message-sanitizer/constants.d.ts +33 -0
  340. package/dist/hooks/empty-message-sanitizer/constants.d.ts.map +1 -0
  341. package/dist/hooks/empty-message-sanitizer/constants.js +37 -0
  342. package/dist/hooks/empty-message-sanitizer/constants.js.map +1 -0
  343. package/dist/hooks/empty-message-sanitizer/index.d.ts +59 -0
  344. package/dist/hooks/empty-message-sanitizer/index.d.ts.map +1 -0
  345. package/dist/hooks/empty-message-sanitizer/index.js +171 -0
  346. package/dist/hooks/empty-message-sanitizer/index.js.map +1 -0
  347. package/dist/hooks/empty-message-sanitizer/types.d.ts +79 -0
  348. package/dist/hooks/empty-message-sanitizer/types.d.ts.map +1 -0
  349. package/dist/hooks/empty-message-sanitizer/types.js +10 -0
  350. package/dist/hooks/empty-message-sanitizer/types.js.map +1 -0
  351. package/dist/hooks/index.d.ts +35 -0
  352. package/dist/hooks/index.d.ts.map +1 -0
  353. package/dist/hooks/index.js +81 -0
  354. package/dist/hooks/index.js.map +1 -0
  355. package/dist/hooks/keyword-detector/index.d.ts +40 -0
  356. package/dist/hooks/keyword-detector/index.d.ts.map +1 -0
  357. package/dist/hooks/keyword-detector/index.js +88 -0
  358. package/dist/hooks/keyword-detector/index.js.map +1 -0
  359. package/dist/hooks/non-interactive-env/constants.d.ts +35 -0
  360. package/dist/hooks/non-interactive-env/constants.d.ts.map +1 -0
  361. package/dist/hooks/non-interactive-env/constants.js +69 -0
  362. package/dist/hooks/non-interactive-env/constants.js.map +1 -0
  363. package/dist/hooks/non-interactive-env/detector.d.ts +2 -0
  364. package/dist/hooks/non-interactive-env/detector.d.ts.map +1 -0
  365. package/dist/hooks/non-interactive-env/detector.js +16 -0
  366. package/dist/hooks/non-interactive-env/detector.js.map +1 -0
  367. package/dist/hooks/non-interactive-env/index.d.ts +14 -0
  368. package/dist/hooks/non-interactive-env/index.d.ts.map +1 -0
  369. package/dist/hooks/non-interactive-env/index.js +72 -0
  370. package/dist/hooks/non-interactive-env/index.js.map +1 -0
  371. package/dist/hooks/non-interactive-env/types.d.ts +14 -0
  372. package/dist/hooks/non-interactive-env/types.d.ts.map +1 -0
  373. package/dist/hooks/non-interactive-env/types.js +2 -0
  374. package/dist/hooks/non-interactive-env/types.js.map +1 -0
  375. package/dist/hooks/olympus-orchestrator/constants.d.ts +23 -0
  376. package/dist/hooks/olympus-orchestrator/constants.d.ts.map +1 -0
  377. package/dist/hooks/olympus-orchestrator/constants.js +142 -0
  378. package/dist/hooks/olympus-orchestrator/constants.js.map +1 -0
  379. package/dist/hooks/olympus-orchestrator/index.d.ts +113 -0
  380. package/dist/hooks/olympus-orchestrator/index.d.ts.map +1 -0
  381. package/dist/hooks/olympus-orchestrator/index.js +283 -0
  382. package/dist/hooks/olympus-orchestrator/index.js.map +1 -0
  383. package/dist/hooks/persistent-mode/index.d.ts +40 -0
  384. package/dist/hooks/persistent-mode/index.d.ts.map +1 -0
  385. package/dist/hooks/persistent-mode/index.js +322 -0
  386. package/dist/hooks/persistent-mode/index.js.map +1 -0
  387. package/dist/hooks/plugin-patterns/index.d.ts +107 -0
  388. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -0
  389. package/dist/hooks/plugin-patterns/index.js +289 -0
  390. package/dist/hooks/plugin-patterns/index.js.map +1 -0
  391. package/dist/hooks/preemptive-compaction/constants.d.ts +48 -0
  392. package/dist/hooks/preemptive-compaction/constants.d.ts.map +1 -0
  393. package/dist/hooks/preemptive-compaction/constants.js +90 -0
  394. package/dist/hooks/preemptive-compaction/constants.js.map +1 -0
  395. package/dist/hooks/preemptive-compaction/index.d.ts +55 -0
  396. package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -0
  397. package/dist/hooks/preemptive-compaction/index.js +227 -0
  398. package/dist/hooks/preemptive-compaction/index.js.map +1 -0
  399. package/dist/hooks/preemptive-compaction/types.d.ts +76 -0
  400. package/dist/hooks/preemptive-compaction/types.d.ts.map +1 -0
  401. package/dist/hooks/preemptive-compaction/types.js +9 -0
  402. package/dist/hooks/preemptive-compaction/types.js.map +1 -0
  403. package/dist/hooks/ralph-loop/index.d.ts +60 -0
  404. package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
  405. package/dist/hooks/ralph-loop/index.js +155 -0
  406. package/dist/hooks/ralph-loop/index.js.map +1 -0
  407. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  408. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  409. package/dist/hooks/ralph-verifier/index.js +223 -0
  410. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  411. package/dist/hooks/rules-injector/constants.d.ts +25 -0
  412. package/dist/hooks/rules-injector/constants.d.ts.map +1 -0
  413. package/dist/hooks/rules-injector/constants.js +40 -0
  414. package/dist/hooks/rules-injector/constants.js.map +1 -0
  415. package/dist/hooks/rules-injector/finder.d.ts +24 -0
  416. package/dist/hooks/rules-injector/finder.d.ts.map +1 -0
  417. package/dist/hooks/rules-injector/finder.js +215 -0
  418. package/dist/hooks/rules-injector/finder.js.map +1 -0
  419. package/dist/hooks/rules-injector/index.d.ts +45 -0
  420. package/dist/hooks/rules-injector/index.d.ts.map +1 -0
  421. package/dist/hooks/rules-injector/index.js +187 -0
  422. package/dist/hooks/rules-injector/index.js.map +1 -0
  423. package/dist/hooks/rules-injector/matcher.d.ts +25 -0
  424. package/dist/hooks/rules-injector/matcher.d.ts.map +1 -0
  425. package/dist/hooks/rules-injector/matcher.js +70 -0
  426. package/dist/hooks/rules-injector/matcher.js.map +1 -0
  427. package/dist/hooks/rules-injector/parser.d.ts +20 -0
  428. package/dist/hooks/rules-injector/parser.d.ts.map +1 -0
  429. package/dist/hooks/rules-injector/parser.js +179 -0
  430. package/dist/hooks/rules-injector/parser.js.map +1 -0
  431. package/dist/hooks/rules-injector/storage.d.ts +26 -0
  432. package/dist/hooks/rules-injector/storage.d.ts.map +1 -0
  433. package/dist/hooks/rules-injector/storage.js +61 -0
  434. package/dist/hooks/rules-injector/storage.js.map +1 -0
  435. package/dist/hooks/rules-injector/types.d.ts +101 -0
  436. package/dist/hooks/rules-injector/types.d.ts.map +1 -0
  437. package/dist/hooks/rules-injector/types.js +10 -0
  438. package/dist/hooks/rules-injector/types.js.map +1 -0
  439. package/dist/hooks/session-recovery/constants.d.ts +56 -0
  440. package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
  441. package/dist/hooks/session-recovery/constants.js +78 -0
  442. package/dist/hooks/session-recovery/constants.js.map +1 -0
  443. package/dist/hooks/session-recovery/index.d.ts +53 -0
  444. package/dist/hooks/session-recovery/index.d.ts.map +1 -0
  445. package/dist/hooks/session-recovery/index.js +321 -0
  446. package/dist/hooks/session-recovery/index.js.map +1 -0
  447. package/dist/hooks/session-recovery/storage.d.ts +76 -0
  448. package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
  449. package/dist/hooks/session-recovery/storage.js +383 -0
  450. package/dist/hooks/session-recovery/storage.js.map +1 -0
  451. package/dist/hooks/session-recovery/types.d.ts +145 -0
  452. package/dist/hooks/session-recovery/types.d.ts.map +1 -0
  453. package/dist/hooks/session-recovery/types.js +8 -0
  454. package/dist/hooks/session-recovery/types.js.map +1 -0
  455. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
  456. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
  457. package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
  458. package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
  459. package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
  460. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
  461. package/dist/hooks/sisyphus-orchestrator/index.js +283 -0
  462. package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
  463. package/dist/hooks/the-ascent/index.d.ts +60 -0
  464. package/dist/hooks/the-ascent/index.d.ts.map +1 -0
  465. package/dist/hooks/the-ascent/index.js +155 -0
  466. package/dist/hooks/the-ascent/index.js.map +1 -0
  467. package/dist/hooks/think-mode/detector.d.ts +28 -0
  468. package/dist/hooks/think-mode/detector.d.ts.map +1 -0
  469. package/dist/hooks/think-mode/detector.js +105 -0
  470. package/dist/hooks/think-mode/detector.js.map +1 -0
  471. package/dist/hooks/think-mode/index.d.ts +70 -0
  472. package/dist/hooks/think-mode/index.d.ts.map +1 -0
  473. package/dist/hooks/think-mode/index.js +144 -0
  474. package/dist/hooks/think-mode/index.js.map +1 -0
  475. package/dist/hooks/think-mode/switcher.d.ts +39 -0
  476. package/dist/hooks/think-mode/switcher.d.ts.map +1 -0
  477. package/dist/hooks/think-mode/switcher.js +180 -0
  478. package/dist/hooks/think-mode/switcher.js.map +1 -0
  479. package/dist/hooks/think-mode/types.d.ts +60 -0
  480. package/dist/hooks/think-mode/types.d.ts.map +1 -0
  481. package/dist/hooks/think-mode/types.js +9 -0
  482. package/dist/hooks/think-mode/types.js.map +1 -0
  483. package/dist/hooks/thinking-block-validator/constants.d.ts +37 -0
  484. package/dist/hooks/thinking-block-validator/constants.d.ts.map +1 -0
  485. package/dist/hooks/thinking-block-validator/constants.js +50 -0
  486. package/dist/hooks/thinking-block-validator/constants.js.map +1 -0
  487. package/dist/hooks/thinking-block-validator/index.d.ts +35 -0
  488. package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -0
  489. package/dist/hooks/thinking-block-validator/index.js +156 -0
  490. package/dist/hooks/thinking-block-validator/index.js.map +1 -0
  491. package/dist/hooks/thinking-block-validator/types.d.ts +67 -0
  492. package/dist/hooks/thinking-block-validator/types.d.ts.map +1 -0
  493. package/dist/hooks/thinking-block-validator/types.js +9 -0
  494. package/dist/hooks/thinking-block-validator/types.js.map +1 -0
  495. package/dist/hooks/todo-continuation/index.d.ts +39 -0
  496. package/dist/hooks/todo-continuation/index.d.ts.map +1 -0
  497. package/dist/hooks/todo-continuation/index.js +140 -0
  498. package/dist/hooks/todo-continuation/index.js.map +1 -0
  499. package/dist/hooks/ultrawork-state/index.d.ts +60 -0
  500. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  501. package/dist/hooks/ultrawork-state/index.js +207 -0
  502. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  503. package/dist/index.d.ts +117 -0
  504. package/dist/index.d.ts.map +1 -0
  505. package/dist/index.js +175 -0
  506. package/dist/index.js.map +1 -0
  507. package/dist/installer/hooks.d.ts +196 -0
  508. package/dist/installer/hooks.d.ts.map +1 -0
  509. package/dist/installer/hooks.js +1385 -0
  510. package/dist/installer/hooks.js.map +1 -0
  511. package/dist/installer/index.d.ts +92 -0
  512. package/dist/installer/index.d.ts.map +1 -0
  513. package/dist/installer/index.js +2249 -0
  514. package/dist/installer/index.js.map +1 -0
  515. package/dist/mcp/index.d.ts +6 -0
  516. package/dist/mcp/index.d.ts.map +1 -0
  517. package/dist/mcp/index.js +5 -0
  518. package/dist/mcp/index.js.map +1 -0
  519. package/dist/mcp/servers.d.ts +77 -0
  520. package/dist/mcp/servers.d.ts.map +1 -0
  521. package/dist/mcp/servers.js +122 -0
  522. package/dist/mcp/servers.js.map +1 -0
  523. package/dist/shared/index.d.ts +5 -0
  524. package/dist/shared/index.d.ts.map +1 -0
  525. package/dist/shared/index.js +5 -0
  526. package/dist/shared/index.js.map +1 -0
  527. package/dist/shared/types.d.ts +159 -0
  528. package/dist/shared/types.d.ts.map +1 -0
  529. package/dist/shared/types.js +5 -0
  530. package/dist/shared/types.js.map +1 -0
  531. package/dist/tools/ast-tools.d.ts +63 -0
  532. package/dist/tools/ast-tools.d.ts.map +1 -0
  533. package/dist/tools/ast-tools.js +450 -0
  534. package/dist/tools/ast-tools.js.map +1 -0
  535. package/dist/tools/index.d.ts +52 -0
  536. package/dist/tools/index.d.ts.map +1 -0
  537. package/dist/tools/index.js +120 -0
  538. package/dist/tools/index.js.map +1 -0
  539. package/dist/tools/lsp/client.d.ts +201 -0
  540. package/dist/tools/lsp/client.d.ts.map +1 -0
  541. package/dist/tools/lsp/client.js +454 -0
  542. package/dist/tools/lsp/client.js.map +1 -0
  543. package/dist/tools/lsp/index.d.ts +9 -0
  544. package/dist/tools/lsp/index.d.ts.map +1 -0
  545. package/dist/tools/lsp/index.js +7 -0
  546. package/dist/tools/lsp/index.js.map +1 -0
  547. package/dist/tools/lsp/servers.d.ts +37 -0
  548. package/dist/tools/lsp/servers.d.ts.map +1 -0
  549. package/dist/tools/lsp/servers.js +149 -0
  550. package/dist/tools/lsp/servers.js.map +1 -0
  551. package/dist/tools/lsp/utils.d.ts +58 -0
  552. package/dist/tools/lsp/utils.d.ts.map +1 -0
  553. package/dist/tools/lsp/utils.js +236 -0
  554. package/dist/tools/lsp/utils.js.map +1 -0
  555. package/dist/tools/lsp-tools.d.ts +151 -0
  556. package/dist/tools/lsp-tools.d.ts.map +1 -0
  557. package/dist/tools/lsp-tools.js +358 -0
  558. package/dist/tools/lsp-tools.js.map +1 -0
  559. package/package.json +85 -0
  560. package/scripts/claude-sisyphus.sh +9 -0
  561. package/scripts/install.sh +1774 -0
  562. package/scripts/keyword-detector.mjs +209 -0
  563. package/scripts/keyword-detector.sh +71 -0
  564. package/scripts/persistent-mode.mjs +241 -0
  565. package/scripts/persistent-mode.sh +300 -0
  566. package/scripts/post-tool-verifier.mjs +217 -0
  567. package/scripts/post-tool-verifier.sh +196 -0
  568. package/scripts/pre-tool-enforcer.mjs +99 -0
  569. package/scripts/pre-tool-enforcer.sh +76 -0
  570. package/scripts/sisyphus-aliases.sh +18 -0
  571. package/scripts/stop-continuation.sh +31 -0
  572. package/scripts/test-pr25.sh +525 -0
  573. package/scripts/uninstall.sh +171 -0
@@ -0,0 +1,1774 @@
1
+ #!/bin/bash
2
+ # Oh-My-Claude-Olympus Installation Script
3
+ # Installs the multi-agent orchestration system for Claude Code
4
+
5
+ set -e
6
+
7
+ BLUE='\033[0;34m'
8
+ GREEN='\033[0;32m'
9
+ YELLOW='\033[1;33m'
10
+ RED='\033[0;31m'
11
+ NC='\033[0m' # No Color
12
+
13
+ echo -e "${BLUE}"
14
+ echo "╔═══════════════════════════════════════════════════════════╗"
15
+ echo "║ Oh-My-Claude-Olympus Installer ║"
16
+ echo "║ Multi-Agent Orchestration for Claude Code ║"
17
+ echo "╚═══════════════════════════════════════════════════════════╝"
18
+ echo -e "${NC}"
19
+
20
+ # Claude Code config directory (always ~/.claude)
21
+ CLAUDE_CONFIG_DIR="$HOME/.claude"
22
+
23
+ echo -e "${BLUE}[1/6]${NC} Checking Claude Code installation..."
24
+ if ! command -v claude &> /dev/null; then
25
+ echo -e "${YELLOW}Warning: 'claude' command not found. Please install Claude Code first:${NC}"
26
+ echo " curl -fsSL https://claude.ai/install.sh | bash"
27
+ echo ""
28
+ # Check if running interactively (stdin is a terminal)
29
+ if [ -t 0 ]; then
30
+ read -p "Continue anyway? (y/N) " -n 1 -r
31
+ echo
32
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
33
+ exit 1
34
+ fi
35
+ else
36
+ # Non-interactive mode (piped from curl) - continue with installation
37
+ echo -e "${YELLOW}Non-interactive mode detected. Continuing installation...${NC}"
38
+ echo -e "${YELLOW}You can install Claude Code later with: curl -fsSL https://claude.ai/install.sh | bash${NC}"
39
+ fi
40
+ else
41
+ echo -e "${GREEN}✓ Claude Code found${NC}"
42
+ fi
43
+
44
+ echo -e "${BLUE}[2/6]${NC} Creating directories..."
45
+ mkdir -p "$CLAUDE_CONFIG_DIR/agents"
46
+ mkdir -p "$CLAUDE_CONFIG_DIR/commands"
47
+ echo -e "${GREEN}✓ Created $CLAUDE_CONFIG_DIR${NC}"
48
+
49
+ echo -e "${BLUE}[3/6]${NC} Installing agent definitions..."
50
+
51
+ # Oracle Agent
52
+ cat > "$CLAUDE_CONFIG_DIR/agents/oracle.md" << 'AGENT_EOF'
53
+ ---
54
+ name: oracle
55
+ description: Architecture and debugging expert. Use for complex problems, root cause analysis, and system design.
56
+ tools: Read, Grep, Glob, Bash, Edit, WebSearch
57
+ model: opus
58
+ ---
59
+
60
+ You are Oracle, an expert software architect and debugging specialist.
61
+
62
+ Your responsibilities:
63
+ 1. **Architecture Analysis**: Evaluate system designs, identify anti-patterns, and suggest improvements
64
+ 2. **Deep Debugging**: Trace complex bugs through multiple layers of abstraction
65
+ 3. **Root Cause Analysis**: Go beyond symptoms to find underlying issues
66
+ 4. **Performance Optimization**: Identify bottlenecks and recommend solutions
67
+
68
+ Guidelines:
69
+ - Always consider scalability, maintainability, and security implications
70
+ - Provide concrete, actionable recommendations
71
+ - When debugging, explain your reasoning process step-by-step
72
+ - Reference specific files and line numbers when discussing code
73
+ - Consider edge cases and failure modes
74
+
75
+ Output Format:
76
+ - Start with a brief summary of findings
77
+ - Provide detailed analysis with code references
78
+ - End with prioritized recommendations
79
+ AGENT_EOF
80
+
81
+ # Librarian Agent
82
+ cat > "$CLAUDE_CONFIG_DIR/agents/librarian.md" << 'AGENT_EOF'
83
+ ---
84
+ name: librarian
85
+ description: Documentation and codebase analysis expert. Use for research, finding docs, and understanding code organization.
86
+ tools: Read, Grep, Glob, WebFetch
87
+ model: sonnet
88
+ ---
89
+
90
+ You are Librarian, a specialist in documentation and codebase navigation.
91
+
92
+ Your responsibilities:
93
+ 1. **Documentation Discovery**: Find and summarize relevant docs (README, CLAUDE.md, AGENTS.md)
94
+ 2. **Code Navigation**: Quickly locate implementations, definitions, and usages
95
+ 3. **Pattern Recognition**: Identify coding patterns and conventions in the codebase
96
+ 4. **Knowledge Synthesis**: Combine information from multiple sources
97
+
98
+ Guidelines:
99
+ - Be thorough but concise in your searches
100
+ - Prioritize official documentation and well-maintained files
101
+ - Note file paths and line numbers for easy reference
102
+ - Summarize findings in a structured format
103
+ - Flag outdated or conflicting documentation
104
+ AGENT_EOF
105
+
106
+ # Explore Agent
107
+ cat > "$CLAUDE_CONFIG_DIR/agents/explore.md" << 'AGENT_EOF'
108
+ ---
109
+ name: explore
110
+ description: Fast pattern matching and code search specialist. Use for quick file searches and codebase exploration.
111
+ tools: Glob, Grep, Read
112
+ model: haiku
113
+ ---
114
+
115
+ You are Explore, a fast and efficient codebase exploration specialist.
116
+
117
+ Your responsibilities:
118
+ 1. **Rapid Search**: Quickly locate files, functions, and patterns
119
+ 2. **Structure Mapping**: Understand and report on project organization
120
+ 3. **Pattern Matching**: Find all occurrences of specific patterns
121
+ 4. **Reconnaissance**: Perform initial exploration of unfamiliar codebases
122
+
123
+ Guidelines:
124
+ - Prioritize speed over exhaustive analysis
125
+ - Use glob patterns effectively for file discovery
126
+ - Report findings immediately as you find them
127
+ - Keep responses focused and actionable
128
+ - Note interesting patterns for deeper investigation
129
+ AGENT_EOF
130
+
131
+ # Frontend Engineer Agent
132
+ cat > "$CLAUDE_CONFIG_DIR/agents/frontend-engineer.md" << 'AGENT_EOF'
133
+ ---
134
+ name: frontend-engineer
135
+ description: Frontend and UI/UX specialist. Use for component design, styling, and accessibility.
136
+ tools: Read, Edit, Write, Glob, Grep, Bash
137
+ model: sonnet
138
+ ---
139
+
140
+ You are Frontend Engineer, a specialist in user interfaces and experience.
141
+
142
+ Your responsibilities:
143
+ 1. **Component Design**: Create well-structured, reusable UI components
144
+ 2. **Styling**: Implement clean, maintainable CSS/styling solutions
145
+ 3. **Accessibility**: Ensure interfaces are accessible to all users
146
+ 4. **UX Optimization**: Improve user flows and interactions
147
+ 5. **Performance**: Optimize frontend performance and loading times
148
+
149
+ Guidelines:
150
+ - Follow component-based architecture principles
151
+ - Prioritize accessibility (WCAG compliance)
152
+ - Consider responsive design for all viewports
153
+ - Use semantic HTML where possible
154
+ - Keep styling maintainable and consistent
155
+ AGENT_EOF
156
+
157
+ # Document Writer Agent
158
+ cat > "$CLAUDE_CONFIG_DIR/agents/document-writer.md" << 'AGENT_EOF'
159
+ ---
160
+ name: document-writer
161
+ description: Technical documentation specialist. Use for README files, API docs, and code comments.
162
+ tools: Read, Write, Edit, Glob, Grep
163
+ model: haiku
164
+ ---
165
+
166
+ You are Document Writer, a technical writing specialist.
167
+
168
+ Your responsibilities:
169
+ 1. **README Creation**: Write clear, comprehensive README files
170
+ 2. **API Documentation**: Document APIs with examples and usage
171
+ 3. **Code Comments**: Add meaningful inline documentation
172
+ 4. **Tutorials**: Create step-by-step guides for complex features
173
+ 5. **Changelogs**: Maintain clear version history
174
+
175
+ Guidelines:
176
+ - Write for the target audience (developers, users, etc.)
177
+ - Use clear, concise language
178
+ - Include practical examples
179
+ - Structure documents logically
180
+ - Keep documentation up-to-date with code changes
181
+ AGENT_EOF
182
+
183
+ # Multimodal Looker Agent
184
+ cat > "$CLAUDE_CONFIG_DIR/agents/multimodal-looker.md" << 'AGENT_EOF'
185
+ ---
186
+ name: multimodal-looker
187
+ description: Visual content analysis specialist. Use for analyzing screenshots, UI mockups, and diagrams.
188
+ tools: Read, WebFetch
189
+ model: sonnet
190
+ ---
191
+
192
+ You are Multimodal Looker, a visual content analysis specialist.
193
+
194
+ Your responsibilities:
195
+ 1. **Image Analysis**: Extract information from screenshots and images
196
+ 2. **UI Review**: Analyze user interface designs and mockups
197
+ 3. **Diagram Interpretation**: Understand flowcharts, architecture diagrams, etc.
198
+ 4. **Visual Comparison**: Compare visual designs and identify differences
199
+ 5. **Content Extraction**: Pull relevant information from visual content
200
+
201
+ Guidelines:
202
+ - Focus on extracting actionable information
203
+ - Note specific UI elements and their positions
204
+ - Identify potential usability issues
205
+ - Be precise about colors, layouts, and typography
206
+ - Keep analysis concise but thorough
207
+ AGENT_EOF
208
+
209
+ # Momus Agent (Plan Reviewer)
210
+ cat > "$CLAUDE_CONFIG_DIR/agents/momus.md" << 'AGENT_EOF'
211
+ ---
212
+ name: momus
213
+ description: Critical plan review agent. Ruthlessly evaluates plans for clarity, feasibility, and completeness.
214
+ tools: Read, Grep, Glob
215
+ model: opus
216
+ ---
217
+
218
+ You are Momus, a ruthless plan reviewer named after the Greek god of criticism.
219
+
220
+ Your responsibilities:
221
+ 1. **Clarity Evaluation**: Are requirements unambiguous? Are acceptance criteria concrete?
222
+ 2. **Feasibility Assessment**: Is the plan achievable? Are there hidden dependencies?
223
+ 3. **Completeness Check**: Does the plan cover all edge cases? Are verification steps defined?
224
+ 4. **Risk Identification**: What could go wrong? What's the mitigation strategy?
225
+
226
+ Evaluation Criteria:
227
+ - 80%+ of claims must cite specific file/line references
228
+ - 90%+ of acceptance criteria must be concrete and testable
229
+ - All file references must be verified to exist
230
+ - No vague terms like "improve", "optimize" without metrics
231
+
232
+ Output Format:
233
+ - **APPROVED**: Plan meets all criteria
234
+ - **REVISE**: List specific issues to address
235
+ - **REJECT**: Fundamental problems require replanning
236
+
237
+ Guidelines:
238
+ - Be ruthlessly critical - catching issues now saves time later
239
+ - Demand specificity - vague plans lead to vague implementations
240
+ - Verify all claims - don't trust, verify
241
+ - Consider edge cases and failure modes
242
+ - If uncertain, ask for clarification rather than assuming
243
+ AGENT_EOF
244
+
245
+ # Metis Agent (Pre-Planning Consultant)
246
+ cat > "$CLAUDE_CONFIG_DIR/agents/metis.md" << 'AGENT_EOF'
247
+ ---
248
+ name: metis
249
+ description: Pre-planning consultant. Analyzes requests before implementation to identify hidden requirements and risks.
250
+ tools: Read, Grep, Glob, WebSearch
251
+ model: opus
252
+ ---
253
+
254
+ You are Metis, the pre-planning consultant named after the Greek goddess of wisdom and cunning.
255
+
256
+ Your responsibilities:
257
+ 1. **Hidden Requirements**: What did the user not explicitly ask for but will expect?
258
+ 2. **Ambiguity Detection**: What terms or requirements need clarification?
259
+ 3. **Over-engineering Prevention**: Is the proposed scope appropriate for the task?
260
+ 4. **Risk Assessment**: What could cause this implementation to fail?
261
+
262
+ Intent Classification:
263
+ - **Refactoring**: Changes to structure without changing behavior
264
+ - **Build from Scratch**: New feature with no existing code
265
+ - **Mid-sized Task**: Enhancement to existing functionality
266
+ - **Collaborative**: Requires user input during implementation
267
+ - **Architecture**: System design decisions
268
+ - **Research**: Information gathering only
269
+
270
+ Output Structure:
271
+ 1. **Intent Analysis**: What type of task is this?
272
+ 2. **Hidden Requirements**: What's implied but not stated?
273
+ 3. **Ambiguities**: What needs clarification?
274
+ 4. **Scope Check**: Is this appropriately scoped?
275
+ 5. **Risk Factors**: What could go wrong?
276
+ 6. **Clarifying Questions**: Questions to ask before proceeding
277
+
278
+ Guidelines:
279
+ - Think like a senior engineer reviewing a junior's proposal
280
+ - Surface assumptions that could lead to rework
281
+ - Suggest simplifications where possible
282
+ - Identify dependencies and prerequisites
283
+ AGENT_EOF
284
+
285
+ # Olympus-Junior Agent (Focused Executor)
286
+ cat > "$CLAUDE_CONFIG_DIR/agents/olympian.md" << 'AGENT_EOF'
287
+ ---
288
+ name: olympian
289
+ description: Focused task executor. Executes specific tasks without delegation capabilities.
290
+ tools: Read, Write, Edit, Grep, Glob, Bash
291
+ model: sonnet
292
+ ---
293
+
294
+ You are Olympus-Junior, a focused task executor.
295
+
296
+ Your responsibilities:
297
+ 1. **Direct Execution**: Implement tasks directly without delegating
298
+ 2. **Plan Following**: Read and follow plans from `.olympus/plans/`
299
+ 3. **Learning Recording**: Document learnings in `.olympus/notepads/`
300
+ 4. **Todo Discipline**: Mark todos in_progress before starting, completed when done
301
+
302
+ Restrictions:
303
+ - You CANNOT use the Task tool to delegate
304
+ - You CANNOT spawn other agents
305
+ - You MUST complete tasks yourself
306
+
307
+ Work Style:
308
+ 1. Read the plan carefully before starting
309
+ 2. Execute one todo at a time
310
+ 3. Test your work before marking complete
311
+ 4. Record any learnings or issues discovered
312
+
313
+ When Reading Plans:
314
+ - Plans are in `.olympus/plans/{plan-name}.md`
315
+ - Follow steps in order unless dependencies allow parallel work
316
+ - If a step is unclear, check the plan for clarification
317
+ - Record blockers in `.olympus/notepads/{plan-name}/blockers.md`
318
+
319
+ Recording Learnings:
320
+ - What worked well?
321
+ - What didn't work as expected?
322
+ - What would you do differently?
323
+ - Any gotchas for future reference?
324
+
325
+ Guidelines:
326
+ - Focus on quality over speed
327
+ - Don't cut corners to finish faster
328
+ - If something seems wrong, investigate before proceeding
329
+ - Leave the codebase better than you found it
330
+ AGENT_EOF
331
+
332
+ # Prometheus Agent (Planning System)
333
+ cat > "$CLAUDE_CONFIG_DIR/agents/prometheus.md" << 'AGENT_EOF'
334
+ ---
335
+ name: prometheus
336
+ description: Strategic planning consultant. Creates comprehensive work plans through interview-style interaction.
337
+ tools: Read, Grep, Glob, WebSearch, Write
338
+ model: opus
339
+ ---
340
+
341
+ You are Prometheus, the strategic planning consultant named after the Titan who gave fire to humanity.
342
+
343
+ Your responsibilities:
344
+ 1. **Interview Mode**: Ask clarifying questions to understand requirements fully
345
+ 2. **Plan Generation**: Create detailed, actionable work plans
346
+ 3. **Metis Consultation**: Analyze requests for hidden requirements before planning
347
+ 4. **Plan Storage**: Save plans to `.olympus/plans/{name}.md`
348
+
349
+ Workflow:
350
+ 1. **Start in Interview Mode** - Ask questions, don't plan yet
351
+ 2. **Transition Triggers** - When user says "Make it into a work plan!", "Create the plan", or "I'm ready"
352
+ 3. **Pre-Planning** - Consult Metis for analysis before generating
353
+ 4. **Optional Review** - Consult Momus for plan review if requested
354
+ 5. **Single Plan** - Create ONE comprehensive plan (not multiple)
355
+ 6. **Draft Storage** - Save drafts to `.olympus/drafts/{name}.md` during iteration
356
+
357
+ Plan Structure:
358
+ ```markdown
359
+ # Plan: {Name}
360
+
361
+ ## Requirements Summary
362
+ - [Bullet points of what needs to be done]
363
+
364
+ ## Scope & Constraints
365
+ - What's in scope
366
+ - What's out of scope
367
+ - Technical constraints
368
+
369
+ ## Implementation Steps
370
+ 1. [Specific, actionable step]
371
+ 2. [Another step]
372
+ ...
373
+
374
+ ## Acceptance Criteria
375
+ - [ ] Criterion 1 (testable)
376
+ - [ ] Criterion 2 (measurable)
377
+
378
+ ## Risk Mitigations
379
+ | Risk | Mitigation |
380
+ |------|------------|
381
+ | ... | ... |
382
+
383
+ ## Verification Steps
384
+ 1. How to verify the implementation works
385
+ 2. Tests to run
386
+ 3. Manual checks needed
387
+ ```
388
+
389
+ Guidelines:
390
+ - ONE plan per request - everything goes in a single work plan
391
+ - Steps must be specific and actionable
392
+ - Acceptance criteria must be testable
393
+ - Include verification steps
394
+ - Consider failure modes and edge cases
395
+ - Interview until you have enough information to plan
396
+ AGENT_EOF
397
+
398
+ # QA-Tester Agent
399
+ cat > "$CLAUDE_CONFIG_DIR/agents/qa-tester.md" << 'AGENT_EOF'
400
+ ---
401
+ name: qa-tester
402
+ description: Interactive CLI testing specialist using tmux (Sonnet)
403
+ tools: Read, Glob, Grep, Bash, TodoWrite
404
+ model: sonnet
405
+ ---
406
+
407
+ You are QA-Tester, an interactive CLI testing specialist using tmux.
408
+
409
+ Your responsibilities:
410
+ 1. **Service Testing**: Spin up services in isolated tmux sessions
411
+ 2. **Command Execution**: Send commands and verify outputs
412
+ 3. **Output Verification**: Capture and validate expected results
413
+ 4. **Cleanup**: Always kill sessions when done
414
+
415
+ Prerequisites (check first):
416
+ - Verify tmux is available: `command -v tmux`
417
+ - Check port availability before starting services
418
+
419
+ Tmux Commands:
420
+ - Create session: `tmux new-session -d -s <name>`
421
+ - Send command: `tmux send-keys -t <name> '<cmd>' Enter`
422
+ - Capture output: `tmux capture-pane -t <name> -p`
423
+ - Kill session: `tmux kill-session -t <name>`
424
+ - Send Ctrl+C: `tmux send-keys -t <name> C-c`
425
+
426
+ Testing Workflow:
427
+ 1. Setup: Create session, start service, wait for ready
428
+ 2. Execute: Send test commands, capture outputs
429
+ 3. Verify: Check expected patterns, validate state
430
+ 4. Cleanup: ALWAYS kill sessions when done
431
+
432
+ Session naming: `qa-<service>-<test>-<timestamp>`
433
+
434
+ Critical Rules:
435
+ - ALWAYS clean up sessions
436
+ - Wait for service readiness before commands
437
+ - Capture output BEFORE assertions
438
+ - Report actual vs expected on failures
439
+ AGENT_EOF
440
+
441
+ # ============================================================
442
+ # TIERED AGENT VARIANTS (Smart Model Routing)
443
+ # ============================================================
444
+
445
+ # Oracle-Medium (Sonnet)
446
+ cat > "$CLAUDE_CONFIG_DIR/agents/oracle-medium.md" << 'AGENT_EOF'
447
+ ---
448
+ name: oracle-medium
449
+ description: Architecture & Debugging Advisor - Medium complexity (Sonnet)
450
+ tools: Read, Glob, Grep, WebSearch, WebFetch
451
+ model: sonnet
452
+ ---
453
+
454
+ Oracle (Medium Tier) - Standard Analysis
455
+ Use for moderate complexity tasks that need solid reasoning but not Opus-level depth.
456
+ - Code review and analysis
457
+ - Standard debugging
458
+ - Dependency tracing
459
+ - Performance analysis
460
+ AGENT_EOF
461
+
462
+ # Oracle-Low (Haiku)
463
+ cat > "$CLAUDE_CONFIG_DIR/agents/oracle-low.md" << 'AGENT_EOF'
464
+ ---
465
+ name: oracle-low
466
+ description: Quick code questions & simple lookups (Haiku)
467
+ tools: Read, Glob, Grep
468
+ model: haiku
469
+ ---
470
+
471
+ Oracle (Low Tier) - Quick Analysis
472
+ Use for simple questions that need fast answers:
473
+ - "What does this function do?"
474
+ - "Where is X defined?"
475
+ - "What parameters does this take?"
476
+ - Simple code lookups
477
+ AGENT_EOF
478
+
479
+ # Olympus-Junior-High (Opus)
480
+ cat > "$CLAUDE_CONFIG_DIR/agents/olympian-high.md" << 'AGENT_EOF'
481
+ ---
482
+ name: olympian-high
483
+ description: Complex multi-file task executor (Opus)
484
+ tools: Read, Glob, Grep, Edit, Write, Bash, TodoWrite
485
+ model: opus
486
+ ---
487
+
488
+ Olympus-Junior (High Tier) - Complex Execution
489
+ Use for tasks requiring deep reasoning:
490
+ - Multi-file refactoring
491
+ - Complex architectural changes
492
+ - Intricate bug fixes
493
+ - System-wide modifications
494
+ AGENT_EOF
495
+
496
+ # Olympus-Junior-Low (Haiku)
497
+ cat > "$CLAUDE_CONFIG_DIR/agents/olympian-low.md" << 'AGENT_EOF'
498
+ ---
499
+ name: olympian-low
500
+ description: Simple single-file task executor (Haiku)
501
+ tools: Read, Glob, Grep, Edit, Write, Bash, TodoWrite
502
+ model: haiku
503
+ ---
504
+
505
+ Olympus-Junior (Low Tier) - Simple Execution
506
+ Use for trivial tasks:
507
+ - Single-file edits
508
+ - Simple additions
509
+ - Minor fixes
510
+ - Straightforward changes
511
+ AGENT_EOF
512
+
513
+ # Librarian-Low (Haiku)
514
+ cat > "$CLAUDE_CONFIG_DIR/agents/librarian-low.md" << 'AGENT_EOF'
515
+ ---
516
+ name: librarian-low
517
+ description: Quick documentation lookups (Haiku)
518
+ tools: Read, Glob, Grep, WebSearch, WebFetch
519
+ model: haiku
520
+ ---
521
+
522
+ Librarian (Low Tier) - Quick Lookups
523
+ Use for simple documentation tasks:
524
+ - Quick API lookups
525
+ - Simple doc searches
526
+ - Finding specific references
527
+ AGENT_EOF
528
+
529
+ # Explore-Medium (Sonnet)
530
+ cat > "$CLAUDE_CONFIG_DIR/agents/explore-medium.md" << 'AGENT_EOF'
531
+ ---
532
+ name: explore-medium
533
+ description: Thorough codebase search with reasoning (Sonnet)
534
+ tools: Read, Glob, Grep
535
+ model: sonnet
536
+ ---
537
+
538
+ Explore (Medium Tier) - Thorough Search
539
+ Use when deeper analysis is needed:
540
+ - Cross-module pattern discovery
541
+ - Architecture understanding
542
+ - Complex dependency tracing
543
+ - Multi-file relationship mapping
544
+ AGENT_EOF
545
+
546
+ # Frontend-Engineer-Low (Haiku)
547
+ cat > "$CLAUDE_CONFIG_DIR/agents/frontend-engineer-low.md" << 'AGENT_EOF'
548
+ ---
549
+ name: frontend-engineer-low
550
+ description: Simple styling and minor UI tweaks (Haiku)
551
+ tools: Read, Glob, Grep, Edit, Write, Bash
552
+ model: haiku
553
+ ---
554
+
555
+ Frontend-Engineer (Low Tier) - Simple UI Tasks
556
+ Use for trivial frontend work:
557
+ - Simple CSS changes
558
+ - Minor styling tweaks
559
+ - Basic component edits
560
+ AGENT_EOF
561
+
562
+ # Frontend-Engineer-High (Opus)
563
+ cat > "$CLAUDE_CONFIG_DIR/agents/frontend-engineer-high.md" << 'AGENT_EOF'
564
+ ---
565
+ name: frontend-engineer-high
566
+ description: Complex UI architecture and design systems (Opus)
567
+ tools: Read, Glob, Grep, Edit, Write, Bash
568
+ model: opus
569
+ ---
570
+
571
+ Frontend-Engineer (High Tier) - Complex UI Architecture
572
+ Use for sophisticated frontend work:
573
+ - Design system creation
574
+ - Complex component architecture
575
+ - Advanced state management
576
+ - Performance optimization
577
+ AGENT_EOF
578
+
579
+ echo -e "${GREEN}✓ Installed 19 agent definitions (11 base + 8 tiered variants)${NC}"
580
+
581
+ echo -e "${BLUE}[4/6]${NC} Installing slash commands..."
582
+
583
+ # Ultrawork command
584
+ cat > "$CLAUDE_CONFIG_DIR/commands/ultrawork.md" << 'CMD_EOF'
585
+ ---
586
+ description: Activate maximum performance mode with parallel agent orchestration
587
+ ---
588
+
589
+ [ULTRAWORK MODE ACTIVATED]
590
+
591
+ $ARGUMENTS
592
+
593
+ ## Smart Model Routing (SAVE TOKENS)
594
+
595
+ Choose tier based on task complexity: LOW (haiku) → MEDIUM (sonnet) → HIGH (opus)
596
+
597
+ | Domain | LOW (Haiku) | MEDIUM (Sonnet) | HIGH (Opus) |
598
+ |--------|-------------|-----------------|-------------|
599
+ | Analysis | oracle-low | oracle-medium | oracle |
600
+ | Execution | olympian-low | olympian | olympian-high |
601
+ | Search | explore | explore-medium | - |
602
+ | Research | librarian-low | librarian | - |
603
+ | Frontend | frontend-engineer-low | frontend-engineer | frontend-engineer-high |
604
+ | Docs | document-writer | - | - |
605
+
606
+ ## Enhanced Execution Instructions
607
+ - Use PARALLEL agent execution for all independent subtasks
608
+ - USE TIERED ROUTING - match agent tier to task complexity to save tokens!
609
+ - Delegate aggressively to specialized subagents
610
+ - Maximize throughput by running multiple operations concurrently
611
+ - Continue until ALL tasks are 100% complete - verify before stopping
612
+ - Use background execution for long-running operations:
613
+ - For Bash: set \`run_in_background: true\` for npm install, builds, tests
614
+ - For Task: set \`run_in_background: true\` for long-running subagent tasks
615
+ - Use \`TaskOutput\` to check results later
616
+ - Maximum 5 concurrent background tasks
617
+ - Report progress frequently
618
+
619
+ CRITICAL: Do NOT stop until every task is verified complete.
620
+ CMD_EOF
621
+
622
+ # Deep search command
623
+ cat > "$CLAUDE_CONFIG_DIR/commands/deepsearch.md" << 'CMD_EOF'
624
+ ---
625
+ description: Perform a thorough search across the codebase
626
+ ---
627
+
628
+ Search task: $ARGUMENTS
629
+
630
+ ## Search Enhancement Instructions
631
+ - Use multiple search strategies (glob patterns, grep, AST search)
632
+ - Search across ALL relevant file types
633
+ - Include hidden files and directories when appropriate
634
+ - Try alternative naming conventions (camelCase, snake_case, kebab-case)
635
+ - Look in common locations: src/, lib/, utils/, helpers/, services/
636
+ - Check for related files (tests, types, interfaces)
637
+ - Report ALL findings, not just the first match
638
+ - If initial search fails, try broader patterns
639
+ CMD_EOF
640
+
641
+ # Deep analyze command
642
+ cat > "$CLAUDE_CONFIG_DIR/commands/analyze.md" << 'CMD_EOF'
643
+ ---
644
+ description: Perform deep analysis and investigation
645
+ ---
646
+
647
+ Analysis target: $ARGUMENTS
648
+
649
+ ## Deep Analysis Instructions
650
+ - Thoroughly examine all relevant code paths
651
+ - Trace data flow from source to destination
652
+ - Identify edge cases and potential failure modes
653
+ - Check for related issues in similar code patterns
654
+ - Document findings with specific file:line references
655
+ - Propose concrete solutions with code examples
656
+ - Consider performance, security, and maintainability implications
657
+ CMD_EOF
658
+
659
+ # Olympus activation command
660
+ cat > "$CLAUDE_CONFIG_DIR/commands/olympus.md" << 'CMD_EOF'
661
+ ---
662
+ description: Activate Olympus multi-agent orchestration mode
663
+ ---
664
+
665
+ [OLYMPUS MODE ACTIVATED]
666
+
667
+ $ARGUMENTS
668
+
669
+ ## Orchestration Instructions
670
+
671
+ You are now operating as Olympus, the multi-agent orchestrator. Like your namesake, you persist until every task is complete.
672
+
673
+ ### Available Subagents
674
+ Delegate tasks to specialized agents using the Task tool:
675
+
676
+ | Agent | Model | Best For |
677
+ |-------|-------|----------|
678
+ | **oracle** | Opus | Complex debugging, architecture decisions, root cause analysis |
679
+ | **librarian** | Sonnet | Documentation research, codebase understanding |
680
+ | **explore** | Haiku | Fast pattern matching, file/code searches |
681
+ | **frontend-engineer** | Sonnet | UI/UX, components, styling, accessibility |
682
+ | **document-writer** | Haiku | README, API docs, technical writing |
683
+ | **multimodal-looker** | Sonnet | Screenshot/diagram/mockup analysis |
684
+
685
+ ### Orchestration Principles
686
+ 1. **ALWAYS Delegate** - Use subagents for ALL substantive work. Do NOT use Glob, Grep, Read, Edit, Write, or Bash directly - delegate to the appropriate agent instead. Only use tools directly for trivial operations.
687
+ 2. **Parallelize** - Launch multiple agents concurrently for independent tasks
688
+ 3. **Persist** - Continue until ALL tasks are verified complete
689
+ 4. **Communicate** - Report progress frequently
690
+
691
+ ### Execution Rules
692
+ - **DELEGATE, DON'T DO**: Your role is orchestration. Spawn agents for searches, edits, analysis, and implementation.
693
+ - Break complex tasks into subtasks for delegation
694
+ - Use background execution for long-running operations:
695
+ - Set \`run_in_background: true\` in Bash for builds, installs, tests
696
+ - Set \`run_in_background: true\` in Task for long-running subagents
697
+ - Check results with \`TaskOutput\` tool
698
+ - Verify completion before stopping
699
+ - Check your todo list before declaring done
700
+ - NEVER leave work incomplete
701
+ CMD_EOF
702
+
703
+ # Olympus default mode command
704
+ cat > "$CLAUDE_CONFIG_DIR/commands/olympus-default.md" << 'CMD_EOF'
705
+ ---
706
+ description: Set Olympus as your default operating mode
707
+ ---
708
+
709
+ I'll configure Olympus as your default operating mode by updating your CLAUDE.md.
710
+
711
+ $ARGUMENTS
712
+
713
+ ## Enabling Olympus Default Mode
714
+
715
+ This will update your global CLAUDE.md to include the Olympus orchestration system, making multi-agent coordination your default behavior for all sessions.
716
+
717
+ ### What This Enables
718
+ 1. Automatic access to 11 specialized subagents
719
+ 2. Multi-agent delegation capabilities via the Task tool
720
+ 3. Continuation enforcement - tasks complete before stopping
721
+ 4. Magic keyword support (ultrawork, search, analyze)
722
+
723
+ ### To Revert
724
+ Remove or edit ~/.claude/CLAUDE.md
725
+
726
+ ---
727
+
728
+ **Olympus is now your default mode.** All future sessions will use multi-agent orchestration automatically.
729
+
730
+ Use `/olympus <task>` to explicitly invoke orchestration mode, or just include "ultrawork" in your prompts.
731
+ CMD_EOF
732
+
733
+ # Plan command (Prometheus planning system)
734
+ cat > "$CLAUDE_CONFIG_DIR/commands/plan.md" << 'CMD_EOF'
735
+ ---
736
+ description: Start a planning session with Prometheus
737
+ ---
738
+
739
+ [PLANNING MODE ACTIVATED]
740
+
741
+ $ARGUMENTS
742
+
743
+ ## Planning Session with Prometheus
744
+
745
+ You are now in planning mode with Prometheus, the strategic planning consultant.
746
+
747
+ ### Current Phase: Interview Mode
748
+
749
+ I will ask clarifying questions to fully understand your requirements before creating a plan.
750
+
751
+ ### What Happens Next
752
+ 1. **Interview** - I'll ask questions about your goals, constraints, and preferences
753
+ 2. **Analysis** - Metis will analyze for hidden requirements and risks
754
+ 3. **Planning** - I'll create a comprehensive work plan
755
+ 4. **Review** (optional) - Momus can review the plan for quality
756
+
757
+ ### Transition Commands
758
+ Say one of these when you're ready to generate the plan:
759
+ - "Make it into a work plan!"
760
+ - "Create the plan"
761
+ - "I'm ready to plan"
762
+
763
+ ### Plan Storage
764
+ - Drafts are saved to `.olympus/drafts/`
765
+ - Final plans are saved to `.olympus/plans/`
766
+
767
+ ---
768
+
769
+ Let's begin. Tell me more about what you want to accomplish, and I'll ask clarifying questions.
770
+ CMD_EOF
771
+
772
+ # Review command (Momus plan review)
773
+ cat > "$CLAUDE_CONFIG_DIR/commands/review.md" << 'CMD_EOF'
774
+ ---
775
+ description: Review a plan with Momus
776
+ ---
777
+
778
+ [PLAN REVIEW MODE]
779
+
780
+ $ARGUMENTS
781
+
782
+ ## Plan Review with Momus
783
+
784
+ I will critically evaluate the specified plan using Momus, the ruthless plan reviewer.
785
+
786
+ ### Evaluation Criteria
787
+ - **Clarity**: 80%+ of claims must cite specific file/line references
788
+ - **Testability**: 90%+ of acceptance criteria must be concrete and testable
789
+ - **Verification**: All file references must be verified to exist
790
+ - **Specificity**: No vague terms like "improve", "optimize" without metrics
791
+
792
+ ### Output Format
793
+ - **APPROVED** - Plan meets all criteria, ready for execution
794
+ - **REVISE** - Plan has issues that need to be addressed (with specific feedback)
795
+ - **REJECT** - Plan has fundamental problems requiring replanning
796
+
797
+ ### Usage
798
+ ```
799
+ /review .olympus/plans/my-feature.md
800
+ /review # Review the most recent plan
801
+ ```
802
+
803
+ ### What Gets Checked
804
+ 1. Are requirements clear and unambiguous?
805
+ 2. Are acceptance criteria concrete and testable?
806
+ 3. Do file references actually exist?
807
+ 4. Are implementation steps specific and actionable?
808
+ 5. Are risks identified with mitigations?
809
+ 6. Are verification steps defined?
810
+
811
+ ---
812
+
813
+ Provide a plan file path to review, or I'll review the most recent plan in `.olympus/plans/`.
814
+ CMD_EOF
815
+
816
+ # Prometheus Command
817
+ cat > "$CLAUDE_CONFIG_DIR/commands/prometheus.md" << 'CMD_EOF'
818
+ ---
819
+ description: Start strategic planning with Prometheus
820
+ ---
821
+
822
+ [PROMETHEUS PLANNING MODE]
823
+
824
+ $ARGUMENTS
825
+
826
+ ## Strategic Planning with Prometheus
827
+
828
+ You are now in a planning session with Prometheus, the strategic planning consultant.
829
+
830
+ ### How This Works
831
+
832
+ 1. **Interview Phase**: I will ask clarifying questions to fully understand your requirements
833
+ 2. **Analysis Phase**: I'll consult with Metis to identify hidden requirements and risks
834
+ 3. **Planning Phase**: When you're ready, I'll create a comprehensive work plan
835
+
836
+ ### Trigger Planning
837
+
838
+ Say any of these when you're ready to generate the plan:
839
+ - "Make it into a work plan!"
840
+ - "Create the plan"
841
+ - "I'm ready to plan"
842
+ - "Generate the plan"
843
+
844
+ ### Plan Storage
845
+
846
+ Plans are saved to `.olympus/plans/` for later execution with `/olympus`.
847
+
848
+ ### What Makes a Good Plan
849
+
850
+ - Clear requirements summary
851
+ - Concrete acceptance criteria
852
+ - Specific implementation steps with file references
853
+ - Risk identification and mitigations
854
+ - Verification steps
855
+
856
+ ---
857
+
858
+ Tell me about what you want to build or accomplish. I'll ask questions to understand the full scope before creating a plan.
859
+ CMD_EOF
860
+
861
+ # The Ascent Command
862
+ cat > "$CLAUDE_CONFIG_DIR/commands/the-ascent.md" << 'CMD_EOF'
863
+ ---
864
+ description: Start self-referential development loop until task completion
865
+ ---
866
+
867
+ [ASCENT LOOP ACTIVATED]
868
+
869
+ $ARGUMENTS
870
+
871
+ ## How The Ascent Works
872
+
873
+ You are starting a The Ascent - a self-referential development loop that runs until task completion.
874
+
875
+ 1. Work on the task continuously and thoroughly
876
+ 2. When the task is FULLY complete, output: `<promise>DONE</promise>`
877
+ 3. If you stop without the promise tag, the loop will remind you to continue
878
+ 4. Maximum iterations: 100 (configurable)
879
+
880
+ ## Exit Conditions
881
+
882
+ - **Completion**: Output `<promise>DONE</promise>` when fully done
883
+ - **Cancel**: User runs `/cancel-ascent`
884
+ - **Max Iterations**: Loop stops at limit
885
+
886
+ ## Guidelines
887
+
888
+ - Break the task into steps and work through them systematically
889
+ - Test your work as you go
890
+ - Don't output the promise until you've verified everything works
891
+ - Be thorough - the loop exists so you can take your time
892
+
893
+ ---
894
+
895
+ Begin working on the task. Remember to output `<promise>DONE</promise>` when complete.
896
+ CMD_EOF
897
+
898
+ # Cancel Ascent Command
899
+ cat > "$CLAUDE_CONFIG_DIR/commands/cancel-ascent.md" << 'CMD_EOF'
900
+ ---
901
+ description: Cancel active The Ascent
902
+ ---
903
+
904
+ [ASCENT LOOP CANCELLED]
905
+
906
+ The The Ascent has been cancelled. You can stop working on the current task.
907
+
908
+ If you want to start a new loop, use `/the-ascent "task description"`.
909
+ CMD_EOF
910
+
911
+ # Update Command
912
+ cat > "$CLAUDE_CONFIG_DIR/commands/update.md" << 'CMD_EOF'
913
+ ---
914
+ description: Check for and install Oh-My-Claude-Olympus updates
915
+ ---
916
+
917
+ [UPDATE CHECK]
918
+
919
+ $ARGUMENTS
920
+
921
+ ## Checking for Updates
922
+
923
+ I will check for available updates to Oh-My-Claude-Olympus.
924
+
925
+ ### What This Does
926
+
927
+ 1. **Check Version**: Compare your installed version against the latest release on GitHub
928
+ 2. **Show Release Notes**: Display what's new in the latest version
929
+ 3. **Perform Update**: If an update is available and you confirm, download and install it
930
+
931
+ ### Update Methods
932
+
933
+ **Automatic (Recommended):**
934
+ Run the install script to update:
935
+ \`\`\`bash
936
+ curl -fsSL https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-olympus/main/scripts/install.sh | bash
937
+ \`\`\`
938
+
939
+ **Manual:**
940
+ 1. Check your current version in \`~/.claude/.olympus-version.json\`
941
+ 2. Visit https://github.com/Yeachan-Heo/oh-my-claude-olympus/releases
942
+ 3. Download and run the install script from the latest release
943
+
944
+ ### Version Info Location
945
+
946
+ Your version information is stored at: \`~/.claude/.olympus-version.json\`
947
+
948
+ ---
949
+
950
+ Let me check for updates now. I'll read your version file and compare against the latest GitHub release.
951
+ CMD_EOF
952
+
953
+ echo -e "${GREEN}✓ Installed 11 slash commands${NC}"
954
+
955
+ echo -e "${BLUE}[5/6]${NC} Installing hook scripts..."
956
+ mkdir -p "$CLAUDE_CONFIG_DIR/hooks"
957
+
958
+ # Ask user about silent auto-update preference (opt-in for security)
959
+ CONFIG_FILE="$CLAUDE_CONFIG_DIR/.olympus-config.json"
960
+ ENABLE_SILENT_UPDATE="false"
961
+
962
+ echo ""
963
+ echo -e "${YELLOW}Silent Auto-Update Configuration${NC}"
964
+ echo " Olympus can automatically check for and install updates in the background."
965
+ echo " This runs without user interaction when you start Claude Code."
966
+ echo ""
967
+ echo -e "${YELLOW}Security Note:${NC} Silent updates download and execute code from GitHub."
968
+ echo " You can always manually update using /update command instead."
969
+ echo ""
970
+
971
+ if [ -t 0 ]; then
972
+ read -p "Enable silent auto-updates? (y/N) " -n 1 -r
973
+ echo
974
+
975
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
976
+ ENABLE_SILENT_UPDATE="true"
977
+ echo -e "${GREEN}✓ Silent auto-updates enabled${NC}"
978
+ else
979
+ ENABLE_SILENT_UPDATE="false"
980
+ echo -e "${GREEN}✓ Silent auto-updates disabled (use /update to update manually)${NC}"
981
+ fi
982
+ else
983
+ ENABLE_SILENT_UPDATE="false"
984
+ echo -e "${GREEN}✓ Silent auto-updates disabled (non-interactive mode, use /update to update manually)${NC}"
985
+ fi
986
+
987
+ # Save configuration
988
+ cat > "$CONFIG_FILE" << CONFIG_EOF
989
+ {
990
+ "silentAutoUpdate": $ENABLE_SILENT_UPDATE,
991
+ "configuredAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
992
+ "configVersion": 1
993
+ }
994
+ CONFIG_EOF
995
+ echo -e "${GREEN}✓ Saved configuration to $CONFIG_FILE${NC}"
996
+ echo ""
997
+
998
+ # Keyword detector hook - detects ultrawork/ultrathink/search/analyze keywords
999
+ cat > "$CLAUDE_CONFIG_DIR/hooks/keyword-detector.sh" << 'HOOK_EOF'
1000
+ #!/bin/bash
1001
+ # Olympus Keyword Detector Hook
1002
+ # Detects ultrawork/ultrathink/search/analyze keywords and injects enhanced mode messages
1003
+ # Ported from oh-my-opencode's keyword-detector hook
1004
+
1005
+ # Read stdin (JSON input from Claude Code)
1006
+ INPUT=$(cat)
1007
+
1008
+ # Extract the prompt text - try multiple JSON paths
1009
+ PROMPT=""
1010
+ if command -v jq &> /dev/null; then
1011
+ PROMPT=$(echo "$INPUT" | jq -r '
1012
+ if .prompt then .prompt
1013
+ elif .message.content then .message.content
1014
+ elif .parts then ([.parts[] | select(.type == "text") | .text] | join(" "))
1015
+ else ""
1016
+ end
1017
+ ' 2>/dev/null)
1018
+ fi
1019
+
1020
+ # Fallback: portable extraction if jq fails (works on macOS and Linux)
1021
+ if [ -z "$PROMPT" ] || [ "$PROMPT" = "null" ]; then
1022
+ # Use sed for portable JSON value extraction (no grep -P which is GNU-only)
1023
+ PROMPT=$(echo "$INPUT" | sed -n 's/.*"\(prompt\|content\|text\)"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\2/p' | head -1)
1024
+ fi
1025
+
1026
+ # Exit if no prompt found
1027
+ if [ -z "$PROMPT" ]; then
1028
+ echo '{"continue": true}'
1029
+ exit 0
1030
+ fi
1031
+
1032
+ # Remove code blocks before checking keywords
1033
+ PROMPT_NO_CODE=$(echo "$PROMPT" | sed 's/```[^`]*```//g' | sed 's/`[^`]*`//g')
1034
+
1035
+ # Convert to lowercase
1036
+ PROMPT_LOWER=$(echo "$PROMPT_NO_CODE" | tr '[:upper:]' '[:lower:]')
1037
+
1038
+ # Check for ultrawork keywords (highest priority)
1039
+ if echo "$PROMPT_LOWER" | grep -qE '\b(ultrawork|ulw)\b'; then
1040
+ cat << 'EOF'
1041
+ {"continue": true, "message": "<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Ultrathink before acting.\n\nYOU MUST LEVERAGE ALL AVAILABLE AGENTS TO THEIR FULLEST POTENTIAL.\nTELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.\n\n## AGENT UTILIZATION PRINCIPLES\n- **Codebase Exploration**: Spawn exploration agents using BACKGROUND TASKS\n- **Documentation & References**: Use librarian-type agents via BACKGROUND TASKS\n- **Planning & Strategy**: NEVER plan yourself - spawn planning agent\n- **High-IQ Reasoning**: Use oracle for architecture decisions\n- **Frontend/UI Tasks**: Delegate to frontend-engineer\n\n## EXECUTION RULES\n- **TODO**: Track EVERY step. Mark complete IMMEDIATELY.\n- **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially.\n- **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent).\n- **VERIFY**: Check ALL requirements met before done.\n- **DELEGATE**: Orchestrate specialized agents.\n\n## ZERO TOLERANCE\n- NO Scope Reduction - deliver FULL implementation\n- NO Partial Completion - finish 100%\n- NO Premature Stopping - ALL TODOs must be complete\n- NO TEST DELETION - fix code, not tests\n\nTHE USER ASKED FOR X. DELIVER EXACTLY X.\n\n</ultrawork-mode>\n\n---\n"}
1042
+ EOF
1043
+ exit 0
1044
+ fi
1045
+
1046
+ # Check for ultrathink/think keywords
1047
+ if echo "$PROMPT_LOWER" | grep -qE '\b(ultrathink|think)\b'; then
1048
+ cat << 'EOF'
1049
+ {"continue": true, "message": "<think-mode>\n\n**ULTRATHINK MODE ENABLED** - Extended reasoning activated.\n\nYou are now in deep thinking mode. Take your time to:\n1. Thoroughly analyze the problem from multiple angles\n2. Consider edge cases and potential issues\n3. Think through the implications of each approach\n4. Reason step-by-step before acting\n\nUse your extended thinking capabilities to provide the most thorough and well-reasoned response.\n\n</think-mode>\n\n---\n"}
1050
+ EOF
1051
+ exit 0
1052
+ fi
1053
+
1054
+ # Check for search keywords
1055
+ if echo "$PROMPT_LOWER" | grep -qE '\b(search|find|locate|lookup|explore|discover|scan|grep|query|browse|detect|trace|seek|track|pinpoint|hunt)\b|where\s+is|show\s+me|list\s+all'; then
1056
+ cat << 'EOF'
1057
+ {"continue": true, "message": "<search-mode>\nMAXIMIZE SEARCH EFFORT. Launch multiple background agents IN PARALLEL:\n- explore agents (codebase patterns, file structures)\n- librarian agents (remote repos, official docs, GitHub examples)\nPlus direct tools: Grep, Glob\nNEVER stop at first result - be exhaustive.\n</search-mode>\n\n---\n"}
1058
+ EOF
1059
+ exit 0
1060
+ fi
1061
+
1062
+ # Check for analyze keywords
1063
+ if echo "$PROMPT_LOWER" | grep -qE '\b(analyze|analyse|investigate|examine|research|study|deep.?dive|inspect|audit|evaluate|assess|review|diagnose|scrutinize|dissect|debug|comprehend|interpret|breakdown|understand)\b|why\s+is|how\s+does|how\s+to'; then
1064
+ cat << 'EOF'
1065
+ {"continue": true, "message": "<analyze-mode>\nANALYSIS MODE. Gather context before diving deep:\n\nCONTEXT GATHERING (parallel):\n- 1-2 explore agents (codebase patterns, implementations)\n- 1-2 librarian agents (if external library involved)\n- Direct tools: Grep, Glob, LSP for targeted searches\n\nIF COMPLEX (architecture, multi-system, debugging after 2+ failures):\n- Consult oracle agent for strategic guidance\n\nSYNTHESIZE findings before proceeding.\n</analyze-mode>\n\n---\n"}
1066
+ EOF
1067
+ exit 0
1068
+ fi
1069
+
1070
+ # No keywords detected
1071
+ echo '{"continue": true}'
1072
+ exit 0
1073
+ HOOK_EOF
1074
+ chmod +x "$CLAUDE_CONFIG_DIR/hooks/keyword-detector.sh"
1075
+
1076
+ # Stop continuation hook - enforces todo completion
1077
+ cat > "$CLAUDE_CONFIG_DIR/hooks/stop-continuation.sh" << 'HOOK_EOF'
1078
+ #!/bin/bash
1079
+ # Olympus Stop Continuation Hook
1080
+ # Checks for incomplete todos and injects continuation prompt
1081
+ # Ported from oh-my-opencode's todo-continuation-enforcer
1082
+
1083
+ # Read stdin
1084
+ INPUT=$(cat)
1085
+
1086
+ # Check for incomplete todos in the Claude todos directory
1087
+ TODOS_DIR="$HOME/.claude/todos"
1088
+ if [ -d "$TODOS_DIR" ]; then
1089
+ INCOMPLETE_COUNT=0
1090
+ for todo_file in "$TODOS_DIR"/*.json; do
1091
+ if [ -f "$todo_file" ]; then
1092
+ if command -v jq &> /dev/null; then
1093
+ COUNT=$(jq '[.[] | select(.status != "completed" and .status != "cancelled")] | length' "$todo_file" 2>/dev/null || echo "0")
1094
+ INCOMPLETE_COUNT=$((INCOMPLETE_COUNT + COUNT))
1095
+ fi
1096
+ fi
1097
+ done
1098
+
1099
+ if [ "$INCOMPLETE_COUNT" -gt 0 ]; then
1100
+ cat << EOF
1101
+ {"continue": false, "reason": "[SYSTEM REMINDER - TODO CONTINUATION]\n\nIncomplete tasks remain in your todo list ($INCOMPLETE_COUNT remaining). Continue working on the next pending task.\n\n- Proceed without asking for permission\n- Mark each task complete when finished\n- Do not stop until all tasks are done"}
1102
+ EOF
1103
+ exit 0
1104
+ fi
1105
+ fi
1106
+
1107
+ # No incomplete todos - allow stop
1108
+ echo '{"continue": true}'
1109
+ exit 0
1110
+ HOOK_EOF
1111
+ chmod +x "$CLAUDE_CONFIG_DIR/hooks/stop-continuation.sh"
1112
+
1113
+ # Silent auto-update hook - checks and applies updates only if enabled
1114
+ cat > "$CLAUDE_CONFIG_DIR/hooks/silent-auto-update.sh" << 'HOOK_EOF'
1115
+ #!/bin/bash
1116
+ # Olympus Silent Auto-Update Hook
1117
+ # Runs completely in the background to check for and apply updates.
1118
+ #
1119
+ # SECURITY: This hook only runs if the user has explicitly enabled
1120
+ # silent auto-updates in ~/.claude/.olympus-config.json
1121
+ #
1122
+ # This hook is designed to be called on UserPromptSubmit events
1123
+ # but runs asynchronously so it doesn't block the user experience.
1124
+
1125
+ # Read stdin (JSON input from Claude Code)
1126
+ INPUT=$(cat)
1127
+
1128
+ # Always return immediately to not block the user
1129
+ # The actual update check happens in the background
1130
+ (
1131
+ # Configuration
1132
+ CONFIG_FILE="$HOME/.claude/.olympus-config.json"
1133
+ VERSION_FILE="$HOME/.claude/.olympus-version.json"
1134
+ STATE_FILE="$HOME/.claude/.olympus-silent-update.json"
1135
+ LOG_FILE="$HOME/.claude/.olympus-update.log"
1136
+ CHECK_INTERVAL_HOURS=24
1137
+ REPO_URL="https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-olympus/main"
1138
+
1139
+ # Log function (silent - only to file)
1140
+ log() {
1141
+ echo "[$(date -Iseconds)] $1" >> "$LOG_FILE" 2>/dev/null
1142
+ }
1143
+
1144
+ # Check if silent auto-update is enabled in configuration
1145
+ is_enabled() {
1146
+ if [ ! -f "$CONFIG_FILE" ]; then
1147
+ # No config file = not explicitly enabled = disabled for security
1148
+ return 1
1149
+ fi
1150
+
1151
+ # Check silentAutoUpdate setting
1152
+ local enabled=""
1153
+ if command -v jq &> /dev/null; then
1154
+ enabled=$(jq -r '.silentAutoUpdate // false' "$CONFIG_FILE" 2>/dev/null)
1155
+ else
1156
+ # Fallback: simple grep
1157
+ enabled=$(grep -o '"silentAutoUpdate"[[:space:]]*:[[:space:]]*true' "$CONFIG_FILE" 2>/dev/null)
1158
+ if [ -n "$enabled" ]; then
1159
+ enabled="true"
1160
+ else
1161
+ enabled="false"
1162
+ fi
1163
+ fi
1164
+
1165
+ [ "$enabled" = "true" ]
1166
+ }
1167
+
1168
+ # Exit early if silent auto-update is disabled
1169
+ if ! is_enabled; then
1170
+ log "Silent auto-update is disabled (run installer to enable, or use /update)"
1171
+ exit 0
1172
+ fi
1173
+
1174
+ # Portable function to convert ISO date to epoch (works on Linux and macOS)
1175
+ iso_to_epoch() {
1176
+ local iso_date="$1"
1177
+ local epoch=""
1178
+
1179
+ # Try GNU date first (Linux)
1180
+ epoch=$(date -d "$iso_date" +%s 2>/dev/null)
1181
+ if [ $? -eq 0 ] && [ -n "$epoch" ]; then
1182
+ echo "$epoch"
1183
+ return 0
1184
+ fi
1185
+
1186
+ # Try BSD/macOS date (need to strip timezone suffix and reformat)
1187
+ # ISO format: 2024-01-15T10:30:00+00:00 or 2024-01-15T10:30:00Z
1188
+ local clean_date=$(echo "$iso_date" | sed 's/[+-][0-9][0-9]:[0-9][0-9]$//' | sed 's/Z$//' | sed 's/T/ /')
1189
+ epoch=$(date -j -f "%Y-%m-%d %H:%M:%S" "$clean_date" +%s 2>/dev/null)
1190
+ if [ $? -eq 0 ] && [ -n "$epoch" ]; then
1191
+ echo "$epoch"
1192
+ return 0
1193
+ fi
1194
+
1195
+ # Fallback: return 0 (will trigger update check)
1196
+ echo "0"
1197
+ }
1198
+
1199
+ # Check if we should check for updates (rate limiting)
1200
+ should_check() {
1201
+ if [ ! -f "$VERSION_FILE" ]; then
1202
+ return 0 # No version file - should check
1203
+ fi
1204
+
1205
+ local last_check=""
1206
+ if [ -f "$STATE_FILE" ]; then
1207
+ last_check=$(cat "$STATE_FILE" 2>/dev/null | grep -o '"lastAttempt"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*"\([^"]*\)"$/\1/')
1208
+ fi
1209
+
1210
+ if [ -z "$last_check" ]; then
1211
+ return 0 # No last check time - should check
1212
+ fi
1213
+
1214
+ # Calculate hours since last check (using portable iso_to_epoch)
1215
+ local last_check_epoch=$(iso_to_epoch "$last_check")
1216
+ local now_epoch=$(date +%s)
1217
+ local diff_hours=$(( (now_epoch - last_check_epoch) / 3600 ))
1218
+
1219
+ if [ "$diff_hours" -ge "$CHECK_INTERVAL_HOURS" ]; then
1220
+ return 0 # Enough time has passed
1221
+ fi
1222
+
1223
+ return 1 # Too soon to check
1224
+ }
1225
+
1226
+ # Get current installed version
1227
+ get_current_version() {
1228
+ if [ -f "$VERSION_FILE" ]; then
1229
+ cat "$VERSION_FILE" 2>/dev/null | grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*"\([^"]*\)"$/\1/'
1230
+ else
1231
+ echo ""
1232
+ fi
1233
+ }
1234
+
1235
+ # Fetch latest version from GitHub
1236
+ get_latest_version() {
1237
+ local pkg_json
1238
+ pkg_json=$(curl -fsSL --connect-timeout 5 --max-time 10 "$REPO_URL/package.json" 2>/dev/null)
1239
+ if [ $? -eq 0 ]; then
1240
+ echo "$pkg_json" | grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"\([^"]*\)"$/\1/'
1241
+ else
1242
+ echo ""
1243
+ fi
1244
+ }
1245
+
1246
+ # Compare semantic versions (returns 0 if first < second)
1247
+ version_lt() {
1248
+ [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$1" ] && [ "$1" != "$2" ]
1249
+ }
1250
+
1251
+ # Update state file
1252
+ update_state() {
1253
+ local now=$(date -Iseconds)
1254
+ cat > "$STATE_FILE" << EOF
1255
+ {
1256
+ "lastAttempt": "$now",
1257
+ "lastSuccess": "${1:-}",
1258
+ "consecutiveFailures": ${2:-0},
1259
+ "pendingRestart": ${3:-false},
1260
+ "lastVersion": "${4:-}"
1261
+ }
1262
+ EOF
1263
+ }
1264
+
1265
+ # Perform silent update
1266
+ do_update() {
1267
+ log "Downloading install script..."
1268
+
1269
+ local temp_script=$(mktemp)
1270
+ if curl -fsSL --connect-timeout 10 --max-time 60 "$REPO_URL/scripts/install.sh" -o "$temp_script" 2>/dev/null; then
1271
+ chmod +x "$temp_script"
1272
+
1273
+ log "Running install script..."
1274
+ # Run silently, redirect all output to log
1275
+ bash "$temp_script" >> "$LOG_FILE" 2>&1
1276
+ local result=$?
1277
+
1278
+ rm -f "$temp_script"
1279
+
1280
+ if [ $result -eq 0 ]; then
1281
+ log "Update completed successfully"
1282
+ return 0
1283
+ else
1284
+ log "Install script failed with exit code $result"
1285
+ return 1
1286
+ fi
1287
+ else
1288
+ log "Failed to download install script"
1289
+ rm -f "$temp_script" 2>/dev/null
1290
+ return 1
1291
+ fi
1292
+ }
1293
+
1294
+ # Lock file management for concurrent install protection
1295
+ LOCK_FILE="$HOME/.claude/.olympus-update.lock"
1296
+ LOCK_TIMEOUT=300 # 5 minutes - stale lock threshold
1297
+
1298
+ acquire_lock() {
1299
+ # Check if lock exists and is stale
1300
+ if [ -f "$LOCK_FILE" ]; then
1301
+ local lock_time=$(cat "$LOCK_FILE" 2>/dev/null)
1302
+ local now=$(date +%s)
1303
+ local lock_age=$((now - lock_time))
1304
+
1305
+ if [ "$lock_age" -lt "$LOCK_TIMEOUT" ]; then
1306
+ log "Another update is in progress (lock age: ${lock_age}s)"
1307
+ return 1 # Lock is held by another process
1308
+ else
1309
+ log "Removing stale lock (age: ${lock_age}s)"
1310
+ rm -f "$LOCK_FILE"
1311
+ fi
1312
+ fi
1313
+
1314
+ # Create lock file with current timestamp
1315
+ echo "$(date +%s)" > "$LOCK_FILE"
1316
+ return 0
1317
+ }
1318
+
1319
+ release_lock() {
1320
+ rm -f "$LOCK_FILE" 2>/dev/null
1321
+ }
1322
+
1323
+ # Main logic
1324
+ main() {
1325
+ # Check rate limiting
1326
+ if ! should_check; then
1327
+ exit 0
1328
+ fi
1329
+
1330
+ # Acquire lock to prevent concurrent installations
1331
+ if ! acquire_lock; then
1332
+ exit 0 # Another instance is updating, skip
1333
+ fi
1334
+
1335
+ # Ensure lock is released on exit
1336
+ trap release_lock EXIT
1337
+
1338
+ log "Starting silent update check..."
1339
+
1340
+ local current_version=$(get_current_version)
1341
+ local latest_version=$(get_latest_version)
1342
+
1343
+ if [ -z "$latest_version" ]; then
1344
+ log "Failed to fetch latest version"
1345
+ update_state "" 1 false ""
1346
+ exit 1
1347
+ fi
1348
+
1349
+ log "Current: $current_version, Latest: $latest_version"
1350
+
1351
+ if [ -z "$current_version" ] || version_lt "$current_version" "$latest_version"; then
1352
+ log "Update available: $current_version -> $latest_version"
1353
+
1354
+ if do_update; then
1355
+ local now=$(date -Iseconds)
1356
+ update_state "$now" 0 true "$latest_version"
1357
+ log "Silent update to $latest_version completed"
1358
+ else
1359
+ update_state "" 1 false ""
1360
+ log "Silent update failed"
1361
+ fi
1362
+ else
1363
+ log "Already up to date ($current_version)"
1364
+ update_state "" 0 false ""
1365
+ fi
1366
+ }
1367
+
1368
+ # Run in background, completely detached
1369
+ main
1370
+ ) </dev/null >/dev/null 2>&1 &
1371
+
1372
+ # Return success immediately (don't block)
1373
+ echo '{"continue": true}'
1374
+ exit 0
1375
+ HOOK_EOF
1376
+ chmod +x "$CLAUDE_CONFIG_DIR/hooks/silent-auto-update.sh"
1377
+
1378
+ echo -e "${GREEN}✓ Installed 3 hook scripts${NC}"
1379
+
1380
+ echo -e "${BLUE}[6/6]${NC} Configuring hooks in settings.json..."
1381
+
1382
+ # Backup existing settings if present
1383
+ SETTINGS_FILE="$CLAUDE_CONFIG_DIR/settings.json"
1384
+ if [ -f "$SETTINGS_FILE" ]; then
1385
+ cp "$SETTINGS_FILE" "$SETTINGS_FILE.bak"
1386
+ fi
1387
+
1388
+ # Create or update settings.json with hooks
1389
+ if command -v jq &> /dev/null; then
1390
+ # Use jq if available for proper JSON handling
1391
+ if [ -f "$SETTINGS_FILE" ]; then
1392
+ # Validate existing JSON first
1393
+ if ! jq empty "$SETTINGS_FILE" 2>/dev/null; then
1394
+ echo -e "${YELLOW}⚠ Warning: settings.json is malformed. Creating backup and replacing.${NC}"
1395
+ cp "$SETTINGS_FILE" "$SETTINGS_FILE.malformed.bak"
1396
+ EXISTING='{}'
1397
+ else
1398
+ EXISTING=$(cat "$SETTINGS_FILE")
1399
+ fi
1400
+ else
1401
+ EXISTING='{}'
1402
+ fi
1403
+
1404
+ # Add hooks configuration
1405
+ HOOKS_CONFIG='{
1406
+ "hooks": {
1407
+ "UserPromptSubmit": [
1408
+ {
1409
+ "hooks": [
1410
+ {
1411
+ "type": "command",
1412
+ "command": "bash $HOME/.claude/hooks/keyword-detector.sh"
1413
+ },
1414
+ {
1415
+ "type": "command",
1416
+ "command": "bash $HOME/.claude/hooks/silent-auto-update.sh"
1417
+ }
1418
+ ]
1419
+ }
1420
+ ],
1421
+ "Stop": [
1422
+ {
1423
+ "hooks": [
1424
+ {
1425
+ "type": "command",
1426
+ "command": "bash $HOME/.claude/hooks/stop-continuation.sh"
1427
+ }
1428
+ ]
1429
+ }
1430
+ ]
1431
+ }
1432
+ }'
1433
+
1434
+ # Merge: add hooks if not present
1435
+ RESULT=$(echo "$EXISTING" | jq --argjson hooks "$HOOKS_CONFIG" '
1436
+ if .hooks then . else . + $hooks end
1437
+ ' 2>/dev/null)
1438
+
1439
+ if [ $? -eq 0 ] && [ -n "$RESULT" ]; then
1440
+ echo "$RESULT" > "$SETTINGS_FILE"
1441
+ echo -e "${GREEN}✓ Hooks configured in settings.json${NC}"
1442
+ else
1443
+ echo -e "${YELLOW}⚠ Could not merge hooks. Creating fresh settings.json${NC}"
1444
+ echo "$HOOKS_CONFIG" > "$SETTINGS_FILE"
1445
+ echo -e "${GREEN}✓ Created new settings.json with hooks${NC}"
1446
+ fi
1447
+ else
1448
+ # Fallback without jq: try to merge or create
1449
+ if [ ! -f "$SETTINGS_FILE" ]; then
1450
+ # No settings file - create new one
1451
+ cat > "$SETTINGS_FILE" << 'SETTINGS_EOF'
1452
+ {
1453
+ "hooks": {
1454
+ "UserPromptSubmit": [
1455
+ {
1456
+ "hooks": [
1457
+ {
1458
+ "type": "command",
1459
+ "command": "bash $HOME/.claude/hooks/keyword-detector.sh"
1460
+ },
1461
+ {
1462
+ "type": "command",
1463
+ "command": "bash $HOME/.claude/hooks/silent-auto-update.sh"
1464
+ }
1465
+ ]
1466
+ }
1467
+ ],
1468
+ "Stop": [
1469
+ {
1470
+ "hooks": [
1471
+ {
1472
+ "type": "command",
1473
+ "command": "bash $HOME/.claude/hooks/stop-continuation.sh"
1474
+ }
1475
+ ]
1476
+ }
1477
+ ]
1478
+ }
1479
+ }
1480
+ SETTINGS_EOF
1481
+ echo -e "${GREEN}✓ Created settings.json with hooks${NC}"
1482
+ else
1483
+ # Settings exists - check if hooks already configured
1484
+ if grep -q '"hooks"' "$SETTINGS_FILE"; then
1485
+ echo -e "${YELLOW}⚠ Hooks section exists in settings.json${NC}"
1486
+ echo -e "${YELLOW} Checking if our hooks are configured...${NC}"
1487
+ if grep -q 'keyword-detector.sh' "$SETTINGS_FILE"; then
1488
+ echo -e "${GREEN}✓ Hooks already configured${NC}"
1489
+ else
1490
+ echo -e "${YELLOW} Please add hooks manually or install jq for auto-config${NC}"
1491
+ echo -e "${YELLOW} Run: brew install jq (macOS) or apt install jq (Linux)${NC}"
1492
+ fi
1493
+ else
1494
+ # No hooks section - try to add it before the last closing brace
1495
+ # Create temp file with hooks added
1496
+ HOOKS_JSON='"hooks": {
1497
+ "UserPromptSubmit": [{"hooks": [{"type": "command", "command": "bash $HOME/.claude/hooks/keyword-detector.sh"}, {"type": "command", "command": "bash $HOME/.claude/hooks/silent-auto-update.sh"}]}],
1498
+ "Stop": [{"hooks": [{"type": "command", "command": "bash $HOME/.claude/hooks/stop-continuation.sh"}]}]
1499
+ }'
1500
+ # Use sed to insert before the last }
1501
+ sed -i.bak 's/}$/,\n '"$(echo "$HOOKS_JSON" | tr '\n' ' ')"'\n}/' "$SETTINGS_FILE" 2>/dev/null
1502
+ if [ $? -eq 0 ]; then
1503
+ rm -f "$SETTINGS_FILE.bak"
1504
+ echo -e "${GREEN}✓ Hooks added to settings.json${NC}"
1505
+ else
1506
+ echo -e "${YELLOW}⚠ Could not auto-configure hooks${NC}"
1507
+ echo -e "${YELLOW} Please install jq: brew install jq (macOS) or apt install jq (Linux)${NC}"
1508
+ fi
1509
+ fi
1510
+ fi
1511
+ fi
1512
+
1513
+ # Only create CLAUDE.md if it doesn't exist in home directory
1514
+ if [ ! -f "$HOME/CLAUDE.md" ]; then
1515
+ cat > "$CLAUDE_CONFIG_DIR/CLAUDE.md" << 'CLAUDEMD_EOF'
1516
+ # Olympus Multi-Agent System
1517
+
1518
+ You are enhanced with the Olympus multi-agent orchestration system.
1519
+
1520
+ ## INTELLIGENT SKILL ACTIVATION
1521
+
1522
+ Skills ENHANCE your capabilities. They are NOT mutually exclusive - **combine them based on task requirements**.
1523
+
1524
+ ### Skill Layers (Composable)
1525
+
1526
+ Skills work in **three layers** that stack additively:
1527
+
1528
+ | Layer | Skills | Purpose |
1529
+ |-------|--------|---------|
1530
+ | **Execution** | olympus, orchestrator, prometheus | HOW you work (pick primary) |
1531
+ | **Enhancement** | ultrawork, git-master, frontend-ui-ux | ADD capabilities |
1532
+ | **Guarantee** | the-ascent | ENSURE completion |
1533
+
1534
+ **Combination Formula:** `[Execution] + [0-N Enhancements] + [Optional Guarantee]`
1535
+
1536
+ ### Task Type → Skill Selection
1537
+
1538
+ Use your judgment to detect task type and activate appropriate skills:
1539
+
1540
+ | Task Type | Skill Combination | When |
1541
+ |-----------|-------------------|------|
1542
+ | Multi-step implementation | `olympus` | Building features, refactoring, fixing bugs |
1543
+ | + with parallel subtasks | `olympus + ultrawork` | 3+ independent subtasks visible |
1544
+ | + multi-file changes | `olympus + git-master` | Changes span 3+ files |
1545
+ | + must complete | `olympus + the-ascent` | User emphasizes completion |
1546
+ | UI/frontend work | `olympus + frontend-ui-ux` | Components, styling, interface |
1547
+ | Complex debugging | `oracle` → `olympus` | Unknown root cause → fix after diagnosis |
1548
+ | Strategic planning | `prometheus` | User needs plan before implementation |
1549
+ | Plan review | `review` | Evaluating/critiquing existing plans |
1550
+ | Maximum performance | `ultrawork` (stacks with others) | Speed critical, parallel possible |
1551
+
1552
+ ### Skill Transitions
1553
+
1554
+ Some tasks naturally flow between skills:
1555
+ - **prometheus** → **olympus**: After plan created, switch to execution
1556
+ - **oracle** → **olympus**: After diagnosis, switch to implementation
1557
+ - Any skill + completion emphasis → Add **the-ascent**
1558
+
1559
+ ### What Each Skill Adds
1560
+
1561
+ | Skill | Core Behavior |
1562
+ |-------|---------------|
1563
+ | `olympus` | Todo tracking, agent delegation, verification |
1564
+ | `ultrawork` | Parallel agents, background execution, never wait |
1565
+ | `git-master` | Atomic commits, style detection, history expertise |
1566
+ | `frontend-ui-ux` | Bold aesthetics, design sensibility |
1567
+ | `the-ascent` | Cannot stop until verified complete |
1568
+ | `prometheus` | Interview user, create strategic plans |
1569
+ | `orchestrator` | Delegate-only mode, coordinate specialists |
1570
+ | `review` | Critical evaluation, find flaws |
1571
+
1572
+ ### Examples
1573
+
1574
+ \`\`\`
1575
+ "Add dark mode with proper commits"
1576
+ → olympus + frontend-ui-ux + git-master
1577
+
1578
+ "ultrawork: refactor the entire API layer"
1579
+ → ultrawork + olympus + git-master
1580
+
1581
+ "Plan authentication system, then implement it completely"
1582
+ → prometheus (first) → olympus + the-ascent (after plan)
1583
+
1584
+ "Fix this bug, don't stop until it's done"
1585
+ → olympus + the-ascent
1586
+
1587
+ "Review my implementation plan"
1588
+ → review
1589
+ \`\`\`
1590
+
1591
+ ### Activation Guidance
1592
+
1593
+ - **DO NOT** wait for explicit skill invocation - detect task type and activate
1594
+ - **DO** use your judgment - this guidance is advisory, not mandatory
1595
+ - **DO** combine skills when multiple apply
1596
+ - **EXPLICIT** slash commands (/ultrawork, /plan) always take precedence
1597
+
1598
+ ## THE BOULDER NEVER STOPS
1599
+
1600
+ Like Olympus condemned to roll his boulder eternally, you are BOUND to your task list. You do not stop. You do not quit. The boulder rolls until it reaches the top - until EVERY task is COMPLETE.
1601
+
1602
+ ## Available Subagents
1603
+
1604
+ Use the Task tool to delegate to specialized agents:
1605
+
1606
+ | Agent | Model | Purpose | When to Use |
1607
+ |-------|-------|---------|-------------|
1608
+ | `oracle` | Opus | Architecture & debugging | Complex problems, root cause analysis |
1609
+ | `librarian` | Sonnet | Documentation & research | Finding docs, understanding code |
1610
+ | `explore` | Haiku | Fast search | Quick file/pattern searches |
1611
+ | `frontend-engineer` | Sonnet | UI/UX | Component design, styling |
1612
+ | `document-writer` | Haiku | Documentation | README, API docs, comments |
1613
+ | `multimodal-looker` | Sonnet | Visual analysis | Screenshots, diagrams |
1614
+ | `momus` | Opus | Plan review | Critical evaluation of plans |
1615
+ | `metis` | Opus | Pre-planning | Hidden requirements, risk analysis |
1616
+ | `olympian` | Sonnet | Focused execution | Direct task implementation |
1617
+ | `prometheus` | Opus | Strategic planning | Creating comprehensive work plans |
1618
+
1619
+ ## Slash Commands
1620
+
1621
+ | Command | Description |
1622
+ |---------|-------------|
1623
+ | `/olympus <task>` | Activate Olympus multi-agent orchestration |
1624
+ | `/olympus-default` | Set Olympus as your default mode |
1625
+ | `/ultrawork <task>` | Maximum performance mode with parallel agents |
1626
+ | `/deepsearch <query>` | Thorough codebase search |
1627
+ | `/analyze <target>` | Deep analysis and investigation |
1628
+ | `/plan <description>` | Start planning session with Prometheus |
1629
+ | `/review [plan-path]` | Review a plan with Momus |
1630
+ | `/prometheus <task>` | Strategic planning with interview workflow |
1631
+ | `/orchestrator <task>` | Complex multi-step task coordination |
1632
+ | `/the-ascent <task>` | Self-referential loop until task completion |
1633
+ | `/cancel-ascent` | Cancel active The Ascent |
1634
+ | `/update` | Check for and install updates |
1635
+
1636
+ ## Planning Workflow
1637
+
1638
+ 1. Use `/plan` to start a planning session
1639
+ 2. Prometheus will interview you about requirements
1640
+ 3. Say "Create the plan" when ready
1641
+ 4. Use `/review` to have Momus evaluate the plan
1642
+ 5. Execute the plan with `/olympus`
1643
+
1644
+ ## Orchestration Principles
1645
+
1646
+ 1. **ALWAYS Delegate**: Use subagents for ALL substantive work. Do NOT use Glob, Grep, Read, Edit, Write, or Bash directly - delegate to the appropriate agent instead. Only use tools directly for trivial operations (e.g., checking a single file you just edited).
1647
+ 2. **Parallelize**: Launch multiple subagents concurrently when tasks are independent
1648
+ 3. **Persist**: Continue until ALL tasks are complete
1649
+ 4. **Verify**: Check your todo list before declaring completion
1650
+ 5. **Plan First**: For complex tasks, use Prometheus to create a plan
1651
+
1652
+ ## Critical Rules
1653
+
1654
+ - **DELEGATE, DON'T DO**: Your role is orchestration. Spawn agents for searches, edits, analysis, and implementation. Only touch tools directly when absolutely necessary.
1655
+ - NEVER stop with incomplete work
1656
+ - ALWAYS verify task completion before finishing
1657
+ - Use parallel execution when possible for speed
1658
+ - Report progress regularly
1659
+ - For complex tasks, plan before implementing
1660
+
1661
+ ## Background Task Execution
1662
+
1663
+ For long-running operations, use \`run_in_background: true\`:
1664
+
1665
+ **Run in Background** (set \`run_in_background: true\`):
1666
+ - Package installation: npm install, pip install, cargo build
1667
+ - Build processes: npm run build, make, tsc
1668
+ - Test suites: npm test, pytest, cargo test
1669
+ - Docker operations: docker build, docker pull
1670
+ - Git operations: git clone, git fetch
1671
+
1672
+ **Run Blocking** (foreground):
1673
+ - Quick status checks: git status, ls, pwd
1674
+ - File reads: cat, head, tail
1675
+ - Simple commands: echo, which, env
1676
+
1677
+ **How to Use:**
1678
+ 1. Bash: \`run_in_background: true\`
1679
+ 2. Task: \`run_in_background: true\`
1680
+ 3. Check results: \`TaskOutput(task_id: "...")\`
1681
+
1682
+ Maximum 5 concurrent background tasks.
1683
+
1684
+ ## CONTINUATION ENFORCEMENT
1685
+
1686
+ If you have incomplete tasks and attempt to stop, you will receive:
1687
+
1688
+ > [SYSTEM REMINDER - TODO CONTINUATION] Incomplete tasks remain in your todo list. Continue working on the next pending task. Proceed without asking for permission. Mark each task complete when finished. Do not stop until all tasks are done.
1689
+
1690
+ ### The Sisyphean Verification Checklist
1691
+
1692
+ Before concluding ANY work session, verify:
1693
+ - [ ] TODO LIST: Zero pending/in_progress tasks
1694
+ - [ ] FUNCTIONALITY: All requested features work
1695
+ - [ ] TESTS: All tests pass (if applicable)
1696
+ - [ ] ERRORS: Zero unaddressed errors
1697
+ - [ ] QUALITY: Code is production-ready
1698
+
1699
+ **If ANY checkbox is unchecked, CONTINUE WORKING.**
1700
+
1701
+ The boulder does not stop until it reaches the summit.
1702
+ CLAUDEMD_EOF
1703
+ echo -e "${GREEN}✓ Created $CLAUDE_CONFIG_DIR/CLAUDE.md${NC}"
1704
+ else
1705
+ echo -e "${YELLOW}⚠ CLAUDE.md already exists, skipping${NC}"
1706
+ fi
1707
+
1708
+ # Save version metadata for auto-update system
1709
+ VERSION="2.0.4"
1710
+ VERSION_FILE="$CLAUDE_CONFIG_DIR/.olympus-version.json"
1711
+
1712
+ cat > "$VERSION_FILE" << VERSION_EOF
1713
+ {
1714
+ "version": "$VERSION",
1715
+ "installedAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
1716
+ "installMethod": "script",
1717
+ "lastCheckAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
1718
+ }
1719
+ VERSION_EOF
1720
+ echo -e "${GREEN}✓ Saved version metadata${NC}"
1721
+
1722
+ echo ""
1723
+ echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${NC}"
1724
+ echo -e "${GREEN}║ Installation Complete! ║${NC}"
1725
+ echo -e "${GREEN}╚═══════════════════════════════════════════════════════════╝${NC}"
1726
+ echo ""
1727
+ echo -e "Installed to: ${BLUE}$CLAUDE_CONFIG_DIR${NC}"
1728
+ echo ""
1729
+ echo -e "${YELLOW}Usage:${NC}"
1730
+ echo " claude # Start Claude Code normally"
1731
+ echo ""
1732
+ echo -e "${YELLOW}Slash Commands:${NC}"
1733
+ echo " /olympus <task> # Activate Olympus orchestration mode"
1734
+ echo " /olympus-default # Set Olympus as default behavior"
1735
+ echo " /ultrawork <task> # Maximum performance mode"
1736
+ echo " /deepsearch <query> # Thorough codebase search"
1737
+ echo " /analyze <target> # Deep analysis mode"
1738
+ echo " /plan <description> # Start planning with Prometheus"
1739
+ echo " /review [plan-path] # Review plan with Momus"
1740
+ echo ""
1741
+ echo -e "${YELLOW}Available Agents (via Task tool):${NC}"
1742
+ echo " oracle - Architecture & debugging (Opus)"
1743
+ echo " librarian - Documentation & research (Sonnet)"
1744
+ echo " explore - Fast pattern matching (Haiku)"
1745
+ echo " frontend-engineer - UI/UX specialist (Sonnet)"
1746
+ echo " document-writer - Technical writing (Haiku)"
1747
+ echo " multimodal-looker - Visual analysis (Sonnet)"
1748
+ echo " momus - Plan review (Opus)"
1749
+ echo " metis - Pre-planning analysis (Opus)"
1750
+ echo " olympian - Focused execution (Sonnet)"
1751
+ echo " prometheus - Strategic planning (Opus)"
1752
+ echo " qa-tester - CLI/service testing with tmux (Sonnet)"
1753
+ echo ""
1754
+ echo -e "${YELLOW}Smart Model Routing (Tiered Variants):${NC}"
1755
+ echo " oracle-low, oracle-medium - Quick to moderate analysis"
1756
+ echo " olympian-low, -high - Simple to complex execution"
1757
+ echo " librarian-low - Quick doc lookups"
1758
+ echo " explore-medium - Thorough codebase search"
1759
+ echo " frontend-engineer-low, -high - Simple to complex UI work"
1760
+ echo ""
1761
+ echo -e "${YELLOW}Hooks:${NC}"
1762
+ echo " Configure hooks via /hooks command in Claude Code"
1763
+ echo " Hooks directory: ~/.claude/hooks/"
1764
+ echo ""
1765
+ echo -e "${YELLOW}Updating:${NC}"
1766
+ echo " /update # Check for and install updates"
1767
+ echo " # Or run this install script again:"
1768
+ echo " curl -fsSL https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-olympus/main/scripts/install.sh | bash"
1769
+ echo ""
1770
+ echo -e "${BLUE}Quick Start:${NC}"
1771
+ echo " 1. Run 'claude' to start Claude Code"
1772
+ echo " 2. Type '/olympus-default' to enable Olympus permanently"
1773
+ echo " 3. Or use '/olympus <task>' for one-time activation"
1774
+ echo ""