codymaster 4.8.0 → 7.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 (416) hide show
  1. package/CHANGELOG.md +331 -7
  2. package/README.md +226 -296
  3. package/dist/advisory-handoff.js +89 -0
  4. package/dist/advisory-report.js +105 -0
  5. package/dist/agent/antigravity.js +152 -0
  6. package/dist/agent/backend.js +2 -0
  7. package/dist/agent/claude.js +196 -0
  8. package/dist/agent/codex.js +204 -0
  9. package/dist/agent/copilot.js +284 -0
  10. package/dist/agent/cursor.js +211 -0
  11. package/dist/agent/factory.js +30 -0
  12. package/dist/agent/gemini.js +142 -0
  13. package/dist/agent/opencode.js +205 -0
  14. package/dist/agent/spawn-helper.js +237 -0
  15. package/dist/agent/version.js +25 -0
  16. package/dist/browse/adapter-factory.js +69 -0
  17. package/dist/browse/adapters/agent-browser-adapter.js +305 -0
  18. package/dist/browse/adapters/playwright-adapter.js +309 -0
  19. package/dist/browse/adapters/types.js +6 -0
  20. package/dist/browse/error-collector.js +132 -0
  21. package/dist/browse/event-log.js +109 -0
  22. package/dist/browse/index.js +17 -0
  23. package/dist/browse-server.js +204 -120
  24. package/dist/cli/command-registry.js +20 -0
  25. package/dist/cli/commands/bench.js +69 -0
  26. package/dist/cli/commands/brain.js +108 -0
  27. package/dist/cli/commands/dashboard.js +76 -2
  28. package/dist/cli/commands/engineering.js +326 -4
  29. package/dist/cli/commands/evolve.js +123 -0
  30. package/dist/cli/commands/install.js +160 -0
  31. package/dist/cli/commands/learn.js +181 -0
  32. package/dist/cli/commands/mcp-serve.js +104 -0
  33. package/dist/cli/commands/parallel.js +138 -0
  34. package/dist/cli/commands/quality.js +105 -0
  35. package/dist/cli/commands/stack.js +49 -0
  36. package/dist/cli/commands/update.js +159 -0
  37. package/dist/cli/update-check.js +94 -10
  38. package/dist/cm-config.js +0 -18
  39. package/dist/codybench/judges/automated.js +31 -0
  40. package/dist/codybench/runners/claude-code.js +32 -0
  41. package/dist/codybench/suites/memory-retention.js +85 -0
  42. package/dist/codybench/suites/tdd-regression.js +35 -0
  43. package/dist/codybench/suites/token-efficiency.js +55 -0
  44. package/dist/codybench/types.js +2 -0
  45. package/dist/context-db.js +157 -0
  46. package/dist/continuity.js +5 -7
  47. package/dist/dashboard.js +47 -6
  48. package/dist/data.js +35 -0
  49. package/dist/execution/tdd-gate.js +113 -0
  50. package/dist/execution-analyzer.js +138 -0
  51. package/dist/executor/cancel.js +34 -0
  52. package/dist/executor/gc.js +74 -0
  53. package/dist/executor/index.js +14 -0
  54. package/dist/executor/runner.js +70 -0
  55. package/dist/executor/workdir.js +31 -0
  56. package/dist/handoff/contracts.js +22 -0
  57. package/dist/handoff/index.js +18 -0
  58. package/dist/handoff/io.js +121 -0
  59. package/dist/index.js +7 -3
  60. package/dist/indexer/skills-lib.js +533 -0
  61. package/dist/indexer/skills-map.js +1374 -0
  62. package/dist/indexer/skills.js +16 -0
  63. package/dist/indexer/stack-detect.js +219 -0
  64. package/dist/install/copy.js +98 -0
  65. package/dist/install/engine.js +42 -0
  66. package/dist/install/paths.js +70 -0
  67. package/dist/install/platforms/_simple.js +85 -0
  68. package/dist/install/platforms/antigravity.js +91 -0
  69. package/dist/install/platforms/claude-code.js +107 -0
  70. package/dist/install/platforms/cursor.js +77 -0
  71. package/dist/install/platforms/index.js +27 -0
  72. package/dist/install/platforms/simple.js +163 -0
  73. package/dist/install/profiles.js +75 -0
  74. package/dist/install/types.js +2 -0
  75. package/dist/learning-promoter.js +246 -0
  76. package/dist/learnings.js +208 -0
  77. package/dist/mcp-context-server.js +230 -1
  78. package/dist/middleware/metrics.js +30 -0
  79. package/dist/middleware/security-headers.js +14 -0
  80. package/dist/realtime/event-bus.js +29 -0
  81. package/dist/realtime/ws-hub.js +91 -0
  82. package/dist/schemas/task-schema.js +48 -0
  83. package/dist/schemas/validate.js +18 -0
  84. package/dist/skill-chain.js +63 -1
  85. package/dist/skill-evolver.js +456 -0
  86. package/dist/skill-execution-cache.js +254 -0
  87. package/dist/skills-lock.js +96 -0
  88. package/dist/smart-brain-router.js +184 -0
  89. package/dist/sprint-pipeline.js +26 -0
  90. package/dist/storage/index.js +21 -0
  91. package/dist/storage/repos/activity-repo.js +46 -0
  92. package/dist/storage/repos/message-repo.js +39 -0
  93. package/dist/storage/repos/project-repo.js +56 -0
  94. package/dist/storage/repos/task-repo.js +142 -0
  95. package/dist/storage/services/project-service.js +49 -0
  96. package/dist/storage/services/task-service.js +97 -0
  97. package/dist/storage/sqlite.js +113 -0
  98. package/dist/storage-backend.js +10 -8
  99. package/dist/tier-classify.js +131 -0
  100. package/dist/token-budget.js +88 -0
  101. package/dist/ui/onboarding.js +51 -15
  102. package/dist/utils/cli-utils.js +7 -2
  103. package/dist/utils/design-taste.js +108 -0
  104. package/dist/utils/output-compress.js +143 -0
  105. package/dist/vibecoding-index.js +126 -0
  106. package/package.json +20 -6
  107. package/public/dashboard/app.js +52 -1
  108. package/scripts/build-skills-lock.mjs +88 -0
  109. package/scripts/build-skills.mjs +187 -28
  110. package/scripts/compress-skill.mjs +73 -0
  111. package/scripts/deprecate-skill.mjs +72 -0
  112. package/scripts/install.sh +170 -0
  113. package/scripts/mcp-bridge.js +2 -2
  114. package/scripts/postinstall.js +53 -335
  115. package/scripts/update-changelog.sh +88 -0
  116. package/scripts/validate-skills.mjs +101 -4
  117. package/skills/CLAUDE.md +0 -5
  118. package/skills/_shared/SKILL_TEMPLATE.md +62 -0
  119. package/skills/_shared/helpers.md +2 -8
  120. package/skills/cm-autopilot/scripts/autopilot.py +19 -2
  121. package/skills/cm-brainstorm-idea/SKILL.md +9 -0
  122. package/skills/cm-browse/SKILL.md +6 -0
  123. package/skills/cm-clean-code/SKILL.md +20 -0
  124. package/skills/cm-code-review/SKILL.md +21 -0
  125. package/skills/cm-codeintell/SKILL.md +9 -0
  126. package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
  127. package/skills/cm-conductor-worktrees/SKILL.md +20 -18
  128. package/skills/cm-continuity/SKILL.md +41 -33
  129. package/skills/cm-dashboard/SKILL.archive.md +15 -0
  130. package/skills/cm-dashboard/SKILL.md +20 -9
  131. package/skills/cm-dashboard/ui/app.js +9 -1
  132. package/skills/cm-debugging/SKILL.md +9 -0
  133. package/skills/cm-design-studio/SKILL.archive.md +34 -0
  134. package/skills/cm-design-studio/SKILL.md +20 -24
  135. package/skills/cm-design-system/SKILL.md +1 -0
  136. package/skills/cm-ecosystem-roadmap/SKILL.md +4 -0
  137. package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
  138. package/skills/cm-engineering-meta/SKILL.md +19 -62
  139. package/skills/cm-execution/SKILL.md +98 -0
  140. package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
  141. package/skills/cm-git-worktrees/SKILL.md +15 -146
  142. package/skills/cm-guardian-runtime/SKILL.md +5 -1
  143. package/skills/cm-identity-guard/SKILL.md +8 -0
  144. package/skills/cm-mcp-engineering/SKILL.md +4 -0
  145. package/skills/cm-planning/SKILL.md +63 -92
  146. package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
  147. package/skills/cm-post-deploy-canary/SKILL.md +20 -12
  148. package/skills/cm-project-bootstrap/SKILL.md +11 -0
  149. package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
  150. package/skills/cm-qa-visual-cli/SKILL.md +19 -11
  151. package/skills/cm-quality-gate/SKILL.md +38 -0
  152. package/skills/cm-retro-cli/SKILL.md +4 -0
  153. package/skills/cm-safe-deploy/SKILL.md +9 -0
  154. package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
  155. package/skills/cm-second-opinion-cli/SKILL.md +20 -13
  156. package/skills/cm-secret-shield/SKILL.archive.md +580 -0
  157. package/skills/cm-secret-shield/SKILL.md +15 -569
  158. package/skills/cm-security-gate/SKILL.archive.md +239 -0
  159. package/skills/cm-security-gate/SKILL.md +16 -228
  160. package/skills/cm-skill-chain/SKILL.md +25 -4
  161. package/skills/cm-skill-evolution/SKILL.md +83 -0
  162. package/skills/cm-skill-health/SKILL.archive.md +83 -0
  163. package/skills/cm-skill-health/SKILL.md +26 -0
  164. package/skills/cm-skill-index/SKILL.md +19 -3
  165. package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
  166. package/skills/cm-skill-mastery/SKILL.md +16 -146
  167. package/skills/cm-skill-search/SKILL.archive.md +49 -0
  168. package/skills/cm-skill-search/SKILL.md +26 -0
  169. package/skills/cm-skill-share/SKILL.archive.md +58 -0
  170. package/skills/cm-skill-share/SKILL.md +26 -0
  171. package/skills/cm-sprint-bus/SKILL.md +13 -0
  172. package/skills/cm-start/SKILL.md +17 -10
  173. package/skills/cm-tdd/SKILL.md +21 -2
  174. package/skills/cm-terminal/SKILL.md +15 -0
  175. package/skills/cm-test-gate/SKILL.archive.md +245 -0
  176. package/skills/cm-test-gate/SKILL.md +15 -234
  177. package/skills/cm-ui-preview/SKILL.archive.md +153 -0
  178. package/skills/cm-ui-preview/SKILL.md +16 -143
  179. package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
  180. package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
  181. package/skills/cm-ux-master/mcp/server.py +2 -2
  182. package/skills/profiles/design.txt +1 -1
  183. package/skills/profiles/full.txt +4 -10
  184. package/skills/profiles/growth.txt +8 -8
  185. package/skills/profiles/knowledge.txt +1 -1
  186. package/skills/profiles/top35.json +41 -0
  187. package/adapters/antigravity.js +0 -15
  188. package/adapters/claude-code.js +0 -17
  189. package/adapters/cursor.js +0 -16
  190. package/install.sh +0 -1125
  191. package/scripts/viking-demo.ts +0 -105
  192. package/skills/cm-ads-tracker/SKILL.md +0 -401
  193. package/skills/cm-ads-tracker/evals/evals.json +0 -55
  194. package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
  195. package/skills/cm-ads-tracker/references/industry-events.md +0 -294
  196. package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
  197. package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
  198. package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
  199. package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
  200. package/skills/cm-auto-publisher/SKILL.md +0 -81
  201. package/skills/cm-booking-calendar/SKILL.md +0 -521
  202. package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
  203. package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
  204. package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
  205. package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
  206. package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
  207. package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
  208. package/skills/cm-content-factory/.content-factory-state.json +0 -132
  209. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
  210. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
  211. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  212. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  213. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  214. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  215. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  216. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  217. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  218. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  219. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  220. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  221. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  222. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  223. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  224. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  225. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  226. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  227. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  228. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  229. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  230. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  231. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  232. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  233. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  234. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  235. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  236. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  237. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  238. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  239. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  240. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  241. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  242. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  243. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  244. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  245. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  246. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  247. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  248. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  249. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  250. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  251. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  252. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  253. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  254. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
  255. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  256. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  257. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  258. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  259. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  260. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  261. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  262. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  263. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  264. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  265. package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
  266. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
  267. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
  268. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
  269. package/skills/cm-content-factory/AGENTS.md +0 -61
  270. package/skills/cm-content-factory/CLAUDE.md +0 -63
  271. package/skills/cm-content-factory/CURSOR.md +0 -43
  272. package/skills/cm-content-factory/Content Factory.zip +0 -0
  273. package/skills/cm-content-factory/SKILL.md +0 -416
  274. package/skills/cm-content-factory/cf +0 -313
  275. package/skills/cm-content-factory/config.schema.json +0 -397
  276. package/skills/cm-content-factory/dashboard/app.js +0 -556
  277. package/skills/cm-content-factory/dashboard/index.html +0 -397
  278. package/skills/cm-content-factory/dashboard/style.css +0 -1211
  279. package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
  280. package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
  281. package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
  282. package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
  283. package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
  284. package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
  285. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
  286. package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
  287. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
  288. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
  289. package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
  290. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
  291. package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
  292. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
  293. package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
  294. package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
  295. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
  296. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
  297. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
  298. package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
  299. package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
  300. package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
  301. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
  302. package/skills/cm-content-factory/extensions/hooks.py +0 -126
  303. package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
  304. package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
  305. package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
  306. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
  307. package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
  308. package/skills/cm-content-factory/landing/docs/content/openviking.md +0 -33
  309. package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
  310. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
  311. package/skills/cm-content-factory/landing/docs/index.html +0 -240
  312. package/skills/cm-content-factory/landing/index.html +0 -680
  313. package/skills/cm-content-factory/landing/script.js +0 -143
  314. package/skills/cm-content-factory/landing/style.css +0 -1216
  315. package/skills/cm-content-factory/landing/translations.js +0 -508
  316. package/skills/cm-content-factory/logs/events.jsonl +0 -11
  317. package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
  318. package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
  319. package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
  320. package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
  321. package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
  322. package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
  323. package/skills/cm-content-factory/scripts/audit.py +0 -106
  324. package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
  325. package/skills/cm-content-factory/scripts/deploy.py +0 -146
  326. package/skills/cm-content-factory/scripts/extract.py +0 -132
  327. package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
  328. package/skills/cm-content-factory/scripts/memory.py +0 -521
  329. package/skills/cm-content-factory/scripts/monetize.py +0 -239
  330. package/skills/cm-content-factory/scripts/pipeline.py +0 -357
  331. package/skills/cm-content-factory/scripts/plan.py +0 -163
  332. package/skills/cm-content-factory/scripts/publish.py +0 -145
  333. package/skills/cm-content-factory/scripts/research.py +0 -337
  334. package/skills/cm-content-factory/scripts/scaffold.py +0 -464
  335. package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
  336. package/skills/cm-content-factory/scripts/seo.py +0 -90
  337. package/skills/cm-content-factory/scripts/state_manager.py +0 -320
  338. package/skills/cm-content-factory/scripts/token_manager.py +0 -268
  339. package/skills/cm-content-factory/scripts/validate.py +0 -221
  340. package/skills/cm-content-factory/scripts/wizard.py +0 -329
  341. package/skills/cm-content-factory/scripts/write.py +0 -93
  342. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  343. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
  344. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
  345. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
  346. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
  347. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
  348. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
  349. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
  350. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
  351. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
  352. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
  353. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
  354. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
  355. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
  356. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
  357. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
  358. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
  359. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
  360. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
  361. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
  362. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
  363. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
  364. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
  365. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
  366. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
  367. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
  368. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
  369. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
  370. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
  371. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
  372. package/skills/cm-content-factory/tests/conftest.py +0 -66
  373. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
  374. package/skills/cm-content-factory/tests/test_memory.py +0 -128
  375. package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
  376. package/skills/cm-content-factory/tests/test_research.py +0 -56
  377. package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
  378. package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
  379. package/skills/cm-content-factory/tests/test_wizard.py +0 -121
  380. package/skills/cm-cro-methodology/SKILL.md +0 -290
  381. package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
  382. package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
  383. package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
  384. package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
  385. package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
  386. package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
  387. package/skills/cm-google-form/SKILL.md +0 -266
  388. package/skills/cm-google-form/templates/apps-script.js +0 -55
  389. package/skills/cm-google-form/templates/form-markup.html +0 -110
  390. package/skills/cm-google-form/templates/form-submit.js +0 -201
  391. package/skills/cm-google-form/templates/toast.css +0 -152
  392. package/skills/cm-growth-hacking/SKILL.md +0 -282
  393. package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
  394. package/skills/cm-growth-hacking/calendar-integration.md +0 -264
  395. package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
  396. package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
  397. package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
  398. package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
  399. package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
  400. package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
  401. package/skills/cm-growth-hacking/tracking-events.md +0 -246
  402. package/skills/cm-growth-hacking/trigger-system.md +0 -342
  403. package/skills/cm-jtbd/SKILL.md +0 -98
  404. package/skills/cm-notebooklm/SKILL.md +0 -156
  405. package/skills/cm-notebooklm/references/command_reference.md +0 -94
  406. package/skills/cm-notebooklm/references/workflows.md +0 -60
  407. package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
  408. package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
  409. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
  410. package/skills/cm-readit/SKILL.md +0 -289
  411. package/skills/cm-readit/audio-player.md +0 -206
  412. package/skills/cm-readit/examples/blog-reader.js +0 -352
  413. package/skills/cm-readit/examples/voice-cro.js +0 -390
  414. package/skills/cm-readit/tts-engine.md +0 -262
  415. package/skills/cm-readit/ui-patterns.md +0 -362
  416. package/skills/cm-readit/voice-cro.md +0 -223
