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,342 +0,0 @@
1
- # Trigger System
2
-
3
- > Khi nào hiện bottom sheet? Trigger system quyết định.
4
- > Hỗ trợ: scroll, time, exit-intent, click, return-visitor, interaction.
5
-
6
- ---
7
-
8
- ## 🎯 Trigger Types
9
-
10
- | Type | Description | Best For |
11
- |------|-------------|----------|
12
- | `scroll` | User scrolls past X% of page | Service pages, blog content |
13
- | `time` | X seconds after page load | Homepage, landing pages |
14
- | `exit` | Mouse moves toward browser chrome (desktop) | Lead capture, promo |
15
- | `click` | User clicks specific element | Manual CTA buttons |
16
- | `return` | Returning visitor (cookie-based) | Re-engagement, loyalty |
17
- | `interaction` | User completes N interactions | Surveys after using tool |
18
- | `dual` | Time + Scroll combined (both must fire) | Audio CRO, booking nudge |
19
-
20
- ---
21
-
22
- ## ⚙️ TriggerManager Architecture
23
-
24
- ```javascript
25
- class TriggerManager {
26
- constructor(config) {
27
- this.config = config;
28
- this.triggered = false;
29
- this.listeners = [];
30
- }
31
-
32
- init() {
33
- if (this.isDismissed()) return;
34
- if (this.respectsReducedMotion()) return;
35
-
36
- const type = this.config.trigger.type;
37
-
38
- switch (type) {
39
- case 'scroll': this.initScroll(); break;
40
- case 'time': this.initTime(); break;
41
- case 'exit': this.initExitIntent(); break;
42
- case 'click': this.initClick(); break;
43
- case 'return': this.initReturnVisitor(); break;
44
- case 'interaction': this.initInteraction(); break;
45
- case 'dual': this.initDual(); break;
46
- }
47
- }
48
-
49
- fire() {
50
- if (this.triggered) return;
51
- this.triggered = true;
52
- this.cleanup();
53
- if (typeof this.config.onTrigger === 'function') {
54
- this.config.onTrigger();
55
- }
56
- }
57
-
58
- cleanup() {
59
- this.listeners.forEach(({ el, event, fn }) => el.removeEventListener(event, fn));
60
- this.listeners = [];
61
- }
62
-
63
- destroy() {
64
- this.cleanup();
65
- this.triggered = true;
66
- }
67
- }
68
- ```
69
-
70
- ---
71
-
72
- ## 📜 Scroll Trigger
73
-
74
- ```javascript
75
- initScroll() {
76
- const threshold = this.config.trigger.value || 0.3; // 30% default
77
- const delay = this.config.trigger.delay || 0;
78
-
79
- const onScroll = () => {
80
- const scrollPct = window.scrollY /
81
- (document.documentElement.scrollHeight - window.innerHeight);
82
-
83
- if (scrollPct >= threshold) {
84
- if (delay > 0) {
85
- setTimeout(() => this.fire(), delay);
86
- } else {
87
- this.fire();
88
- }
89
- }
90
- };
91
-
92
- window.addEventListener('scroll', onScroll, { passive: true });
93
- this.listeners.push({ el: window, event: 'scroll', fn: onScroll });
94
-
95
- // Check immediately (user may already be scrolled)
96
- onScroll();
97
- }
98
- ```
99
-
100
- **Recommended thresholds:**
101
-
102
- | Page Type | Scroll % | Rationale |
103
- |-----------|----------|-----------|
104
- | Homepage | 30% | After hero + intro |
105
- | Service page | 25% | After service description |
106
- | Blog/article | 40% | After first section |
107
- | Product page | 20% | After product image |
108
-
109
- ---
110
-
111
- ## ⏱️ Time Trigger
112
-
113
- ```javascript
114
- initTime() {
115
- const delay = this.config.trigger.value || 15000; // 15s default
116
-
117
- const timer = setTimeout(() => this.fire(), delay);
118
-
119
- // Store for cleanup
120
- this._timer = timer;
121
- }
122
-
123
- // Override cleanup to clear timer
124
- cleanup() {
125
- super.cleanup();
126
- if (this._timer) clearTimeout(this._timer);
127
- }
128
- ```
129
-
130
- **Recommended delays:**
131
-
132
- | Page Type | Delay | Rationale |
133
- |-----------|-------|-----------|
134
- | Homepage | 20-25s | Let user explore first |
135
- | Landing page | 10-15s | Faster engagement needed |
136
- | Service page | 15-20s | After reading key info |
137
- | Blog | 25-30s | Don't interrupt reading |
138
-
139
- ---
140
-
141
- ## 🚪 Exit Intent Trigger (Desktop Only)
142
-
143
- ```javascript
144
- initExitIntent() {
145
- // Only works on desktop (mouse-based)
146
- if ('ontouchstart' in window) return;
147
-
148
- const onMouseLeave = (e) => {
149
- // Mouse moved above viewport (toward browser chrome)
150
- if (e.clientY <= 0) {
151
- this.fire();
152
- }
153
- };
154
-
155
- document.addEventListener('mouseleave', onMouseLeave);
156
- this.listeners.push({ el: document, event: 'mouseleave', fn: onMouseLeave });
157
- }
158
- ```
159
-
160
- **Mobile alternative:** Use `time` or `scroll` trigger instead. Exit intent doesn't exist on touch devices.
161
-
162
- **Enhancement — debounce:**
163
-
164
- ```javascript
165
- // Prevent rapid-fire on mouse-near-top
166
- let exitTimeout;
167
- const onMouseLeave = (e) => {
168
- if (e.clientY <= 0) {
169
- clearTimeout(exitTimeout);
170
- exitTimeout = setTimeout(() => this.fire(), 300);
171
- }
172
- };
173
- ```
174
-
175
- ---
176
-
177
- ## 🖱️ Click Trigger
178
-
179
- ```javascript
180
- initClick() {
181
- const selector = this.config.trigger.value; // CSS selector
182
-
183
- const elements = document.querySelectorAll(selector);
184
- elements.forEach(el => {
185
- const onClick = (e) => {
186
- e.preventDefault();
187
- this.fire();
188
- };
189
- el.addEventListener('click', onClick);
190
- this.listeners.push({ el, event: 'click', fn: onClick });
191
- });
192
- }
193
- ```
194
-
195
- **Use case:** Manual CTA buttons that open bottom sheets.
196
-
197
- ```html
198
- <button data-trigger="booking-sheet">📅 Đặt Lịch</button>
199
- ```
200
-
201
- ```javascript
202
- new TriggerManager({
203
- trigger: { type: 'click', value: '[data-trigger="booking-sheet"]' },
204
- onTrigger: () => bookingSheet.show()
205
- });
206
- ```
207
-
208
- ---
209
-
210
- ## 🔄 Return Visitor Trigger
211
-
212
- ```javascript
213
- initReturnVisitor() {
214
- const VISIT_KEY = 'eng_visit_count';
215
- const minVisits = this.config.trigger.value || 2; // minimum visits to trigger
216
-
217
- try {
218
- let visits = parseInt(localStorage.getItem(VISIT_KEY) || '0');
219
- visits++;
220
- localStorage.setItem(VISIT_KEY, visits.toString());
221
-
222
- if (visits >= minVisits) {
223
- // Add time delay so page loads first
224
- setTimeout(() => this.fire(), this.config.trigger.delay || 3000);
225
- }
226
- } catch { /* localStorage blocked */ }
227
- }
228
- ```
229
-
230
- ---
231
-
232
- ## 🎮 Interaction Trigger
233
-
234
- ```javascript
235
- initInteraction() {
236
- const { selector, minCount } = this.config.trigger.value;
237
- // e.g., { selector: '.checklist input[type=checkbox]', minCount: 3 }
238
-
239
- const elements = document.querySelectorAll(selector);
240
-
241
- const checkCount = () => {
242
- const interacted = document.querySelectorAll(selector + ':checked').length;
243
- if (interacted >= minCount) {
244
- this.fire();
245
- }
246
- };
247
-
248
- elements.forEach(el => {
249
- el.addEventListener('change', checkCount);
250
- this.listeners.push({ el, event: 'change', fn: checkCount });
251
- });
252
- }
253
- ```
254
-
255
- **Use case:** After user checks 3+ symptoms → show "Đặt lịch khám" sheet.
256
-
257
- ---
258
-
259
- ## 🔀 Dual Trigger (Time + Scroll)
260
-
261
- Both conditions must be met before firing:
262
-
263
- ```javascript
264
- initDual() {
265
- let timeReady = false;
266
- let scrollReady = false;
267
-
268
- const tryFire = () => {
269
- if (timeReady && scrollReady) this.fire();
270
- };
271
-
272
- // Time leg
273
- const delay = this.config.trigger.value?.time || 15000;
274
- setTimeout(() => { timeReady = true; tryFire(); }, delay);
275
-
276
- // Scroll leg
277
- const threshold = this.config.trigger.value?.scroll || 0.25;
278
- const onScroll = () => {
279
- const pct = window.scrollY /
280
- (document.documentElement.scrollHeight - window.innerHeight);
281
- if (pct >= threshold) {
282
- scrollReady = true;
283
- window.removeEventListener('scroll', onScroll);
284
- tryFire();
285
- }
286
- };
287
- window.addEventListener('scroll', onScroll, { passive: true });
288
- this.listeners.push({ el: window, event: 'scroll', fn: onScroll });
289
- onScroll();
290
- }
291
- ```
292
-
293
- ---
294
-
295
- ## 💾 Session Management
296
-
297
- ```javascript
298
- // Check if user dismissed this engagement
299
- isDismissed() {
300
- const key = this.config.session?.dismissKey || 'eng_dismissed';
301
- const storage = this.config.session?.storage === 'localStorage'
302
- ? localStorage : sessionStorage;
303
- try { return storage.getItem(key) === '1'; }
304
- catch { return false; }
305
- }
306
-
307
- // Mark as dismissed
308
- setDismissed() {
309
- const key = this.config.session?.dismissKey || 'eng_dismissed';
310
- const storage = this.config.session?.storage === 'localStorage'
311
- ? localStorage : sessionStorage;
312
- try { storage.setItem(key, '1'); }
313
- catch { /* noop */ }
314
- }
315
-
316
- // Respect prefers-reduced-motion
317
- respectsReducedMotion() {
318
- return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
319
- }
320
- ```
321
-
322
- ### Storage Strategy
323
-
324
- | Behavior | Storage | Result |
325
- |----------|---------|--------|
326
- | Show once per tab session | `sessionStorage` | Resets on browser close |
327
- | Show once per device forever | `localStorage` | Persistent |
328
- | Show once per day | `localStorage` + timestamp check | Custom expiry |
329
-
330
- ---
331
-
332
- ## ❌ Anti-Patterns
333
-
334
- | ❌ Don't | ✅ Do |
335
- |----------|------|
336
- | Trigger popup on page load without delay | Minimum 10s or 20% scroll |
337
- | Use exit-intent on mobile | Fallback to scroll/time trigger |
338
- | Trigger on checkout/payment pages | Exclude conversion-critical pages |
339
- | Trigger multiple sheets at once | Queue or prioritize |
340
- | Ignore `prefers-reduced-motion` | Skip trigger for such users |
341
- | Trigger every page visit | Respect session dismiss state |
342
- | Use `setInterval` for scroll check | Use passive scroll event listener |
@@ -1,98 +0,0 @@
1
- ---
2
- name: cm-jtbd
3
- description: "Customer discovery framework using Jobs-To-Be-Done theory — uncover the functional, social, and emotional jobs customers hire products to do. Produces JTBD canvases with job statements, outcome metrics, and competing solutions. Use alongside cm-brainstorm-idea for evidence-based product decisions."
4
- ---
5
-
6
- # Jobs-To-Be-Done — Customer Discovery Framework
7
-
8
- > **Understand the job, not the customer.**
9
- > People don't buy products — they hire them to get a job done.
10
-
11
- ## When to Use
12
-
13
- - Before designing a new feature or product
14
- - When existing features aren't converting or being used
15
- - Alongside `cm-brainstorm-idea` for deep customer context
16
- - User mentions: "customer discovery", "JTBD", "what do customers want", "product-market fit", "why are users churning"
17
-
18
- ## The JTBD Framework
19
-
20
- ### Job Statement Formula
21
-
22
- ```
23
- When [SITUATION], I want to [MOTIVATION], so I can [EXPECTED OUTCOME]
24
- ```
25
-
26
- ### Three Job Dimensions
27
-
28
- | Dimension | Definition | Example |
29
- |-----------|-----------|---------|
30
- | **Functional** | The core task to accomplish | "Get from A to B quickly" |
31
- | **Social** | How the person wants to be perceived | "Be seen as a reliable professional" |
32
- | **Emotional** | How the person wants to feel | "Feel confident in my decision" |
33
-
34
- ## Process
35
-
36
- ### Phase 1: Job Discovery (Interviews)
37
-
38
- 1. Recruit 5-8 recent customers (ideally within 90 days of purchase)
39
- 2. Use the Switch Interview technique — ask about the moment they decided to switch/buy
40
- 3. Key questions:
41
- - "Walk me through the day you decided to [buy/switch/start using X]"
42
- - "What were you doing before that solution existed?"
43
- - "What was the first thing you tried? Why didn't that work?"
44
- - "What almost stopped you from switching?"
45
- 4. Record patterns: triggers → anxiety → progress → outcomes
46
-
47
- ### Phase 2: JTBD Canvas
48
-
49
- For each major job discovered, complete the canvas:
50
-
51
- ```
52
- JOB STATEMENT:
53
- When [situation], I want to [motivation], so I can [outcome]
54
-
55
- FUNCTIONAL DIMENSION: [core task]
56
- SOCIAL DIMENSION: [perception goal]
57
- EMOTIONAL DIMENSION: [feeling goal]
58
-
59
- FORCES PUSHING TO HIRE:
60
- (+) Push: [what makes them switch from current solution]
61
- (+) Pull: [what attracts them to new solution]
62
-
63
- FORCES RESISTING HIRE:
64
- (-) Anxiety: [fears about new solution]
65
- (-) Habit: [attachment to old solution]
66
-
67
- COMPETING SOLUTIONS CURRENTLY HIRED:
68
- 1. [direct competitor or workaround]
69
- 2. [indirect solution]
70
- 3. [do-nothing option]
71
-
72
- OUTCOME METRICS (how customer measures success):
73
- - Speed: [e.g., "get answer in <5 minutes"]
74
- - Accuracy: [e.g., "zero errors in the output"]
75
- - Effort: [e.g., "no manual steps required"]
76
- ```
77
-
78
- ### Phase 3: Opportunity Scoring
79
-
80
- Rate each outcome metric:
81
- - **Importance** (1-10): How important is this outcome to the customer?
82
- - **Satisfaction** (1-10): How satisfied are they with current solutions?
83
- - **Opportunity score** = Importance + max(Importance − Satisfaction, 0)
84
-
85
- Scores ≥ 15 = underserved outcomes → highest priority to address.
86
-
87
- ## Output
88
-
89
- Save JTBD canvas to `docs/jtbd/jtbd-canvas-[date].md`.
90
-
91
- ## Integration
92
-
93
- | Skill | Relationship |
94
- |-------|-------------|
95
- | `cm-brainstorm-idea` | UPSTREAM: JTBD feeds into strategic analysis |
96
- | `cm-planning` | DOWNSTREAM: Validated jobs inform feature plans |
97
- | `cm-cro-methodology` | COMPLEMENT: JTBD objections → CRO objection handling |
98
- | `cm-dockit` | OUTPUT: JTBD canvases are a document type in DocKit |
@@ -1,156 +0,0 @@
1
- ---
2
- name: cm-notebooklm
3
- description: "Sync high-value dev knowledge (skills, decisions, lessons) into Google NotebookLM for cloud recall, podcasts, and flashcards. Pairs with Dockit/deep-search. Use for NotebookLM, nlm, knowledge base, skill sync, or cross-machine AI memory."
4
- ---
5
-
6
- # Goal
7
-
8
- Cloud brain / soul cho AI — lưu trữ kiến thức **giá trị nhất**, đồng bộ qua
9
- nhiều máy tính. `brain.md` = compiled source of truth, upload 1 lần thay vì 50.
10
-
11
- # How It Works
12
-
13
- ```
14
- Skills + Lessons + Experiences
15
- ↓ compile
16
- ~/.codymaster/brain.md (local file = backup)
17
- ↓ upload (1 API call)
18
- NotebookLM (cloud = cross-machine sync)
19
- ```
20
-
21
- All automation via `scripts/brain-sync.sh` — AI chỉ cần gọi script.
22
-
23
- # Instructions
24
-
25
- ## The Dual-Brain Architecture
26
-
27
- CodyMaster uses a **Dual-Brain** approach to scale memory across multiple projects without context collapse:
28
-
29
- 1. **Master Brain (`codymaster`)**: Global brain storing Meta-Learnings, proven Architecture Decisions, and universal patterns. Evolved via the "Rule of 3" (knowledge graduation).
30
- 2. **Project Brain (Isolated)**: Optional local brain created per project to hold internal PRDs, APIs, and local code context from `./docs`.
31
-
32
- | Level | Goal | Query Command |
33
- |-------|------|---------------|
34
- | **Master** | Tìm pattern chung | `nlm notebook query codymaster "..."` |
35
- | **Project** | Tìm context domain | `nlm notebook query $(cat .cm/notebook_id) "..."` |
36
-
37
- > 🤖 **AI Rule:** Tự đưa quyết định khi hỏi: Hỏi `codymaster` cho các giải pháp mang tính hệ thống chung. Hỏi qua `.cm/notebook_id` cho các business logic đặc thù dự án đang làm.
38
-
39
- ## Master Brain Setup (Global)
40
-
41
- ```bash
42
- # 1. Install CLI
43
- uv tool install notebooklm-mcp-cli
44
-
45
- # 2. Setup Master Brain
46
- bash ~/.gemini/antigravity/skills/cm-notebooklm/scripts/brain-sync.sh init
47
- ```
48
-
49
- ## Project Brain Setup (Local - Optional)
50
-
51
- Nếu dự án đủ lớn và nhiều doc:
52
- ```bash
53
- # Tạo Project Brain riêng cho thư mục hiện tại
54
- bash ~/.gemini/antigravity/skills/cm-notebooklm/scripts/brain-sync.sh init-project
55
- ```
56
-
57
- ## Daily Usage
58
-
59
- ```bash
60
- SCRIPT=~/.gemini/antigravity/skills/cm-notebooklm/scripts/brain-sync.sh
61
-
62
- # Add a lesson learned
63
- bash $SCRIPT lesson "Tên bài học"
64
- # → Edit ~/.codymaster/lessons.md → fill in details
65
-
66
- # Add coding experience
67
- bash $SCRIPT experience "Tên pattern"
68
- # → Edit ~/.codymaster/experiences.md → fill in details
69
-
70
- # Sync to Master Brain (Thêm rule of 3)
71
- bash $SCRIPT sync
72
-
73
- # Sync to Project Brain (Up tài liệu local docs/)
74
- bash $SCRIPT sync-project
75
-
76
- # Check status
77
- bash $SCRIPT status
78
-
79
- # Query
80
- nlm notebook query codymaster "your question"
81
- ```
82
-
83
- ## Auto-Sync Triggers
84
-
85
- AI detect và **hỏi user** (không tự động):
86
-
87
- | Trigger | Prompt |
88
- |---------|--------|
89
- | Skill mới tạo | "Sync skill mới vào brain?" → `bash $SCRIPT sync` |
90
- | Bug fixed / post-mortem | "Lưu bài học?" → `bash $SCRIPT lesson "..."` |
91
- | Architecture changed | "Update brain?" → `bash $SCRIPT sync` |
92
- | User nói "sync/update" | → `bash $SCRIPT sync` |
93
-
94
- ## Cross-Machine (Máy Mới)
95
-
96
- ```bash
97
- uv tool install notebooklm-mcp-cli
98
- nlm login
99
- nlm notebook list # CodyMaster Brain already there
100
- nlm alias set codymaster <id>
101
- # Done! Query ngay: nlm notebook query codymaster "..."
102
- ```
103
-
104
- ## Content Generation
105
-
106
- ```bash
107
- nlm audio create codymaster --format deep_dive --confirm # Podcast
108
- nlm report create codymaster --format "Study Guide" --confirm
109
- nlm flashcards create codymaster --difficulty medium --confirm
110
- nlm studio status codymaster
111
- ```
112
-
113
- # What Gets Indexed
114
-
115
- ```
116
- ✅ HIGH-VALUE (auto-compiled into brain.md):
117
- ├── Skill Index (names + descriptions — NOT full SKILL.md)
118
- ├── Lessons Learned (~/.codymaster/lessons.md)
119
- ├── Coding Experiences (~/.codymaster/experiences.md)
120
- └── AGENTS.md (project identity)
121
-
122
- ❌ NOT INDEXED (use qmd/cm-deep-search instead):
123
- ├── Full SKILL.md files (too many, hard to maintain)
124
- ├── Source code, tests, configs
125
- └── Duplicated content
126
- ```
127
-
128
- # Memory Architecture
129
-
130
- ```
131
- Session → variables → temporary
132
- Working → CONTINUITY.md → ~500 words/turn
133
- Local → qmd → BM25+vector, offline, stable
134
- Cloud → NotebookLM → AI brain, cross-machine, podcast
135
- ```
136
-
137
- # Integration
138
-
139
- | Skill | Role |
140
- |-------|------|
141
- | `cm-deep-search` | Local search complement (code) |
142
- | `cm-dockit` | Generate docs → select high-value → feed to brain |
143
- | `cm-continuity` | Session memory, brain = long-term |
144
- | `skill-creator-ultra` | TRIGGER: new skill → prompt sync |
145
- | `cm-debugging` | TRIGGER: bug fixed → prompt lesson |
146
-
147
- # Constraints
148
-
149
- - 🔌 `nlm` CLI = **third-party** (jacob-bd). May break. Fallback: cm-deep-search.
150
- - 🧠 **Selective only** — quality > quantity. Don't dump everything.
151
- - 🔐 NO secrets in NotebookLM — cloud service.
152
- - ❌ NO delete without user confirmation.
153
- - 🤖 NO `nlm chat start` — use `nlm notebook query` only.
154
- - 🔄 Auto-sync = **ask first**, never silent upload.
155
-
156
- <!-- Generated by Skill Creator Ultra v1.0 -->
@@ -1,94 +0,0 @@
1
- # NLM CLI Command Reference (for cm-notebooklm)
2
-
3
- Essential commands for knowledge ingestion workflows.
4
-
5
- ## Authentication
6
-
7
- ```bash
8
- nlm login # Launch Chrome, extract cookies
9
- nlm login --check # Validate current session
10
- nlm login --profile work # Named profile for multiple accounts
11
- nlm auth status # Check if authenticated
12
- nlm auth list # List all profiles
13
- ```
14
-
15
- Session lifetime: ~20 minutes. Re-authenticate when commands fail.
16
-
17
- ## Notebook Management
18
-
19
- ```bash
20
- nlm notebook list # List all notebooks
21
- nlm notebook list --json # JSON output
22
- nlm notebook list --quiet # IDs only
23
- nlm notebook create "Title" # Create → returns ID
24
- nlm notebook get <id> # Notebook details
25
- nlm notebook describe <id> # AI-generated summary
26
- nlm notebook query <id> "question" # One-shot Q&A
27
- nlm notebook rename <id> "New Title" # Rename
28
- nlm notebook delete <id> --confirm # ⚠️ PERMANENT
29
- ```
30
-
31
- ## Source Management
32
-
33
- ```bash
34
- # Add sources
35
- nlm source add <nb-id> --url "https://..." # Web page
36
- nlm source add <nb-id> --url "https://youtube.com/..." # YouTube
37
- nlm source add <nb-id> --text "content" --title "Title" # Pasted text
38
- nlm source add <nb-id> --drive <doc-id> # Drive doc
39
- nlm source add <nb-id> --drive <doc-id> --type slides # Explicit type
40
-
41
- # View sources
42
- nlm source list <nb-id> # Table of sources
43
- nlm source list <nb-id> --drive # Drive sources + freshness
44
- nlm source describe <source-id> # AI summary
45
- nlm source content <source-id> # Raw text
46
-
47
- # Sync & delete
48
- nlm source stale <nb-id> # Outdated Drive sources
49
- nlm source sync <nb-id> --confirm # Sync all stale
50
- nlm source delete <source-id> --confirm
51
- ```
52
-
53
- ## Content Generation
54
-
55
- All require `--confirm` or `-y`:
56
-
57
- ```bash
58
- nlm audio create <id> --confirm # Podcast
59
- nlm audio create <id> --format deep_dive --confirm # Deep dive podcast
60
- nlm report create <id> --confirm # Briefing doc
61
- nlm report create <id> --format "Study Guide" --confirm # Study guide
62
- nlm quiz create <id> --count 10 --difficulty 3 --confirm # Quiz
63
- nlm flashcards create <id> --difficulty medium --confirm # Flashcards
64
- nlm mindmap create <id> --confirm # Mind map
65
- nlm slides create <id> --confirm # Slides
66
- nlm studio status <id> # Check generation
67
- ```
68
-
69
- ## Aliases
70
-
71
- ```bash
72
- nlm alias set myproject <uuid> # Create alias
73
- nlm alias get myproject # Resolve to UUID
74
- nlm alias list # List all aliases
75
- nlm alias delete myproject # Remove alias
76
- ```
77
-
78
- ## Research
79
-
80
- ```bash
81
- nlm research start "query" --notebook-id <id> # Fast (~30s)
82
- nlm research start "query" --notebook-id <id> --mode deep # Deep (~5min)
83
- nlm research status <id> # Check progress
84
- nlm research import <id> <task-id> # Import sources
85
- ```
86
-
87
- ## Rate Limits
88
-
89
- | Operation | Wait time |
90
- |-----------|-----------|
91
- | Source add/delete | 2-3 seconds |
92
- | Content generation | 5 seconds |
93
- | Research | 2 seconds |
94
- | Query | 2 seconds |