oh-my-claude-sisyphus 3.3.10 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +74 -8
  2. package/agents/explore-high.md +195 -0
  3. package/agents/qa-tester-high.md +141 -0
  4. package/agents/templates/README.md +110 -0
  5. package/agents/templates/base-agent.md +54 -0
  6. package/agents/templates/tier-instructions.md +94 -0
  7. package/commands/cancel-ecomode.md +71 -0
  8. package/commands/cancel.md +75 -0
  9. package/commands/ecomode.md +60 -0
  10. package/commands/help.md +1 -1
  11. package/commands/mcp-setup.md +7 -6
  12. package/commands/pipeline.md +231 -0
  13. package/commands/planner.md +174 -0
  14. package/commands/ralplan.md +8 -1
  15. package/commands/swarm.md +280 -0
  16. package/commands/ultrapilot.md +158 -0
  17. package/commands/ultrawork.md +1 -0
  18. package/dist/__tests__/delegation-enforcer-integration.test.d.ts +6 -0
  19. package/dist/__tests__/delegation-enforcer-integration.test.d.ts.map +1 -0
  20. package/dist/__tests__/delegation-enforcer-integration.test.js +136 -0
  21. package/dist/__tests__/delegation-enforcer-integration.test.js.map +1 -0
  22. package/dist/__tests__/delegation-enforcer.test.d.ts +5 -0
  23. package/dist/__tests__/delegation-enforcer.test.d.ts.map +1 -0
  24. package/dist/__tests__/delegation-enforcer.test.js +208 -0
  25. package/dist/__tests__/delegation-enforcer.test.js.map +1 -0
  26. package/dist/__tests__/hooks.test.js +2 -2
  27. package/dist/__tests__/hooks.test.js.map +1 -1
  28. package/dist/__tests__/installer.test.js +4 -6
  29. package/dist/__tests__/installer.test.js.map +1 -1
  30. package/dist/__tests__/ralph-prd.test.js +1 -1
  31. package/dist/__tests__/ralph-prd.test.js.map +1 -1
  32. package/dist/__tests__/ralph-progress.test.js +1 -1
  33. package/dist/__tests__/ralph-progress.test.js.map +1 -1
  34. package/dist/__tests__/skills.test.js +31 -24
  35. package/dist/__tests__/skills.test.js.map +1 -1
  36. package/dist/agents/analyst.d.ts.map +1 -1
  37. package/dist/agents/analyst.js +1 -0
  38. package/dist/agents/analyst.js.map +1 -1
  39. package/dist/agents/architect.d.ts.map +1 -1
  40. package/dist/agents/architect.js +1 -0
  41. package/dist/agents/architect.js.map +1 -1
  42. package/dist/agents/critic.d.ts.map +1 -1
  43. package/dist/agents/critic.js +1 -0
  44. package/dist/agents/critic.js.map +1 -1
  45. package/dist/agents/definitions.d.ts +5 -1
  46. package/dist/agents/definitions.d.ts.map +1 -1
  47. package/dist/agents/definitions.js +53 -155
  48. package/dist/agents/definitions.js.map +1 -1
  49. package/dist/agents/designer.d.ts.map +1 -1
  50. package/dist/agents/designer.js +1 -0
  51. package/dist/agents/designer.js.map +1 -1
  52. package/dist/agents/executor.d.ts.map +1 -1
  53. package/dist/agents/executor.js +1 -0
  54. package/dist/agents/executor.js.map +1 -1
  55. package/dist/agents/explore.d.ts.map +1 -1
  56. package/dist/agents/explore.js +1 -0
  57. package/dist/agents/explore.js.map +1 -1
  58. package/dist/agents/planner.d.ts.map +1 -1
  59. package/dist/agents/planner.js +1 -0
  60. package/dist/agents/planner.js.map +1 -1
  61. package/dist/agents/qa-tester.d.ts.map +1 -1
  62. package/dist/agents/qa-tester.js +1 -0
  63. package/dist/agents/qa-tester.js.map +1 -1
  64. package/dist/agents/researcher.d.ts.map +1 -1
  65. package/dist/agents/researcher.js +1 -0
  66. package/dist/agents/researcher.js.map +1 -1
  67. package/dist/agents/scientist.d.ts.map +1 -1
  68. package/dist/agents/scientist.js +1 -0
  69. package/dist/agents/scientist.js.map +1 -1
  70. package/dist/agents/types.d.ts +2 -0
  71. package/dist/agents/types.d.ts.map +1 -1
  72. package/dist/agents/types.js.map +1 -1
  73. package/dist/agents/vision.d.ts.map +1 -1
  74. package/dist/agents/vision.js +1 -0
  75. package/dist/agents/vision.js.map +1 -1
  76. package/dist/agents/writer.d.ts.map +1 -1
  77. package/dist/agents/writer.js +1 -0
  78. package/dist/agents/writer.js.map +1 -1
  79. package/dist/analytics/cost-estimator.d.ts +14 -0
  80. package/dist/analytics/cost-estimator.d.ts.map +1 -0
  81. package/dist/analytics/cost-estimator.js +70 -0
  82. package/dist/analytics/cost-estimator.js.map +1 -0
  83. package/dist/analytics/export.d.ts +7 -0
  84. package/dist/analytics/export.d.ts.map +1 -0
  85. package/dist/analytics/export.js +93 -0
  86. package/dist/analytics/export.js.map +1 -0
  87. package/dist/analytics/index.d.ts +14 -0
  88. package/dist/analytics/index.d.ts.map +1 -0
  89. package/dist/analytics/index.js +14 -0
  90. package/dist/analytics/index.js.map +1 -0
  91. package/dist/analytics/metrics-collector.d.ts +30 -0
  92. package/dist/analytics/metrics-collector.d.ts.map +1 -0
  93. package/dist/analytics/metrics-collector.js +96 -0
  94. package/dist/analytics/metrics-collector.js.map +1 -0
  95. package/dist/analytics/query-engine.d.ts +32 -0
  96. package/dist/analytics/query-engine.d.ts.map +1 -0
  97. package/dist/analytics/query-engine.js +151 -0
  98. package/dist/analytics/query-engine.js.map +1 -0
  99. package/dist/analytics/session-manager.d.ts +26 -0
  100. package/dist/analytics/session-manager.d.ts.map +1 -0
  101. package/dist/analytics/session-manager.js +201 -0
  102. package/dist/analytics/session-manager.js.map +1 -0
  103. package/dist/analytics/session-types.d.ts +37 -0
  104. package/dist/analytics/session-types.d.ts.map +1 -0
  105. package/dist/analytics/session-types.js +2 -0
  106. package/dist/analytics/session-types.js.map +1 -0
  107. package/dist/analytics/token-tracker.d.ts +24 -0
  108. package/dist/analytics/token-tracker.d.ts.map +1 -0
  109. package/dist/analytics/token-tracker.js +161 -0
  110. package/dist/analytics/token-tracker.js.map +1 -0
  111. package/dist/analytics/types.d.ts +37 -0
  112. package/dist/analytics/types.d.ts.map +1 -0
  113. package/dist/analytics/types.js +21 -0
  114. package/dist/analytics/types.js.map +1 -0
  115. package/dist/cli/analytics.d.ts +3 -0
  116. package/dist/cli/analytics.d.ts.map +1 -0
  117. package/dist/cli/analytics.js +74 -0
  118. package/dist/cli/analytics.js.map +1 -0
  119. package/dist/cli/commands/agents.d.ts +5 -0
  120. package/dist/cli/commands/agents.d.ts.map +1 -0
  121. package/dist/cli/commands/agents.js +29 -0
  122. package/dist/cli/commands/agents.js.map +1 -0
  123. package/dist/cli/commands/cleanup.d.ts +4 -0
  124. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  125. package/dist/cli/commands/cleanup.js +17 -0
  126. package/dist/cli/commands/cleanup.js.map +1 -0
  127. package/dist/cli/commands/cost.d.ts +4 -0
  128. package/dist/cli/commands/cost.d.ts.map +1 -0
  129. package/dist/cli/commands/cost.js +53 -0
  130. package/dist/cli/commands/cost.js.map +1 -0
  131. package/dist/cli/commands/export.d.ts +5 -0
  132. package/dist/cli/commands/export.d.ts.map +1 -0
  133. package/dist/cli/commands/export.js +30 -0
  134. package/dist/cli/commands/export.js.map +1 -0
  135. package/dist/cli/commands/sessions.d.ts +5 -0
  136. package/dist/cli/commands/sessions.d.ts.map +1 -0
  137. package/dist/cli/commands/sessions.js +37 -0
  138. package/dist/cli/commands/sessions.js.map +1 -0
  139. package/dist/cli/commands/stats.d.ts +4 -0
  140. package/dist/cli/commands/stats.d.ts.map +1 -0
  141. package/dist/cli/commands/stats.js +43 -0
  142. package/dist/cli/commands/stats.js.map +1 -0
  143. package/dist/cli/index.js +0 -3
  144. package/dist/cli/index.js.map +1 -1
  145. package/dist/cli/utils/formatting.d.ts +22 -0
  146. package/dist/cli/utils/formatting.d.ts.map +1 -0
  147. package/dist/cli/utils/formatting.js +70 -0
  148. package/dist/cli/utils/formatting.js.map +1 -0
  149. package/dist/config/loader.d.ts.map +1 -1
  150. package/dist/config/loader.js +1 -6
  151. package/dist/config/loader.js.map +1 -1
  152. package/dist/features/delegation-enforcer.d.ts +71 -0
  153. package/dist/features/delegation-enforcer.d.ts.map +1 -0
  154. package/dist/features/delegation-enforcer.js +128 -0
  155. package/dist/features/delegation-enforcer.js.map +1 -0
  156. package/dist/features/index.d.ts +3 -0
  157. package/dist/features/index.d.ts.map +1 -1
  158. package/dist/features/index.js +18 -0
  159. package/dist/features/index.js.map +1 -1
  160. package/dist/features/state-manager/index.d.ts +100 -0
  161. package/dist/features/state-manager/index.d.ts.map +1 -0
  162. package/dist/features/state-manager/index.js +407 -0
  163. package/dist/features/state-manager/index.js.map +1 -0
  164. package/dist/features/state-manager/types.d.ts +147 -0
  165. package/dist/features/state-manager/types.d.ts.map +1 -0
  166. package/dist/features/state-manager/types.js +30 -0
  167. package/dist/features/state-manager/types.js.map +1 -0
  168. package/dist/features/task-decomposer/index.d.ts +33 -0
  169. package/dist/features/task-decomposer/index.d.ts.map +1 -0
  170. package/dist/features/task-decomposer/index.js +698 -0
  171. package/dist/features/task-decomposer/index.js.map +1 -0
  172. package/dist/features/task-decomposer/types.d.ts +133 -0
  173. package/dist/features/task-decomposer/types.d.ts.map +1 -0
  174. package/dist/features/task-decomposer/types.js +8 -0
  175. package/dist/features/task-decomposer/types.js.map +1 -0
  176. package/dist/features/verification/example.d.ts +49 -0
  177. package/dist/features/verification/example.d.ts.map +1 -0
  178. package/dist/features/verification/example.js +235 -0
  179. package/dist/features/verification/example.js.map +1 -0
  180. package/dist/features/verification/index.d.ts +97 -0
  181. package/dist/features/verification/index.d.ts.map +1 -0
  182. package/dist/features/verification/index.js +439 -0
  183. package/dist/features/verification/index.js.map +1 -0
  184. package/dist/features/verification/types.d.ts +142 -0
  185. package/dist/features/verification/types.d.ts.map +1 -0
  186. package/dist/features/verification/types.js +7 -0
  187. package/dist/features/verification/types.js.map +1 -0
  188. package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -1
  189. package/dist/hooks/agent-usage-reminder/constants.js +0 -1
  190. package/dist/hooks/agent-usage-reminder/constants.js.map +1 -1
  191. package/dist/hooks/autopilot/__tests__/cancel.test.js +4 -4
  192. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
  193. package/dist/hooks/autopilot/__tests__/summary.test.js +1 -1
  194. package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
  195. package/dist/hooks/autopilot/__tests__/transition.test.js +1 -2
  196. package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -1
  197. package/dist/hooks/autopilot/cancel.js +2 -2
  198. package/dist/hooks/autopilot/cancel.js.map +1 -1
  199. package/dist/hooks/autopilot/enforcement.d.ts +16 -2
  200. package/dist/hooks/autopilot/enforcement.d.ts.map +1 -1
  201. package/dist/hooks/autopilot/enforcement.js +78 -4
  202. package/dist/hooks/autopilot/enforcement.js.map +1 -1
  203. package/dist/hooks/autopilot/index.d.ts +3 -6
  204. package/dist/hooks/autopilot/index.d.ts.map +1 -1
  205. package/dist/hooks/autopilot/index.js +6 -12
  206. package/dist/hooks/autopilot/index.js.map +1 -1
  207. package/dist/hooks/autopilot/state.d.ts +36 -2
  208. package/dist/hooks/autopilot/state.d.ts.map +1 -1
  209. package/dist/hooks/autopilot/state.js +216 -2
  210. package/dist/hooks/autopilot/state.js.map +1 -1
  211. package/dist/hooks/autopilot/validation.d.ts +23 -2
  212. package/dist/hooks/autopilot/validation.d.ts.map +1 -1
  213. package/dist/hooks/autopilot/validation.js +158 -1
  214. package/dist/hooks/autopilot/validation.js.map +1 -1
  215. package/dist/hooks/bridge.js +3 -3
  216. package/dist/hooks/bridge.js.map +1 -1
  217. package/dist/hooks/index.d.ts +5 -9
  218. package/dist/hooks/index.d.ts.map +1 -1
  219. package/dist/hooks/index.js +31 -21
  220. package/dist/hooks/index.js.map +1 -1
  221. package/dist/hooks/learner/promotion.js +1 -1
  222. package/dist/hooks/learner/promotion.js.map +1 -1
  223. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  224. package/dist/hooks/persistent-mode/index.js +2 -3
  225. package/dist/hooks/persistent-mode/index.js.map +1 -1
  226. package/dist/hooks/ralph/index.d.ts +11 -0
  227. package/dist/hooks/ralph/index.d.ts.map +1 -0
  228. package/dist/hooks/ralph/index.js +53 -0
  229. package/dist/hooks/ralph/index.js.map +1 -0
  230. package/dist/hooks/ralph/loop.d.ts +116 -0
  231. package/dist/hooks/ralph/loop.d.ts.map +1 -0
  232. package/dist/hooks/ralph/loop.js +322 -0
  233. package/dist/hooks/ralph/loop.js.map +1 -0
  234. package/dist/hooks/ralph/prd.d.ts +130 -0
  235. package/dist/hooks/ralph/prd.d.ts.map +1 -0
  236. package/dist/hooks/ralph/prd.js +310 -0
  237. package/dist/hooks/ralph/prd.js.map +1 -0
  238. package/dist/hooks/ralph/progress.d.ts +102 -0
  239. package/dist/hooks/ralph/progress.d.ts.map +1 -0
  240. package/dist/hooks/ralph/progress.js +408 -0
  241. package/dist/hooks/ralph/progress.js.map +1 -0
  242. package/dist/hooks/ralph/verifier.d.ts +72 -0
  243. package/dist/hooks/ralph/verifier.d.ts.map +1 -0
  244. package/dist/hooks/ralph/verifier.js +223 -0
  245. package/dist/hooks/ralph/verifier.js.map +1 -0
  246. package/dist/hooks/recovery/constants.d.ts +114 -0
  247. package/dist/hooks/recovery/constants.d.ts.map +1 -0
  248. package/dist/hooks/recovery/constants.js +227 -0
  249. package/dist/hooks/recovery/constants.js.map +1 -0
  250. package/dist/hooks/recovery/context-window.d.ts +24 -0
  251. package/dist/hooks/recovery/context-window.d.ts.map +1 -0
  252. package/dist/hooks/recovery/context-window.js +321 -0
  253. package/dist/hooks/recovery/context-window.js.map +1 -0
  254. package/dist/hooks/recovery/edit-error.d.ts +24 -0
  255. package/dist/hooks/recovery/edit-error.d.ts.map +1 -0
  256. package/dist/hooks/recovery/edit-error.js +56 -0
  257. package/dist/hooks/recovery/edit-error.js.map +1 -0
  258. package/dist/hooks/recovery/index.d.ts +102 -0
  259. package/dist/hooks/recovery/index.d.ts.map +1 -0
  260. package/dist/hooks/recovery/index.js +166 -0
  261. package/dist/hooks/recovery/index.js.map +1 -0
  262. package/dist/hooks/recovery/session-recovery.d.ts +24 -0
  263. package/dist/hooks/recovery/session-recovery.d.ts.map +1 -0
  264. package/dist/hooks/recovery/session-recovery.js +281 -0
  265. package/dist/hooks/recovery/session-recovery.js.map +1 -0
  266. package/dist/hooks/recovery/storage.d.ts +75 -0
  267. package/dist/hooks/recovery/storage.d.ts.map +1 -0
  268. package/dist/hooks/recovery/storage.js +382 -0
  269. package/dist/hooks/recovery/storage.js.map +1 -0
  270. package/dist/hooks/recovery/types.d.ts +196 -0
  271. package/dist/hooks/recovery/types.d.ts.map +1 -0
  272. package/dist/hooks/recovery/types.js +32 -0
  273. package/dist/hooks/recovery/types.js.map +1 -0
  274. package/dist/hooks/ultrapilot/index.d.ts +90 -0
  275. package/dist/hooks/ultrapilot/index.d.ts.map +1 -0
  276. package/dist/hooks/ultrapilot/index.js +310 -0
  277. package/dist/hooks/ultrapilot/index.js.map +1 -0
  278. package/dist/hooks/ultrapilot/state.d.ts +72 -0
  279. package/dist/hooks/ultrapilot/state.d.ts.map +1 -0
  280. package/dist/hooks/ultrapilot/state.js +258 -0
  281. package/dist/hooks/ultrapilot/state.js.map +1 -0
  282. package/dist/hooks/ultrapilot/types.d.ts +113 -0
  283. package/dist/hooks/ultrapilot/types.d.ts.map +1 -0
  284. package/dist/hooks/ultrapilot/types.js +36 -0
  285. package/dist/hooks/ultrapilot/types.js.map +1 -0
  286. package/dist/hooks/ultraqa/index.d.ts +94 -0
  287. package/dist/hooks/ultraqa/index.d.ts.map +1 -0
  288. package/dist/hooks/ultraqa/index.js +216 -0
  289. package/dist/hooks/ultraqa/index.js.map +1 -0
  290. package/dist/hooks/ultrawork/index.d.ts +62 -0
  291. package/dist/hooks/ultrawork/index.d.ts.map +1 -0
  292. package/dist/hooks/ultrawork/index.js +208 -0
  293. package/dist/hooks/ultrawork/index.js.map +1 -0
  294. package/dist/hud/analytics-display.d.ts +28 -0
  295. package/dist/hud/analytics-display.d.ts.map +1 -0
  296. package/dist/hud/analytics-display.js +105 -0
  297. package/dist/hud/analytics-display.js.map +1 -0
  298. package/dist/hud/background-cleanup.d.ts +28 -0
  299. package/dist/hud/background-cleanup.d.ts.map +1 -0
  300. package/dist/hud/background-cleanup.js +92 -0
  301. package/dist/hud/background-cleanup.js.map +1 -0
  302. package/dist/hud/index.js +4 -2
  303. package/dist/hud/index.js.map +1 -1
  304. package/dist/hud/render.d.ts +1 -1
  305. package/dist/hud/render.d.ts.map +1 -1
  306. package/dist/hud/render.js +32 -1
  307. package/dist/hud/render.js.map +1 -1
  308. package/dist/hud/state.d.ts +5 -0
  309. package/dist/hud/state.d.ts.map +1 -1
  310. package/dist/hud/state.js +13 -0
  311. package/dist/hud/state.js.map +1 -1
  312. package/dist/hud/types.d.ts +11 -1
  313. package/dist/hud/types.d.ts.map +1 -1
  314. package/dist/hud/types.js +19 -0
  315. package/dist/hud/types.js.map +1 -1
  316. package/dist/index.d.ts.map +1 -1
  317. package/dist/index.js +1 -2
  318. package/dist/index.js.map +1 -1
  319. package/dist/installer/index.d.ts +1 -1
  320. package/dist/installer/index.d.ts.map +1 -1
  321. package/dist/installer/index.js +1 -1
  322. package/dist/installer/index.js.map +1 -1
  323. package/dist/mcp/index.d.ts +1 -1
  324. package/dist/mcp/index.d.ts.map +1 -1
  325. package/dist/mcp/index.js +1 -1
  326. package/dist/mcp/index.js.map +1 -1
  327. package/dist/mcp/servers.d.ts +2 -18
  328. package/dist/mcp/servers.d.ts.map +1 -1
  329. package/dist/mcp/servers.js +4 -36
  330. package/dist/mcp/servers.js.map +1 -1
  331. package/dist/shared/types.d.ts +1 -3
  332. package/dist/shared/types.d.ts.map +1 -1
  333. package/docs/CLAUDE.md +170 -44
  334. package/docs/DELEGATION-ENFORCER.md +282 -0
  335. package/docs/FULL-README.md +130 -16
  336. package/docs/LOCAL_PLUGIN_INSTALL.md +1 -1
  337. package/docs/MIGRATION.md +513 -98
  338. package/docs/SYNC-SYSTEM.md +528 -0
  339. package/package.json +9 -3
  340. package/scripts/sync-metadata.ts +363 -0
  341. package/scripts/test-mutual-exclusion.ts +1 -1
  342. package/skills/analyze/SKILL.md +0 -1
  343. package/skills/autopilot/SKILL.md +0 -1
  344. package/skills/build-fix/SKILL.md +123 -0
  345. package/skills/cancel/SKILL.md +580 -0
  346. package/skills/cancel-autopilot/SKILL.md +0 -1
  347. package/skills/cancel-ecomode/SKILL.md +41 -0
  348. package/skills/cancel-ralph/SKILL.md +0 -1
  349. package/skills/cancel-ultraqa/SKILL.md +0 -1
  350. package/skills/cancel-ultrawork/SKILL.md +0 -1
  351. package/skills/code-review/SKILL.md +179 -0
  352. package/skills/deepinit/SKILL.md +0 -1
  353. package/skills/deepsearch/SKILL.md +0 -1
  354. package/skills/doctor/SKILL.md +0 -1
  355. package/skills/ecomode/SKILL.md +128 -0
  356. package/skills/frontend-ui-ux/SKILL.md +0 -1
  357. package/skills/git-master/SKILL.md +0 -1
  358. package/skills/help/SKILL.md +1 -2
  359. package/skills/hud/SKILL.md +0 -1
  360. package/skills/learner/SKILL.md +0 -1
  361. package/skills/mcp-setup/SKILL.md +8 -7
  362. package/skills/note/SKILL.md +0 -1
  363. package/skills/omc-default/SKILL.md +0 -1
  364. package/skills/omc-default-global/SKILL.md +0 -1
  365. package/skills/omc-setup/SKILL.md +176 -10
  366. package/skills/orchestrate/SKILL.md +0 -1
  367. package/skills/pipeline/SKILL.md +417 -0
  368. package/skills/plan/SKILL.md +138 -21
  369. package/skills/planner/SKILL.md +0 -1
  370. package/skills/ralph/SKILL.md +65 -1
  371. package/skills/ralph-init/SKILL.md +0 -1
  372. package/skills/ralplan/SKILL.md +0 -1
  373. package/skills/release/SKILL.md +0 -1
  374. package/skills/research/SKILL.md +0 -1
  375. package/skills/review/SKILL.md +0 -1
  376. package/skills/security-review/SKILL.md +254 -0
  377. package/skills/swarm/SKILL.md +349 -0
  378. package/skills/tdd/SKILL.md +0 -1
  379. package/skills/ultrapilot/SKILL.md +563 -0
  380. package/skills/ultraqa/SKILL.md +0 -1
  381. package/skills/ultrawork/SKILL.md +0 -1
  382. package/docs/MIGRATION-v3.md +0 -186
