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
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# update-changelog.sh — Auto-update CHANGELOG.md from git commits
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# bash scripts/update-changelog.sh # Update CHANGELOG.md
|
|
6
|
+
# bash scripts/update-changelog.sh --dry-run # Preview without writing
|
|
7
|
+
#
|
|
8
|
+
# Follows conventional commits format:
|
|
9
|
+
# feat: → 🚀 Features
|
|
10
|
+
# fix: → 🐛 Bug Fixes
|
|
11
|
+
# security: → 🔒 Security
|
|
12
|
+
# improve/refactor/perf: → 🚀 Improvements
|
|
13
|
+
|
|
14
|
+
set -e
|
|
15
|
+
|
|
16
|
+
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
17
|
+
CHANGELOG="$REPO_ROOT/CHANGELOG.md"
|
|
18
|
+
DRY_RUN=false
|
|
19
|
+
|
|
20
|
+
if [[ "$1" == "--dry-run" ]]; then
|
|
21
|
+
DRY_RUN=true
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Get last tag
|
|
25
|
+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
26
|
+
|
|
27
|
+
# Get commits since last tag
|
|
28
|
+
if [ -z "$LAST_TAG" ]; then
|
|
29
|
+
COMMITS=$(git log --oneline -20 --no-merges)
|
|
30
|
+
else
|
|
31
|
+
COMMITS=$(git log --oneline "$LAST_TAG"..HEAD --no-merges)
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
if [ -z "$COMMITS" ]; then
|
|
35
|
+
echo "No commits found since last tag."
|
|
36
|
+
exit 0
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Categorize commits
|
|
40
|
+
FEATURES=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ feat:" | sed 's/^[a-f0-9]* /- /' || true)
|
|
41
|
+
FIXES=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ fix:" | sed 's/^[a-f0-9]* /- /' || true)
|
|
42
|
+
SECURITY=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ (security|sec):" | sed 's/^[a-f0-9]* /- /' || true)
|
|
43
|
+
IMPROVEMENTS=$(echo "$COMMITS" | grep -iE "^[a-f0-9]+ (improve|refactor|perf):" | sed 's/^[a-f0-9]* /- /' || true)
|
|
44
|
+
OTHER=$(echo "$COMMITS" | grep -ivE "^[a-f0-9]+ (feat|fix|security|sec|improve|refactor|perf):" | sed 's/^[a-f0-9]* /- /' || true)
|
|
45
|
+
|
|
46
|
+
# Generate changelog entry
|
|
47
|
+
DATE=$(date +%Y-%m-%d)
|
|
48
|
+
VERSION=$(node -p "require('$REPO_ROOT/package.json').version" 2>/dev/null || echo "unreleased")
|
|
49
|
+
|
|
50
|
+
ENTRY="## [$VERSION] - $DATE\n\n"
|
|
51
|
+
|
|
52
|
+
if [ -n "$FEATURES" ]; then
|
|
53
|
+
ENTRY+="### 🚀 Features\n$FEATURES\n\n"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
if [ -n "$FIXES" ]; then
|
|
57
|
+
ENTRY+="### 🐛 Bug Fixes\n$FIXES\n\n"
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
if [ -n "$SECURITY" ]; then
|
|
61
|
+
ENTRY+="### 🔒 Security\n$SECURITY\n\n"
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
if [ -n "$IMPROVEMENTS" ]; then
|
|
65
|
+
ENTRY+="### 🚀 Improvements\n$IMPROVEMENTS\n\n"
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
if [ -n "$OTHER" ]; then
|
|
69
|
+
ENTRY+="### 📦 Other\n$OTHER\n\n"
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
if [ "$DRY_RUN" = true ]; then
|
|
73
|
+
echo "=== DRY RUN — would add to CHANGELOG.md ==="
|
|
74
|
+
echo -e "$ENTRY"
|
|
75
|
+
exit 0
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Prepend to CHANGELOG.md
|
|
79
|
+
if [ -f "$CHANGELOG" ]; then
|
|
80
|
+
TEMP=$(mktemp)
|
|
81
|
+
echo -e "$ENTRY" > "$TEMP"
|
|
82
|
+
cat "$CHANGELOG" >> "$TEMP"
|
|
83
|
+
mv "$TEMP" "$CHANGELOG"
|
|
84
|
+
else
|
|
85
|
+
echo -e "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nCategories: 🚀 **Improvements** | 🐛 **Bug Fixes** | 🔒 **Security**\n\n---\n\n$ENTRY" > "$CHANGELOG"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
echo "✅ CHANGELOG.md updated (version: $VERSION)"
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Validates skills under skills/.
|
|
4
|
+
*
|
|
5
|
+
* Always-required (errors, fail build):
|
|
6
|
+
* - SKILL.md exists with H1 title and YAML frontmatter (`name`, `description`)
|
|
7
|
+
*
|
|
8
|
+
* Opt-in v2 rules (errors only when frontmatter `compressed: true`):
|
|
9
|
+
* - `token_budget` integer in [100, 6000]
|
|
10
|
+
* - `## TL;DR` section present, ≤8 non-empty lines (≤5 recommended)
|
|
11
|
+
* - SKILL.md ≤200 lines (warning only)
|
|
12
|
+
*
|
|
13
|
+
* Skills with `deprecated: true` are exempt from v2 rules.
|
|
14
|
+
*
|
|
15
|
+
* Migration: as skills are refactored to the new template
|
|
16
|
+
* (skills/_shared/SKILL_TEMPLATE.md), set `compressed: true` to enforce
|
|
17
|
+
* v2 quality. Once all core skills are migrated, the opt-in becomes default.
|
|
4
18
|
*/
|
|
5
19
|
import fs from 'fs';
|
|
6
20
|
import path from 'path';
|
|
@@ -9,32 +23,115 @@ import { fileURLToPath } from 'url';
|
|
|
9
23
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
24
|
const root = path.join(__dirname, '..', 'skills');
|
|
11
25
|
|
|
12
|
-
/** Directories under skills/ that are not standalone skills (assets, packs). */
|
|
13
26
|
const SKIP_DIRS = new Set(['profiles', 'extensions', 'scripts']);
|
|
14
27
|
|
|
15
28
|
let errors = 0;
|
|
29
|
+
let warnings = 0;
|
|
30
|
+
|
|
31
|
+
function parseFrontmatter(text) {
|
|
32
|
+
const m = text.match(/^---\n([\s\S]*?)\n---\n/);
|
|
33
|
+
if (!m) return null;
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const line of m[1].split('\n')) {
|
|
36
|
+
const mm = line.match(/^([A-Za-z_][A-Za-z0-9_-]*)\s*:\s*(.*)$/);
|
|
37
|
+
if (!mm) continue;
|
|
38
|
+
let v = mm[2].trim();
|
|
39
|
+
if (v.startsWith('"') && v.endsWith('"')) v = v.slice(1, -1);
|
|
40
|
+
if (v === 'true') v = true;
|
|
41
|
+
else if (v === 'false') v = false;
|
|
42
|
+
else if (/^-?\d+$/.test(v)) v = parseInt(v, 10);
|
|
43
|
+
out[mm[1]] = v;
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function extractTldr(text) {
|
|
49
|
+
const m = text.match(/^##\s+TL;DR\s*\n([\s\S]*?)(?=\n##\s|$)/m);
|
|
50
|
+
if (!m) return null;
|
|
51
|
+
return m[1].split('\n').filter((l) => l.trim().length > 0);
|
|
52
|
+
}
|
|
53
|
+
|
|
16
54
|
if (!fs.existsSync(root)) {
|
|
17
55
|
console.error('No skills/ directory');
|
|
18
56
|
process.exit(1);
|
|
19
57
|
}
|
|
20
58
|
|
|
59
|
+
let migratedCount = 0;
|
|
60
|
+
let totalCount = 0;
|
|
61
|
+
|
|
21
62
|
for (const name of fs.readdirSync(root, { withFileTypes: true })) {
|
|
22
63
|
if (!name.isDirectory()) continue;
|
|
23
64
|
if (name.name.startsWith('_') || name.name.startsWith('.')) continue;
|
|
24
65
|
if (SKIP_DIRS.has(name.name)) continue;
|
|
66
|
+
|
|
25
67
|
const md = path.join(root, name.name, 'SKILL.md');
|
|
26
68
|
if (!fs.existsSync(md)) {
|
|
27
|
-
console.error(
|
|
69
|
+
console.error(`✗ ${name.name}: missing SKILL.md`);
|
|
28
70
|
errors++;
|
|
29
71
|
continue;
|
|
30
72
|
}
|
|
73
|
+
totalCount++;
|
|
74
|
+
|
|
31
75
|
const text = fs.readFileSync(md, 'utf8');
|
|
76
|
+
const fm = parseFrontmatter(text);
|
|
77
|
+
|
|
32
78
|
if (!/^#\s+\S/m.test(text)) {
|
|
33
|
-
console.error(
|
|
79
|
+
console.error(`✗ ${name.name}: missing H1 title`);
|
|
80
|
+
errors++;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!fm) {
|
|
84
|
+
console.error(`✗ ${name.name}: missing YAML frontmatter`);
|
|
85
|
+
errors++;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (!fm.name) {
|
|
89
|
+
console.error(`✗ ${name.name}: frontmatter missing 'name'`);
|
|
90
|
+
errors++;
|
|
91
|
+
}
|
|
92
|
+
if (!fm.description) {
|
|
93
|
+
console.error(`✗ ${name.name}: frontmatter missing 'description'`);
|
|
34
94
|
errors++;
|
|
35
95
|
}
|
|
96
|
+
|
|
97
|
+
const isDeprecated = fm.deprecated === true;
|
|
98
|
+
const isCompressed = fm.compressed === true;
|
|
99
|
+
|
|
100
|
+
if (isCompressed && !isDeprecated) {
|
|
101
|
+
migratedCount++;
|
|
102
|
+
|
|
103
|
+
if (typeof fm.token_budget !== 'number') {
|
|
104
|
+
console.error(`✗ ${name.name}: compressed skill missing 'token_budget' (number)`);
|
|
105
|
+
errors++;
|
|
106
|
+
} else if (fm.token_budget < 100 || fm.token_budget > 6000) {
|
|
107
|
+
console.error(`✗ ${name.name}: token_budget ${fm.token_budget} out of range [100, 6000]`);
|
|
108
|
+
errors++;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const tldr = extractTldr(text);
|
|
112
|
+
if (!tldr) {
|
|
113
|
+
console.error(`✗ ${name.name}: compressed skill missing '## TL;DR' section`);
|
|
114
|
+
errors++;
|
|
115
|
+
} else {
|
|
116
|
+
if (tldr.length > 8) {
|
|
117
|
+
console.error(`✗ ${name.name}: TL;DR has ${tldr.length} non-empty lines (max 8)`);
|
|
118
|
+
errors++;
|
|
119
|
+
} else if (tldr.length > 5) {
|
|
120
|
+
console.warn(`⚠ ${name.name}: TL;DR has ${tldr.length} non-empty lines (recommend ≤5)`);
|
|
121
|
+
warnings++;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const totalLines = text.split('\n').length;
|
|
126
|
+
if (totalLines > 200) {
|
|
127
|
+
console.warn(`⚠ ${name.name}: SKILL.md is ${totalLines} lines (recommend ≤200)`);
|
|
128
|
+
warnings++;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
36
131
|
}
|
|
37
132
|
|
|
133
|
+
console.log(`validate-skills: ${migratedCount}/${totalCount} skills migrated to v2 (compressed:true)`);
|
|
134
|
+
if (warnings) console.warn(`validate-skills: ${warnings} warning(s)`);
|
|
38
135
|
if (errors) {
|
|
39
136
|
console.error(`validate-skills: ${errors} error(s)`);
|
|
40
137
|
process.exit(1);
|
package/skills/CLAUDE.md
CHANGED
|
@@ -129,11 +129,6 @@ The YAML frontmatter `description` field is critical for skill discovery: includ
|
|
|
129
129
|
/plugin install systems-architecture@wondelai-skills # DDIA, System Design, Clean Architecture, Release It!, High Performance Browser Networking
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
### Via skills.sh
|
|
133
|
-
```bash
|
|
134
|
-
npx skills add wondelai/skills # All skills
|
|
135
|
-
npx skills add wondelai/skills/{skill-name} # Individual skill
|
|
136
|
-
```
|
|
137
132
|
|
|
138
133
|
## Versioning Policy
|
|
139
134
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cm-<name>
|
|
3
|
+
description: "<one-line trigger sentence: when to use this skill>"
|
|
4
|
+
token_budget: 1500
|
|
5
|
+
compressed: true
|
|
6
|
+
deprecated: false
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# cm-<name> — <short title>
|
|
10
|
+
|
|
11
|
+
## TL;DR
|
|
12
|
+
- **Use when**: <trigger condition, 1 line>
|
|
13
|
+
- **Output**: <what artifact/state changes>
|
|
14
|
+
- **Handoff**: reads `.cm/handoff/<prev>.json` (if any), writes `.cm/handoff/<this>.json` (if any)
|
|
15
|
+
- **Chain**: typically follows `cm-<prev>`, precedes `cm-<next>`
|
|
16
|
+
- **Budget**: 1500 tokens (loaded full only when needed)
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
<2-4 bullets describing concrete situations. Skip if TL;DR is sufficient.>
|
|
20
|
+
|
|
21
|
+
## Adaptive Depth
|
|
22
|
+
|
|
23
|
+
Read `.cm/project-tier.md` (written by `cm tier classify`) and pick a rendering depth:
|
|
24
|
+
|
|
25
|
+
- **LITE / STANDARD** → stop after TL;DR. Skip "Full Protocol" unless the task explicitly requires deep instructions.
|
|
26
|
+
- **PROFESSIONAL / ENTERPRISE** → load the full protocol below.
|
|
27
|
+
|
|
28
|
+
If the tier file is absent, default to STANDARD.
|
|
29
|
+
|
|
30
|
+
## Full Protocol
|
|
31
|
+
<Detailed instructions, examples, rules. Agent loads this only when TL;DR is insufficient or tier ≥ PROFESSIONAL.>
|
|
32
|
+
|
|
33
|
+
### Step 1: <name>
|
|
34
|
+
<...>
|
|
35
|
+
|
|
36
|
+
### Step 2: <name>
|
|
37
|
+
<...>
|
|
38
|
+
|
|
39
|
+
## Integration
|
|
40
|
+
|
|
41
|
+
| After this skill... | Use skill |
|
|
42
|
+
|---|---|
|
|
43
|
+
| <situation> | `cm-<next>` |
|
|
44
|
+
|
|
45
|
+
## Persona Dispatch (optional)
|
|
46
|
+
|
|
47
|
+
For complex tasks, dispatch via persona subagents in `agents/`:
|
|
48
|
+
|
|
49
|
+
| Need | Persona |
|
|
50
|
+
|------|---------|
|
|
51
|
+
| Clarify scope/intent | `pm` |
|
|
52
|
+
| Design / trade-offs | `architect` |
|
|
53
|
+
| Write code | `engineer` |
|
|
54
|
+
| Independent review | `reviewer` |
|
|
55
|
+
| Threat model / scan | `security` |
|
|
56
|
+
|
|
57
|
+
## Anti-Patterns
|
|
58
|
+
- ❌ <thing not to do>
|
|
59
|
+
- ❌ <thing not to do>
|
|
60
|
+
|
|
61
|
+
## The Bottom Line
|
|
62
|
+
**<one-sentence rule>**
|
|
@@ -35,11 +35,6 @@ Read .cm/skeleton-index.md (~500 tokens) — modules, entry points, config fi
|
|
|
35
35
|
Query: cm_query(scope="learnings", query="{current module or error type}", limit=5)
|
|
36
36
|
OR read .cm/memory/learnings.json filtered to scope == "global" | "module:X"
|
|
37
37
|
|
|
38
|
-
# OpenViking backend (if storage.backend: viking in .cm/config.yaml):
|
|
39
|
-
Query: cm_query(query="{current module or error type}", limit=5)
|
|
40
|
-
→ OpenViking uses VECTOR SEMANTIC SEARCH — no need for exact keyword match.
|
|
41
|
-
"i18n locale update" will also match "translation missing" and "locale fallback"
|
|
42
|
-
|
|
43
38
|
Rules:
|
|
44
39
|
NEVER load status = "invalidated" (proven wrong)
|
|
45
40
|
CAUTION status = "corrected" (verify before applying)
|
|
@@ -64,9 +59,8 @@ cm continuity budget (or: loadBudget + checkBudget in code)
|
|
|
64
59
|
> L0 indexes + context bus + scope filter make this possible.
|
|
65
60
|
> Only escalate to L2 when L0/L1 explicitly flag the need.
|
|
66
61
|
>
|
|
67
|
-
> **
|
|
68
|
-
>
|
|
69
|
-
> Switch: set `storage.backend: viking` in `.cm/config.yaml`.
|
|
62
|
+
> **Legacy note:** Some older projects may still keep `storage.backend: viking` in config.
|
|
63
|
+
> CodyMaster now routes that back to SQLite, so do not design workflows around a separate Viking backend.
|
|
70
64
|
|
|
71
65
|
---
|
|
72
66
|
|
|
@@ -15,9 +15,26 @@ import subprocess
|
|
|
15
15
|
import threading
|
|
16
16
|
from pathlib import Path
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# Reuse dispatcher and state manager from the content-factory plugin.
|
|
19
|
+
# After the 2026-05-09 plugin split, content-factory lives in a separate plugin.
|
|
20
|
+
# Resolution order: env override → sibling extracted-plugins (dev) → installed plugin paths.
|
|
19
21
|
SKILLS_DIR = Path(__file__).resolve().parent.parent.parent
|
|
20
|
-
|
|
22
|
+
REPO_ROOT = SKILLS_DIR.parent
|
|
23
|
+
|
|
24
|
+
def _find_cf_scripts() -> Path:
|
|
25
|
+
env = os.environ.get("CONTENT_FACTORY_SCRIPTS")
|
|
26
|
+
if env and Path(env).exists():
|
|
27
|
+
return Path(env)
|
|
28
|
+
candidates = [
|
|
29
|
+
REPO_ROOT / "extracted-plugins" / "content-factory" / "skills" / "content-factory" / "scripts",
|
|
30
|
+
Path.home() / ".claude" / "plugins" / "cache" / "content-factory" / "skills" / "content-factory" / "scripts",
|
|
31
|
+
]
|
|
32
|
+
for c in candidates:
|
|
33
|
+
if c.exists():
|
|
34
|
+
return c
|
|
35
|
+
return SKILLS_DIR / "cm-content-factory" / "scripts" # legacy fallback
|
|
36
|
+
|
|
37
|
+
CF_SCRIPTS = _find_cf_scripts()
|
|
21
38
|
sys.path.append(str(CF_SCRIPTS))
|
|
22
39
|
|
|
23
40
|
try:
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cm-brainstorm-idea
|
|
3
3
|
description: "Strategic analysis gate for existing products — multi-dimensional evaluation (tech, product, design, business) using Design Thinking + 9 Windows (TRIZ) + Double Diamond. Outputs 2-3 qualified options with recommendations. Use BEFORE cm-planning for complex initiatives and enhancements on existing codebases."
|
|
4
|
+
token_budget: 1500
|
|
5
|
+
compressed: true
|
|
6
|
+
deprecated: false
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Brainstorm Idea — Strategic Analysis Gate
|
|
7
10
|
|
|
11
|
+
## TL;DR
|
|
12
|
+
- **Use before** cm-planning for complex/ambiguous initiatives
|
|
13
|
+
- **Frameworks**: Design Thinking + 9 Windows (TRIZ) + Double Diamond
|
|
14
|
+
- **Output**: 2-3 qualified options + recommendation
|
|
15
|
+
- **Writes**: handoff/intent.json
|
|
16
|
+
|
|
8
17
|
> **Understand deeply. Evaluate multi-dimensionally. Propose qualified options. Then — and only then — plan.**
|
|
9
18
|
> This skill is the BRIDGE between an existing product and its next evolution.
|
|
10
19
|
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cm-browse
|
|
3
|
+
description: "Use when you need visual QA, screenshots, or post-deploy smoke testing through a real browser with Playwright."
|
|
4
|
+
---
|
|
1
5
|
# cm-browse — local Playwright daemon
|
|
2
6
|
|
|
7
|
+
> **Full runbook:** [docs/browse-daemon.md](../../docs/browse-daemon.md) (install Chromium, token, troubleshooting).
|
|
8
|
+
|
|
3
9
|
## When to use
|
|
4
10
|
|
|
5
11
|
- Visual QA, screenshots, post-deploy smoke through a **real browser** (not only Stitch/Pencil).
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cm-clean-code
|
|
3
3
|
description: "Code hygiene gate — detect and eliminate dead code, duplicates, naming mess, and code smells. TRIZ-powered. Run after features, before PRs, during debt sprints."
|
|
4
|
+
token_budget: 1200
|
|
5
|
+
compressed: true
|
|
6
|
+
deprecated: false
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Clean Code — Code Hygiene Gate
|
|
7
10
|
|
|
11
|
+
## TL;DR
|
|
12
|
+
- **Use after** a feature lands, before PR review
|
|
13
|
+
- **Detects**: dead code, duplicates, naming smells, dependency drift
|
|
14
|
+
- **Powered by** TRIZ contradictions and Boy Scout rule
|
|
15
|
+
- **Next**: cm-code-review
|
|
16
|
+
|
|
8
17
|
> **Code that works is not enough. Code must be CLEAN.**
|
|
9
18
|
> Inspired by Clean Code (Robert C. Martin) + Refactoring (Martin Fowler) + TRIZ.
|
|
10
19
|
|
|
@@ -295,6 +304,17 @@ cm-execution → cm-clean-code → cm-code-review → cm-quality-gate → cm-saf
|
|
|
295
304
|
(build) (hygiene) (review) (verify) (ship)
|
|
296
305
|
```
|
|
297
306
|
|
|
307
|
+
## Karpathy Discipline — Simplicity First
|
|
308
|
+
|
|
309
|
+
Combat over-engineering at the source, not after the fact:
|
|
310
|
+
- **No features beyond what was asked.** No "while I'm here" additions.
|
|
311
|
+
- **No abstractions for single-use code.** Three similar lines beats a premature interface.
|
|
312
|
+
- **No flexibility/configurability that wasn't requested.** YAGNI is the default.
|
|
313
|
+
- **No error handling for impossible scenarios.** Trust internal callers; validate at boundaries.
|
|
314
|
+
- **200 lines that should be 50 → rewrite, don't ship.**
|
|
315
|
+
|
|
316
|
+
**Senior-engineer test:** "Would a senior call this overcomplicated?" If yes, simplify before commit.
|
|
317
|
+
|
|
298
318
|
## The Bottom Line
|
|
299
319
|
|
|
300
320
|
**Clean code = investment. Dirty code = debt. Pay as you go, or pay with interest later.**
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cm-code-review
|
|
3
3
|
description: "Full review lifecycle — request reviews, handle feedback with technical rigor, and complete branch integration. Use when completing tasks, receiving feedback, or finishing feature branches."
|
|
4
|
+
token_budget: 1500
|
|
5
|
+
compressed: true
|
|
6
|
+
deprecated: false
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Code Review — Request + Receive + Complete
|
|
7
10
|
|
|
11
|
+
## TL;DR
|
|
12
|
+
- **Use when** task complete, before/during PR review
|
|
13
|
+
- **Pre-review**: lint, tests, diff scan, blast radius
|
|
14
|
+
- **Reads**: handoff/exec.json — **Writes**: handoff/review.json
|
|
15
|
+
- **Severity**: info | warn | error | critical
|
|
16
|
+
- **Next**: cm-quality-gate
|
|
17
|
+
|
|
8
18
|
> **Full review lifecycle in one skill:** Request → Receive → Integrate.
|
|
9
19
|
|
|
10
20
|
## Part A: Requesting Code Review
|
|
@@ -146,6 +156,17 @@ After processing review feedback, ALWAYS update `.cm/CONTINUITY.md`:
|
|
|
146
156
|
| `cm-identity-guard` | Before git push |
|
|
147
157
|
| `cm-git-worktrees` | Cleanup worktree after completion |
|
|
148
158
|
|
|
159
|
+
## Karpathy Discipline — Review Checklist
|
|
160
|
+
|
|
161
|
+
Block any PR/diff that violates these regardless of green tests:
|
|
162
|
+
- **Scope creep:** changed line that doesn't trace to the task → request removal.
|
|
163
|
+
- **Bloat:** new abstraction with one caller, premature config, error paths for impossible inputs → request simplification.
|
|
164
|
+
- **Side-effect edits:** unrelated formatting, renamed identifiers, "improved" comments not in scope → revert.
|
|
165
|
+
- **Hidden assumptions:** logic that depends on an unstated invariant → require it surfaced (test or doc) or rejected.
|
|
166
|
+
- **Weak goals:** PR description says "make it work" with no verifiable criterion → send back to planning.
|
|
167
|
+
|
|
168
|
+
**Review heuristic:** if you can't answer "what task forced this line?" for every changed line, the diff is too wide.
|
|
169
|
+
|
|
149
170
|
## The Bottom Line
|
|
150
171
|
|
|
151
172
|
**Review early. Verify feedback. Ship with evidence, not hope.**
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cm-codeintell
|
|
3
3
|
description: "Unified code intelligence — Skeleton Index (zero-dep, <4s) + AST knowledge graph (CodeGraph) + architecture diagrams (Mermaid) + smart context builder. Pre-indexes code structure so AI agents understand any codebase instantly. 95% token compression for onboarding. 30% fewer tokens for deep analysis."
|
|
4
|
+
token_budget: 1500
|
|
5
|
+
compressed: true
|
|
6
|
+
deprecated: false
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Code Intelligence — Structural Understanding for AI Agents
|
|
7
10
|
|
|
11
|
+
## TL;DR
|
|
12
|
+
- **Use to** index codebase for fast structural understanding
|
|
13
|
+
- **Outputs**: skeleton index, AST graph, Mermaid diagrams
|
|
14
|
+
- **Token saving**: ~95% for onboarding, ~30% for deep analysis
|
|
15
|
+
- **Next**: cm-planning or cm-debugging
|
|
16
|
+
|
|
8
17
|
> **Stop scanning. Start querying.** Skeleton Index (<4s, zero deps) + AST graph + architecture diagrams = instant code understanding.
|
|
9
18
|
> Inspired by [CodeGraph](https://github.com/colbymchenry/codegraph) + [GitDiagram](https://github.com/ahmedkhaleel2004/gitdiagram).
|
|
10
19
|
> TRIZ-optimized: 10 inventive principles applied.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cm-conductor-worktrees
|
|
3
|
+
description: "Use when you need to manage parallel git worktrees for isolated feature development."
|
|
4
|
+
---
|
|
5
|
+
# cm-conductor-worktrees — parallel worktrees
|
|
6
|
+
|
|
7
|
+
## CLI
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cm conductor add --at ../my-feature-wt --branch feat/my-feature --base main
|
|
11
|
+
cm conductor list
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Practice
|
|
15
|
+
|
|
16
|
+
- One **branch + worktree** per parallel agent/session.
|
|
17
|
+
- Reconcile with `git merge` / PR; avoid two agents editing the same files without coordination.
|
|
18
|
+
|
|
19
|
+
## ELI16 (3+ sessions)
|
|
20
|
+
|
|
21
|
+
When running **three or more** parallel sessions, re-ground each session with:
|
|
22
|
+
|
|
23
|
+
- Current branch name + worktree path.
|
|
24
|
+
- Last artifact from `cm sprint status` or `.cm/context-bus.json`.
|
|
25
|
+
|
|
26
|
+
## Future
|
|
27
|
+
|
|
28
|
+
Dashboard UI for active sprints is **not** in CLI yet — use `cm dashboard` / Hamster UI where available.
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: cm-conductor-worktrees
|
|
3
|
+
description: "[Deprecated] parallel execution mode. Use `cm-execution` instead."
|
|
4
|
+
deprecated: true
|
|
5
|
+
merged_into: cm-execution
|
|
6
|
+
---
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
# cm-conductor-worktrees — Deprecated
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
cm
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Practice
|
|
11
|
-
|
|
12
|
-
- One **branch + worktree** per parallel agent/session.
|
|
13
|
-
- Reconcile with `git merge` / PR; avoid two agents editing the same files without coordination.
|
|
10
|
+
> ⚠️ This skill is deprecated as of CodyMaster v6.0.0 and will be removed in v6.1.0.
|
|
11
|
+
>
|
|
12
|
+
> **Use `cm-execution` instead.** parallel execution mode.
|
|
13
|
+
>
|
|
14
|
+
> See [docs/migration-v2.md](../../docs/migration-v2.md) for the full mapping.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
The original content is preserved at [SKILL.archive.md](SKILL.archive.md) for reference.
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
## Migration
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
```bash
|
|
21
|
+
# Old: cm <use this skill>
|
|
22
|
+
# New (v6.0+): cm execution <equivalent action>
|
|
23
|
+
```
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
If you depend on a capability that didn't carry over, please file an issue:
|
|
26
|
+
https://github.com/tody-agent/codymaster/issues
|