codymaster 7.0.2 → 7.0.3

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 (341) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +38 -1
  3. package/dist/agent/codex.js +73 -21
  4. package/dist/agent-dispatch.js +63 -48
  5. package/dist/cli/commands/brain.js +18 -0
  6. package/dist/cli/commands/design-studio.js +1 -1
  7. package/dist/cm-suggest.js +3 -3
  8. package/dist/dashboard-project-summary.js +9 -0
  9. package/dist/dashboard.js +11 -5
  10. package/dist/execution-analyzer.js +9 -1
  11. package/dist/judge.js +16 -15
  12. package/dist/mcp-context-server.js +45 -23
  13. package/dist/mcp-skills-tools.js +2 -2
  14. package/dist/skill-chain.js +26 -3
  15. package/dist/skill-token-report.js +105 -0
  16. package/dist/sprint-pipeline.js +3 -3
  17. package/dist/ui/onboarding.js +3 -4
  18. package/dist/utils/design-taste.js +1 -1
  19. package/dist/utils/output-compress.js +8 -0
  20. package/package.json +2 -1
  21. package/public/dashboard/app.js +40 -13
  22. package/public/dashboard/index.html +190 -5
  23. package/public/dashboard/style.css +1 -1
  24. package/scripts/build-skills.mjs +36 -2
  25. package/scripts/mcp-bridge.js +41 -24
  26. package/scripts/pack-plugin.mjs +206 -0
  27. package/skills/cm-ads-tracker/SKILL.md +401 -0
  28. package/skills/cm-ads-tracker/evals/evals.json +55 -0
  29. package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
  30. package/skills/cm-ads-tracker/references/industry-events.md +294 -0
  31. package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
  32. package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
  33. package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
  34. package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
  35. package/skills/cm-auto-publisher/SKILL.md +81 -0
  36. package/skills/cm-booking-calendar/SKILL.md +521 -0
  37. package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
  38. package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
  39. package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
  40. package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
  41. package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
  42. package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
  43. package/skills/cm-brainstorm-idea/SKILL.md +5 -5
  44. package/skills/cm-code-review/SKILL.md +2 -2
  45. package/skills/cm-codeintell/SKILL.md +47 -580
  46. package/skills/cm-codeintell/references/integration-workflows.md +23 -0
  47. package/skills/cm-codeintell/references/layer-0-skeleton.md +54 -0
  48. package/skills/cm-codeintell/references/layer-1-codegraph.md +58 -0
  49. package/skills/cm-codeintell/references/layer-2-architecture.md +31 -0
  50. package/skills/cm-codeintell/references/layer-3-context-builder.md +32 -0
  51. package/skills/cm-content-factory/.content-factory-state.json +132 -0
  52. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
  53. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
  54. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  55. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  56. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  57. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  58. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  59. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  60. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  61. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  62. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  63. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  64. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  65. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  66. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  67. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  68. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  69. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  70. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  71. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  72. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  73. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  74. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  75. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  76. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  77. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  78. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  79. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  80. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  81. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  82. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  83. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  84. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  85. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  86. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  87. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  88. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  89. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  90. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  91. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  92. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  93. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  94. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  95. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  96. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  97. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
  98. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  99. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  100. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  101. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  102. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  103. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  104. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  105. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  106. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  107. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  108. package/skills/cm-content-factory/.git 2/refs/heads/main +1 -0
  109. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
  110. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
  111. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
  112. package/skills/cm-content-factory/AGENTS.md +61 -0
  113. package/skills/cm-content-factory/CLAUDE.md +63 -0
  114. package/skills/cm-content-factory/CURSOR.md +43 -0
  115. package/skills/cm-content-factory/Content Factory.zip +0 -0
  116. package/skills/cm-content-factory/SKILL.md +416 -0
  117. package/skills/cm-content-factory/cf +313 -0
  118. package/skills/cm-content-factory/config.schema.json +397 -0
  119. package/skills/cm-content-factory/dashboard/app.js +556 -0
  120. package/skills/cm-content-factory/dashboard/index.html +397 -0
  121. package/skills/cm-content-factory/dashboard/style.css +1211 -0
  122. package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
  123. package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
  124. package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
  125. package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
  126. package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
  127. package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
  128. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
  129. package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
  130. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
  131. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
  132. package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
  133. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
  134. package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
  135. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
  136. package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
  137. package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
  138. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
  139. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
  140. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
  141. package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
  142. package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
  143. package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
  144. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
  145. package/skills/cm-content-factory/extensions/hooks.py +126 -0
  146. package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
  147. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  148. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  149. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  150. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  151. package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
  152. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  153. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  154. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  155. package/skills/cm-content-factory/landing/index.html +680 -0
  156. package/skills/cm-content-factory/landing/script.js +143 -0
  157. package/skills/cm-content-factory/landing/style.css +1216 -0
  158. package/skills/cm-content-factory/landing/translations.js +508 -0
  159. package/skills/cm-content-factory/logs/events.jsonl +11 -0
  160. package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
  161. package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
  162. package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
  163. package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
  164. package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
  165. package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
  166. package/skills/cm-content-factory/scripts/audit.py +106 -0
  167. package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
  168. package/skills/cm-content-factory/scripts/deploy.py +146 -0
  169. package/skills/cm-content-factory/scripts/extract.py +132 -0
  170. package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
  171. package/skills/cm-content-factory/scripts/memory.py +521 -0
  172. package/skills/cm-content-factory/scripts/monetize.py +239 -0
  173. package/skills/cm-content-factory/scripts/pipeline.py +357 -0
  174. package/skills/cm-content-factory/scripts/plan.py +163 -0
  175. package/skills/cm-content-factory/scripts/publish.py +145 -0
  176. package/skills/cm-content-factory/scripts/research.py +337 -0
  177. package/skills/cm-content-factory/scripts/scaffold.py +464 -0
  178. package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
  179. package/skills/cm-content-factory/scripts/seo.py +90 -0
  180. package/skills/cm-content-factory/scripts/state_manager.py +320 -0
  181. package/skills/cm-content-factory/scripts/token_manager.py +268 -0
  182. package/skills/cm-content-factory/scripts/validate.py +221 -0
  183. package/skills/cm-content-factory/scripts/wizard.py +329 -0
  184. package/skills/cm-content-factory/scripts/write.py +93 -0
  185. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  186. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +90 -0
  187. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
  188. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
  189. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
  190. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
  191. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
  192. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
  193. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
  194. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
  195. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
  196. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
  197. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
  198. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
  199. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
  200. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
  201. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
  202. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
  203. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
  204. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
  205. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
  206. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
  207. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
  208. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
  209. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
  210. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
  211. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
  212. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
  213. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
  214. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
  215. package/skills/cm-content-factory/tests/conftest.py +66 -0
  216. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
  217. package/skills/cm-content-factory/tests/test_memory.py +128 -0
  218. package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
  219. package/skills/cm-content-factory/tests/test_research.py +56 -0
  220. package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
  221. package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
  222. package/skills/cm-content-factory/tests/test_wizard.py +121 -0
  223. package/skills/cm-continuity/SKILL.md +49 -480
  224. package/skills/cm-continuity/references/cm-uri-scheme.md +23 -0
  225. package/skills/cm-continuity/references/continuity-template.md +48 -0
  226. package/skills/cm-continuity/references/mcp-context-server.md +27 -0
  227. package/skills/cm-continuity/references/memory-architecture.md +26 -0
  228. package/skills/cm-continuity/references/memory-audit.md +18 -0
  229. package/skills/cm-continuity/references/session-protocol.md +31 -0
  230. package/skills/cm-continuity/references/storage-formats.md +20 -0
  231. package/skills/cm-cro-methodology/SKILL.md +290 -0
  232. package/skills/cm-cro-methodology/references/COPYWRITING.md +178 -0
  233. package/skills/cm-cro-methodology/references/OBJECTIONS.md +135 -0
  234. package/skills/cm-cro-methodology/references/PERSUASION.md +158 -0
  235. package/skills/cm-cro-methodology/references/RESEARCH.md +220 -0
  236. package/skills/cm-cro-methodology/references/funnel-analysis.md +365 -0
  237. package/skills/cm-cro-methodology/references/testing-methodology.md +330 -0
  238. package/skills/cm-design-system/SKILL.md +5 -6
  239. package/skills/cm-execution/SKILL.md +61 -379
  240. package/skills/cm-execution/references/mode-a-batch.md +28 -0
  241. package/skills/cm-execution/references/mode-b-subagent.md +46 -0
  242. package/skills/cm-execution/references/mode-c-parallel.md +39 -0
  243. package/skills/cm-execution/references/mode-d-rarv.md +62 -0
  244. package/skills/cm-execution/references/mode-e-triz-parallel.md +53 -0
  245. package/skills/cm-execution/references/mode-f-party.md +61 -0
  246. package/skills/cm-execution/references/persona-dispatch.md +22 -0
  247. package/skills/cm-execution/references/security-rules.md +47 -0
  248. package/skills/cm-google-form/SKILL.md +266 -0
  249. package/skills/cm-google-form/templates/apps-script.js +55 -0
  250. package/skills/cm-google-form/templates/form-markup.html +110 -0
  251. package/skills/cm-google-form/templates/form-submit.js +201 -0
  252. package/skills/cm-google-form/templates/toast.css +152 -0
  253. package/skills/cm-growth-hacking/SKILL.md +282 -0
  254. package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
  255. package/skills/cm-growth-hacking/calendar-integration.md +264 -0
  256. package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
  257. package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
  258. package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
  259. package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
  260. package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
  261. package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
  262. package/skills/cm-growth-hacking/tracking-events.md +246 -0
  263. package/skills/cm-growth-hacking/trigger-system.md +342 -0
  264. package/skills/cm-how-it-work/SKILL.md +8 -9
  265. package/skills/cm-identity-guard/SKILL.md +4 -4
  266. package/skills/cm-jtbd/SKILL.md +98 -0
  267. package/skills/cm-notebooklm/SKILL.md +156 -0
  268. package/skills/cm-notebooklm/references/command_reference.md +94 -0
  269. package/skills/cm-notebooklm/references/workflows.md +60 -0
  270. package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
  271. package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
  272. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
  273. package/skills/cm-planning/SKILL.md +3 -3
  274. package/skills/cm-project-bootstrap/SKILL.md +2 -2
  275. package/skills/cm-quality-gate/SKILL.md +1 -1
  276. package/skills/cm-readit/SKILL.md +289 -0
  277. package/skills/cm-readit/audio-player.md +206 -0
  278. package/skills/cm-readit/examples/blog-reader.js +352 -0
  279. package/skills/cm-readit/examples/voice-cro.js +390 -0
  280. package/skills/cm-readit/tts-engine.md +262 -0
  281. package/skills/cm-readit/ui-patterns.md +362 -0
  282. package/skills/cm-readit/voice-cro.md +223 -0
  283. package/skills/cm-safe-deploy/SKILL.md +80 -510
  284. package/skills/cm-safe-deploy/references/gate-0-5-security-scan.md +31 -0
  285. package/skills/cm-safe-deploy/references/gate-0-secret-hygiene.md +68 -0
  286. package/skills/cm-safe-deploy/references/gate-1-syntax.md +23 -0
  287. package/skills/cm-safe-deploy/references/gate-2-test-suite.md +28 -0
  288. package/skills/cm-safe-deploy/references/gate-3-i18n.md +19 -0
  289. package/skills/cm-safe-deploy/references/gate-4-5-build-dist.md +16 -0
  290. package/skills/cm-safe-deploy/references/gate-6-deploy-smoke.md +18 -0
  291. package/skills/cm-safe-deploy/references/rollback.md +17 -0
  292. package/skills/cm-safe-deploy/references/setup-new-project.md +20 -0
  293. package/skills/cm-skill-index/SKILL.md +15 -15
  294. package/skills/cm-start/SKILL.md +1 -1
  295. package/skills/cm-tdd/SKILL.md +51 -356
  296. package/skills/cm-tdd/references/bugfix-example.md +15 -0
  297. package/skills/cm-tdd/references/rationalizations.md +20 -0
  298. package/skills/cm-tdd/references/red-green-refactor.md +33 -0
  299. package/skills/cm-tdd/references/stuck-debugging.md +18 -0
  300. package/skills/cm-tdd/references/test-quality.md +19 -0
  301. package/skills/cm-ux-master/SKILL.md +368 -115
  302. package/skills/profiles/core.txt +1 -4
  303. package/skills/profiles/design.txt +1 -2
  304. package/skills/profiles/full.txt +10 -16
  305. package/skills/profiles/growth.txt +9 -9
  306. package/skills/profiles/top35.json +13 -13
  307. package/skills/cm-conductor-worktrees/SKILL.archive.md +0 -28
  308. package/skills/cm-conductor-worktrees/SKILL.md +0 -26
  309. package/skills/cm-dashboard/SKILL.archive.md +0 -15
  310. package/skills/cm-dashboard/SKILL.md +0 -26
  311. package/skills/cm-dashboard/ui/app.js +0 -1278
  312. package/skills/cm-dashboard/ui/index.html +0 -206
  313. package/skills/cm-dashboard/ui/style.css +0 -440
  314. package/skills/cm-design-studio/SKILL.archive.md +0 -34
  315. package/skills/cm-design-studio/SKILL.md +0 -26
  316. package/skills/cm-engineering-meta/SKILL.archive.md +0 -73
  317. package/skills/cm-engineering-meta/SKILL.md +0 -26
  318. package/skills/cm-git-worktrees/SKILL.archive.md +0 -157
  319. package/skills/cm-git-worktrees/SKILL.md +0 -26
  320. package/skills/cm-post-deploy-canary/SKILL.archive.md +0 -22
  321. package/skills/cm-post-deploy-canary/SKILL.md +0 -26
  322. package/skills/cm-qa-visual-cli/SKILL.archive.md +0 -22
  323. package/skills/cm-qa-visual-cli/SKILL.md +0 -26
  324. package/skills/cm-second-opinion-cli/SKILL.archive.md +0 -23
  325. package/skills/cm-second-opinion-cli/SKILL.md +0 -26
  326. package/skills/cm-secret-shield/SKILL.archive.md +0 -580
  327. package/skills/cm-secret-shield/SKILL.md +0 -26
  328. package/skills/cm-security-gate/SKILL.archive.md +0 -239
  329. package/skills/cm-security-gate/SKILL.md +0 -26
  330. package/skills/cm-skill-health/SKILL.archive.md +0 -83
  331. package/skills/cm-skill-health/SKILL.md +0 -26
  332. package/skills/cm-skill-mastery/SKILL.archive.md +0 -156
  333. package/skills/cm-skill-mastery/SKILL.md +0 -26
  334. package/skills/cm-skill-search/SKILL.archive.md +0 -49
  335. package/skills/cm-skill-search/SKILL.md +0 -26
  336. package/skills/cm-skill-share/SKILL.archive.md +0 -58
  337. package/skills/cm-skill-share/SKILL.md +0 -26
  338. package/skills/cm-test-gate/SKILL.archive.md +0 -245
  339. package/skills/cm-test-gate/SKILL.md +0 -26
  340. package/skills/cm-ui-preview/SKILL.archive.md +0 -153
  341. package/skills/cm-ui-preview/SKILL.md +0 -26
