codymaster 5.2.0 → 7.0.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 (380) hide show
  1. package/CHANGELOG.md +276 -0
  2. package/README.md +216 -333
  3. package/dist/agent/antigravity.js +152 -0
  4. package/dist/agent/backend.js +2 -0
  5. package/dist/agent/claude.js +196 -0
  6. package/dist/agent/codex.js +204 -0
  7. package/dist/agent/copilot.js +284 -0
  8. package/dist/agent/cursor.js +211 -0
  9. package/dist/agent/factory.js +30 -0
  10. package/dist/agent/gemini.js +142 -0
  11. package/dist/agent/opencode.js +205 -0
  12. package/dist/agent/spawn-helper.js +237 -0
  13. package/dist/agent/version.js +25 -0
  14. package/dist/browse/adapter-factory.js +69 -0
  15. package/dist/browse/adapters/agent-browser-adapter.js +305 -0
  16. package/dist/browse/adapters/playwright-adapter.js +309 -0
  17. package/dist/browse/adapters/types.js +6 -0
  18. package/dist/browse/error-collector.js +132 -0
  19. package/dist/browse/event-log.js +109 -0
  20. package/dist/browse/index.js +17 -0
  21. package/dist/browse-server.js +204 -120
  22. package/dist/cli/command-registry.js +12 -0
  23. package/dist/cli/commands/dashboard.js +76 -2
  24. package/dist/cli/commands/engineering.js +218 -4
  25. package/dist/cli/commands/install.js +160 -0
  26. package/dist/cli/commands/learn.js +181 -0
  27. package/dist/cli/commands/parallel.js +138 -0
  28. package/dist/cli/commands/quality.js +105 -0
  29. package/dist/cli/commands/stack.js +49 -0
  30. package/dist/cli/commands/update.js +159 -0
  31. package/dist/cli/update-check.js +94 -10
  32. package/dist/continuity.js +3 -1
  33. package/dist/dashboard.js +47 -6
  34. package/dist/data.js +35 -0
  35. package/dist/execution/tdd-gate.js +113 -0
  36. package/dist/executor/cancel.js +34 -0
  37. package/dist/executor/gc.js +74 -0
  38. package/dist/executor/index.js +14 -0
  39. package/dist/executor/runner.js +70 -0
  40. package/dist/executor/workdir.js +31 -0
  41. package/dist/handoff/contracts.js +22 -0
  42. package/dist/handoff/index.js +18 -0
  43. package/dist/handoff/io.js +121 -0
  44. package/dist/index.js +7 -3
  45. package/dist/indexer/stack-detect.js +219 -0
  46. package/dist/install/copy.js +98 -0
  47. package/dist/install/engine.js +42 -0
  48. package/dist/install/paths.js +70 -0
  49. package/dist/install/platforms/_simple.js +85 -0
  50. package/dist/install/platforms/antigravity.js +91 -0
  51. package/dist/install/platforms/claude-code.js +107 -0
  52. package/dist/install/platforms/cursor.js +77 -0
  53. package/dist/install/platforms/index.js +27 -0
  54. package/dist/install/platforms/simple.js +163 -0
  55. package/dist/install/profiles.js +75 -0
  56. package/dist/install/types.js +2 -0
  57. package/dist/learnings.js +208 -0
  58. package/dist/mcp-context-server.js +1 -1
  59. package/dist/middleware/metrics.js +30 -0
  60. package/dist/middleware/security-headers.js +14 -0
  61. package/dist/realtime/event-bus.js +29 -0
  62. package/dist/realtime/ws-hub.js +91 -0
  63. package/dist/schemas/task-schema.js +48 -0
  64. package/dist/schemas/validate.js +18 -0
  65. package/dist/skills-lock.js +96 -0
  66. package/dist/sprint-pipeline.js +26 -0
  67. package/dist/storage/index.js +21 -0
  68. package/dist/storage/repos/activity-repo.js +46 -0
  69. package/dist/storage/repos/message-repo.js +39 -0
  70. package/dist/storage/repos/project-repo.js +56 -0
  71. package/dist/storage/repos/task-repo.js +142 -0
  72. package/dist/storage/services/project-service.js +49 -0
  73. package/dist/storage/services/task-service.js +97 -0
  74. package/dist/storage/sqlite.js +113 -0
  75. package/dist/tier-classify.js +131 -0
  76. package/dist/ui/onboarding.js +51 -15
  77. package/dist/utils/cli-utils.js +7 -2
  78. package/dist/utils/design-taste.js +108 -0
  79. package/dist/utils/output-compress.js +143 -0
  80. package/dist/vibecoding-index.js +126 -0
  81. package/package.json +27 -4
  82. package/public/dashboard/app.js +52 -1
  83. package/scripts/build-skills-lock.mjs +88 -0
  84. package/scripts/build-skills.mjs +187 -28
  85. package/scripts/compress-skill.mjs +73 -0
  86. package/scripts/deprecate-skill.mjs +72 -0
  87. package/scripts/install.sh +170 -0
  88. package/scripts/mcp-bridge.js +2 -2
  89. package/scripts/postinstall.js +54 -287
  90. package/scripts/release.sh +126 -0
  91. package/scripts/update-changelog.sh +88 -0
  92. package/scripts/validate-skills.mjs +101 -4
  93. package/skills/_shared/SKILL_TEMPLATE.md +62 -0
  94. package/skills/cm-autopilot/scripts/autopilot.py +19 -2
  95. package/skills/cm-brainstorm-idea/SKILL.md +9 -0
  96. package/skills/cm-clean-code/SKILL.md +20 -0
  97. package/skills/cm-code-review/SKILL.md +21 -0
  98. package/skills/cm-codeintell/SKILL.md +9 -0
  99. package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
  100. package/skills/cm-conductor-worktrees/SKILL.md +17 -19
  101. package/skills/cm-continuity/SKILL.md +9 -0
  102. package/skills/cm-dashboard/SKILL.archive.md +15 -0
  103. package/skills/cm-dashboard/SKILL.md +20 -9
  104. package/skills/cm-dashboard/ui/app.js +9 -1
  105. package/skills/cm-debugging/SKILL.md +9 -0
  106. package/skills/cm-design-studio/SKILL.archive.md +34 -0
  107. package/skills/cm-design-studio/SKILL.md +17 -25
  108. package/skills/cm-design-system/SKILL.md +1 -0
  109. package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
  110. package/skills/cm-engineering-meta/SKILL.md +16 -63
  111. package/skills/cm-execution/SKILL.md +98 -0
  112. package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
  113. package/skills/cm-git-worktrees/SKILL.md +15 -146
  114. package/skills/cm-identity-guard/SKILL.md +8 -0
  115. package/skills/cm-planning/SKILL.md +63 -92
  116. package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
  117. package/skills/cm-post-deploy-canary/SKILL.md +17 -13
  118. package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
  119. package/skills/cm-qa-visual-cli/SKILL.md +16 -12
  120. package/skills/cm-quality-gate/SKILL.md +38 -0
  121. package/skills/cm-safe-deploy/SKILL.md +9 -0
  122. package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
  123. package/skills/cm-second-opinion-cli/SKILL.md +17 -14
  124. package/skills/cm-secret-shield/SKILL.archive.md +580 -0
  125. package/skills/cm-secret-shield/SKILL.md +15 -569
  126. package/skills/cm-security-gate/SKILL.archive.md +239 -0
  127. package/skills/cm-security-gate/SKILL.md +15 -228
  128. package/skills/cm-skill-health/SKILL.archive.md +83 -0
  129. package/skills/cm-skill-health/SKILL.md +16 -73
  130. package/skills/cm-skill-index/SKILL.md +8 -0
  131. package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
  132. package/skills/cm-skill-mastery/SKILL.md +16 -146
  133. package/skills/cm-skill-search/SKILL.archive.md +49 -0
  134. package/skills/cm-skill-search/SKILL.md +17 -40
  135. package/skills/cm-skill-share/SKILL.archive.md +58 -0
  136. package/skills/cm-skill-share/SKILL.md +17 -49
  137. package/skills/cm-sprint-bus/SKILL.md +9 -0
  138. package/skills/cm-start/SKILL.md +17 -0
  139. package/skills/cm-tdd/SKILL.md +19 -0
  140. package/skills/cm-terminal/SKILL.md +15 -0
  141. package/skills/cm-test-gate/SKILL.archive.md +245 -0
  142. package/skills/cm-test-gate/SKILL.md +15 -234
  143. package/skills/cm-ui-preview/SKILL.archive.md +153 -0
  144. package/skills/cm-ui-preview/SKILL.md +16 -143
  145. package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
  146. package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
  147. package/skills/cm-ux-master/mcp/server.py +2 -2
  148. package/skills/profiles/design.txt +1 -1
  149. package/skills/profiles/full.txt +0 -10
  150. package/skills/profiles/growth.txt +8 -8
  151. package/skills/profiles/knowledge.txt +1 -1
  152. package/skills/profiles/top35.json +41 -0
  153. package/adapters/antigravity.js +0 -15
  154. package/adapters/claude-code.js +0 -17
  155. package/adapters/cursor.js +0 -16
  156. package/skills/cm-ads-tracker/SKILL.md +0 -401
  157. package/skills/cm-ads-tracker/evals/evals.json +0 -55
  158. package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
  159. package/skills/cm-ads-tracker/references/industry-events.md +0 -294
  160. package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
  161. package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
  162. package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
  163. package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
  164. package/skills/cm-auto-publisher/SKILL.md +0 -81
  165. package/skills/cm-booking-calendar/SKILL.md +0 -521
  166. package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
  167. package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
  168. package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
  169. package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
  170. package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
  171. package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
  172. package/skills/cm-content-factory/.content-factory-state.json +0 -132
  173. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
  174. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
  175. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  176. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  177. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  178. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  179. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  180. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  181. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  182. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  183. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  184. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  185. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  186. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  187. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  188. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  189. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  190. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  191. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  192. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  193. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  194. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  195. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  196. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  197. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  198. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  199. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  200. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  201. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  202. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  203. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  204. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  205. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  206. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  207. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  208. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  209. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  210. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  211. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  212. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  213. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  214. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  215. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  216. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  217. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  218. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
  219. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  220. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  221. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  222. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  223. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  224. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  225. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  226. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  227. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  228. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  229. package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
  230. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
  231. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
  232. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
  233. package/skills/cm-content-factory/AGENTS.md +0 -61
  234. package/skills/cm-content-factory/CLAUDE.md +0 -63
  235. package/skills/cm-content-factory/CURSOR.md +0 -43
  236. package/skills/cm-content-factory/Content Factory.zip +0 -0
  237. package/skills/cm-content-factory/SKILL.md +0 -416
  238. package/skills/cm-content-factory/cf +0 -313
  239. package/skills/cm-content-factory/config.schema.json +0 -397
  240. package/skills/cm-content-factory/dashboard/app.js +0 -556
  241. package/skills/cm-content-factory/dashboard/index.html +0 -397
  242. package/skills/cm-content-factory/dashboard/style.css +0 -1211
  243. package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
  244. package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
  245. package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
  246. package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
  247. package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
  248. package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
  249. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
  250. package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
  251. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
  252. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
  253. package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
  254. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
  255. package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
  256. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
  257. package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
  258. package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
  259. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
  260. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
  261. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
  262. package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
  263. package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
  264. package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
  265. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
  266. package/skills/cm-content-factory/extensions/hooks.py +0 -126
  267. package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
  268. package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
  269. package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
  270. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
  271. package/skills/cm-content-factory/landing/docs/content/memory-system.md +0 -38
  272. package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
  273. package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
  274. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
  275. package/skills/cm-content-factory/landing/docs/index.html +0 -240
  276. package/skills/cm-content-factory/landing/index.html +0 -680
  277. package/skills/cm-content-factory/landing/script.js +0 -143
  278. package/skills/cm-content-factory/landing/style.css +0 -1216
  279. package/skills/cm-content-factory/landing/translations.js +0 -508
  280. package/skills/cm-content-factory/logs/events.jsonl +0 -11
  281. package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
  282. package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
  283. package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
  284. package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
  285. package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
  286. package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
  287. package/skills/cm-content-factory/scripts/audit.py +0 -106
  288. package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
  289. package/skills/cm-content-factory/scripts/deploy.py +0 -146
  290. package/skills/cm-content-factory/scripts/extract.py +0 -132
  291. package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
  292. package/skills/cm-content-factory/scripts/memory.py +0 -521
  293. package/skills/cm-content-factory/scripts/monetize.py +0 -239
  294. package/skills/cm-content-factory/scripts/pipeline.py +0 -357
  295. package/skills/cm-content-factory/scripts/plan.py +0 -163
  296. package/skills/cm-content-factory/scripts/publish.py +0 -145
  297. package/skills/cm-content-factory/scripts/research.py +0 -337
  298. package/skills/cm-content-factory/scripts/scaffold.py +0 -464
  299. package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
  300. package/skills/cm-content-factory/scripts/seo.py +0 -90
  301. package/skills/cm-content-factory/scripts/state_manager.py +0 -320
  302. package/skills/cm-content-factory/scripts/token_manager.py +0 -268
  303. package/skills/cm-content-factory/scripts/validate.py +0 -221
  304. package/skills/cm-content-factory/scripts/wizard.py +0 -329
  305. package/skills/cm-content-factory/scripts/write.py +0 -93
  306. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  307. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
  308. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
  309. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
  310. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
  311. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
  312. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
  313. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
  314. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
  315. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
  316. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
  317. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
  318. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
  319. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
  320. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
  321. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
  322. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
  323. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
  324. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
  325. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
  326. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
  327. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
  328. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
  329. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
  330. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
  331. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
  332. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
  333. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
  334. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
  335. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
  336. package/skills/cm-content-factory/tests/conftest.py +0 -66
  337. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
  338. package/skills/cm-content-factory/tests/test_memory.py +0 -128
  339. package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
  340. package/skills/cm-content-factory/tests/test_research.py +0 -56
  341. package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
  342. package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
  343. package/skills/cm-content-factory/tests/test_wizard.py +0 -121
  344. package/skills/cm-cro-methodology/SKILL.md +0 -290
  345. package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
  346. package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
  347. package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
  348. package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
  349. package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
  350. package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
  351. package/skills/cm-google-form/SKILL.md +0 -266
  352. package/skills/cm-google-form/templates/apps-script.js +0 -55
  353. package/skills/cm-google-form/templates/form-markup.html +0 -110
  354. package/skills/cm-google-form/templates/form-submit.js +0 -201
  355. package/skills/cm-google-form/templates/toast.css +0 -152
  356. package/skills/cm-growth-hacking/SKILL.md +0 -282
  357. package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
  358. package/skills/cm-growth-hacking/calendar-integration.md +0 -264
  359. package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
  360. package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
  361. package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
  362. package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
  363. package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
  364. package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
  365. package/skills/cm-growth-hacking/tracking-events.md +0 -246
  366. package/skills/cm-growth-hacking/trigger-system.md +0 -342
  367. package/skills/cm-jtbd/SKILL.md +0 -98
  368. package/skills/cm-notebooklm/SKILL.md +0 -156
  369. package/skills/cm-notebooklm/references/command_reference.md +0 -94
  370. package/skills/cm-notebooklm/references/workflows.md +0 -60
  371. package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
  372. package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
  373. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
  374. package/skills/cm-readit/SKILL.md +0 -289
  375. package/skills/cm-readit/audio-player.md +0 -206
  376. package/skills/cm-readit/examples/blog-reader.js +0 -352
  377. package/skills/cm-readit/examples/voice-cro.js +0 -390
  378. package/skills/cm-readit/tts-engine.md +0 -262
  379. package/skills/cm-readit/ui-patterns.md +0 -362
  380. package/skills/cm-readit/voice-cro.md +0 -223