@@ -0,0 +1,363 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Metadata Sync System
4
+ *
5
+ * Synchronizes version and metadata from package.json to all documentation files.
6
+ * Prevents version drift and ensures consistency across the project.
7
+ *
8
+ * Usage:
9
+ * npm run sync-metadata # Sync all files
10
+ * npm run sync-metadata -- --dry-run # Preview changes
11
+ * npm run sync-metadata -- --verify # Check if files are in sync
12
+ */
13
+
14
+ import { readFileSync, writeFileSync, existsSync, readdirSync } from 'fs';
15
+ import { join, resolve } from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ import { dirname } from 'path';
18
+
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const __dirname = dirname(__filename);
21
+
22
+ // Color utilities for terminal output
23
+ const colors = {
24
+ reset: '\x1b[0m',
25
+ bright: '\x1b[1m',
26
+ green: '\x1b[32m',
27
+ yellow: '\x1b[33m',
28
+ blue: '\x1b[34m',
29
+ red: '\x1b[31m',
30
+ cyan: '\x1b[36m',
31
+ };
32
+
33
+ function color(text: string, colorCode: string): string {
34
+ return `${colorCode}${text}${colors.reset}`;
35
+ }
36
+
37
+ // Metadata interface
38
+ interface Metadata {
39
+ version: string;
40
+ description: string;
41
+ keywords: string[];
42
+ repository: string;
43
+ homepage: string;
44
+ npmPackage: string;
45
+ }
46
+
47
+ // File sync configuration
48
+ interface FileSync {
49
+ path: string;
50
+ replacements: Array<{
51
+ pattern: RegExp;
52
+ replacement: (metadata: Metadata) => string;
53
+ description: string;
54
+ }>;
55
+ }
56
+
57
+ // Load metadata from package.json
58
+ function loadMetadata(): Metadata {
59
+ const projectRoot = resolve(__dirname, '..');
60
+ const packageJsonPath = join(projectRoot, 'package.json');
61
+
62
+ if (!existsSync(packageJsonPath)) {
63
+ throw new Error(`package.json not found at ${packageJsonPath}`);
64
+ }
65
+
66
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
67
+
68
+ return {
69
+ version: packageJson.version,
70
+ description: packageJson.description || '',
71
+ keywords: packageJson.keywords || [],
72
+ repository: packageJson.repository?.url?.replace(/^git\+/, '').replace(/\.git$/, '') || '',
73
+ homepage: packageJson.homepage || '',
74
+ npmPackage: packageJson.name || 'oh-my-claude-sisyphus',
75
+ };
76
+ }
77
+
78
+ // Get count of agents from agents directory
79
+ function getAgentCount(): number {
80
+ const projectRoot = resolve(__dirname, '..');
81
+ const agentsDir = join(projectRoot, 'agents');
82
+
83
+ if (!existsSync(agentsDir)) {
84
+ return 0;
85
+ }
86
+
87
+ const files = readdirSync(agentsDir);
88
+ return files.filter((f: string) => f.endsWith('.md')).length;
89
+ }
90
+
91
+ // Get count of skills from skills directory (directories, not files)
92
+ function getSkillCount(): number {
93
+ const projectRoot = resolve(__dirname, '..');
94
+ const skillsDir = join(projectRoot, 'skills');
95
+
96
+ if (!existsSync(skillsDir)) {
97
+ return 0;
98
+ }
99
+
100
+ const entries = readdirSync(skillsDir, { withFileTypes: true });
101
+ return entries.filter((entry) => entry.isDirectory()).length;
102
+ }
103
+
104
+ // Define file sync configurations
105
+ function getFileSyncConfigs(): FileSync[] {
106
+ const agentCount = getAgentCount();
107
+ const skillCount = getSkillCount();
108
+
109
+ return [
110
+ {
111
+ path: 'README.md',
112
+ replacements: [
113
+ {
114
+ pattern: /\[!\[npm version\]\(https:\/\/img\.shields\.io\/npm\/v\/[^)]+\)/g,
115
+ replacement: (m) => `[![npm version](https://img.shields.io/npm/v/${m.npmPackage}?color=cb3837)`,
116
+ description: 'npm version badge',
117
+ },
118
+ {
119
+ pattern: /\[!\[npm downloads\]\(https:\/\/img\.shields\.io\/npm\/dm\/[^)]+\)/g,
120
+ replacement: (m) => `[![npm downloads](https://img.shields.io/npm/dm/${m.npmPackage}?color=blue)`,
121
+ description: 'npm downloads badge',
122
+ },
123
+ ],
124
+ },
125
+ {
126
+ path: 'docs/FULL-README.md',
127
+ replacements: [
128
+ {
129
+ pattern: /\[!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[^-]+-[^)]+\)/g,
130
+ replacement: (m) => `[![Version](https://img.shields.io/badge/version-${m.version}-ff6b6b)`,
131
+ description: 'Version badge',
132
+ },
133
+ {
134
+ pattern: /\[!\[npm version\]\(https:\/\/img\.shields\.io\/npm\/v\/[^?]+[^)]*\)/g,
135
+ replacement: (m) => `[![npm version](https://img.shields.io/npm/v/${m.npmPackage}?color=cb3837)`,
136
+ description: 'npm version badge',
137
+ },
138
+ {
139
+ pattern: /## NEW in \d+\.\d+\.\d+:/g,
140
+ replacement: (m) => `## NEW in ${m.version}:`,
141
+ description: 'Version header',
142
+ },
143
+ {
144
+ pattern: /## ⚡ NEW in \d+\.\d+:/g,
145
+ replacement: (m) => {
146
+ const [major, minor] = m.version.split('.');
147
+ return `## ⚡ NEW in ${major}.${minor}:`;
148
+ },
149
+ description: 'Major.minor version header',
150
+ },
151
+ ],
152
+ },
153
+ {
154
+ path: '.github/CLAUDE.md',
155
+ replacements: [
156
+ {
157
+ pattern: /\*\*\d+ specialized agents\*\*/g,
158
+ replacement: () => `**${agentCount} specialized agents**`,
159
+ description: 'Agent count',
160
+ },
161
+ {
162
+ pattern: /\*\*\d+ slash commands\*\*/g,
163
+ replacement: () => `**${skillCount} slash commands**`,
164
+ description: 'Slash command count',
165
+ },
166
+ ],
167
+ },
168
+ {
169
+ path: 'docs/ARCHITECTURE.md',
170
+ replacements: [
171
+ {
172
+ pattern: /version \d+\.\d+\.\d+/gi,
173
+ replacement: (m) => `version ${m.version}`,
174
+ description: 'Architecture version references',
175
+ },
176
+ ],
177
+ },
178
+ {
179
+ path: 'CHANGELOG.md',
180
+ replacements: [
181
+ // CHANGELOG is manually maintained, only verify latest version exists
182
+ {
183
+ pattern: /^## \[\d+\.\d+\.\d+\]/m,
184
+ replacement: (m) => `## [${m.version}]`,
185
+ description: 'Latest version header (verify only)',
186
+ },
187
+ ],
188
+ },
189
+ ];
190
+ }
191
+
192
+ // Sync a single file
193
+ function syncFile(
194
+ config: FileSync,
195
+ metadata: Metadata,
196
+ dryRun: boolean,
197
+ projectRoot: string
198
+ ): { changed: boolean; changes: string[] } {
199
+ const filePath = join(projectRoot, config.path);
200
+
201
+ if (!existsSync(filePath)) {
202
+ console.log(color(`⚠ File not found: ${config.path}`, colors.yellow));
203
+ return { changed: false, changes: [] };
204
+ }
205
+
206
+ let content = readFileSync(filePath, 'utf-8');
207
+ const originalContent = content;
208
+ const changes: string[] = [];
209
+
210
+ for (const replacement of config.replacements) {
211
+ const matches = content.match(replacement.pattern);
212
+ if (matches) {
213
+ const newContent = content.replace(
214
+ replacement.pattern,
215
+ replacement.replacement(metadata)
216
+ );
217
+
218
+ if (newContent !== content) {
219
+ changes.push(replacement.description);
220
+ content = newContent;
221
+ }
222
+ }
223
+ }
224
+
225
+ const changed = content !== originalContent;
226
+
227
+ if (changed && !dryRun) {
228
+ writeFileSync(filePath, content, 'utf-8');
229
+ }
230
+
231
+ return { changed, changes };
232
+ }
233
+
234
+ // Verify all files are in sync
235
+ function verifySync(metadata: Metadata, projectRoot: string): boolean {
236
+ console.log(color('\n🔍 Verifying metadata sync...', colors.cyan));
237
+
238
+ const configs = getFileSyncConfigs();
239
+ let allInSync = true;
240
+
241
+ for (const config of configs) {
242
+ const result = syncFile(config, metadata, true, projectRoot);
243
+
244
+ if (result.changed) {
245
+ allInSync = false;
246
+ console.log(color(`✗ ${config.path}`, colors.red));
247
+ result.changes.forEach(change => {
248
+ console.log(color(` - ${change} needs update`, colors.yellow));
249
+ });
250
+ } else {
251
+ console.log(color(`✓ ${config.path}`, colors.green));
252
+ }
253
+ }
254
+
255
+ return allInSync;
256
+ }
257
+
258
+ // Main sync operation
259
+ function syncAll(dryRun: boolean): void {
260
+ const projectRoot = resolve(__dirname, '..');
261
+ const metadata = loadMetadata();
262
+
263
+ console.log(color('\n📦 Metadata Sync System', colors.bright));
264
+ console.log(color('========================\n', colors.bright));
265
+ console.log(`Version: ${color(metadata.version, colors.green)}`);
266
+ console.log(`Package: ${color(metadata.npmPackage, colors.cyan)}`);
267
+ console.log(`Agents: ${color(String(getAgentCount()), colors.blue)}`);
268
+ console.log(`Skills: ${color(String(getSkillCount()), colors.blue)}`);
269
+
270
+ if (dryRun) {
271
+ console.log(color('\n🔍 DRY RUN MODE - No files will be modified\n', colors.yellow));
272
+ }
273
+
274
+ const configs = getFileSyncConfigs();
275
+ let totalChanges = 0;
276
+
277
+ for (const config of configs) {
278
+ const result = syncFile(config, metadata, dryRun, projectRoot);
279
+
280
+ if (result.changed) {
281
+ totalChanges++;
282
+ const status = dryRun ? '📝' : '✓';
283
+ console.log(color(`\n${status} ${config.path}`, colors.cyan));
284
+ result.changes.forEach(change => {
285
+ console.log(color(` - ${change}`, colors.blue));
286
+ });
287
+ }
288
+ }
289
+
290
+ if (totalChanges === 0) {
291
+ console.log(color('\n✅ All files are already in sync!', colors.green));
292
+ } else if (dryRun) {
293
+ console.log(color(`\n📊 ${totalChanges} file(s) would be updated`, colors.yellow));
294
+ console.log(color('Run without --dry-run to apply changes', colors.cyan));
295
+ } else {
296
+ console.log(color(`\n✅ Successfully synced ${totalChanges} file(s)!`, colors.green));
297
+ }
298
+ }
299
+
300
+ // CLI
301
+ function main(): void {
302
+ const args = process.argv.slice(2);
303
+ const dryRun = args.includes('--dry-run');
304
+ const verify = args.includes('--verify');
305
+ const help = args.includes('--help') || args.includes('-h');
306
+
307
+ if (help) {
308
+ console.log(`
309
+ ${color('Metadata Sync System', colors.bright)}
310
+
311
+ ${color('Usage:', colors.cyan)}
312
+ npm run sync-metadata Sync all files
313
+ npm run sync-metadata -- --dry-run Preview changes without writing
314
+ npm run sync-metadata -- --verify Check if files are in sync
315
+
316
+ ${color('Description:', colors.cyan)}
317
+ Synchronizes version and metadata from package.json to documentation files.
318
+ Prevents version drift and ensures consistency across the project.
319
+
320
+ ${color('Files Synced:', colors.cyan)}
321
+ - README.md (npm badges)
322
+ - docs/FULL-README.md (version badges and headers)
323
+ - .github/CLAUDE.md (agent/skill counts)
324
+ - docs/ARCHITECTURE.md (version references)
325
+ - CHANGELOG.md (version header verification)
326
+
327
+ ${color('Examples:', colors.cyan)}
328
+ npm run sync-metadata # Apply all updates
329
+ npm run sync-metadata -- --dry-run # See what would change
330
+ npm run sync-metadata -- --verify # CI/CD verification
331
+ `);
332
+ return;
333
+ }
334
+
335
+ try {
336
+ if (verify) {
337
+ const projectRoot = resolve(__dirname, '..');
338
+ const metadata = loadMetadata();
339
+ const inSync = verifySync(metadata, projectRoot);
340
+
341
+ if (!inSync) {
342
+ console.log(color('\n❌ Files are out of sync!', colors.red));
343
+ console.log(color('Run: npm run sync-metadata', colors.cyan));
344
+ process.exit(1);
345
+ } else {
346
+ console.log(color('\n✅ All files are in sync!', colors.green));
347
+ }
348
+ } else {
349
+ syncAll(dryRun);
350
+ }
351
+ } catch (error) {
352
+ console.error(color('\n❌ Error:', colors.red), error instanceof Error ? error.message : error);
353
+ process.exit(1);
354
+ }
355
+ }
356
+
357
+ // Run if called directly
358
+ if (import.meta.url === `file://${process.argv[1]}`) {
359
+ main();
360
+ }
361
+
362
+ // Export for testing
363
+ export { loadMetadata, syncFile, verifySync, getAgentCount, getSkillCount };
@@ -6,7 +6,7 @@ import { tmpdir } from 'os';
6
6
  import { mkdirSync } from 'fs';