@@ -0,0 +1,453 @@
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
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env python3
2
+ import os
3
+ import json
4
+ from datetime import datetime
5
+ import re
6
+
7
+ BRAIN_DIR = os.path.expanduser("~/.codymaster")
8
+ GRADUATED_FILE = os.path.join(BRAIN_DIR, "graduated_wisdom.md")
9
+
10
+ def get_existing_ids():
11
+ if not os.path.exists(GRADUATED_FILE):
12
+ return set()
13
+ with open(GRADUATED_FILE, 'r', encoding='utf-8') as f:
14
+ content = f.read()
15
+ # Find all **ID:** patterns
16
+ ids = set(re.findall(r'\*\*ID:\*\*\s+([A-Z0-9_-]+)', content))
17
+ return ids
18
+
19
+ def append_to_graduated(text):
20
+ os.makedirs(BRAIN_DIR, exist_ok=True)
21
+ with open(GRADUATED_FILE, 'a', encoding='utf-8') as f:
22
+ f.write(text)
23
+
24
+ def graduate_learnings(existing_ids):
25
+ learnings_path = os.path.join(os.getcwd(), ".cm", "learnings.json")
26
+ if not os.path.exists(learnings_path):
27
+ return 0
28
+
29
+ count = 0
30
+ try:
31
+ with open(learnings_path, 'r', encoding='utf-8') as f:
32
+ learnings = json.load(f)
33
+
34
+ for l in learnings:
35
+ lid = str(l.get('id', ''))
36
+ status = l.get('status', 'active')
37
+ reinforce_count = int(l.get('reinforceCount', 0))
38
+
39
+ if status == "active" and reinforce_count >= 3 and lid and lid not in existing_ids:
40
+ md = f"""
41
+ ### Learning: {l.get('error', 'Unknown Error')}
42
+ **ID:** {lid}
43
+ **Date Graduated:** {datetime.now().strftime('%Y-%m-%d')}
44
+ **Scope:** {l.get('scope', 'global')}
45
+ **Cause:** {l.get('cause', '')}
46
+ **Prevention:** {l.get('prevention', '')}
47
+ **Reinforced:** {reinforce_count} times
48
+
49
+ """
50
+ append_to_graduated(md)
51
+ existing_ids.add(lid)
52
+ count += 1
53
+ except Exception as e:
54
+ print(f"Error processing {learnings_path}: {e}")
55
+ return count
56
+
57
+ def graduate_decisions(existing_ids):
58
+ decisions_path = os.path.join(os.getcwd(), ".cm", "decisions.json")
59
+ if not os.path.exists(decisions_path):
60
+ return 0
61
+
62
+ count = 0
63
+ try:
64
+ with open(decisions_path, 'r', encoding='utf-8') as f:
65
+ decisions = json.load(f)
66
+
67
+ for d in decisions:
68
+ did = str(d.get('id', ''))
69
+ status = d.get('status', 'active')
70
+
71
+ if status == "active" and did and did not in existing_ids:
72
+ md = f"""
73
+ ### Architecture Decision: {d.get('decision', 'Unknown')}
74
+ **ID:** {did}
75
+ **Date Graduated:** {datetime.now().strftime('%Y-%m-%d')}
76
+ **Scope:** {d.get('scope', 'global')}
77
+ **Rationale:** {d.get('rationale', '')}
78
+
79
+ """
80
+ append_to_graduated(md)
81
+ existing_ids.add(did)
82
+ count += 1
83
+ except Exception as e:
84
+ print(f"Error processing {decisions_path}: {e}")
85
+ return count
86
+
87
+ def main():
88
+ existing_ids = get_existing_ids()
89
+ start_count = len(existing_ids)
90
+
91
+ l_count = graduate_learnings(existing_ids)
92
+ d_count = graduate_decisions(existing_ids)
93
+
94
+ if l_count > 0 or d_count > 0:
95
+ print(f"✅ Graduated {l_count} learnings and {d_count} decisions to NotebookLM Brain.")
96
+ print(f" → Saved to {GRADUATED_FILE}")
97
+ else:
98
+ print("💡 No new highly-reinforced learnings or active decisions to graduate.")
99
+
100
+ if __name__ == "__main__":
101
+ main()
@@ -27,7 +27,7 @@ deprecated: false
27
27
  1. **Intent** — Ask clarifying questions. Don't assume scope. Surface hidden requirements.