@@ -1,298 +1,65 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * CodyMaster postinstall — minimal, friendly, no surprise actions.
4
+ * The actual platform install runs through `cm` (the onboarding wizard) so
5
+ * users always opt in interactively.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
2
10
 
3
- const G = '\x1b[32m';
4
11
  const C = '\x1b[36m';
5
- const W = '\x1b[37m';
12
+ const G = '\x1b[32m';
6
13
  const O = '\x1b[33m';
7
- const Y = '\x1b[1;33m';
8
- const BOLD = '\x1b[1m';
14
+ const W = '\x1b[1;37m';
9
15
  const DIM = '\x1b[2m';
10
16
  const NC = '\x1b[0m';
11
17
 
12
- const fs = require('fs');
13
- const path = require('path');
14
- const { execSync, execFileSync } = require('child_process');
15
-
16
- let skillCount = 68;
18
+ let skillCount = 60;
17
19
  try {
18
20
  const skillsDir = path.join(__dirname, '..', 'skills');
19
21
  if (fs.existsSync(skillsDir)) {
20
- skillCount = fs.readdirSync(skillsDir)
21
- .filter(f => {
22
- const fullPath = path.join(skillsDir, f);
23
- return f.startsWith('cm-') && fs.statSync(fullPath).isDirectory() && fs.existsSync(path.join(fullPath, 'SKILL.md'));
24
- })
25
- .length;
26
- }
27
- } catch (e) {}
28
-
29
-
30
- // Simple check for Vietnamese environment for the CORE UI
31
- const isVi = Intl.DateTimeFormat().resolvedOptions().locale.startsWith('vi');
32
-
33
- const sentiments = {
34
- start: [
35
- "🐹: Whiskers twitching... CodyMaster incoming!",
36
- `🐹: Let's fill these cheeks with ${skillCount} skills! ✨`,
37
- "🐹: Waking up from a power nap! Let's build! 🐭"
38
- ],
39
- progress: [
40
- "🐹: Sniffing out your AI agents...",
41
- "🐹: Running on the wheel to speed this up! 🏃💨",
42
- "🐹: Found a skill! Stashing it in my pocket... 💎"
43
- ],
44
- finish: [
45
- "🐹: Mission accomplished! Can I have a walnut now? 🥜",
46
- `🐹: My cheeks are stuffed with ${skillCount} skills for you! ✨`,
47
- "🐹: Terminal is Hamster-approved! Better than a wheel! 🎡",
48
- `🐹: ${skillCount} skills stored. I'm ready for vibe coding! ⚡`
49
- ]
50
- };
51
-
52
- const getSentiment = (state) => {
53
- const list = sentiments[state];
54
- return ` ${C}${list[Math.floor(Math.random() * list.length)]}${NC}`;
55
- };
56
-
57
- const showSkillGuide = (choice) => {
58
- console.clear();
59
- console.log(` ${G}\\${NC} ${O}( \\_/ )${NC} ${G}/${NC}`);
60
- console.log(` ${G}\\${NC} ${O}(${NC} ${G}^ u ^${NC} ${O})${NC} ${G}/${NC}`);
61
- console.log(` ${G}--${NC} ${O}( ___ )${NC} ${G}--${NC}`);
62
- console.log('');
63
-
64
- if (isVi) {
65
- switch(choice) {
66
- case '1':
67
- console.log(`${Y}${BOLD}1. Hướng dẫn toàn tập${NC} (${C}cm-how-it-work${NC})`);
68
- console.log(`${BOLD}🎯 Tình huống:${NC} Bạn mới cài CodyMaster và chưa biết bắt đầu từ đâu.`);
69
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-how-it-work\``);
70
- console.log(`${BOLD}💡 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."`);
71
- break;
72
- case '2':
73
- console.log(`${Y}${BOLD}2. Vibe Coding (Zero Code)${NC} (${C}cm-start${NC})`);
74
- console.log(`${BOLD}🎯 Tình huống:${NC} Bạn có ý tưởng nhưng lười gõ từng dòng code.`);
75
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-start\``);
76
- console.log(`${BOLD}💡 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."`);
77
- break;
78
- case '3':
79
- console.log(`${Y}${BOLD}3. Tham gia dự án có sẵn${NC} (${C}cm-brainstorm-idea${NC})`);
80
- console.log(`${BOLD}🎯 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.`);
81
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-brainstorm-idea\``);
82
- console.log(`${BOLD}💡 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."`);
83
- break;
84
- case '4':
85
- console.log(`${Y}${BOLD}4. Thiết kế giao diện (UX/UI)${NC} (${C}cm-ux-master / cm-ui-preview${NC})`);
86
- console.log(`${BOLD}🎯 Tình huống:${NC} Bạn muốn web của mình đẹp như Apple hay Linear.`);
87
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-ux-master\``);
88
- console.log(`${BOLD}💡 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."`);
89
- break;
90
- case '5':
91
- console.log(`${Y}${BOLD}5. Lập trình TDD & Pair code${NC} (${C}cm-tdd${NC})`);
92
- console.log(`${BOLD}🎯 Tình huống:${NC} Bạn muốn code chắc chắn, không có lỗi khi chạy production.`);
93
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-tdd\``);
94
- console.log(`${BOLD}💡 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."`);
95
- break;
96
- case '6':
97
- console.log(`${Y}${BOLD}6. Dọn dẹp & Tái cấu trúc${NC} (${C}cm-clean-code${NC})`);
98
- console.log(`${BOLD}🎯 Tình huống:${NC} Code chạy được nhưng nhìn như "bãi rác".`);
99
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-clean-code\``);
100
- console.log(`${BOLD}💡 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."`);
101
- break;
102
- case '7':
103
- console.log(`${Y}${BOLD}7. Quét & Sửa lỗi bảo mật${NC} (${C}cm-security-gate${NC})`);
104
- console.log(`${BOLD}🎯 Tình huống:${NC} Sợ lộ API key hoặc web bị hack XSS.`);
105
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-security-gate\``);
106
- console.log(`${BOLD}💡 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."`);
107
- break;
108
- case '8':
109
- console.log(`${Y}${BOLD}8. Viết tài liệu Docs & API${NC} (${C}cm-dockit${NC})`);
110
- console.log(`${BOLD}🎯 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.`);
111
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-dockit\``);
112
- console.log(`${BOLD}💡 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."`);
113
- break;
114
- case '9':
115
- console.log(`${Y}${BOLD}9. Tạo WOW Landing Page${NC} (${C}cm-cro-methodology${NC})`);
116
- console.log(`${BOLD}🎯 Tình huống:${NC} Web có người vào nhưng không ai mua hàng/đăng ký.`);
117
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm @/cm-cro-methodology\``);
118
- console.log(`${BOLD}💡 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ý."`);
119
- break;
120
- case '10':
121
- console.log(`${Y}${BOLD}10. Bảng theo dõi tiến độ${NC} (${C}cm dashboard${NC})`);
122
- console.log(`${BOLD}🎯 Tình huống:${NC} Muốn biết mình đã làm được bao nhiêu % công việc rồi.`);
123
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm dashboard\``);
124
- console.log(`${BOLD}💡 Thử copy prompt này:${NC} "Hiện bảng dashboard để tôi xem tiến độ các task hiện tại."`);
125
- break;
126
- case '11':
127
- console.log(`${Y}${BOLD}11. Xem Demo (Claude Code)${NC} (${C}/cm:demo${NC})`);
128
- console.log(`${BOLD}🎯 Tình huống:${NC} Muốn xem CodyMaster tự "múa" code như thế nào.`);
129
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`/cm:demo\``);
130
- console.log(`${BOLD}💡 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."`);
131
- break;
132
- case '12':
133
- console.log(`${Y}${BOLD}12. Trợ giúp & Cú pháp lệnh${NC} (${C}cm help${NC})`);
134
- console.log(`${BOLD}🎯 Tình huống:${NC} Quên lệnh hoặc muốn tìm thêm skill xịn khác.`);
135
- console.log(`${BOLD}🚀 Câu lệnh:${NC} \`cm help\``);
136
- console.log(`${BOLD}💡 Thử copy prompt này:${NC} "Liệt kê các skill liên quan đến Growth Hacking và Marketing."`);
137
- break;
138
- }
139
- } else {
140
- switch(choice) {
141
- case '1':
142
- console.log(`${Y}${BOLD}1. The Ultimate Guide${NC} (${C}cm-how-it-work${NC})`);
143
- console.log(`${BOLD}🎯 Situation:${NC} You just installed CodyMaster and don't know where to start.`);
144
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-how-it-work\``);
145
- console.log(`${BOLD}💡 Try this prompt:${NC} "Explain the process from idea to deployment using this skill kit."`);
146
- break;
147
- case '2':
148
- console.log(`${Y}${BOLD}2. Vibe Coding (Zero Code)${NC} (${C}cm-start${NC})`);
149
- console.log(`${BOLD}🎯 Situation:${NC} You have an idea but are too lazy to write code manually.`);
150
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-start\``);
151
- console.log(`${BOLD}💡 Try this prompt:${NC} "Build a coffee shop website with a cart using Tailwind CSS."`);
152
- break;
153
- case '3':
154
- console.log(`${Y}${BOLD}3. Code an Existing Project${NC} (${C}cm-brainstorm-idea${NC})`);
155
- console.log(`${BOLD}🎯 Situation:${NC} You're joining an existing project and the code is a mess.`);
156
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-brainstorm-idea\``);
157
- console.log(`${BOLD}💡 Try this prompt:${NC} "Read this entire project and tell me the 3 biggest weaknesses."`);
158
- break;
159
- case '4':
160
- console.log(`${Y}${BOLD}4. Generate UX/UI Designs${NC} (${C}cm-ux-master / cm-ui-preview${NC})`);
161
- console.log(`${BOLD}🎯 Situation:${NC} You want your web app to look as premium as Apple or Linear.`);
162
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-ux-master\``);
163
- console.log(`${BOLD}💡 Try this prompt:${NC} "Copy the style from stripe.com and design a high-end checkout page."`);
164
- break;
165
- case '5':
166
- console.log(`${Y}${BOLD}5. Code TDD & Pair Coding${NC} (${C}cm-tdd${NC})`);
167
- console.log(`${BOLD}🎯 Situation:${NC} You want reliable code that doesn't break in production.`);
168
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-tdd\``);
169
- console.log(`${BOLD}💡 Try this prompt:${NC} "Write test cases first, then implement user registration for me."`);
170
- break;
171
- case '6':
172
- console.log(`${Y}${BOLD}6. Clean & Refactor Codebase${NC} (${C}cm-clean-code${NC})`);
173
- console.log(`${BOLD}🎯 Situation:${NC} The code works but it looks like a "garbage dump".`);
174
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-clean-code\``);
175
- console.log(`${BOLD}💡 Try this prompt:${NC} "Optimize this file: remove dead code and rename variables for clarity."`);
176
- break;
177
- case '7':
178
- console.log(`${Y}${BOLD}7. Scan for Vulnerabilities${NC} (${C}cm-security-gate${NC})`);
179
- console.log(`${BOLD}🎯 Situation:${NC} Worried about leaking API keys or XSS hacks.`);
180
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-security-gate\``);
181
- console.log(`${BOLD}💡 Try this prompt:${NC} "Check if there are any security vulnerabilities before I push to GitHub."`);
182
- break;
183
- case '8':
184
- console.log(`${Y}${BOLD}8. Write Docs & Generate APIs${NC} (${C}cm-dockit${NC})`);
185
- console.log(`${BOLD}🎯 Situation:${NC} Lazy to write documentation for teammates or clients.`);
186
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-dockit\``);
187
- console.log(`${BOLD}💡 Try this prompt:${NC} "Automatically generate a README guide for this entire project."`);
188
- break;
189
- case '9':
190
- console.log(`${Y}${BOLD}9. Release WOW Landing Page${NC} (${C}cm-cro-methodology${NC})`);
191
- console.log(`${BOLD}🎯 Situation:${NC} Visitors come to your site but don't buy or sign up.`);
192
- console.log(`${BOLD}🚀 Command:${NC} \`cm @/cm-cro-methodology\``);
193
- console.log(`${BOLD}💡 Try this prompt:${NC} "Analyze this website and show me how to double my sign-up rate."`);
194
- break;
195
- case '10':
196
- console.log(`${Y}${BOLD}10. Open Progress Dashboard${NC} (${C}cm dashboard${NC})`);
197
- console.log(`${BOLD}🎯 Situation:${NC} Want to know how much work is actually completed.`);
198
- console.log(`${BOLD}🚀 Command:${NC} \`cm dashboard\``);
199
- console.log(`${BOLD}💡 Try this prompt:${NC} "Show the dashboard so I can see the progress of current tasks."`);
200
- break;
201
- case '11':
202
- console.log(`${Y}${BOLD}11. See an Interactive Demo${NC} (${C}/cm:demo${NC})`);
203
- console.log(`${BOLD}🎯 Situation:${NC} Want to see CodyMaster perform its magic automatically.`);
204
- console.log(`${BOLD}🚀 Command:${NC} \`/cm:demo\``);
205
- console.log(`${BOLD}💡 Try this prompt:${NC} "Start demo: build a TodoList app from scratch in 1 minute."`);
206
- break;
207
- case '12':
208
- console.log(`${Y}${BOLD}12. Help & Command List${NC} (${C}cm help${NC})`);
209
- console.log(`${BOLD}🎯 Situation:${NC} Forgot a command or looking for more cool skills.`);
210
- console.log(`${BOLD}🚀 Command:${NC} \`cm help\``);
211
- console.log(`${BOLD}💡 Try this prompt:${NC} "List all skills related to Growth Hacking and Marketing."`);
212
- break;
213
- }
22
+ skillCount = fs
23
+ .readdirSync(skillsDir)
24
+ .filter((f) => {
25
+ const full = path.join(skillsDir, f);
26
+ return (
27
+ f.startsWith('cm-') &&
28
+ fs.statSync(full).isDirectory() &&
29
+ fs.existsSync(path.join(full, 'SKILL.md'))
30
+ );
31
+ }).length;
214
32
  }