7
7
 
8
8
  // Import the hooks
9
- import { startUltraQA, clearUltraQAState, isRalphLoopActive } from '../src/hooks/ultraqa-loop/index.js';
9
+ import { startUltraQA, clearUltraQAState, isRalphLoopActive } from '../src/hooks/ultraqa/index.js';
10
10
  import { createRalphLoopHook, clearRalphState, isUltraQAActive } from '../src/hooks/ralph-loop/index.js';
11
11
 
12
12
  // Test utilities
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: analyze
3
3
  description: Deep analysis and investigation
4
- user-invocable: true
5
4
  ---
6
5
 
7
6
  # Deep Analysis Mode
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: autopilot
3
3
  description: Full autonomous execution from idea to working code
4
- user-invocable: true
5
4
  ---
6
5
 
7
6
  # Autopilot Skill
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: build-fix
3
+ description: Fix build and TypeScript errors with minimal changes
4
+ ---
5
+
6
+ # Build Fix Skill
7
+
8
+ Fix build and TypeScript errors quickly with minimal code changes. Get the build green without refactoring.
9
+
10
+ ## When to Use
11
+
12
+ This skill activates when:
13
+ - User says "fix the build", "build is broken"
14
+ - TypeScript compilation fails
15
+ - `npm run build` or `tsc` reports errors
16
+ - User requests "minimal fixes" for errors
17
+
18
+ ## What It Does
19
+
20
+ Delegates to the `build-fixer` agent (Sonnet model) to:
21
+
22
+ 1. **Collect Errors**
23
+ - Run `npx tsc --noEmit` to get all TypeScript errors
24
+ - Or run `npm run build` to get build failures
25
+ - Categorize errors by type and severity
26
+
27
+ 2. **Fix Strategically**
28
+ - Add type annotations where missing
29
+ - Add null checks where needed
30
+ - Fix import/export statements
31
+ - Resolve module resolution issues
32
+ - Fix linter errors blocking build
33
+
34
+ 3. **Minimal Diff Strategy**
35
+ - NO refactoring of unrelated code
36
+ - NO architectural changes
37
+ - NO performance optimizations
38
+ - ONLY what's needed to make build pass
39
+
40
+ 4. **Verify**
41
+ - Run `npx tsc --noEmit` after each fix
42
+ - Ensure no new errors introduced
43
+ - Stop when build passes
44
+
45
+ ## Agent Delegation
46
+
47
+ ```
48
+ Task(
49
+ subagent_type="oh-my-claudecode:build-fixer",
50
+ model="sonnet",
51
+ prompt="BUILD FIX TASK
52
+
53
+ Fix all build and TypeScript errors with minimal changes.
54
+
55
+ Requirements:
56
+ - Run tsc/build to collect errors
57
+ - Fix errors one at a time
58
+ - Verify each fix doesn't introduce new errors
59
+ - NO refactoring, NO architectural changes
60
+ - Stop when build passes
61
+
62
+ Output: Build error resolution report with:
63
+ - List of errors fixed
64
+ - Lines changed per fix
65
+ - Final build status"
66
+ )
67
+ ```
68
+
69
+ ## Stop Conditions
70
+
71
+ The build-fixer agent stops when:
72
+ - `npx tsc --noEmit` exits with code 0
73
+ - `npm run build` completes successfully
74
+ - No new errors introduced
75
+
76
+ ## Output Format
77
+
78
+ ```
79
+ BUILD FIX REPORT
80
+ ================
81
+
82
+ Errors Fixed: 12
83
+ Files Modified: 8
84
+ Lines Changed: 47
85
+
86
+ Fixes Applied:
87
+ 1. src/utils/validation.ts:15 - Added return type annotation
88
+ 2. src/components/Header.tsx:42 - Added null check for props.user
89
+ 3. src/api/client.ts:89 - Fixed import path for axios
90
+ ...
91
+
92
+ Final Build Status: ✓ PASSING
93
+ Verification: npx tsc --noEmit (exit code 0)
94
+ ```
95
+
96
+ ## Best Practices
97
+
98
+ - **One fix at a time** - Easier to verify and debug
99
+ - **Minimal changes** - Don't refactor while fixing
100
+ - **Document why** - Comment non-obvious fixes
101
+ - **Test after** - Ensure tests still pass
102
+
103
+ ## Use with Other Skills
104
+
105
+ Combine with other skills for comprehensive fixing:
106
+
107
+ **With Ultrawork:**
108
+ ```
109
+ /ultrawork fix all build errors
110
+ ```
111
+ Spawns multiple build-fixer agents in parallel for different files.
112
+
113
+ **With Ralph:**
114
+ ```
115
+ /ralph fix the build
116
+ ```
117
+ Keeps trying until build passes, even if it takes multiple iterations.
118
+
119
+ **With Pipeline:**
120
+ ```
121
+ /pipeline debug "build is failing"
122
+ ```
123
+ Uses: explore → architect → build-fixer workflow.