28
28
  2. **Options** — List 2-3 approaches with pros/cons. Recommend one with reasoning.
29
29
  3. **Scope** — Must-have vs nice-to-have; edges to handle vs explicitly skip.
30
- 4. **Design** — Data flow, component boundaries, API contracts. UI work → `cm-ui-preview`.
30
+ 4. **Design** — Data flow, component boundaries, API contracts. UI work → `cm-design-system`.
31
31
 
32
32
  **Red flags (STOP)**: code before brainstorm; assuming intent; skipping scope; "it's simple."
33
33
 
@@ -80,10 +80,10 @@ Update `.cm/CONTINUITY.md`:
80
80
  | After planning... | Use skill |
81
81
  |---|---|
82
82
  | Complex initiative | `cm-brainstorm-idea` (run BEFORE) |
83
- | Need isolated workspace | `cm-git-worktrees` |
83
+ | Need isolated workspace | `cm-execution` |
84
84
  | Execute the plan | `cm-execution` |
85
85
  | Tests first | `cm-tdd` |
86
- | UI/frontend | `cm-ui-preview` |
86
+ | UI/frontend | `cm-design-system` |
87
87
 
88
88
  ## Karpathy Discipline — Think Before Coding
89
89
 
@@ -140,7 +140,7 @@ After creating `.project-identity.json`, update `~/.cm-identity-history.json`:
140
140
  ## Phase 0.5: Security Foundation 🛡️