215
-
216
- console.log('');
217
- };
218
-
219
- const printMenu = () => {
220
- console.clear();
221
- console.log(` ${G}\\${NC} ${O}( \\_/ )${NC} ${G}/${NC}`);
222
- console.log(` ${G}\\${NC} ${O}(${NC} ${G}^ u ^${NC} ${O})${NC} ${G}/${NC}`);
223
- console.log(` ${G}--${NC} ${O}( ___ )${NC} ${G}--${NC} ${G}${BOLD}${isVi ? '✅ Hoàn tất!' : '✅ Done!'}${NC}`);
224
- console.log(` ${O}| [ ] |${NC}`);
225
- console.log(` ${O}'--w-w--'${NC}`);
226
- console.log('');
227
-
228
- if (isVi) {
229
- console.log(` ${W}${BOLD}🎉 Thành công! Bạn đã mở khóa ${skillCount} kỹ năng AI toàn năng:${NC}`);
230
- } else {
231
- console.log(` ${W}${BOLD}🎉 Success! You just unlocked ${skillCount} omnipotent AI skills:${NC}`);
232
- }
233
-
234
- console.log('');
235
- console.log(getSentiment('finish'));
236
- console.log('');
237
-
238
- if (isVi) {
239
- console.log(` ${C}🎯 Orchestration${NC} : Lên kế hoạch & Điều phối Agent`);
240
- console.log(` ${C}🎨 Product${NC} : Thiết kế UX/UI & Tâm hành vi`);
241
- console.log(` ${C}🔧 Engineering${NC} : Code Full-stack & Tái cấu trúc`);
242
- console.log(` ${C}🔒 Security${NC} : Bảo mật tự động & Chống rò rỉ`);
243
- console.log(` ${C}⚙️ Operations${NC} : Triển khai an toàn & Quản lý CI/CD`);
244
- console.log(` ${C}📈 Growth${NC} : Tối ưu chuyển đổi (CRO) & Tracking`);
245
- console.log('');
246
- console.log(` ${W}${BOLD}🌟 Lệnh phổ biến:${NC}`);
247
- console.log('');
248
- console.log(` 🔸 ${Y}Bảng tiến độ (Dashboard) ${NC} → cm dashboard`);
249
- console.log(` 🔸 ${Y}Cần trợ giúp / Tìm kỹ năng ${NC} → cm help`);
250
- console.log(` 🔸 ${Y}Cách CodyMaster hoạt động ${NC} → cm-how-it-work`);
251
- } else {
252
- console.log(` ${C}🎯 Orchestration${NC} : Task Planning & Agent Synergy`);
253
- console.log(` ${C}🎨 Product${NC} : UX/UI Mastery & User Psychology`);
254
- console.log(` ${C}🔧 Engineering${NC} : Full-stack TDD & Refactoring`);
255
- console.log(` ${C}🔒 Security${NC} : Automated Gates & Secret Shields`);
256
- console.log(` ${C}⚙️ Operations${NC} : Safe Deployments & CI/CD Excellence`);
257
- console.log(` ${C}📈 Growth${NC} : Conversion Tracking & Hacks`);
258
- console.log('');
259
- console.log(` ${W}${BOLD}🌟 Popular Commands:${NC}`);
260
- console.log('');
261
- console.log(` 🔸 ${Y}Open progress dashboard ${NC} → cm dashboard`);
262
- console.log(` 🔸 ${Y}Help & Command list ${NC} → cm help`);
263
- console.log(` 🔸 ${Y}The ultimate guide ${NC} → cm-how-it-work`);
264
- }
265
-
266
- console.log('');
267
- console.log(` ${W}${BOLD}${isVi ? '📚 Tài liệu:' : '📚 Documentation:'}${NC} ${C}https://cody.todyle.com/docs${NC}`);
268
- console.log('');
269
- };
270
-
271
- const isInstalledAsNpmDependency = () => {
272
- const root = path.resolve(__dirname, '..').replace(/\\/g, '/');
273
- return /[/\\]node_modules[/\\]codymaster$/i.test(root);
274
- };
275
-
276
- const npmCmd = () => (process.platform === 'win32' ? 'npm.cmd' : 'npm');
277
-
278
- const activateCli = () => {
279
- const pkgRoot = path.join(__dirname, '..');
280
-
281
- if (isInstalledAsNpmDependency()) {
282
- console.log(` ${C}CodyMaster CLI (per-project install — official path):${NC}`);
283
- console.log(` ${W}npx cm${NC} or ${W}npx codymaster${NC}`);
284
- console.log(
285
- ` ${DIM}Optional — bare ${W}cm${DIM} in any terminal: ${W}npm install -g codymaster${NC}`,
286
- );
287
- return;
288
- }
289
-
290
-
291
- };
292
-
293
- const main = () => {
294
- activateCli();
295
- printMenu();
296
- };
297
-
298
- main();
33
+ } catch {}
34
+
35
+ const sentiments = [
36
+ `🐹: ${skillCount} skills stuffed in my cheeks. Ready when you are! ✨`,
37
+ `🐹: Whiskers twitching type ${W}cm${NC}${C} to start the wizard.`,
38
+ '🐹: Power-nap over. Let\'s build! 🐭',
39
+ ];
40
+ const pick = (arr) => arr[Math.floor(Math.random() * arr.length)];
41
+
42
+ const isGlobal =
43
+ process.env.npm_config_global === 'true' ||
44
+ /[/\\]npm[/\\]node_modules[/\\]codymaster$/i.test(path.resolve(__dirname, '..').replace(/\\/g, '/'));
45
+
46
+ console.log('');
47
+ console.log(` ${G}\\${NC} ${O}( \\_/ )${NC} ${G}/${NC}`);
48
+ console.log(` ${G}\\${NC} ${O}(${NC} ${G}^ u ^${NC} ${O})${NC} ${G}/${NC}`);
49
+ console.log(` ${G}--${NC} ${O}( ___ )${NC} ${G}--${NC} ${G}${W}CodyMaster ready${NC}`);
50
+ console.log(` ${O}| [ ] |${NC}`);
51
+ console.log(` ${O}'--w-w--'${NC}`);
52
+ console.log('');
53
+ console.log(` ${C}${pick(sentiments)}${NC}`);
54
+ console.log('');
55
+
56
+ if (isGlobal) {
57
+ console.log(` Next: run ${W}cm${NC} to start the onboarding wizard.`);
58
+ console.log(` ${DIM}It will detect your AI coding tools and install skills where you choose.${NC}`);
59
+ } else {
60
+ console.log(` Next: run ${W}npx cm${NC} inside this project to start the wizard.`);
61
+ console.log(` ${DIM}For a global \`cm\` command: ${W}npm install -g codymaster${NC}${DIM}.${NC}`);
62
+ }
63
+ console.log('');
64
+ console.log(` ${DIM}Docs: https://cody.todyle.com/docs${NC}`);
65
+ console.log('');
@@ -0,0 +1,126 @@
1
+ #!/bin/bash
2
+ # CodyMaster Release Script
3
+ # Usage: bash scripts/release.sh [patch|minor|major|v1.2.3]
4
+ #
5
+ # Bumps version, updates changelog, commits, tags, and pushes.
6
+ # GitHub Actions will handle npm publish on tag push.
7
+
8
+ set -e
9
+
10
+ RED='\033[0;31m'
11
+ GREEN='\033[0;32m'
12
+ YELLOW='\033[1;33m'
13
+ BLUE='\033[0;34m'
14
+ BOLD='\033[1m'
15
+ RESET='\033[0m'
16
+
17
+ info() { echo -e "${BLUE} ℹ ${RESET}$1"; }
18
+ ok() { echo -e "${GREEN} ✅ ${RESET}$1"; }
19
+ warn() { echo -e "${YELLOW} ⚠️ ${RESET}$1"; }
20
+ err() { echo -e "${RED} ❌ ${RESET}$1"; exit 1; }
21
+
22
+ BUMP_TYPE="${1:-patch}"
23
+ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
24
+ PKG_JSON="$REPO_ROOT/package.json"
25
+
26
+ # ─── Pre-checks ──────────────────────────────────────────────────
27
+ echo ""
28
+ echo -e "${BOLD} 🐹 CodyMaster Release${RESET}"
29
+ echo ""
30
+
31
+ # Ensure clean working tree
32
+ if [ -n "$(git status --porcelain)" ]; then
33
+ err "Working tree is not clean. Commit or stash changes first."
34
+ fi
35
+
36
+ # Ensure on main/master
37
+ CURRENT_BRANCH=$(git branch --show-current)
38
+ if [ "$CURRENT_BRANCH" != "main" ] && [ "$CURRENT_BRANCH" != "master" ]; then
39
+ warn "Not on main branch (currently on: $CURRENT_BRANCH)"
40
+ read -p " Continue anyway? (y/N) " -n 1 -r
41
+ echo ""
42
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
43
+ exit 1
44
+ fi
45
+ fi
46
+
47
+ # ─── Calculate new version ───────────────────────────────────────
48
+ CURRENT_VERSION=$(node -p "require('./package.json').version" 2>/dev/null)
49
+ info "Current version: v$CURRENT_VERSION"
50
+
51
+ case "$BUMP_TYPE" in
52
+ patch) NEW_VERSION=$(echo "$CURRENT_VERSION" | awk -F. '{print $1"."$2"."$3+1}') ;;
53
+ minor) NEW_VERSION=$(echo "$CURRENT_VERSION" | awk -F. '{print $1"."$2+1".0"}') ;;
54
+ major) NEW_VERSION=$(echo "$CURRENT_VERSION" | awk -F. '{print $1+1".0.0"}' ;;
55
+ v*) NEW_VERSION="${BUMP_TYPE#v}" ;;
56
+ *)
57
+ err "Usage: $0 [patch|minor|major|v1.2.3]"
58
+ ;;
59
+ esac
60
+
61
+ info "New version: v$NEW_VERSION"
62
+ echo ""
63
+
64
+ # Confirm
65
+ read -p " Release v$NEW_VERSION? (y/N) " -n 1 -r
66
+ echo ""
67
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
68
+ info "Aborted."
69
+ exit 0
70
+ fi
71
+
72
+ # ─── Bump version in package.json ────────────────────────────────
73
+ info "Bumping version in package.json..."
74
+ node -e "
75
+ const fs = require('fs');
76
+ const pkg = JSON.parse(fs.readFileSync('$PKG_JSON', 'utf-8'));
77
+ pkg.version = '$NEW_VERSION';
78
+ fs.writeFileSync('$PKG_JSON', JSON.stringify(pkg, null, 2) + '\n');
79
+ "
80
+ ok "package.json updated"
81
+
82
+ # ─── Sync MCP server version ─────────────────────────────────────
83
+ MCP_FILE="$REPO_ROOT/src/mcp-context-server.ts"
84
+ if [ -f "$MCP_FILE" ]; then
85
+ sed -i '' "s/SERVER_VERSION = '[^']*'/SERVER_VERSION = '$NEW_VERSION'/" "$MCP_FILE" 2>/dev/null || \
86
+ sed -i "s/SERVER_VERSION = '[^']*'/SERVER_VERSION = '$NEW_VERSION'/" "$MCP_FILE" 2>/dev/null
87
+ ok "MCP server version synced"
88
+ fi
89
+
90
+ # ─── Update changelog ────────────────────────────────────────────
91
+ info "Updating changelog..."
92
+ if [ -f "$REPO_ROOT/scripts/update-changelog.sh" ]; then
93
+ bash "$REPO_ROOT/scripts/update-changelog.sh" || warn "Changelog update failed (non-fatal)"
94
+ ok "Changelog updated"
95
+ else
96
+ warn "Changelog script not found, skipping"
97
+ fi
98
+
99
+ # ─── Build ───────────────────────────────────────────────────────
100
+ info "Building..."
101
+ npm run build 2>/dev/null || npx tsc
102
+ ok "Build complete"
103
+
104
+ # ─── Commit & Tag ────────────────────────────────────────────────
105
+ info "Committing..."
106
+ git add -A
107
+ git commit -m "chore: release v$NEW_VERSION"
108
+ git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
109
+ ok "Tagged v$NEW_VERSION"
110
+
111
+ # ─── Push ────────────────────────────────────────────────────────
112
+ info "Pushing to origin..."
113
+ git push origin "$CURRENT_BRANCH"
114
+ git push origin "v$NEW_VERSION"
115
+ ok "Pushed to origin"
116
+
117
+ echo ""
118
+ echo -e "${GREEN} ✅ Release v$NEW_VERSION complete!${RESET}"
119
+ echo ""
120
+ echo -e " ${BOLD}What happens next:${RESET}"
121
+ echo -e " 1. GitHub Actions will run CI tests"
122
+ echo -e " 2. On tag push, npm publish runs automatically"
123
+ echo -e " 3. GitHub Release is created with release notes"
124
+ echo ""
125
+ echo -e " ${BOLD}Monitor:${RESET} https://github.com/todyle/codymaster/actions"
126
+ echo ""
@@ -0,0 +1,88 @@
1
+ #!/bin/bash
2
+ # update-changelog.sh — Auto-update CHANGELOG.md from git commits
3
+ #
4
+ # Usage:
5
+ # bash scripts/update-changelog.sh # Update CHANGELOG.md
6
+ # bash scripts/update-changelog.sh --dry-run # Preview without writing
7
+ #
8
+ # Follows conventional commits format:
9
+ # feat: → 🚀 Features
10
+ # fix: → 🐛 Bug Fixes
11
+ # security: → 🔒 Security
12
+ # improve/refactor/perf: → 🚀 Improvements
13
+
14
+ set -e
15
+
16
+ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
17
+ CHANGELOG="$REPO_ROOT/CHANGELOG.md"
18
+ DRY_RUN=false
19
+
20
+ if [[ "$1" == "--dry-run" ]]; then
21
+ DRY_RUN=true
22
+ fi
23
+
24
+ # Get last tag
25
+ LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
26
+
27
+ # Get commits since last tag
28
+ if [ -z "$LAST_TAG" ]; then
29
+ COMMITS=$(git log --oneline -20 --no-merges)
30
+ else
31
+ COMMITS=$(git log --oneline "$LAST_TAG"..HEAD --no-merges)
32
+ fi
33
+
34
+ if [ -z "$COMMITS" ]; then
35
+ echo "No commits found since last tag."
36
+ exit 0
37
+ fi
38
+
39
+ # Categorize commits
40
+ FEATURES=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ feat:" | sed 's/^[a-f0-9]* /- /' || true)
41
+ FIXES=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ fix:" | sed 's/^[a-f0-9]* /- /' || true)
42
+ SECURITY=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ (security|sec):" | sed 's/^[a-f0-9]* /- /' || true)
43
+ IMPROVEMENTS=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ (improve|refactor|perf):" | sed 's/^[a-f0-9]* /- /' || true)
44
+ OTHER=$(echo "$COMMITS" | grep -ivE "^[a-f0-9]+ (feat|fix|security|sec|improve|refactor|perf):" | sed 's/^[a-f0-9]* /- /' || true)
45
+
46
+ # Generate changelog entry
47
+ DATE=$(date +%Y-%m-%d)
48
+ VERSION=$(node -p "require('$REPO_ROOT/package.json').version" 2>/dev/null || echo "unreleased")
49
+
50
+ ENTRY="## [$VERSION] - $DATE\n\n"
51
+
52
+ if [ -n "$FEATURES" ]; then
53
+ ENTRY+="### 🚀 Features\n$FEATURES\n\n"
54
+ fi
55
+
56
+ if [ -n "$FIXES" ]; then
57
+ ENTRY+="### 🐛 Bug Fixes\n$FIXES\n\n"
58
+ fi
59
+
60
+ if [ -n "$SECURITY" ]; then
61
+ ENTRY+="### 🔒 Security\n$SECURITY\n\n"
62
+ fi
63
+
64
+ if [ -n "$IMPROVEMENTS" ]; then
65
+ ENTRY+="### 🚀 Improvements\n$IMPROVEMENTS\n\n"
66
+ fi
67
+
68
+ if [ -n "$OTHER" ]; then
69
+ ENTRY+="### 📦 Other\n$OTHER\n\n"
70
+ fi
71
+
72
+ if [ "$DRY_RUN" = true ]; then
73
+ echo "=== DRY RUN — would add to CHANGELOG.md ==="
74
+ echo -e "$ENTRY"
75
+ exit 0
76
+ fi
77
+
78
+ # Prepend to CHANGELOG.md
79
+ if [ -f "$CHANGELOG" ]; then
80
+ TEMP=$(mktemp)
81
+ echo -e "$ENTRY" > "$TEMP"
82
+ cat "$CHANGELOG" >> "$TEMP"
83
+ mv "$TEMP" "$CHANGELOG"
84
+ else
85
+ echo -e "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nCategories: 🚀 **Improvements** | 🐛 **Bug Fixes** | 🔒 **Security**\n\n---\n\n$ENTRY" > "$CHANGELOG"
86
+ fi
87
+
88
+ echo "✅ CHANGELOG.md updated (version: $VERSION)"