package/install.sh DELETED
@@ -1,1125 +0,0 @@
1
- #!/usr/bin/env bash
2
- # ════════════════════════════════════════════════════════════════
3
- # CodyMaster Skills Kit — Universal Installer (see VERSION below)
4
- # Inspired by: npx skills add (vercel-labs/skills)
5
- #
6
- # Usage:
7
- # bash install.sh Interactive menu
8
- # bash install.sh --claude Claude Code (non-interactive)
9
- # bash install.sh --claude --global Claude Code, user scope
10
- # bash install.sh --claude --project Claude Code, project scope
11
- # bash install.sh --gemini Gemini CLI / Antigravity (all skills)
12
- # bash install.sh --gemini --profile core Antigravity: core profile only (token budget)
13
- # bash install.sh --windsurf --profile core Same for project .windsurf/rules
14
- # bash install.sh --aider Aider
15
- # bash install.sh --continue Continue.dev
16
- # bash install.sh --amazon-q Amazon Q CLI (q)
17
- # bash install.sh --amp Amp
18
- # bash install.sh --all All detected platforms (no interactive menu)
19
- # bash install.sh --yes Skip onboarding menu (with --gemini, etc.)
20
- # bash install.sh --cursor --cursor-project Force ./.cursor/rules (run from repo root)
21
- # ════════════════════════════════════════════════════════════════
22
-
23
- set -e
24
-
25
- # Directory containing this script (for skills/profiles when ~/.cody-master is stale)
26
- CM_SCRIPT_DIR=""
27
- _cm_src="${BASH_SOURCE[0]:-$0}"
28
- if [[ "$_cm_src" != /dev/fd/* ]] && [[ "$_cm_src" != /proc/self/fd/* ]]; then
29
- CM_SCRIPT_DIR="$(cd "$(dirname "$_cm_src")" && pwd)"
30
- fi
31
-
32
- # ── Colors ──────────────────────────────────────────────────────
33
- G='\033[0;32m'; B='\033[0;34m'; P='\033[0;35m'; O='\033[0;33m'
34
- C='\033[0;36m'; R='\033[0;31m'; W='\033[1;37m'; NC='\033[0m'; BOLD='\033[1m'; DIM='\033[2m'
35
-
36
- REPO_URL="https://github.com/tody-agent/codymaster"
37
- RAW_URL="https://raw.githubusercontent.com/tody-agent/codymaster/main"
38
- VERSION="4.7.0"
39
- SCOPE="user" # default scope for Claude Code
40
- SKILL_PROFILE="full" # core|growth|design|knowledge|full — see skills/profiles/
41
- INSTALL_CMD="" # set by parse_install_args
42
- # Skip hamster onboarding menu (non-interactive / one-liner installs)
43
- SKIP_INSTALL_ONBOARDING=0
44
- # Force Cursor rules into ./.cursor/rules (run from repo root)
45
- CURSOR_RULES_PROJECT=0
46
-
47
- if [ -d "skills" ]; then
48
- TOTAL_SKILLS=$(ls -1d skills/cm-*/SKILL.md 2>/dev/null | wc -l | tr -d ' ')
49
- elif [ -d "$HOME/.cody-master/skills" ]; then
50
- TOTAL_SKILLS=$(ls -1d "$HOME/.cody-master/skills"/cm-*/SKILL.md 2>/dev/null | wc -l | tr -d ' ')
51
- else
52
- TOTAL_SKILLS="45"
53
- fi
54
-
55
-
56
- # ── i18n ────────────────────────────────────────────────────────
57
- detect_lang() {
58
- local lang="${LANG:-en}"
59
- case "$lang" in
60
- vi*|VI*) echo "vi" ;;
61
- zh*|ZH*) echo "zh" ;;
62
- ko*|KO*) echo "ko" ;;
63
- ru*|RU*) echo "ru" ;;
64
- hi*|HI*) echo "hi" ;;
65
- *) echo "en" ;;
66
- esac
67
- }
68
-
69
- LANG_CODE=$(detect_lang)
70
-
71
- msg() {
72
- local key="$1"
73
- case "$LANG_CODE:$key" in
74
- vi:welcome) echo "Chào mừng bạn đến với CodyMaster v${VERSION}" ;;
75
- vi:tagline) echo "${TOTAL_SKILLS} kỹ năng AI cho Claude Code và các AI agents khác" ;;
76
- vi:detecting) echo "🔍 Đang phát hiện các AI agent đã cài..." ;;
77
- vi:found) echo "✅ Đã tìm thấy" ;;
78
- vi:not_found) echo "❌ Không tìm thấy" ;;
79
- vi:select) echo "Chọn platform để cài (nhập số, cách nhau dấu phẩy):" ;;
80
- vi:scope) echo "Phạm vi cài đặt cho Claude Code:" ;;
81
- vi:scope_user) echo "User (tất cả projects)" ;;
82
- vi:scope_project) echo "Project (chỉ project này)" ;;
83
- vi:done) echo "✅ Hoàn tất!" ;;
84
- vi:onboard) echo "🎯 Bắt đầu ngay với AI Agent của bạn:" ;;
85
- vi:docs) echo "📚 Tài liệu:" ;;
86
- vi:press_enter) echo "Nhấn ENTER để tiếp tục" ;;
87
-
88
- zh:welcome) echo "欢迎使用 CodyMaster v${VERSION}" ;;
89
- zh:tagline) echo "Claude Code 的 ${TOTAL_SKILLS} AI 技能" ;;
90
- zh:detecting) echo "🔍 检测已安装的 AI Agent..." ;;
91
- zh:found) echo "✅ 已找到" ;;
92
- zh:not_found) echo "❌ 未找到" ;;
93
- zh:select) echo "选择要安装的平台(输入数字,逗号分隔):" ;;
94
- zh:scope) echo "Claude Code 安装范围:" ;;
95
- zh:scope_user) echo "用户级(所有项目)" ;;
96
- zh:scope_project) echo "项目级(仅此项目)" ;;
97
- zh:done) echo "✅ 完成!" ;;
98
- zh:onboard) echo "🎯 立即开始与您的 AI Agent 合作:" ;;
99
- zh:docs) echo "📚 文档:" ;;
100
- zh:press_enter) echo "按 Enter 继续" ;;
101
-
102
- ko:welcome) echo "CodyMaster v${VERSION}에 오신 것을 환영합니다" ;;
103
- ko:tagline) echo "Claude Code용 ${TOTAL_SKILLS} AI 스킬" ;;
104
- ko:detecting) echo "🔍 설치된 AI Agent 감지 중..." ;;
105
- ko:found) echo "✅ 발견됨" ;;
106
- ko:not_found) echo "❌ 없음" ;;
107
- ko:select) echo "설치할 플랫폼 선택 (숫자, 쉼표로 구분):" ;;
108
- ko:scope) echo "Claude Code 설치 범위:" ;;
109
- ko:scope_user) echo "사용자 (모든 프로젝트)" ;;
110
- ko:scope_project) echo "프로젝트 (이 프로젝트만)" ;;
111
- ko:done) echo "✅ 완료!" ;;
112
- ko:onboard) echo "🎯 AI Agent와 즉시 시작하세요:" ;;
113
- ko:docs) echo "📚 문서:" ;;
114
- ko:press_enter) echo "Enter를 눌러 계속" ;;
115
-
116
- *)
117
- case "$key" in
118
- welcome) echo "Welcome to CodyMaster v${VERSION}" ;;
119
- tagline) echo "${TOTAL_SKILLS} AI skills for Claude Code and other AI agents" ;;
120
- detecting) echo "🔍 Detecting installed AI agents..." ;;
121
- found) echo "✅ Found" ;;
122
- not_found) echo "❌ Not found" ;;
123
- select) echo "Select platforms to install (numbers, comma-separated):" ;;
124
- scope) echo "Installation scope for Claude Code:" ;;
125
- scope_user) echo "User — available across all projects (recommended)" ;;
126
- scope_project) echo "Project — this project only (committed to .claude/)" ;;
127
- done) echo "✅ Done!" ;;
128
- onboard) echo "🎯 Get started immediately with your AI Agent:" ;;
129
- docs) echo "📚 Documentation:" ;;
130
- press_enter) echo "Press ENTER to continue" ;;
131
- esac
132
- ;;
133
- esac
134
- }
135
-
136
- # ── Header ───────────────────────────────────────────────────────
137
- print_header() {
138
- clear 2>/dev/null || true
139
- hamster_sentiment "start"
140
- echo -e " ${O}( . \ --- / . )${NC}"
141
- echo -e " ${O}/${NC} ${O}${BOLD}^ ^${NC} ${O}\\\\${NC}"
142
- echo -e " ${O}(${NC} ${O}${BOLD}u${NC} ${O})${NC}"
143
- echo -e " ${O}| \\ ___ / |${NC}"
144
- echo -e " ${O}'--w---w--'${NC}"
145
- echo ""
146
- echo -e " ${O}${BOLD}$(msg welcome)${NC} 🐹"
147
- echo ""
148
- echo -e " ${DIM}CodyMaster${NC} ${O}v${VERSION}${NC} ${DIM}• ${TOTAL_SKILLS} Skills • ~${NC}"
149
- echo -e "${DIM} ──────────────────────────────────────────────────${NC}"
150
- echo ""
151
- }
152
-
153
- # ── Agent Detection ──────────────────────────────────────────────
154
- detect_agents() {
155
- hamster_sentiment "progress"
156
- echo ""
157
- echo -e "${W}$(msg detecting)${NC}"
158
- echo ""
159
-
160
- DETECTED=()
161
-
162
- if command -v claude &>/dev/null; then
163
- echo -e " ${P}${BOLD}1) 🟣 Claude Code${NC} $(msg found)"
164
- DETECTED+=("claude")
165
- else
166
- echo -e " ${P}1) 🟣 Claude Code${NC} $(msg not_found)"
167
- fi
168
-
169
- if command -v gemini &>/dev/null; then
170
- echo -e " ${C}${BOLD}2) 💎 Gemini CLI${NC} $(msg found)"
171
- DETECTED+=("gemini")
172
- else
173
- echo -e " ${C}2) 💎 Gemini CLI${NC} $(msg not_found)"
174
- fi
175
-
176
- # Check for Cursor
177
- if [ -d "$HOME/.cursor" ] || [ -d "/Applications/Cursor.app" ]; then
178
- echo -e " ${B}${BOLD}3) 🔵 Cursor${NC} $(msg found)"
179
- DETECTED+=("cursor")
180
- else
181
- echo -e " ${B}3) 🔵 Cursor${NC} $(msg not_found)"
182
- fi
183
-
184
- if command -v codex &>/dev/null; then
185
- echo -e " ${O}${BOLD}4) 🟠 Codex${NC} $(msg found)"
186
- DETECTED+=("codex")
187
- else
188
- echo -e " ${O}4) 🟠 Codex${NC} $(msg not_found)"
189
- fi
190
-
191
- if command -v opencode &>/dev/null; then
192
- echo -e " ${G}${BOLD}5) 📦 OpenCode${NC} $(msg found)"
193
- DETECTED+=("opencode")
194
- else
195
- echo -e " ${G}5) 📦 OpenCode${NC} $(msg not_found)"
196
- fi
197
-
198
- if command -v aider &>/dev/null; then
199
- echo -e " ${O}${BOLD}6) 🤖 Aider${NC} $(msg found)"
200
- DETECTED+=("aider")
201
- else
202
- echo -e " ${O}6) 🤖 Aider${NC} $(msg not_found)"
203
- fi
204
-
205
- if [ -d "$HOME/.continue" ]; then
206
- echo -e " ${B}${BOLD}7) 🔗 Continue.dev${NC} $(msg found)"
207
- DETECTED+=("continue")
208
- else
209
- echo -e " ${B}7) 🔗 Continue.dev${NC} $(msg not_found)"
210
- fi
211
-
212
- if command -v q &>/dev/null; then
213
- echo -e " ${W}${BOLD}8) ☁️ Amazon Q CLI${NC} $(msg found)"
214
- DETECTED+=("amazon-q")
215
- else
216
- echo -e " ${W}8) ☁️ Amazon Q CLI${NC} $(msg not_found)"
217
- fi
218
-
219
- if command -v amp &>/dev/null; then
220
- echo -e " ${G}${BOLD}9) ⚡ Amp${NC} $(msg found)"
221
- DETECTED+=("amp")
222
- else
223
- echo -e " ${G}9) ⚡ Amp${NC} $(msg not_found)"
224
- fi
225
-
226
- echo -e " ${W}10) 📋 Manual copy${NC} (any platform)"
227
- echo ""
228
- }
229
-
230
- # ── Hamster Sentiment ─────────────────────────────────────────────
231
- hamster_sentiment() {
232
- local state="${1:-finish}"
233
- local idx=$(( RANDOM % 3 ))
234
-
235
- case $state in
236
- "start")
237
- case $idx in
238
- 0) echo -e " ${C}🐹: Whiskers twitching... CodyMaster incoming!${NC}" ;;
239
- 1) echo -e " ${C}🐹: Let's fill these cheeks with ${TOTAL_SKILLS} skills! ✨${NC}" ;;
240
- 2) echo -e " ${C}🐹: Waking up from a power nap! Let's build! 🐭${NC}" ;;
241
- esac
242
- ;;
243
- "progress")
244
- case $idx in
245
- 0) echo -e " ${C}🐹: Sniffing out your AI agents...${NC}" ;;
246
- 1) echo -e " ${C}🐹: Running on the wheel to speed this up! 🏃‍♂️💨${NC}" ;;
247
- 2) echo -e " ${C}🐹: Found a skill! Stashing it in my pocket... 💎${NC}" ;;
248
- esac
249
- ;;
250
- "finish")
251
- case $idx in
252
- 0) echo -e " ${C}🐹: Mission accomplished! Can I have a walnut now? 🥜${NC}" ;;
253
- 1) echo -e " ${C}🐹: My cheeks are stuffed with ${TOTAL_SKILLS} skills for you! ✨${NC}" ;;
254
- 2) echo -e " ${C}🐹: Terminal is Hamster-approved! Better than a wheel! 🎡${NC}" ;;
255
- esac
256
- ;;
257
- esac
258
- }
259
-
260
- # ── Onboarding block ─────────────────────────────────────────────
261
- # ── Skill Guides Hub ─────────────────────────────────────────────
262
- show_skill_guide() {
263
- local choice="$1"
264
- clear
265
- hamster_sentiment "finish"
266
- echo ""
267
-
268
- if [ "$LANG_CODE" = "vi" ]; then
269
- case "$choice" in
270
- 1)
271
- echo -e "${Y}${BOLD}1. Hướng dẫn toàn tập${NC} (${C}cm-how-it-work${NC})"
272
- echo -e "${W}🎯 Tình huống:${NC} Bạn mới cài CodyMaster và chưa biết bắt đầu từ đâu."
273
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-how-it-work\`"
274
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Giải thích quy trình từ ý tưởng đến lúc deploy một ứng dụng web bằng bộ skill này.\""
275
- ;;
276
- 2)
277
- echo -e "${Y}${BOLD}2. Vibe Coding (Zero Code)${NC} (${C}cm-start${NC})"
278
- echo -e "${W}🎯 Tình huống:${NC} Bạn có ý tưởng nhưng lười gõ từng dòng code."
279
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-start\`"
280
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Tôi muốn làm một trang web bán cà phê có giỏ hàng, dùng Tailwind CSS.\""
281
- ;;
282
- 3)
283
- echo -e "${Y}${BOLD}3. Tham gia dự án có sẵn${NC} (${C}cm-brainstorm-idea${NC})"
284
- echo -e "${W}🎯 Tình huống:${NC} Bạn nhảy vào một dự án có sẵn và thấy code quá rắc rối."
285
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-brainstorm-idea\`"
286
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Đọc toàn bộ project này và chỉ cho tôi 3 điểm yếu lớn nhất cần cải thiện ngay.\""
287
- ;;
288
- 4)
289
- echo -e "${Y}${BOLD}4. Thiết kế giao diện (UX/UI)${NC} (${C}cm-ux-master / cm-ui-preview${NC})"
290
- echo -e "${W}🎯 Tình huống:${NC} Bạn muốn web của mình đẹp như Apple hay Linear."
291
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-ux-master\`"
292
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Lấy style từ trang stripe.com và thiết kế cho tôi một trang thanh toán cực sang.\""
293
- ;;
294
- 5)
295
- echo -e "${Y}${BOLD}5. Lập trình TDD & Pair code${NC} (${C}cm-tdd${NC})"
296
- echo -e "${W}🎯 Tình huống:${NC} Bạn muốn code chắc chắn, không có lỗi khi chạy production."
297
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-tdd\`"
298
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Viết test case trước, sau đó code chức năng đăng ký người dùng cho tôi.\""
299
- ;;
300
- 6)
301
- echo -e "${Y}${BOLD}6. Dọn dẹp & Tái cấu trúc${NC} (${C}cm-clean-code${NC})"
302
- echo -e "${W}🎯 Tình huống:${NC} Code chạy được nhưng nhìn như \"bãi rác\"."
303
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-clean-code\`"
304
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Tối ưu lại file này: xóa code thừa, đặt lại tên biến cho chuẩn và dễ hiểu hơn.\""
305
- ;;
306
- 7)
307
- echo -e "${Y}${BOLD}7. Quét & Sửa lỗi bảo mật${NC} (${C}cm-security-gate${NC})"
308
- echo -e "${W}🎯 Tình huống:${NC} Sợ lộ API key hoặc web bị hack XSS."
309
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-security-gate\`"
310
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Kiểm tra xem project có lỗ hổng bảo mật nào không trước khi tôi push lên GitHub.\""
311
- ;;
312
- 8)
313
- echo -e "${Y}${BOLD}8. Viết tài liệu Docs & API${NC} (${C}cm-dockit${NC})"
314
- echo -e "${W}🎯 Tình huống:${NC} Lười viết tài liệu hướng dẫn cho đồng nghiệp hoặc khách hàng."
315
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-dockit\`"
316
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Tự động tạo file hướng dẫn sử dụng (README) cho toàn bộ project này.\""
317
- ;;
318
- 9)
319
- echo -e "${Y}${BOLD}9. Tạo WOW Landing Page${NC} (${C}cm-cro-methodology${NC})"
320
- echo -e "${W}🎯 Tình huống:${NC} Web có người vào nhưng không ai mua hàng/đăng ký."
321
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm @/cm-cro-methodology\`"
322
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Phân tích trang web này và chỉ cách tăng gấp đôi tỷ lệ khách hàng đăng ký.\""
323
- ;;
324
- 10)
325
- echo -e "${Y}${BOLD}10. Bảng theo dõi tiến độ${NC} (${C}cm dashboard${NC})"
326
- echo -e "${W}🎯 Tình huống:${NC} Muốn biết mình đã làm được bao nhiêu % công việc rồi."
327
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm dashboard\`"
328
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Hiện bảng dashboard để tôi xem tiến độ các task hiện tại.\""
329
- ;;
330
- 11)
331
- echo -e "${Y}${BOLD}11. Xem Demo (Claude Code)${NC} (${C}/cm:demo${NC})"
332
- echo -e "${W}🎯 Tình huống:${NC} Muốn xem CodyMaster tự \"múa\" code như thế nào."
333
- echo -e "${W}🚀 Câu lệnh:${NC} \`/cm:demo\`"
334
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Bắt đầu demo: tự tạo một ứng dụng TodoList từ A-Z trong 1 phút.\""
335
- ;;
336
- 12)
337
- echo -e "${Y}${BOLD}12. Trợ giúp & Cú pháp lệnh${NC} (${C}cm help${NC})"
338
- echo -e "${W}🎯 Tình huống:${NC} Quên lệnh hoặc muốn tìm thêm skill xịn khác."
339
- echo -e "${W}🚀 Câu lệnh:${NC} \`cm help\`"
340
- echo -e "${W}💡 Thử copy prompt này:${NC} \"Liệt kê các skill liên quan đến Growth Hacking và Marketing.\""
341
- ;;
342
- esac
343
- else
344
- case "$choice" in
345
- 1)
346
- echo -e "${Y}${BOLD}1. The Ultimate Guide${NC} (${C}cm-how-it-work${NC})"
347
- echo -e "${W}🎯 Situation:${NC} You just installed CodyMaster and don't know where to start."
348
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-how-it-work\`"
349
- echo -e "${W}💡 Try this prompt:${NC} \"Explain the process from idea to deployment using this skill kit.\""
350
- ;;
351
- 2)
352
- echo -e "${Y}${BOLD}2. Vibe Coding (Zero Code)${NC} (${C}cm-start${NC})"
353
- echo -e "${W}🎯 Situation:${NC} You have an idea but are too lazy to write code manually."
354
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-start\`"
355
- echo -e "${W}💡 Try this prompt:${NC} \"Build a coffee shop website with a cart using Tailwind CSS.\""
356
- ;;
357
- 3)
358
- echo -e "${Y}${BOLD}3. Code an Existing Project${NC} (${C}cm-brainstorm-idea${NC})"
359
- echo -e "${W}🎯 Situation:${NC} You're joining an existing project and the code is a mess."
360
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-brainstorm-idea\`"
361
- echo -e "${W}💡 Try this prompt:${NC} \"Read this entire project and tell me the 3 biggest weaknesses.\""
362
- ;;
363
- 4)
364
- echo -e "${Y}${BOLD}4. Generate UX/UI Designs${NC} (${C}cm-ux-master / cm-ui-preview${NC})"
365
- echo -e "${W}🎯 Situation:${NC} You want your web app to look as premium as Apple or Linear."
366
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-ux-master\`"
367
- echo -e "${W}💡 Try this prompt:${NC} \"Copy the style from stripe.com and design a high-end checkout page.\""
368
- ;;
369
- 5)
370
- echo -e "${Y}${BOLD}5. Code TDD & Pair Coding${NC} (${C}cm-tdd${NC})"
371
- echo -e "${W}🎯 Situation:${NC} You want reliable code that doesn't break in production."
372
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-tdd\`"
373
- echo -e "${W}💡 Try this prompt:${NC} \"Write test cases first, then implement user registration for me.\""
374
- ;;
375
- 6)
376
- echo -e "${Y}${BOLD}6. Clean & Refactor Codebase${NC} (${C}cm-clean-code${NC})"
377
- echo -e "${W}🎯 Situation:${NC} The code works but it looks like a \"garbage dump\"."
378
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-clean-code\`"
379
- echo -e "${W}💡 Try this prompt:${NC} \"Optimize this file: remove dead code and rename variables for clarity.\""
380
- ;;
381
- 7)
382
- echo -e "${Y}${BOLD}7. Scan for Vulnerabilities${NC} (${C}cm-security-gate${NC})"
383
- echo -e "${W}🎯 Situation:${NC} Worried about leaking API keys or XSS hacks."
384
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-security-gate\`"
385
- echo -e "${W}💡 Try this prompt:${NC} \"Check if there are any security vulnerabilities before I push to GitHub.\""
386
- ;;
387
- 8)
388
- echo -e "${Y}${BOLD}8. Write Docs & Generate APIs${NC} (${C}cm-dockit${NC})"
389
- echo -e "${W}🎯 Situation:${NC} Lazy to write documentation for teammates or clients."
390
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-dockit\`"
391
- echo -e "${W}💡 Try this prompt:${NC} \"Automatically generate a README guide for this entire project.\""
392
- ;;
393
- 9)
394
- echo -e "${Y}${BOLD}9. Release WOW Landing Page${NC} (${C}cm-cro-methodology${NC})"
395
- echo -e "${W}🎯 Situation:${NC} Visitors come to your site but don't buy or sign up."
396
- echo -e "${W}🚀 Command:${NC} \`cm @/cm-cro-methodology\`"
397
- echo -e "${W}💡 Try this prompt:${NC} \"Analyze this website and show me how to double my sign-up rate.\""
398
- ;;
399
- 10)
400
- echo -e "${Y}${BOLD}10. Open Progress Dashboard${NC} (${C}cm dashboard${NC})"
401
- echo -e "${W}🎯 Situation:${NC} Want to know how much work is actually completed."
402
- echo -e "${W}🚀 Command:${NC} \`cm dashboard\`"
403
- echo -e "${W}💡 Try this prompt:${NC} \"Show the dashboard so I can see the progress of current tasks.\""
404
- ;;
405
- 11)
406
- echo -e "${Y}${BOLD}11. See an Interactive Demo${NC} (${C}/cm:demo${NC})"
407
- echo -e "${W}🎯 Situation:${NC} Want to see CodyMaster perform its magic automatically."
408
- echo -e "${W}🚀 Command:${NC} \`/cm:demo\`"
409
- echo -e "${W}💡 Try this prompt:${NC} \"Start demo: build a TodoList app from scratch in 1 minute.\""
410
- ;;
411
- 12)
412
- echo -e "${Y}${BOLD}12. Help & Command List${NC} (${C}cm help${NC})"
413
- echo -e "${W}🎯 Situation:${NC} Forgot a command or looking for more cool skills."
414
- echo -e "${W}🚀 Command:${NC} \`cm help\`"
415
- echo -e "${W}💡 Try this prompt:${NC} \"List all skills related to Growth Hacking and Marketing.\""
416
- ;;
417
- esac
418
- fi
419
-
420
- echo ""
421
- echo -e "${DIM}──────────────────────────────────────────────────${NC}"
422
- echo -e "${W}$(msg press_enter) ${DIM}or 'q' to exit${NC}"
423
- read -r next_step
424
- if [ "$next_step" = "q" ]; then
425
- exit 0
426
- fi
427
- }
428
-
429
- # ── Onboarding block ─────────────────────────────────────────────
430
- print_onboarding() {
431
- while true; do
432
- clear
433
- print_header
434
-
435
- if [ "$LANG_CODE" = "vi" ]; then
436
- echo -e " ${W}${BOLD}🎉 Thành công! Bạn đã mở khóa ${TOTAL_SKILLS} kỹ năng AI toàn năng:${NC}"
437
- echo ""
438
- hamster_sentiment "finish"
439
- echo ""
440
- echo -e " ${C}🎯 Orchestration${NC} : Lên kế hoạch & Điều phối Agent"
441
- echo -e " ${C}🎨 Product${NC} : Thiết kế UX/UI & Tâm lý hành vi"
442
- echo -e " ${C}🔧 Engineering${NC} : Code Full-stack & Tái cấu trúc"
443
- echo -e " ${C}🔒 Security${NC} : Bảo mật tự động & Chống rò rỉ"
444
- echo -e " ${C}⚙️ Operations${NC} : Triển khai an toàn & Quản lý CI/CD"
445
- echo -e " ${C}📈 Growth${NC} : Tối ưu chuyển đổi (CRO) & Tracking"
446
- echo ""
447
- echo -e " ${W}${BOLD}💡 Nhập số (1-12) để xem hướng dẫn & ví dụ:${NC}"
448
- echo ""
449
- echo -e " 1. ${Y}Cách CodyMaster vận hành ${NC} → cm-how-it-work"
450
- echo -e " 2. ${Y}Vibe coding (Zero code) ${NC} → cm-start"
451
- echo -e " 3. ${Y}Tham gia dự án có sẵn ${NC} → cm-brainstorm-idea"
452
- echo -e " 4. ${Y}Code giao diện từ URL/Ảnh ${NC} → cm-ux-master"
453
- echo -e " 5. ${Y}Lập trình TDD & Pair code ${NC} → cm-tdd"
454
- echo -e " 6. ${Y}Dọn dẹp & Tái cấu trúc ${NC} → cm-clean-code"
455
- echo -e " 7. ${Y}Quét & Sửa lỗi bảo mật ${NC} → cm-security-gate"
456
- echo -e " 8. ${Y}Viết tài liệu Docs & API ${NC} → cm-dockit"
457
- echo -e " 9. ${Y}Tạo Landing Page \"WOW\" ${NC} → cm-cro-methodology"
458
- echo -e " 10. ${Y}Bảng theo dõi tiến độ ${NC} → cm dashboard"
459
- echo -e " 11. ${Y}Xem Demo tự động ${NC} → /cm:demo"
460
- echo -e " 12. ${Y}Trợ giúp & Cú pháp lệnh ${NC} → cm help"
461
- else
462
- echo -e " ${W}${BOLD}🎉 Success! You just unlocked ${TOTAL_SKILLS} omnipotent AI skills:${NC}"
463
- echo ""
464
- hamster_sentiment "finish"
465
- echo ""
466
- echo -e " ${C}🎯 Orchestration${NC} : Task Planning & Agent Synergy"
467
- echo -e " ${C}🎨 Product${NC} : UX/UI Mastery & User Psychology"
468
- echo -e " ${C}🔧 Engineering${NC} : Full-stack TDD & Refactoring"
469
- echo -e " ${C}🔒 Security${NC} : Automated Gates & Secret Shields"
470
- echo -e " ${C}⚙️ Operations${NC} : Safe Deployments & CI/CD Excellence"
471
- echo -e " ${C}📈 Growth${NC} : Conversion Tracking & Hacks"
472
- echo ""
473
- echo -e " ${W}${BOLD}💡 Type a number (1-12) for guide & examples:${NC}"
474
- echo ""
475
- echo -e " 1. ${Y}The ultimate guide ${NC} → cm-how-it-work"
476
- echo -e " 2. ${Y}Vibe coding (Zero code) ${NC} → cm-start"
477
- echo -e " 3. ${Y}Code an existing project ${NC} → cm-brainstorm-idea"
478
- echo -e " 4. ${Y}Generate UX/UI designs ${NC} → cm-ux-master"
479
- echo -e " 5. ${Y}Code TDD & Pair coding ${NC} → cm-tdd"
480
- echo -e " 6. ${Y}Clean & Refactor codebase ${NC} → cm-clean-code"
481
- echo -e " 7. ${Y}Scan for vulnerabilities ${NC} → cm-security-gate"
482
- echo -e " 8. ${Y}Write docs & generate APIs ${NC} → cm-dockit"
483
- echo -e " 9. ${Y}Release WOW landing page ${NC} → cm-cro-methodology"
484
- echo -e " 10. ${Y}Open progress dashboard ${NC} → cm dashboard"
485
- echo -e " 11. ${Y}See an interactive demo ${NC} → /cm:demo"
486
- echo -e " 12. ${Y}Help & Command list ${NC} → cm help"
487
- fi
488
-
489
- echo ""
490
- echo -e " ${W}${BOLD}$(msg docs)${NC} ${C}https://cody.todyle.com/docs${NC}"
491
- echo ""
492
- echo -e " ${DIM}Press 'q' to exit.${NC}"
493
- echo -n " > "
494
- read -r user_choice
495
-
496
- if [[ "$user_choice" =~ ^[0-9]+$ ]] && [ "$user_choice" -gt 0 ] && [ "$user_choice" -le 12 ]; then
497
- show_skill_guide "$user_choice"
498
- elif [ "$user_choice" = "q" ]; then
499
- break
500
- fi
501
- done
502
- }
503
-
504
- # ── Claude Code installer ────────────────────────────────────────
505
- install_claude() {
506
- local scope="${1:-user}"
507
- echo ""
508
- echo -e "${P}${BOLD}Claude Code — Installing Cody Master${NC}"
509
- echo ""
510
-
511
- if command -v claude &>/dev/null; then
512
- # Cleanup old marketplace if exists
513
- claude plugin marketplace remove cody-master 2>/dev/null || true
514
- echo -e " ${W}Adding marketplace...${NC}"
515
- if ! claude plugin marketplace add tody-agent/codymaster; then
516
- echo -e " ${R}⚠️ Marketplace add failed. Run:${NC} ${C}claude plugin marketplace add tody-agent/codymaster${NC}"
517
- fi
518
- echo -e " ${W}Installing plugin (scope: ${scope})...${NC}"
519
- if ! claude plugin install cm@codymaster --scope "$scope"; then
520
- echo -e " ${R}⚠️ Plugin install failed. Run:${NC} ${C}claude plugin install cm@codymaster --scope ${scope}${NC}"
521
- else
522
- echo ""
523
- echo -e " ${G}✅ Claude plugin installed — scope: ${scope}${NC}"
524
- fi
525
- maybe_print_onboarding
526
- else
527
- echo -e " ${R}Claude Code CLI not found. Install from: https://claude.ai/code${NC}"
528
- echo ""
529
- echo " Then run these commands in Claude Code:"
530
- echo ""
531
- echo -e " ${BOLD}1.${NC} ${C}claude plugin marketplace add tody-agent/codymaster${NC}"
532
- echo -e " ${BOLD}2.${NC} ${C}claude plugin install cm@codymaster --scope ${scope}${NC}"
533
- echo ""
534
- echo -e " First thing after install: ${C}/cm:demo${NC}"
535
- fi
536
- }
537
-
538
- # ── Gemini CLI / Antigravity installer ────────────────────────────
539
- install_gemini() {
540
- echo ""
541
- echo -e "${C}${BOLD}Gemini CLI / Antigravity — Installing Cody Master${NC}"
542
- echo ""
543
- target="$HOME/.gemini/antigravity/skills"
544
- install_skills_to "$target"
545
- ensure_gemini_md_hint
546
- echo ""
547
- echo -e " ${G}✅ Skills installed to ${target}${NC}"
548
- echo -e " ${C}ℹ GEMINI.md should reference: @~/.gemini/antigravity/skills/cm-skill-index/SKILL.md${NC}"
549
- echo -e " ${C}ℹ Restart Gemini / Antigravity if it was open during install${NC}"
550
- }
551
-
552
- # ── Aider installer ──────────────────────────────────────────────
553
- install_aider() {
554
- echo ""
555
- echo -e "${O}${BOLD}Aider — Installing Cody Master${NC}"
556
- echo ""
557
- target="$HOME/.aider/skills"
558
- install_skills_to "$target"
559
- echo -e " ${W}Tip: add skills context to .aider.conf.yml:${NC}"
560
- echo -e " ${C}read: - ~/.aider/skills/cm-planning/SKILL.md${NC}"
561
- echo -e " ${G}✅ Skills installed to ${target}${NC}"
562
- }
563
-
564
- # ── Continue.dev installer ───────────────────────────────────────
565
- install_continue() {
566
- echo ""
567
- echo -e "${B}${BOLD}Continue.dev — Installing Cody Master${NC}"
568
- echo ""
569
- target="$HOME/.continue/rules"
570
- install_skills_to "$target" "md"
571
- echo -e " ${C}ℹ Rules are auto-loaded by Continue.dev from ~/.continue/rules/${NC}"
572
- }
573
-
574
- # ── Amazon Q CLI installer ───────────────────────────────────────
575
- install_amazon_q() {
576
- echo ""
577
- echo -e "${W}${BOLD}Amazon Q CLI — Installing Cody Master${NC}"
578
- echo ""
579
- target="$HOME/.aws/amazonq/skills"
580
- install_skills_to "$target"
581
- echo -e " ${G}✅ Skills installed to ${target}${NC}"
582
- echo -e " ${W}To use in Q chat, reference skills:${NC}"
583
- echo -e " ${C}q chat --context ~/.aws/amazonq/skills/cm-planning/SKILL.md${NC}"
584
- }
585
-
586
- # ── Amp installer ────────────────────────────────────────────────
587
- install_amp() {
588
- echo ""
589
- echo -e "${G}${BOLD}Amp — Installing Cody Master${NC}"
590
- echo ""
591
- target="$HOME/.amp/skills"
592
- install_skills_to "$target"
593
- echo -e " ${G}✅ Skills installed to ${target}${NC}"
594
- echo -e " ${C}ℹ Reference skills in Amp via your AGENTS.md or system prompt${NC}"
595
- }
596
-
597
- install_cli() {
598
- local auto="$1"
599
- if command -v npm &>/dev/null; then
600
- echo ""
601
- echo -e "${G}${BOLD}CLI Dashboard — Cody Master CLI${NC}"
602
- echo ""
603
- echo -e " ${C}Official paths:${NC}"
604
- echo -e " ${W}Per-project:${NC} ${C}npm install codymaster${NC} → ${C}npx cm${NC}"
605
- echo -e " ${W}Global:${NC} ${C}npm install -g codymaster${NC} → ${C}cm${NC}"
606
- echo ""
607
- if [[ "$auto" == "--auto" ]]; then
608
- echo -e " ${W}Auto: trying global install (optional — use per-project + npx if you prefer).${NC}"
609
- npm install -g codymaster || echo -e " ${O}Global install failed (try: npm install codymaster in your repo, then npx cm).${NC}"
610
- if [ -f "package.json" ]; then
611
- if grep -q '"name": "codymaster"' package.json; then
612
- npm link &>/dev/null || true
613
- fi
614
- fi
615
- else
616
- read -p " Install codymaster globally now? (y/N): " install_npm
617
- if [[ "$install_npm" =~ ^[Yy]$ ]]; then
618
- echo -e " ${W}Running: npm install -g codymaster${NC}"
619
- npm install -g codymaster || echo -e " ${O}Note: sudo may be needed, or use: npm install codymaster && npx cm${NC}"
620
- fi
621
- fi
622
- fi
623
- }
624
-
625
- install_openviking() {
626
- echo ""
627
- echo -e "${G}${BOLD}OpenViking — Installing Core Feature${NC}"
628
- echo ""
629
- if command -v pip3 &>/dev/null; then
630
- echo -e " ${W}Running: pip3 install openviking${NC}"
631
- pip3 install openviking || echo -e " ${O}⚠️ Could not install OpenViking automatically.${NC}"
632
- elif command -v pip &>/dev/null; then
633
- echo -e " ${W}Running: pip install openviking${NC}"
634
- pip install openviking || echo -e " ${O}⚠️ Could not install OpenViking automatically.${NC}"
635
- else
636
- echo -e " ${R}Python pip not found. Please install pip to get OpenViking.${NC}"
637
- fi
638
- }
639
-
640
- # ── Ensure clone exists ──────────────────────────────────────────
641
- CLONE_DIR=""
642
- ensure_clone() {
643
- # If we're in the repo root with skills/ dir, use it directly
644
- if [ -d "skills" ]; then
645
- CLONE_DIR="."
646
- return
647
- fi
648
-
649
- # If ~/.cody-master already exists and has skills, use it
650
- if [ -d "$HOME/.cody-master/skills" ]; then
651
- CLONE_DIR="$HOME/.cody-master"
652
- return
653
- fi
654
-
655
- # Clone the repo
656
- echo -e " ${W}Cloning CodyMaster to ~/.cody-master...${NC}"
657
- git clone --depth 1 "${REPO_URL}.git" "$HOME/.cody-master" 2>/dev/null || {
658
-
659
- echo -e " ${R}Error: Failed to clone ${REPO_URL}${NC}"
660
- echo -e " ${R}Check your internet connection and try again.${NC}"
661
- exit 1
662
- }
663
- CLONE_DIR="$HOME/.cody-master"
664
- echo -e " ${G}✅ Cloned to ~/.cody-master${NC}"
665
- # Update total skills after pulling down new repo
666
- if [ -d "$CLONE_DIR/skills" ]; then
667
- TOTAL_SKILLS=$(ls -1d "$CLONE_DIR/skills"/cm-*/SKILL.md 2>/dev/null | wc -l | tr -d ' ')
668
- fi
669
- }
670
-
671
- # ── Copy skills to target directory ──────────────────────────────
672
- install_skills_to() {
673
- local target="$1"
674
- local format="${2:-raw}"
675
- ensure_clone
676
- echo ""
677
- echo -e "${G}${BOLD}Installing skills to: ${target}${NC}"
678
- if [[ -n "${SKILL_PROFILE:-}" && "$SKILL_PROFILE" != "full" ]]; then
679
- echo -e " ${C}Profile: ${SKILL_PROFILE}${NC}"
680
- fi
681
- echo ""
682
- mkdir -p "$target"
683
- local count=0
684
- local installed=()
685
- local -a allow=()
686
- local use_profile=0
687
- if [[ -n "${SKILL_PROFILE:-}" && "$SKILL_PROFILE" != "full" ]]; then
688
- local pf="${CLONE_DIR}/skills/profiles/${SKILL_PROFILE}.txt"
689
- if [[ ! -f "$pf" && -n "${CM_SCRIPT_DIR}" && -f "${CM_SCRIPT_DIR}/skills/profiles/${SKILL_PROFILE}.txt" ]]; then
690
- pf="${CM_SCRIPT_DIR}/skills/profiles/${SKILL_PROFILE}.txt"
691
- fi
692
- if [[ ! -f "$pf" ]]; then
693
- echo -e " ${R}Unknown profile '${SKILL_PROFILE}'. Valid: core, growth, design, knowledge, full${NC}"
694
- echo -e " ${R}Expected: \${CLONE_DIR}/skills/profiles/${SKILL_PROFILE}.txt (git pull ~/.cody-master or run install.sh from repo)${NC}"
695
- exit 1
696
- fi
697
- use_profile=1
698
- while IFS= read -r line || [[ -n "$line" ]]; do
699
- [[ "$line" =~ ^[[:space:]]*# ]] && continue
700
- line="${line%%#*}"
701
- line="${line#"${line%%[![:space:]]*}"}"
702
- line="${line%"${line##*[![:space:]]}"}"
703
- [[ -z "$line" ]] && continue
704
- allow+=("$line")
705
- done < "$pf"
706
- fi
707
- for skill_dir in "${CLONE_DIR}"/skills/cm-*/; do
708
- skill_name=$(basename "$skill_dir")
709
- if [[ "$use_profile" -eq 1 ]]; then
710
- local found=0
711
- local a
712
- for a in "${allow[@]}"; do
713
- if [[ "$a" == "$skill_name" ]]; then
714
- found=1
715
- break
716
- fi
717
- done
718
- if [[ "$found" -eq 0 ]]; then
719
- continue
720
- fi
721
- fi
722
- if [ -f "${skill_dir}SKILL.md" ]; then
723
- if [[ "$format" == "mdc" ]]; then
724
- # Create Cursor glob native format
725
- echo "---" > "${target}/${skill_name}.mdc"
726
- echo "description: ${skill_name}" >> "${target}/${skill_name}.mdc"
727
- echo "globs: *" >> "${target}/${skill_name}.mdc"
728
- echo "---" >> "${target}/${skill_name}.mdc"
729
- cat "${skill_dir}SKILL.md" >> "${target}/${skill_name}.mdc"
730
- installed+=("${skill_name}.mdc")
731
- elif [[ "$format" == "md" ]]; then
732
- cp "${skill_dir}SKILL.md" "${target}/${skill_name}.md"
733
- installed+=("${skill_name}.md")
734
- else
735
- cp -r "$skill_dir" "${target}/${skill_name}"
736
- installed+=("$skill_name")
737
- fi
738
- count=$((count + 1))
739
- fi
740
- done
741
-
742
- local line=" ${DIM}"
743
- for s in "${installed[@]}"; do
744
- if [ ${#line} -gt 70 ]; then
745
- echo -e "${line}${NC}"
746
- line=" ${DIM}"
747
- fi
748
- line="${line}${s}, "
749
- done
750
- if [ "${line}" != " ${DIM}" ]; then
751
- echo -e "${line%, }${NC}"
752
- fi
753
-
754
- echo ""
755
- echo -e "${G}✅ ${count} skills installed to ${target}${NC}"
756
- }
757
-
758
- # ── Legacy alias ─────────────────────────────────────────────────
759
- install_antigravity() {
760
- install_skills_to "$1"
761
- }
762
-
763
- # ── Scope selector for Claude ────────────────────────────────────
764
- select_scope() {
765
- echo ""
766
- echo -e "${W}${BOLD}$(msg scope)${NC}"
767
- echo ""
768
- echo -e " ${BOLD}1)${NC} 🌐 $(msg scope_user)"
769
- echo -e " ${BOLD}2)${NC} 📁 $(msg scope_project)"
770
- echo ""
771
- read -p " Choose (1-2, default=1): " scope_choice
772
- case "${scope_choice:-1}" in
773
- 2) SCOPE="project" ;;
774
- *) SCOPE="user" ;;
775
- esac
776
- }
777
-
778
- # ── Cursor rules path: avoid writing to a random cwd (e.g. /tmp) ──
779
- resolve_cursor_rules_dir() {
780
- local mode="${1:-cursor}"
781
- if [[ "$mode" == "all" ]]; then
782
- printf '%s' "${HOME}/.cursor/rules"
783
- return
784
- fi
785
- if [[ "$CURSOR_RULES_PROJECT" == "1" ]]; then
786
- printf '%s' ".cursor/rules"
787
- return
788
- fi
789
- if [[ -d .git ]] || [[ -f package.json ]]; then
790
- printf '%s' ".cursor/rules"
791
- else
792
- printf '%s' "${HOME}/.cursor/rules"
793
- fi
794
- }
795
-
796
- # ── Gemini: ensure GEMINI.md points at skill index ───────────────
797
- ensure_gemini_md_hint() {
798
- mkdir -p "${HOME}/.gemini" 2>/dev/null || true
799
- local f="${HOME}/.gemini/GEMINI.md"
800
- local hint="@~/.gemini/antigravity/skills/cm-skill-index/SKILL.md"
801
- if [[ ! -f "$f" ]]; then
802
- {
803
- echo "# Gemini CLI / Antigravity"
804
- echo "# CodyMaster: load the progressive skill index first (then pull full skills as needed)"
805
- echo "$hint"
806
- } > "$f"
807
- echo -e " ${G}✅ Created ${f} with skill index line${NC}"
808
- return
809
- fi
810
- if ! grep -q "cm-skill-index" "$f" 2>/dev/null; then
811
- {
812
- echo ""
813
- echo "# CodyMaster — skill index"
814
- echo "$hint"
815
- } >> "$f"
816
- echo -e " ${G}✅ Appended CodyMaster skill index to ${f}${NC}"
817
- fi
818
- }
819
-
820
- maybe_print_onboarding() {
821
- [[ "$SKIP_INSTALL_ONBOARDING" == "1" ]] && return 0
822
- print_onboarding
823
- }
824
-
825
- print_all_done_summary() {
826
- echo ""
827
- echo -e "${W}${BOLD}═══ Next steps — verify each tool you use ═══${NC}"
828
- echo ""
829
- echo -e " ${BOLD}Claude Code:${NC} Open Claude Code → ${C}/cm:demo${NC} or ${C}/help${NC}. If the plugin is missing:"
830
- echo -e " ${C}claude plugin marketplace add tody-agent/codymaster${NC}"
831
- echo -e " ${C}claude plugin install cm@codymaster --scope user${NC}"
832
- echo ""
833
- echo -e " ${BOLD}Gemini / Antigravity:${NC} Skills → ${C}~/.gemini/antigravity/skills/${NC}"
834
- echo -e " ${C}~/.gemini/GEMINI.md${NC} should include ${C}@~/.gemini/antigravity/skills/cm-skill-index/SKILL.md${NC}"
835
- echo ""
836
- echo -e " ${BOLD}Cursor IDE:${NC} Rules → ${C}${HOME}/.cursor/rules${NC} ${DIM}(from one-liner --all)${NC}"
837
- echo -e " Agent chat: ${C}/add-plugin cody-master${NC}"
838
- echo -e " Project-only rules: ${C}cd your-repo && bash install.sh --cursor --cursor-project${NC}"
839
- echo ""
840
- echo -e " ${BOLD}Terminal CLI:${NC} ${C}npm install -g codymaster${NC} → ${C}cm${NC} | ${C}npm install codymaster${NC} → ${C}npx cm${NC}"
841
- echo ""
842
- echo -e " ${BOLD}Skill sources:${NC} ${C}~/.cody-master/skills/${NC}"
843
- echo ""
844
- }
845
-
846
- # ── Parse argv: --profile NAME + first platform flag ────────────
847
- parse_install_args() {
848
- INSTALL_CMD=""
849
- local args=("$@")
850
- local i=0
851
- while [[ $i -lt ${#args[@]} ]]; do
852
- local a="${args[i]}"
853
- case "$a" in
854
- --profile)
855
- SKILL_PROFILE="${args[i+1]:-full}"
856
- ((i+=2))
857
- continue
858
- ;;
859
- esac
860
- if [[ -z "$INSTALL_CMD" ]]; then
861
- case "$a" in
862
- --claude) INSTALL_CMD="claude" ;;
863
- --gemini|--antigravity) INSTALL_CMD="gemini" ;;
864
- --cursor) INSTALL_CMD="cursor" ;;
865
- --aider) INSTALL_CMD="aider" ;;
866
- --continue) INSTALL_CMD="continue" ;;
867
- --amazon-q) INSTALL_CMD="amazon-q" ;;
868
- --amp) INSTALL_CMD="amp" ;;
869
- --kiro) INSTALL_CMD="kiro" ;;
870
- --windsurf) INSTALL_CMD="windsurf" ;;
871
- --cline) INSTALL_CMD="cline" ;;
872
- --opencode) INSTALL_CMD="opencode" ;;
873
- --copilot) INSTALL_CMD="copilot" ;;
874
- --all) INSTALL_CMD="all" ;;
875
- esac
876
- fi
877
- ((i++)) || true
878
- done
879
- }
880
-
881
- # ════════════════════════════════════════════════════════════════
882
- # MAIN
883
- # ════════════════════════════════════════════════════════════════
884
-
885
- print_header
886
-
887
- # ── Non-interactive flags ────────────────────────────────────────
888
- for arg in "$@"; do
889
- case "$arg" in
890
- --global|--user) SCOPE="user" ;;
891
- --project|--local) SCOPE="project" ;;
892
- --yes|-y) SKIP_INSTALL_ONBOARDING=1 ;;
893
- --cursor-project) CURSOR_RULES_PROJECT=1 ;;
894
- esac
895
- done
896
-
897
- parse_install_args "$@"
898
-
899
- # One-liner full install should finish without the interactive onboarding menu
900
- if [[ "$INSTALL_CMD" == "all" ]]; then
901
- SKIP_INSTALL_ONBOARDING=1
902
- fi
903
-
904
- if [[ "$INSTALL_CMD" == "claude" ]]; then
905
- install_claude "$SCOPE"
906
- exit 0
907
- fi
908
-
909
- if [[ "$INSTALL_CMD" == "gemini" ]]; then
910
- install_gemini
911
- if [[ -n "${SKILL_PROFILE:-}" && "$SKILL_PROFILE" != "full" ]]; then
912
- echo -e " ${C}ℹ Add more skills: bash install.sh --gemini --profile growth (same target merges new folders)${NC}"
913
- echo -e " ${C}ℹ Point GEMINI.md at: @~/.gemini/antigravity/skills/cm-skill-index/SKILL.md${NC}"
914
- fi
915
- maybe_print_onboarding
916
- exit 0
917
- fi
918
-
919
- if [[ "$INSTALL_CMD" == "cursor" ]]; then
920
- echo ""
921
- echo -e "${B}${BOLD}Cursor — Installing Cody Master${NC}"
922
- echo ""
923
- target="$(resolve_cursor_rules_dir cursor)"
924
- install_skills_to "$target" "mdc"
925
- echo -e " ${C}ℹ Cursor rules installed to: ${BOLD}${target}${NC}"
926
- echo -e " ${C}ℹ Reopen Cursor or open a workspace folder. Also try Agent: ${BOLD}/add-plugin cody-master${NC}"
927
- maybe_print_onboarding
928
- exit 0
929
- fi
930
-
931
- if [[ "$INSTALL_CMD" == "aider" ]]; then
932
- install_aider
933
- maybe_print_onboarding
934
- exit 0
935
- fi
936
-
937
- if [[ "$INSTALL_CMD" == "continue" ]]; then
938
- install_continue
939
- maybe_print_onboarding
940
- exit 0
941
- fi
942
-
943
- if [[ "$INSTALL_CMD" == "amazon-q" ]]; then
944
- install_amazon_q
945
- maybe_print_onboarding
946
- exit 0
947
- fi
948
-
949
- if [[ "$INSTALL_CMD" == "amp" ]]; then
950
- install_amp
951
- maybe_print_onboarding
952
- exit 0
953
- fi
954
-
955
- if [[ "$INSTALL_CMD" == "kiro" ]]; then
956
- echo ""
957
- echo -e "${O}${BOLD}Kiro — Installing Cody Master${NC}"
958
- echo ""
959
- install_skills_to ".kiro/steering" "raw"
960
- maybe_print_onboarding
961
- exit 0
962
- fi
963
-
964
- if [[ "$INSTALL_CMD" == "windsurf" ]]; then
965
- echo ""
966
- echo -e "${O}${BOLD}Windsurf — Installing Cody Master${NC}"
967
- echo ""
968
- echo -e " ${C}ℹ This writes to project ${BOLD}.windsurf/rules${NC}${C} (run from repo root).${NC}"
969
- echo -e " ${C}ℹ Some Windsurf builds also use global skills under Codeium paths — use the same profile flags if you copy there.${NC}"
970
- install_skills_to ".windsurf/rules" "raw"
971
- if [[ -n "${SKILL_PROFILE:-}" && "$SKILL_PROFILE" != "full" ]]; then
972
- echo -e " ${C}ℹ Add more: bash install.sh --windsurf --profile growth${NC}"
973
- fi
974
- maybe_print_onboarding
975
- exit 0
976
- fi
977
-
978
- if [[ "$INSTALL_CMD" == "cline" ]]; then
979
- echo ""
980
- echo -e "${O}${BOLD}Cline/RooCode — Installing Cody Master${NC}"
981
- echo ""
982
- install_skills_to ".cline/skills" "raw"
983
- maybe_print_onboarding
984
- exit 0
985
- fi
986
-
987
- if [[ "$INSTALL_CMD" == "opencode" ]]; then
988
- echo ""
989
- echo -e "${G}${BOLD}OpenCode — Installing Cody Master${NC}"
990
- echo ""
991
- install_skills_to ".opencode/skills" "raw"
992
- maybe_print_onboarding
993
- exit 0
994
- fi
995
-
996
- if [[ "$INSTALL_CMD" == "copilot" ]]; then
997
- echo ""
998
- echo -e "${G}${BOLD}GitHub Copilot — Installing Cody Master${NC}"
999
- echo ""
1000
- echo -e " Please manually add skills context to copilot-instructions.md:"
1001
- echo -e " ${C}cat ~/.cody-master/skills/cm-planning/SKILL.md >> .github/copilot-instructions.md${NC}"
1002
- exit 0
1003
- fi
1004
-
1005
- if [[ "$INSTALL_CMD" == "all" ]]; then
1006
- echo -e "${W}${BOLD}Installing to all detected platforms...${NC}"
1007
- echo ""
1008
- command -v claude &>/dev/null && install_claude "$SCOPE"
1009
- install_gemini
1010
- command -v aider &>/dev/null && install_aider
1011
- [ -d "$HOME/.continue" ] && install_continue
1012
- command -v q &>/dev/null && install_amazon_q
1013
- command -v amp &>/dev/null && install_amp
1014
- [ -d "$HOME/.cursor" ] || [ -d "/Applications/Cursor.app" ] && {
1015
- _cm_cursor_rules="$(resolve_cursor_rules_dir all)"
1016
- echo -e " ${W}Cursor → ${_cm_cursor_rules} ${DIM}(not your current shell cwd)${NC}"
1017
- install_skills_to "${_cm_cursor_rules}" "mdc"
1018
- }
1019
- install_openviking
1020
- install_cli "--auto"
1021
- echo ""
1022
- echo -e "${G}${BOLD}✅ All installations completed!${NC}"
1023
- echo -e "${C}$(msg docs) https://cody.todyle.com/docs${NC}"
1024
- print_all_done_summary
1025
- exit 0
1026
- fi
1027
-
1028
- # ── Interactive mode ─────────────────────────────────────────────
1029
- detect_agents
1030
-
1031
- echo -e "${W}${BOLD}$(msg select)${NC}"
1032
- echo -e " ${W}(or press Enter to install for all detected: ${#DETECTED[@]} found)${NC}"
1033
- echo ""
1034
- read -p " > " platform_input
1035
-
1036
- # Default: all detected
1037
- if [ -z "$platform_input" ] && [ ${#DETECTED[@]} -gt 0 ]; then
1038
- platforms=("${DETECTED[@]}")
1039
- else
1040
- IFS=',' read -ra nums <<< "$platform_input"
1041
- platforms=()
1042
- for n in "${nums[@]}"; do
1043
- n=$(echo "$n" | tr -d ' ')
1044
- case "$n" in
1045
- 1) platforms+=("claude") ;;
1046
- 2) platforms+=("gemini") ;;
1047
- 3) platforms+=("cursor") ;;
1048
- 4) platforms+=("codex") ;;
1049
- 5) platforms+=("opencode") ;;
1050
- 6) platforms+=("aider") ;;
1051
- 7) platforms+=("continue") ;;
1052
- 8) platforms+=("amazon-q") ;;
1053
- 9) platforms+=("amp") ;;
1054
- 10) platforms+=("manual") ;;
1055
- esac
1056
- done
1057
- fi
1058
-
1059
- # Install for each selected platform
1060
- for platform in "${platforms[@]}"; do
1061
- case "$platform" in
1062
- claude)
1063
- select_scope
1064
- install_claude "$SCOPE"
1065
- ;;
1066
- gemini)
1067
- install_gemini
1068
- ;;
1069
- cursor)
1070
- echo ""
1071
- echo -e "${B}${BOLD}Cursor — Rules + plugin${NC}"
1072
- _cm_cursor_rules="$(resolve_cursor_rules_dir cursor)"
1073
- install_skills_to "${_cm_cursor_rules}" "mdc"
1074
- echo -e " ${C}ℹ Rules → ${_cm_cursor_rules}${NC}"
1075
- echo -e " In Cursor Agent chat: ${C}/add-plugin cody-master${NC}"
1076
- ;;
1077
- codex)
1078
- echo ""
1079
- echo -e "${O}${BOLD}Codex — Install${NC}"
1080
- echo -e " Tell Codex: ${C}Fetch and follow ${RAW_URL}/.codex/INSTALL.md${NC}"
1081
- ;;
1082
- opencode)
1083
- echo ""
1084
- echo -e "${G}${BOLD}OpenCode — Install${NC}"
1085
- echo -e " Tell OpenCode: ${C}Fetch and follow ${RAW_URL}/.opencode/INSTALL.md${NC}"
1086
- ;;
1087
- aider)
1088
- install_aider
1089
- ;;
1090
- continue)
1091
- install_continue
1092
- ;;
1093
- amazon-q)
1094
- install_amazon_q
1095
- ;;
1096
- amp)
1097
- install_amp
1098
- ;;
1099
- manual)
1100
- echo ""
1101
- echo -e "${W}${BOLD}Manual Copy — Any Platform${NC}"
1102
- echo ""
1103
- echo -e " ${C}# Gemini CLI / Antigravity${NC}"
1104
- echo -e " git clone --depth 1 ${REPO_URL}.git ~/.cody-master"
1105
- echo -e " cp -r ~/.cody-master/skills/* ~/.gemini/antigravity/skills/"
1106
- echo ""
1107
- echo -e " ${C}# Aider${NC}"
1108
- echo -e " bash install.sh --aider"
1109
- echo ""
1110
- echo -e " ${C}# Continue.dev${NC}"
1111
- echo -e " bash install.sh --continue"
1112
- echo ""
1113
- echo -e " ${C}# Any platform (copy)${NC}"
1114
- echo -e " cp -r ~/.cody-master/skills/* <your-platform-skills-dir>/"
1115
- ;;
1116
- esac
1117
- done
1118
-
1119
- install_openviking
1120
- install_cli
1121
- print_onboarding
1122
-
1123
- echo ""
1124
- echo -e "${C}$(msg docs) https://cody.todyle.com/docs${NC}"
1125
- echo ""