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,60 +0,0 @@
1
- # NotebookLM Workflows
2
-
3
- All workflows use `brain-sync.sh`. Set shortcut:
4
-
5
- ```bash
6
- SCRIPT=~/.gemini/antigravity/skills/cm-notebooklm/scripts/brain-sync.sh
7
- ```
8
-
9
- ## 1. Bootstrap (First Time)
10
-
11
- ```bash
12
- uv tool install notebooklm-mcp-cli # Install CLI
13
- bash $SCRIPT init # Login → create → compile → upload
14
- ```
15
-
16
- ## 2. Add Lesson Learned
17
-
18
- ```bash
19
- bash $SCRIPT lesson "Never hardcode secrets"
20
- # Edit ~/.codymaster/lessons.md (fill in details)
21
- bash $SCRIPT sync # Compile + upload
22
- ```
23
-
24
- ## 3. Add Coding Experience
25
-
26
- ```bash
27
- bash $SCRIPT experience "Parallel tool calls race condition"
28
- # Edit ~/.codymaster/experiences.md (fill in details)
29
- bash $SCRIPT sync
30
- ```
31
-
32
- ## 4. Sync After Changes
33
-
34
- ```bash
35
- bash $SCRIPT sync # Compile → hash check → upload if changed → confirm
36
- ```
37
-
38
- ## 5. Cross-Machine Setup
39
-
40
- ```bash
41
- uv tool install notebooklm-mcp-cli
42
- nlm login
43
- nlm alias set codymaster $(nlm notebook list --quiet | head -1)
44
- ```
45
-
46
- ## 6. Query & Generate
47
-
48
- ```bash
49
- nlm notebook query codymaster "Which skill handles deployment?"
50
- nlm audio create codymaster --format deep_dive --confirm
51
- nlm flashcards create codymaster --difficulty medium --confirm
52
- ```
53
-
54
- ## 7. Project Notebook
55
-
56
- ```bash
57
- nlm notebook create "Project: MyApp"
58
- nlm alias set myapp <id>
59
- nlm source add myapp --text "$(cat docs/architecture.md)" --title "Architecture"
60
- ```
@@ -1,106 +0,0 @@
1
- # Knowledge Source Templates
2
-
3
- Templates for structuring content before ingesting into NotebookLM.
4
-
5
- ## Skill Source Template
6
-
7
- ```markdown
8
- # Skill: {name}
9
-
10
- **Description:** {description}
11
- **Triggers:** {trigger words}
12
- **Category:** {planning/execution/verification/utility}
13
-
14
- ## When to Use
15
- {when_to_use}
16
-
17
- ## Key Instructions
18
- {core steps}
19
-
20
- ## Integration
21
- {related skills}
22
- ```
23
-
24
- ## Lesson Learned Template
25
-
26
- ```markdown
27
- ## Lesson: {title}
28
- **Date:** {YYYY-MM-DD}
29
- **Context:** {project or situation}
30
- **Problem:** {what went wrong or what was discovered}
31
- **Solution:** {how it was resolved}
32
- **Takeaway:** {the key learning for future reference}
33
- **Related Skills:** {cm-skill-1, cm-skill-2}
34
- **Severity:** {critical / important / nice-to-know}
35
- ```
36
-
37
- ## Project Knowledge Template
38
-
39
- ```markdown
40
- # Project: {name}
41
-
42
- **Stack:** {technologies}
43
- **Architecture:** {pattern}
44
- **Status:** {active / maintenance / archived}
45
-
46
- ## Key Decisions
47
- - {decision 1}: {rationale}
48
- - {decision 2}: {rationale}
49
-
50
- ## Known Issues
51
- - {issue 1}: {status}
52
-
53
- ## Contacts
54
- - {role}: {person}
55
- ```
56
-
57
- ## Decision Record Template
58
-
59
- ```markdown
60
- ## Decision: {title}
61
- **Date:** {YYYY-MM-DD}
62
- **Status:** {proposed / accepted / deprecated}
63
- **Context:** {why this decision was needed}
64
- **Options Considered:**
65
- 1. {option A} — {pros/cons}
66
- 2. {option B} — {pros/cons}
67
- **Decision:** {chosen option}
68
- **Consequences:** {implications}
69
- ```
70
-
71
- ## Bug Post-Mortem Template
72
-
73
- ```markdown
74
- ## Post-Mortem: {incident title}
75
- **Date:** {YYYY-MM-DD}
76
- **Severity:** {P0 / P1 / P2 / P3}
77
- **Duration:** {time to resolve}
78
- **Root Cause:** {what actually caused it}
79
- **Detection:** {how was it discovered}
80
- **Resolution:** {what fixed it}
81
- **Prevention:** {what will prevent recurrence}
82
- **Lessons:**
83
- - {lesson 1}
84
- - {lesson 2}
85
- ```
86
-
87
- ## Bundle Template (for grouping related skills)
88
-
89
- When notebook approaches 50-source limit, bundle related content:
90
-
91
- ```markdown
92
- # Bundle: {category name}
93
- ## Skills in this bundle: {count}
94
-
95
- ---
96
-
97
- ### Skill: {name-1}
98
- {full SKILL.md content}
99
-
100
- ---
101
-
102
- ### Skill: {name-2}
103
- {full SKILL.md content}
104
-
105
- ---
106
- ```
@@ -1,453 +0,0 @@
1
- #!/bin/bash
2
- # brain-sync.sh — CodyMaster NotebookLM Brain Sync Engine
3
- # Compile → Hash → Upload → Verify
4
- #
5
- # Usage:
6
- # bash brain-sync.sh compile # Compile brain.md locally
7
- # bash brain-sync.sh upload # Upload brain.md to NotebookLM
8
- # bash brain-sync.sh sync # Compile + upload if changed
9
- # bash brain-sync.sh lesson "title" # Add lesson interactively
10
- # bash brain-sync.sh status # Show brain status
11
- # bash brain-sync.sh init # First-time setup
12
-
13
- set -euo pipefail
14
-
15
- # --- Config ---
16
- BRAIN_DIR="${HOME}/.codymaster"
17
- BRAIN_FILE="${BRAIN_DIR}/brain.md"
18
- LESSONS_FILE="${BRAIN_DIR}/lessons.md"
19
- EXPERIENCES_FILE="${BRAIN_DIR}/experiences.md"
20
- HASH_FILE="${BRAIN_DIR}/.brain-hash"
21
- SKILLS_DIR="${HOME}/.gemini/antigravity/skills"
22
- NOTEBOOK_ALIAS="codymaster"
23
- GRADUATED_FILE="${BRAIN_DIR}/graduated_wisdom.md"
24
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
- GRADUATE_SCRIPT="${SCRIPT_DIR}/graduate_wisdom.py"
26
-
27
- # --- Helpers ---
28
- info() { echo "🧠 $*"; }
29
- warn() { echo "⚠️ $*"; }
30
- error() { echo "❌ $*" >&2; exit 1; }
31
-
32
- ensure_dir() {
33
- mkdir -p "$BRAIN_DIR"
34
- }
35
-
36
- check_nlm() {
37
- command -v nlm &>/dev/null || error "nlm not installed. Run: uv tool install notebooklm-mcp-cli"
38
- }
39
-
40
- check_auth() {
41
- nlm auth status &>/dev/null || {
42
- warn "Session expired. Running nlm login..."
43
- nlm login
44
- }
45
- }
46
-
47
- current_hash() {
48
- [ -f "$BRAIN_FILE" ] && md5 -q "$BRAIN_FILE" 2>/dev/null || echo "none"
49
- }
50
-
51
- saved_hash() {
52
- [ -f "$HASH_FILE" ] && cat "$HASH_FILE" || echo "none"
53
- }
54
-
55
- save_hash() {
56
- current_hash > "$HASH_FILE"
57
- }
58
-
59
- # --- Commands ---
60
-
61
- cmd_graduate() {
62
- info "Graduating proven wisdom from local .cm/ folder..."
63
- python3 "$GRADUATE_SCRIPT" || warn "Graduation script encountered an error."
64
- }
65
-
66
- cmd_compile() {
67
- ensure_dir
68
- info "Compiling brain.md..."
69
-
70
- cat > "$BRAIN_FILE" << 'HEADER'
71
- # CodyMaster Brain
72
- > Auto-compiled knowledge base. Do not edit directly.
73
- > Re-compile with: bash brain-sync.sh compile
74
-
75
- HEADER
76
-
77
- echo "Generated: $(date +%Y-%m-%d' '%H:%M)" >> "$BRAIN_FILE"
78
- echo "" >> "$BRAIN_FILE"
79
-
80
- # Section 1: Skill Index (names + descriptions only)
81
- echo "---" >> "$BRAIN_FILE"
82
- echo "# Skill Index" >> "$BRAIN_FILE"
83
- echo "" >> "$BRAIN_FILE"
84
-
85
- local count=0
86
- for skill_dir in "$SKILLS_DIR"/*/; do
87
- [ -d "$skill_dir" ] || continue
88
- local name=$(basename "$skill_dir")
89
- local file="$skill_dir/SKILL.md"
90
- [ -f "$file" ] || continue
91
-
92
- # Extract description from frontmatter
93
- local desc=$(awk '/^description:/{found=1; sub(/^description: */, ""); print; next} found && /^ /{print; next} found{exit}' "$file" | head -3)
94
- echo "## $name" >> "$BRAIN_FILE"
95
- echo "$desc" >> "$BRAIN_FILE"
96
- echo "" >> "$BRAIN_FILE"
97
- count=$((count + 1))
98
- done
99
- info " → $count skills indexed"
100
-
101
- # Section 2: Lessons Learned
102
- if [ -f "$LESSONS_FILE" ]; then
103
- echo "---" >> "$BRAIN_FILE"
104
- echo "# Lessons Learned" >> "$BRAIN_FILE"
105
- echo "" >> "$BRAIN_FILE"
106
- cat "$LESSONS_FILE" >> "$BRAIN_FILE"
107
- local lesson_count=$(grep -c "^## Lesson:" "$LESSONS_FILE" 2>/dev/null || echo 0)
108
- info " → $lesson_count lessons included"
109
- fi
110
-
111
- # Section 3: Coding Experiences
112
- if [ -f "$EXPERIENCES_FILE" ]; then
113
- echo "---" >> "$BRAIN_FILE"
114
- echo "# Coding Experiences" >> "$BRAIN_FILE"
115
- echo "" >> "$BRAIN_FILE"
116
- cat "$EXPERIENCES_FILE" >> "$BRAIN_FILE"
117
- local exp_count=$(grep -c "^## Experience:" "$EXPERIENCES_FILE" 2>/dev/null || echo 0)
118
- info " → $exp_count experiences included"
119
- fi
120
-
121
- # Section 3b: Graduated Project Wisdom
122
- if [ -f "$GRADUATED_FILE" ]; then
123
- echo "---" >> "$BRAIN_FILE"
124
- echo "# Graduated Project Wisdom" >> "$BRAIN_FILE"
125
- echo "" >> "$BRAIN_FILE"
126
- cat "$GRADUATED_FILE" >> "$BRAIN_FILE"
127
- local grad_count=$(grep -c "\*\*ID:\*\*" "$GRADUATED_FILE" 2>/dev/null || echo 0)
128
- info " → $grad_count graduated items included"
129
- fi
130
-
131
- # Section 4: Project identity (if exists)
132
- local agents_file="$SKILLS_DIR/AGENTS.md"
133
- if [ -f "$agents_file" ]; then
134
- echo "---" >> "$BRAIN_FILE"
135
- echo "# Project Identity" >> "$BRAIN_FILE"
136
- echo "" >> "$BRAIN_FILE"
137
- cat "$agents_file" >> "$BRAIN_FILE"
138
- fi
139
-
140
- local size=$(wc -c < "$BRAIN_FILE" | tr -d ' ')
141
- local lines=$(wc -l < "$BRAIN_FILE" | tr -d ' ')
142
- info "Compiled: $BRAIN_FILE ($lines lines, ${size} bytes)"
143
-
144
- # Check if changed
145
- if [ "$(current_hash)" = "$(saved_hash)" ]; then
146
- info "No changes since last upload."
147
- else
148
- info "Changes detected. Run 'brain-sync.sh upload' to sync to cloud."
149
- fi
150
- }
151
-
152
- cmd_upload() {
153
- check_nlm
154
- check_auth
155
-
156
- [ -f "$BRAIN_FILE" ] || error "brain.md not found. Run 'brain-sync.sh compile' first."
157
-
158
- # Check if changed
159
- if [ "$(current_hash)" = "$(saved_hash)" ]; then
160
- info "No changes. Skipping upload."
161
- return 0
162
- fi
163
-
164
- info "Uploading brain.md to NotebookLM..."
165
-
166
- # Check if source already exists (by title match)
167
- local existing=$(nlm source list "$NOTEBOOK_ALIAS" --quiet 2>/dev/null | head -1)
168
-
169
- if [ -n "$existing" ]; then
170
- # Delete old brain source and re-add (NotebookLM has no update API)
171
- info "Replacing existing brain source..."
172
- # We search by title to find the right source
173
- local source_id=$(nlm source list "$NOTEBOOK_ALIAS" --json 2>/dev/null | \
174
- python3 -c "import sys,json; sources=json.load(sys.stdin); [print(s['id']) for s in sources if 'CodyMaster Brain' in s.get('title','')]" 2>/dev/null | head -1)
175
- if [ -n "$source_id" ]; then
176
- nlm source delete "$source_id" --confirm 2>/dev/null || true
177
- sleep 2
178
- fi
179
- fi
180
-
181
- nlm source add "$NOTEBOOK_ALIAS" \
182
- --text "$(cat "$BRAIN_FILE")" \
183
- --title "CodyMaster Brain — Compiled Knowledge"
184
-
185
- save_hash
186
- info "Upload complete! Hash: $(current_hash)"
187
- }
188
-
189
- cmd_sync() {
190
- cmd_graduate
191
- cmd_compile
192
- if [ "$(current_hash)" != "$(saved_hash)" ]; then
193
- echo ""
194
- read -p "🔄 Changes detected. Upload to NotebookLM? [Y/n] " -n 1 -r
195
- echo ""
196
- if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
197
- cmd_upload
198
- else
199
- info "Skipped upload. brain.md saved locally."
200
- fi
201
- fi
202
- }
203
-
204
- cmd_lesson() {
205
- ensure_dir
206
- local title="${1:-}"
207
-
208
- if [ -z "$title" ]; then
209
- read -p "📝 Lesson title: " title
210
- fi
211
-
212
- [ -z "$title" ] && error "Title required."
213
-
214
- cat >> "$LESSONS_FILE" << EOF
215
-
216
- ## Lesson: $title
217
- **Date:** $(date +%Y-%m-%d)
218
- **Context:**
219
- **Problem:**
220
- **Root Cause:**
221
- **Solution:**
222
- **Prevention:**
223
- **Tags:**
224
- EOF
225
-
226
- info "Lesson template added to $LESSONS_FILE"
227
- info "Edit the file, then run 'brain-sync.sh sync' to upload."
228
- echo " → $LESSONS_FILE"
229
- }
230
-
231
- cmd_experience() {
232
- ensure_dir
233
- local title="${1:-}"
234
-
235
- if [ -z "$title" ]; then
236
- read -p "💡 Experience title: " title
237
- fi
238
-
239
- [ -z "$title" ] && error "Title required."
240
-
241
- cat >> "$EXPERIENCES_FILE" << EOF
242
-
243
- ## Experience: $title
244
- **Date:** $(date +%Y-%m-%d)
245
- **Stack:**
246
- **Pattern:**
247
- **When to Use:**
248
- **Pitfalls:**
249
- EOF
250
-
251
- info "Experience template added to $EXPERIENCES_FILE"
252
- info "Edit the file, then run 'brain-sync.sh sync' to upload."
253
- echo " → $EXPERIENCES_FILE"
254
- }
255
-
256
- cmd_status() {
257
- ensure_dir
258
- echo "🧠 CodyMaster Brain Status"
259
- echo "=========================="
260
-
261
- if [ -f "$BRAIN_FILE" ]; then
262
- local size=$(wc -c < "$BRAIN_FILE" | tr -d ' ')
263
- local lines=$(wc -l < "$BRAIN_FILE" | tr -d ' ')
264
- echo "📄 brain.md: $lines lines, $size bytes"
265
- echo "🔑 Local hash: $(current_hash)"
266
- echo "🔑 Synced hash: $(saved_hash)"
267
- if [ "$(current_hash)" = "$(saved_hash)" ]; then
268
- echo "✅ Status: In sync"
269
- else
270
- echo "🔄 Status: Changes pending"
271
- fi
272
- else
273
- echo "📄 brain.md: Not compiled yet"
274
- fi
275
-
276
- echo ""
277
- if [ -f "$LESSONS_FILE" ]; then
278
- local lc=$(grep -c "^## Lesson:" "$LESSONS_FILE" 2>/dev/null || echo 0)
279
- echo "📝 Lessons: $lc"
280
- else
281
- echo "📝 Lessons: 0"
282
- fi
283
-
284
- if [ -f "$EXPERIENCES_FILE" ]; then
285
- local ec=$(grep -c "^## Experience:" "$EXPERIENCES_FILE" 2>/dev/null || echo 0)
286
- echo "💡 Experiences: $ec"
287
- else
288
- echo "💡 Experiences: 0"
289
- fi
290
-
291
- echo ""
292
- local skill_count=$(find "$SKILLS_DIR" -maxdepth 2 -name "SKILL.md" 2>/dev/null | wc -l | tr -d ' ')
293
- echo "📦 Skills found: $skill_count"
294
-
295
- if [ -f "$GRADUATED_FILE" ]; then
296
- local gc=$(grep -c "\*\*ID:\*\*" "$GRADUATED_FILE" 2>/dev/null || echo 0)
297
- echo "🎓 Graduated: $gc items"
298
- else
299
- echo "🎓 Graduated: 0 items"
300
- fi
301
-
302
- # NLM status (if available)
303
- if command -v nlm &>/dev/null; then
304
- echo ""
305
- echo "--- NotebookLM ---"
306
- nlm auth status 2>/dev/null && echo "🔐 Auth: Active" || echo "🔐 Auth: Expired (run nlm login)"
307
- fi
308
- }
309
-
310
- cmd_init() {
311
- check_nlm
312
- ensure_dir
313
-
314
- info "First-time setup..."
315
-
316
- # 1. Login
317
- check_auth
318
-
319
- # 2. Create notebook
320
- info "Creating CodyMaster Brain notebook..."
321
- local nb_id=$(nlm notebook create "CodyMaster Brain" --quiet 2>/dev/null)
322
- if [ -z "$nb_id" ]; then
323
- error "Failed to create notebook. Check nlm auth."
324
- fi
325
-
326
- # 3. Set alias
327
- nlm alias set codymaster "$nb_id"
328
- info "Alias set: codymaster → $nb_id"
329
-
330
- # 4. Compile & upload
331
- cmd_compile
332
- cmd_upload
333
-
334
- info "✅ Setup complete! Your master brain is ready."
335
- echo ""
336
- echo "Quick commands:"
337
- echo " brain-sync.sh status — Check status"
338
- echo " brain-sync.sh lesson — Add lesson learned"
339
- echo " brain-sync.sh sync — Recompile & upload"
340
- echo " brain-sync.sh init-project — Create a project-specific brain (Dual-Brain)"
341
- echo " nlm notebook query codymaster 'your question'"
342
- }
343
-
344
- cmd_init_project() {
345
- check_nlm
346
- check_auth
347
-
348
- local project_name="${PWD##*/}"
349
- info "Initializing Project Brain for: $project_name"
350
-
351
- mkdir -p .cm
352
- if [ -f ".cm/notebook_id" ]; then
353
- warn "Project Brain already initialized. ID: $(cat .cm/notebook_id)"
354
- return 0
355
- fi
356
-
357
- local output=$(nlm notebook create "Project $project_name" 2>/dev/null)
358
-
359
- # output has format:
360
- # ✓ Created notebook: Project test
361
- # ID: 7a97...
362
- local nb_id=$(echo "$output" | grep "ID:" | awk '{print $2}')
363
-
364
- if [ -z "$nb_id" ]; then
365
- error "Failed to create Project Brain. Output: $output"
366
- fi
367
-
368
- echo "$nb_id" > .cm/notebook_id
369
- info "✅ Project Brain created! ID saved in .cm/notebook_id"
370
- echo "Use 'brain-sync.sh sync-project' to upload your local docs."
371
- }
372
-
373
- cmd_sync_project() {
374
- check_nlm
375
- check_auth
376
-
377
- [ -f ".cm/notebook_id" ] || error "Project Brain not initialized. Run 'init-project' first."
378
- local nb_id=$(cat .cm/notebook_id)
379
-
380
- info "Compiling project documents..."
381
- local temp_compile=".cm/project_context.md"
382
- mkdir -p .cm
383
-
384
- echo "# Project Context: ${PWD##*/}" > "$temp_compile"
385
- echo "Compiled: $(date +%Y-%m-%d' '%H:%M)" >> "$temp_compile"
386
- echo "" >> "$temp_compile"
387
-
388
- local doc_count=0
389
-
390
- # Search for docs and READMEs
391
- for md in $(find . -maxdepth 3 -type f -name "*.md" ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/.cm/*" 2>/dev/null); do
392
- echo "## File: $md" >> "$temp_compile"
393
- cat "$md" >> "$temp_compile"
394
- echo "" >> "$temp_compile"
395
- doc_count=$((doc_count + 1))
396
- done
397
-
398
- info " → $doc_count markdown files compiled."
399
- if [ $doc_count -eq 0 ]; then
400
- warn "No local markdown files found to sync."
401
- return 0
402
- fi
403
-
404
- info "Uploading Context to Project Brain ($nb_id)..."
405
-
406
- # Delete old Project Context source and re-add
407
- local existing=$(nlm source list "$nb_id" --quiet 2>/dev/null | head -1)
408
- if [ -n "$existing" ]; then
409
- local source_id=$(nlm source list "$nb_id" --json 2>/dev/null | \
410
- python3 -c "import sys,json; sources=json.load(sys.stdin); [print(s['id']) for s in sources if 'Project Context' in s.get('title','')]" 2>/dev/null | head -1)
411
- if [ -n "$source_id" ]; then
412
- nlm source delete "$source_id" --confirm 2>/dev/null || true
413
- sleep 2
414
- fi
415
- fi
416
-
417
- nlm source add "$nb_id" \
418
- --text "$(cat "$temp_compile")" \
419
- --title "Project Context — Local Docs"
420
-
421
- info "✅ Project Brain synced successfully!"
422
- }
423
-
424
- # --- Main ---
425
- case "${1:-help}" in
426
- graduate) cmd_graduate ;;
427
- init-project) cmd_init_project ;;
428
- sync-project) cmd_sync_project ;;
429
- compile) cmd_compile ;;
430
- upload) cmd_upload ;;
431
- sync) cmd_sync ;;
432
- lesson) cmd_lesson "${2:-}" ;;
433
- experience) cmd_experience "${2:-}" ;;
434
- status) cmd_status ;;
435
- init) cmd_init ;;
436
- *)
437
- echo "🧠 CodyMaster Brain Sync"
438
- echo ""
439
- echo "Usage: brain-sync.sh <command>"
440
- echo ""
441
- echo "Commands:"
442
- echo " init First-time setup (create master notebook + compile + upload)"
443
- echo " init-project Create an isolated Project Brain for the current directory"
444
- echo " graduate Extract proven local learnings & decisions to global limits"
445
- echo " compile Compile brain.md from skills + lessons + experiences"
446
- echo " upload Upload brain.md to NotebookLM"
447
- echo " sync Compile + upload if changed (asks confirmation)"
448
- echo " sync-project Merge local markdown files and push to isolated Project Brain"
449
- echo " lesson Add a lesson learned"
450
- echo " experience Add a coding experience"
451
- echo " status Show brain status"
452
- ;;
453
- esac