141
141
 
142
142
  > **NEW — Defense-in-depth from day 0. Secrets leak at project start when security is "later."**
143
- > **Calls `cm-secret-shield` for setup.**
143
+ > **Calls `cm-safe-deploy` for setup.**
144
144
 
145
145
  ### Step 1: Create `.gitleaks.toml`
146
146
 
@@ -208,7 +208,7 @@ Add to `package.json`:
208
208
  ```json
209
209
  {
210
210
  "scripts": {
211
- "security:scan": "node scripts/security-scan.js || echo 'Create scripts/security-scan.js from cm-secret-shield'"
211
+ "security:scan": "node scripts/security-scan.js || echo 'Create scripts/security-scan.js from cm-safe-deploy guidance'"
212
212
  }
213
213
  }
214
214
  ```
@@ -196,7 +196,7 @@ After ANY gate fails, **FIRST run Memory Integrity Check:**
196
196
  | `cm-identity-guard` | Verify identity before using quality gate to ship |
197
197
  | `cm-tdd` | TDD creates the logic for Layer 3 |
198
198
  | `cm-safe-i18n` | Leverages Layer 4 for parity checks |
199
- | `cm-security-gate` | **PRE-REQUISITE for production:** Security scan (Snyk + Aikido) PASS must be in deployment evidence. No production deploy without security clearance. |
199
+ | `cm-safe-deploy` | **PRE-REQUISITE for production:** Security scan (Snyk + Aikido) PASS must be in deployment evidence. No production deploy without security clearance. |
200
200
 
201
201
  ## Evidence Requirements for Production Deploy
202
202