codymaster 4.8.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +331 -7
- package/README.md +226 -296
- package/dist/advisory-handoff.js +89 -0
- package/dist/advisory-report.js +105 -0
- package/dist/agent/antigravity.js +152 -0
- package/dist/agent/backend.js +2 -0
- package/dist/agent/claude.js +196 -0
- package/dist/agent/codex.js +204 -0
- package/dist/agent/copilot.js +284 -0
- package/dist/agent/cursor.js +211 -0
- package/dist/agent/factory.js +30 -0
- package/dist/agent/gemini.js +142 -0
- package/dist/agent/opencode.js +205 -0
- package/dist/agent/spawn-helper.js +237 -0
- package/dist/agent/version.js +25 -0
- package/dist/browse/adapter-factory.js +69 -0
- package/dist/browse/adapters/agent-browser-adapter.js +305 -0
- package/dist/browse/adapters/playwright-adapter.js +309 -0
- package/dist/browse/adapters/types.js +6 -0
- package/dist/browse/error-collector.js +132 -0
- package/dist/browse/event-log.js +109 -0
- package/dist/browse/index.js +17 -0
- package/dist/browse-server.js +204 -120
- package/dist/cli/command-registry.js +20 -0
- package/dist/cli/commands/bench.js +69 -0
- package/dist/cli/commands/brain.js +108 -0
- package/dist/cli/commands/dashboard.js +76 -2
- package/dist/cli/commands/engineering.js +326 -4
- package/dist/cli/commands/evolve.js +123 -0
- package/dist/cli/commands/install.js +160 -0
- package/dist/cli/commands/learn.js +181 -0
- package/dist/cli/commands/mcp-serve.js +104 -0
- package/dist/cli/commands/parallel.js +138 -0
- package/dist/cli/commands/quality.js +105 -0
- package/dist/cli/commands/stack.js +49 -0
- package/dist/cli/commands/update.js +159 -0
- package/dist/cli/update-check.js +94 -10
- package/dist/cm-config.js +0 -18
- package/dist/codybench/judges/automated.js +31 -0
- package/dist/codybench/runners/claude-code.js +32 -0
- package/dist/codybench/suites/memory-retention.js +85 -0
- package/dist/codybench/suites/tdd-regression.js +35 -0
- package/dist/codybench/suites/token-efficiency.js +55 -0
- package/dist/codybench/types.js +2 -0
- package/dist/context-db.js +157 -0
- package/dist/continuity.js +5 -7
- package/dist/dashboard.js +47 -6
- package/dist/data.js +35 -0
- package/dist/execution/tdd-gate.js +113 -0
- package/dist/execution-analyzer.js +138 -0
- package/dist/executor/cancel.js +34 -0
- package/dist/executor/gc.js +74 -0
- package/dist/executor/index.js +14 -0
- package/dist/executor/runner.js +70 -0
- package/dist/executor/workdir.js +31 -0
- package/dist/handoff/contracts.js +22 -0
- package/dist/handoff/index.js +18 -0
- package/dist/handoff/io.js +121 -0
- package/dist/index.js +7 -3
- package/dist/indexer/skills-lib.js +533 -0
- package/dist/indexer/skills-map.js +1374 -0
- package/dist/indexer/skills.js +16 -0
- package/dist/indexer/stack-detect.js +219 -0
- package/dist/install/copy.js +98 -0
- package/dist/install/engine.js +42 -0
- package/dist/install/paths.js +70 -0
- package/dist/install/platforms/_simple.js +85 -0
- package/dist/install/platforms/antigravity.js +91 -0
- package/dist/install/platforms/claude-code.js +107 -0
- package/dist/install/platforms/cursor.js +77 -0
- package/dist/install/platforms/index.js +27 -0
- package/dist/install/platforms/simple.js +163 -0
- package/dist/install/profiles.js +75 -0
- package/dist/install/types.js +2 -0
- package/dist/learning-promoter.js +246 -0
- package/dist/learnings.js +208 -0
- package/dist/mcp-context-server.js +230 -1
- package/dist/middleware/metrics.js +30 -0
- package/dist/middleware/security-headers.js +14 -0
- package/dist/realtime/event-bus.js +29 -0
- package/dist/realtime/ws-hub.js +91 -0
- package/dist/schemas/task-schema.js +48 -0
- package/dist/schemas/validate.js +18 -0
- package/dist/skill-chain.js +63 -1
- package/dist/skill-evolver.js +456 -0
- package/dist/skill-execution-cache.js +254 -0
- package/dist/skills-lock.js +96 -0
- package/dist/smart-brain-router.js +184 -0
- package/dist/sprint-pipeline.js +26 -0
- package/dist/storage/index.js +21 -0
- package/dist/storage/repos/activity-repo.js +46 -0
- package/dist/storage/repos/message-repo.js +39 -0
- package/dist/storage/repos/project-repo.js +56 -0
- package/dist/storage/repos/task-repo.js +142 -0
- package/dist/storage/services/project-service.js +49 -0
- package/dist/storage/services/task-service.js +97 -0
- package/dist/storage/sqlite.js +113 -0
- package/dist/storage-backend.js +10 -8
- package/dist/tier-classify.js +131 -0
- package/dist/token-budget.js +88 -0
- package/dist/ui/onboarding.js +51 -15
- package/dist/utils/cli-utils.js +7 -2
- package/dist/utils/design-taste.js +108 -0
- package/dist/utils/output-compress.js +143 -0
- package/dist/vibecoding-index.js +126 -0
- package/package.json +20 -6
- package/public/dashboard/app.js +52 -1
- package/scripts/build-skills-lock.mjs +88 -0
- package/scripts/build-skills.mjs +187 -28
- package/scripts/compress-skill.mjs +73 -0
- package/scripts/deprecate-skill.mjs +72 -0
- package/scripts/install.sh +170 -0
- package/scripts/mcp-bridge.js +2 -2
- package/scripts/postinstall.js +53 -335
- package/scripts/update-changelog.sh +88 -0
- package/scripts/validate-skills.mjs +101 -4
- package/skills/CLAUDE.md +0 -5
- package/skills/_shared/SKILL_TEMPLATE.md +62 -0
- package/skills/_shared/helpers.md +2 -8
- package/skills/cm-autopilot/scripts/autopilot.py +19 -2
- package/skills/cm-brainstorm-idea/SKILL.md +9 -0
- package/skills/cm-browse/SKILL.md +6 -0
- package/skills/cm-clean-code/SKILL.md +20 -0
- package/skills/cm-code-review/SKILL.md +21 -0
- package/skills/cm-codeintell/SKILL.md +9 -0
- package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
- package/skills/cm-conductor-worktrees/SKILL.md +20 -18
- package/skills/cm-continuity/SKILL.md +41 -33
- package/skills/cm-dashboard/SKILL.archive.md +15 -0
- package/skills/cm-dashboard/SKILL.md +20 -9
- package/skills/cm-dashboard/ui/app.js +9 -1
- package/skills/cm-debugging/SKILL.md +9 -0
- package/skills/cm-design-studio/SKILL.archive.md +34 -0
- package/skills/cm-design-studio/SKILL.md +20 -24
- package/skills/cm-design-system/SKILL.md +1 -0
- package/skills/cm-ecosystem-roadmap/SKILL.md +4 -0
- package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
- package/skills/cm-engineering-meta/SKILL.md +19 -62
- package/skills/cm-execution/SKILL.md +98 -0
- package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
- package/skills/cm-git-worktrees/SKILL.md +15 -146
- package/skills/cm-guardian-runtime/SKILL.md +5 -1
- package/skills/cm-identity-guard/SKILL.md +8 -0
- package/skills/cm-mcp-engineering/SKILL.md +4 -0
- package/skills/cm-planning/SKILL.md +63 -92
- package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
- package/skills/cm-post-deploy-canary/SKILL.md +20 -12
- package/skills/cm-project-bootstrap/SKILL.md +11 -0
- package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
- package/skills/cm-qa-visual-cli/SKILL.md +19 -11
- package/skills/cm-quality-gate/SKILL.md +38 -0
- package/skills/cm-retro-cli/SKILL.md +4 -0
- package/skills/cm-safe-deploy/SKILL.md +9 -0
- package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
- package/skills/cm-second-opinion-cli/SKILL.md +20 -13
- package/skills/cm-secret-shield/SKILL.archive.md +580 -0
- package/skills/cm-secret-shield/SKILL.md +15 -569
- package/skills/cm-security-gate/SKILL.archive.md +239 -0
- package/skills/cm-security-gate/SKILL.md +16 -228
- package/skills/cm-skill-chain/SKILL.md +25 -4
- package/skills/cm-skill-evolution/SKILL.md +83 -0
- package/skills/cm-skill-health/SKILL.archive.md +83 -0
- package/skills/cm-skill-health/SKILL.md +26 -0
- package/skills/cm-skill-index/SKILL.md +19 -3
- package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
- package/skills/cm-skill-mastery/SKILL.md +16 -146
- package/skills/cm-skill-search/SKILL.archive.md +49 -0
- package/skills/cm-skill-search/SKILL.md +26 -0
- package/skills/cm-skill-share/SKILL.archive.md +58 -0
- package/skills/cm-skill-share/SKILL.md +26 -0
- package/skills/cm-sprint-bus/SKILL.md +13 -0
- package/skills/cm-start/SKILL.md +17 -10
- package/skills/cm-tdd/SKILL.md +21 -2
- package/skills/cm-terminal/SKILL.md +15 -0
- package/skills/cm-test-gate/SKILL.archive.md +245 -0
- package/skills/cm-test-gate/SKILL.md +15 -234
- package/skills/cm-ui-preview/SKILL.archive.md +153 -0
- package/skills/cm-ui-preview/SKILL.md +16 -143
- package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
- package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
- package/skills/cm-ux-master/mcp/server.py +2 -2
- package/skills/profiles/design.txt +1 -1
- package/skills/profiles/full.txt +4 -10
- package/skills/profiles/growth.txt +8 -8
- package/skills/profiles/knowledge.txt +1 -1
- package/skills/profiles/top35.json +41 -0
- package/adapters/antigravity.js +0 -15
- package/adapters/claude-code.js +0 -17
- package/adapters/cursor.js +0 -16
- package/install.sh +0 -1125
- package/scripts/viking-demo.ts +0 -105
- package/skills/cm-ads-tracker/SKILL.md +0 -401
- package/skills/cm-ads-tracker/evals/evals.json +0 -55
- package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
- package/skills/cm-ads-tracker/references/industry-events.md +0 -294
- package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
- package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
- package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
- package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
- package/skills/cm-auto-publisher/SKILL.md +0 -81
- package/skills/cm-booking-calendar/SKILL.md +0 -521
- package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
- package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
- package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
- package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
- package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
- package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
- package/skills/cm-content-factory/.content-factory-state.json +0 -132
- package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
- package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
- package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
- package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
- package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
- package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
- package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
- package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
- package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
- package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
- package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
- package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
- package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
- package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
- package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
- package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
- package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
- package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
- package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
- package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
- package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
- package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
- package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
- package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
- package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
- package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
- package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
- package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
- package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
- package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
- package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
- package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
- package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
- package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
- package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
- package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
- package/skills/cm-content-factory/AGENTS.md +0 -61
- package/skills/cm-content-factory/CLAUDE.md +0 -63
- package/skills/cm-content-factory/CURSOR.md +0 -43
- package/skills/cm-content-factory/Content Factory.zip +0 -0
- package/skills/cm-content-factory/SKILL.md +0 -416
- package/skills/cm-content-factory/cf +0 -313
- package/skills/cm-content-factory/config.schema.json +0 -397
- package/skills/cm-content-factory/dashboard/app.js +0 -556
- package/skills/cm-content-factory/dashboard/index.html +0 -397
- package/skills/cm-content-factory/dashboard/style.css +0 -1211
- package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
- package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
- package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
- package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
- package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
- package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
- package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
- package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
- package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
- package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
- package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
- package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
- package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
- package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
- package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
- package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
- package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
- package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
- package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
- package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
- package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
- package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
- package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
- package/skills/cm-content-factory/extensions/hooks.py +0 -126
- package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
- package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
- package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
- package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
- package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
- package/skills/cm-content-factory/landing/docs/content/openviking.md +0 -33
- package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
- package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
- package/skills/cm-content-factory/landing/docs/index.html +0 -240
- package/skills/cm-content-factory/landing/index.html +0 -680
- package/skills/cm-content-factory/landing/script.js +0 -143
- package/skills/cm-content-factory/landing/style.css +0 -1216
- package/skills/cm-content-factory/landing/translations.js +0 -508
- package/skills/cm-content-factory/logs/events.jsonl +0 -11
- package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
- package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
- package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
- package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
- package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
- package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
- package/skills/cm-content-factory/scripts/audit.py +0 -106
- package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
- package/skills/cm-content-factory/scripts/deploy.py +0 -146
- package/skills/cm-content-factory/scripts/extract.py +0 -132
- package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
- package/skills/cm-content-factory/scripts/memory.py +0 -521
- package/skills/cm-content-factory/scripts/monetize.py +0 -239
- package/skills/cm-content-factory/scripts/pipeline.py +0 -357
- package/skills/cm-content-factory/scripts/plan.py +0 -163
- package/skills/cm-content-factory/scripts/publish.py +0 -145
- package/skills/cm-content-factory/scripts/research.py +0 -337
- package/skills/cm-content-factory/scripts/scaffold.py +0 -464
- package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
- package/skills/cm-content-factory/scripts/seo.py +0 -90
- package/skills/cm-content-factory/scripts/state_manager.py +0 -320
- package/skills/cm-content-factory/scripts/token_manager.py +0 -268
- package/skills/cm-content-factory/scripts/validate.py +0 -221
- package/skills/cm-content-factory/scripts/wizard.py +0 -329
- package/skills/cm-content-factory/scripts/write.py +0 -93
- package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
- package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
- package/skills/cm-content-factory/tests/conftest.py +0 -66
- package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
- package/skills/cm-content-factory/tests/test_memory.py +0 -128
- package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
- package/skills/cm-content-factory/tests/test_research.py +0 -56
- package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
- package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
- package/skills/cm-content-factory/tests/test_wizard.py +0 -121
- package/skills/cm-cro-methodology/SKILL.md +0 -290
- package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
- package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
- package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
- package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
- package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
- package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
- package/skills/cm-google-form/SKILL.md +0 -266
- package/skills/cm-google-form/templates/apps-script.js +0 -55
- package/skills/cm-google-form/templates/form-markup.html +0 -110
- package/skills/cm-google-form/templates/form-submit.js +0 -201
- package/skills/cm-google-form/templates/toast.css +0 -152
- package/skills/cm-growth-hacking/SKILL.md +0 -282
- package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
- package/skills/cm-growth-hacking/calendar-integration.md +0 -264
- package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
- package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
- package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
- package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
- package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
- package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
- package/skills/cm-growth-hacking/tracking-events.md +0 -246
- package/skills/cm-growth-hacking/trigger-system.md +0 -342
- package/skills/cm-jtbd/SKILL.md +0 -98
- package/skills/cm-notebooklm/SKILL.md +0 -156
- package/skills/cm-notebooklm/references/command_reference.md +0 -94
- package/skills/cm-notebooklm/references/workflows.md +0 -60
- package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
- package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
- package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
- package/skills/cm-readit/SKILL.md +0 -289
- package/skills/cm-readit/audio-player.md +0 -206
- package/skills/cm-readit/examples/blog-reader.js +0 -352
- package/skills/cm-readit/examples/voice-cro.js +0 -390
- package/skills/cm-readit/tts-engine.md +0 -262
- package/skills/cm-readit/ui-patterns.md +0 -362
- 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
|