codymaster 7.0.2 → 7.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.md +38 -1
- package/dist/agent/codex.js +73 -21
- package/dist/agent-dispatch.js +63 -48
- package/dist/cli/commands/brain.js +18 -0
- package/dist/cli/commands/design-studio.js +1 -1
- package/dist/cm-suggest.js +3 -3
- package/dist/dashboard-project-summary.js +9 -0
- package/dist/dashboard.js +11 -5
- package/dist/execution-analyzer.js +9 -1
- package/dist/judge.js +16 -15
- package/dist/mcp-context-server.js +45 -23
- package/dist/mcp-skills-tools.js +2 -2
- package/dist/skill-chain.js +26 -3
- package/dist/skill-token-report.js +105 -0
- package/dist/sprint-pipeline.js +3 -3
- package/dist/ui/onboarding.js +3 -4
- package/dist/utils/design-taste.js +1 -1
- package/dist/utils/output-compress.js +8 -0
- package/package.json +2 -1
- package/public/dashboard/app.js +40 -13
- package/public/dashboard/index.html +190 -5
- package/public/dashboard/style.css +1 -1
- package/scripts/build-skills.mjs +36 -2
- package/scripts/mcp-bridge.js +41 -24
- package/scripts/pack-plugin.mjs +206 -0
- package/skills/cm-ads-tracker/SKILL.md +401 -0
- package/skills/cm-ads-tracker/evals/evals.json +55 -0
- package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
- package/skills/cm-ads-tracker/references/industry-events.md +294 -0
- package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
- package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
- package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
- package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
- package/skills/cm-auto-publisher/SKILL.md +81 -0
- package/skills/cm-booking-calendar/SKILL.md +521 -0
- package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
- package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
- package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
- package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
- package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
- package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
- package/skills/cm-brainstorm-idea/SKILL.md +5 -5
- package/skills/cm-code-review/SKILL.md +2 -2
- package/skills/cm-codeintell/SKILL.md +47 -580
- package/skills/cm-codeintell/references/integration-workflows.md +23 -0
- package/skills/cm-codeintell/references/layer-0-skeleton.md +54 -0
- package/skills/cm-codeintell/references/layer-1-codegraph.md +58 -0
- package/skills/cm-codeintell/references/layer-2-architecture.md +31 -0
- package/skills/cm-codeintell/references/layer-3-context-builder.md +32 -0
- package/skills/cm-content-factory/.content-factory-state.json +132 -0
- package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
- package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
- 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 +5 -0
- 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 +1 -0
- package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
- package/skills/cm-content-factory/AGENTS.md +61 -0
- package/skills/cm-content-factory/CLAUDE.md +63 -0
- package/skills/cm-content-factory/CURSOR.md +43 -0
- package/skills/cm-content-factory/Content Factory.zip +0 -0
- package/skills/cm-content-factory/SKILL.md +416 -0
- package/skills/cm-content-factory/cf +313 -0
- package/skills/cm-content-factory/config.schema.json +397 -0
- package/skills/cm-content-factory/dashboard/app.js +556 -0
- package/skills/cm-content-factory/dashboard/index.html +397 -0
- package/skills/cm-content-factory/dashboard/style.css +1211 -0
- package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
- package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
- package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
- package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
- package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
- package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
- package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
- package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
- package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
- package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
- package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
- package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
- package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
- package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
- package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
- package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
- package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
- package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
- package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
- package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
- package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
- package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
- package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
- package/skills/cm-content-factory/extensions/hooks.py +126 -0
- package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
- package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
- package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
- package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
- package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
- package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
- package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
- package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
- package/skills/cm-content-factory/landing/docs/index.html +240 -0
- package/skills/cm-content-factory/landing/index.html +680 -0
- package/skills/cm-content-factory/landing/script.js +143 -0
- package/skills/cm-content-factory/landing/style.css +1216 -0
- package/skills/cm-content-factory/landing/translations.js +508 -0
- package/skills/cm-content-factory/logs/events.jsonl +11 -0
- package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
- package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
- package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
- package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
- package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
- package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
- package/skills/cm-content-factory/scripts/audit.py +106 -0
- package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
- package/skills/cm-content-factory/scripts/deploy.py +146 -0
- package/skills/cm-content-factory/scripts/extract.py +132 -0
- package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
- package/skills/cm-content-factory/scripts/memory.py +521 -0
- package/skills/cm-content-factory/scripts/monetize.py +239 -0
- package/skills/cm-content-factory/scripts/pipeline.py +357 -0
- package/skills/cm-content-factory/scripts/plan.py +163 -0
- package/skills/cm-content-factory/scripts/publish.py +145 -0
- package/skills/cm-content-factory/scripts/research.py +337 -0
- package/skills/cm-content-factory/scripts/scaffold.py +464 -0
- package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
- package/skills/cm-content-factory/scripts/seo.py +90 -0
- package/skills/cm-content-factory/scripts/state_manager.py +320 -0
- package/skills/cm-content-factory/scripts/token_manager.py +268 -0
- package/skills/cm-content-factory/scripts/validate.py +221 -0
- package/skills/cm-content-factory/scripts/wizard.py +329 -0
- package/skills/cm-content-factory/scripts/write.py +93 -0
- 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 +90 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
- package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
- package/skills/cm-content-factory/tests/conftest.py +66 -0
- package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
- package/skills/cm-content-factory/tests/test_memory.py +128 -0
- package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
- package/skills/cm-content-factory/tests/test_research.py +56 -0
- package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
- package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
- package/skills/cm-content-factory/tests/test_wizard.py +121 -0
- package/skills/cm-continuity/SKILL.md +49 -480
- package/skills/cm-continuity/references/cm-uri-scheme.md +23 -0
- package/skills/cm-continuity/references/continuity-template.md +48 -0
- package/skills/cm-continuity/references/mcp-context-server.md +27 -0
- package/skills/cm-continuity/references/memory-architecture.md +26 -0
- package/skills/cm-continuity/references/memory-audit.md +18 -0
- package/skills/cm-continuity/references/session-protocol.md +31 -0
- package/skills/cm-continuity/references/storage-formats.md +20 -0
- package/skills/cm-cro-methodology/SKILL.md +290 -0
- package/skills/cm-cro-methodology/references/COPYWRITING.md +178 -0
- package/skills/cm-cro-methodology/references/OBJECTIONS.md +135 -0
- package/skills/cm-cro-methodology/references/PERSUASION.md +158 -0
- package/skills/cm-cro-methodology/references/RESEARCH.md +220 -0
- package/skills/cm-cro-methodology/references/funnel-analysis.md +365 -0
- package/skills/cm-cro-methodology/references/testing-methodology.md +330 -0
- package/skills/cm-design-system/SKILL.md +5 -6
- package/skills/cm-execution/SKILL.md +61 -379
- package/skills/cm-execution/references/mode-a-batch.md +28 -0
- package/skills/cm-execution/references/mode-b-subagent.md +46 -0
- package/skills/cm-execution/references/mode-c-parallel.md +39 -0
- package/skills/cm-execution/references/mode-d-rarv.md +62 -0
- package/skills/cm-execution/references/mode-e-triz-parallel.md +53 -0
- package/skills/cm-execution/references/mode-f-party.md +61 -0
- package/skills/cm-execution/references/persona-dispatch.md +22 -0
- package/skills/cm-execution/references/security-rules.md +47 -0
- package/skills/cm-google-form/SKILL.md +266 -0
- package/skills/cm-google-form/templates/apps-script.js +55 -0
- package/skills/cm-google-form/templates/form-markup.html +110 -0
- package/skills/cm-google-form/templates/form-submit.js +201 -0
- package/skills/cm-google-form/templates/toast.css +152 -0
- package/skills/cm-growth-hacking/SKILL.md +282 -0
- package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
- package/skills/cm-growth-hacking/calendar-integration.md +264 -0
- package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
- package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
- package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
- package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
- package/skills/cm-growth-hacking/tracking-events.md +246 -0
- package/skills/cm-growth-hacking/trigger-system.md +342 -0
- package/skills/cm-how-it-work/SKILL.md +8 -9
- package/skills/cm-identity-guard/SKILL.md +4 -4
- package/skills/cm-jtbd/SKILL.md +98 -0
- package/skills/cm-notebooklm/SKILL.md +156 -0
- package/skills/cm-notebooklm/references/command_reference.md +94 -0
- package/skills/cm-notebooklm/references/workflows.md +60 -0
- package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
- package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
- package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
- package/skills/cm-planning/SKILL.md +3 -3
- package/skills/cm-project-bootstrap/SKILL.md +2 -2
- package/skills/cm-quality-gate/SKILL.md +1 -1
- package/skills/cm-readit/SKILL.md +289 -0
- package/skills/cm-readit/audio-player.md +206 -0
- package/skills/cm-readit/examples/blog-reader.js +352 -0
- package/skills/cm-readit/examples/voice-cro.js +390 -0
- package/skills/cm-readit/tts-engine.md +262 -0
- package/skills/cm-readit/ui-patterns.md +362 -0
- package/skills/cm-readit/voice-cro.md +223 -0
- package/skills/cm-safe-deploy/SKILL.md +80 -510
- package/skills/cm-safe-deploy/references/gate-0-5-security-scan.md +31 -0
- package/skills/cm-safe-deploy/references/gate-0-secret-hygiene.md +68 -0
- package/skills/cm-safe-deploy/references/gate-1-syntax.md +23 -0
- package/skills/cm-safe-deploy/references/gate-2-test-suite.md +28 -0
- package/skills/cm-safe-deploy/references/gate-3-i18n.md +19 -0
- package/skills/cm-safe-deploy/references/gate-4-5-build-dist.md +16 -0
- package/skills/cm-safe-deploy/references/gate-6-deploy-smoke.md +18 -0
- package/skills/cm-safe-deploy/references/rollback.md +17 -0
- package/skills/cm-safe-deploy/references/setup-new-project.md +20 -0
- package/skills/cm-skill-index/SKILL.md +15 -15
- package/skills/cm-start/SKILL.md +1 -1
- package/skills/cm-tdd/SKILL.md +51 -356
- package/skills/cm-tdd/references/bugfix-example.md +15 -0
- package/skills/cm-tdd/references/rationalizations.md +20 -0
- package/skills/cm-tdd/references/red-green-refactor.md +33 -0
- package/skills/cm-tdd/references/stuck-debugging.md +18 -0
- package/skills/cm-tdd/references/test-quality.md +19 -0
- package/skills/cm-ux-master/SKILL.md +368 -115
- package/skills/profiles/core.txt +1 -4
- package/skills/profiles/design.txt +1 -2
- package/skills/profiles/full.txt +10 -16
- package/skills/profiles/growth.txt +9 -9
- package/skills/profiles/top35.json +13 -13
- package/skills/cm-conductor-worktrees/SKILL.archive.md +0 -28
- package/skills/cm-conductor-worktrees/SKILL.md +0 -26
- package/skills/cm-dashboard/SKILL.archive.md +0 -15
- package/skills/cm-dashboard/SKILL.md +0 -26
- package/skills/cm-dashboard/ui/app.js +0 -1278
- package/skills/cm-dashboard/ui/index.html +0 -206
- package/skills/cm-dashboard/ui/style.css +0 -440
- package/skills/cm-design-studio/SKILL.archive.md +0 -34
- package/skills/cm-design-studio/SKILL.md +0 -26
- package/skills/cm-engineering-meta/SKILL.archive.md +0 -73
- package/skills/cm-engineering-meta/SKILL.md +0 -26
- package/skills/cm-git-worktrees/SKILL.archive.md +0 -157
- package/skills/cm-git-worktrees/SKILL.md +0 -26
- package/skills/cm-post-deploy-canary/SKILL.archive.md +0 -22
- package/skills/cm-post-deploy-canary/SKILL.md +0 -26
- package/skills/cm-qa-visual-cli/SKILL.archive.md +0 -22
- package/skills/cm-qa-visual-cli/SKILL.md +0 -26
- package/skills/cm-second-opinion-cli/SKILL.archive.md +0 -23
- package/skills/cm-second-opinion-cli/SKILL.md +0 -26
- package/skills/cm-secret-shield/SKILL.archive.md +0 -580
- package/skills/cm-secret-shield/SKILL.md +0 -26
- package/skills/cm-security-gate/SKILL.archive.md +0 -239
- package/skills/cm-security-gate/SKILL.md +0 -26
- package/skills/cm-skill-health/SKILL.archive.md +0 -83
- package/skills/cm-skill-health/SKILL.md +0 -26
- package/skills/cm-skill-mastery/SKILL.archive.md +0 -156
- package/skills/cm-skill-mastery/SKILL.md +0 -26
- package/skills/cm-skill-search/SKILL.archive.md +0 -49
- package/skills/cm-skill-search/SKILL.md +0 -26
- package/skills/cm-skill-share/SKILL.archive.md +0 -58
- package/skills/cm-skill-share/SKILL.md +0 -26
- package/skills/cm-test-gate/SKILL.archive.md +0 -245
- package/skills/cm-test-gate/SKILL.md +0 -26
- package/skills/cm-ui-preview/SKILL.archive.md +0 -153
- package/skills/cm-ui-preview/SKILL.md +0 -26
package/dist/judge.js
CHANGED
|
@@ -16,11 +16,10 @@ const SKILL_DOMAIN = {
|
|
|
16
16
|
'cm-tdd': 'engineering',
|
|
17
17
|
'cm-debugging': 'engineering',
|
|
18
18
|
'cm-quality-gate': 'engineering',
|
|
19
|
-
'cm-test-gate': 'engineering',
|
|
20
19
|
'cm-code-review': 'engineering',
|
|
21
20
|
'cm-safe-deploy': 'operations',
|
|
22
21
|
'cm-identity-guard': 'operations',
|
|
23
|
-
'cm-
|
|
22
|
+
'cm-codeintell': 'operations',
|
|
24
23
|
'cm-terminal': 'operations',
|
|
25
24
|
'cm-planning': 'product',
|
|
26
25
|
'cm-ux-master': 'product',
|
|
@@ -28,30 +27,32 @@ const SKILL_DOMAIN = {
|
|
|
28
27
|
'cm-project-bootstrap': 'product',
|
|
29
28
|
'cm-content-factory': 'growth',
|
|
30
29
|
'cm-ads-tracker': 'growth',
|
|
31
|
-
'cro-methodology': 'growth',
|
|
32
|
-
'booking-calendar': 'growth',
|
|
30
|
+
'cm-cro-methodology': 'growth',
|
|
31
|
+
'cm-booking-calendar': 'growth',
|
|
33
32
|
'cm-execution': 'orchestration',
|
|
34
33
|
'cm-continuity': 'orchestration',
|
|
35
|
-
'cm-skill-
|
|
34
|
+
'cm-skill-index': 'orchestration',
|
|
36
35
|
'cm-safe-i18n': 'orchestration',
|
|
37
36
|
};
|
|
38
37
|
// ─── Agent Affinity ─────────────────────────────────────────────────────────
|
|
39
38
|
const AGENT_AFFINITY = {
|
|
40
|
-
engineering: ['claude-code', 'cursor', 'antigravity'],
|
|
41
|
-
operations: ['claude-code', 'antigravity', 'cursor'],
|
|
42
|
-
product: ['antigravity', 'claude-code', 'cursor'],
|
|
43
|
-
growth: ['antigravity', 'claude-code', 'cursor'],
|
|
44
|
-
orchestration: ['antigravity', 'claude-code', 'cursor'],
|
|
45
|
-
specialized: ['antigravity', 'claude-code', 'cursor'],
|
|
46
|
-
debugging: ['claude-code', 'cursor', 'antigravity'],
|
|
47
|
-
review: ['antigravity', 'claude-code'],
|
|
48
|
-
documentation: ['antigravity', 'claude-code'],
|
|
49
|
-
design: ['cursor', 'antigravity'],
|
|
39
|
+
engineering: ['claude-code', 'codex', 'opencode', 'cursor', 'antigravity'],
|
|
40
|
+
operations: ['claude-code', 'codex', 'opencode', 'antigravity', 'cursor'],
|
|
41
|
+
product: ['antigravity', 'claude-code', 'cursor', 'gemini-cli'],
|
|
42
|
+
growth: ['antigravity', 'gemini-cli', 'claude-code', 'cursor'],
|
|
43
|
+
orchestration: ['antigravity', 'claude-code', 'cursor', 'gemini-cli'],
|
|
44
|
+
specialized: ['antigravity', 'claude-code', 'codex', 'opencode', 'cursor'],
|
|
45
|
+
debugging: ['claude-code', 'codex', 'opencode', 'cursor', 'antigravity'],
|
|
46
|
+
review: ['antigravity', 'claude-code', 'codex', 'opencode'],
|
|
47
|
+
documentation: ['antigravity', 'claude-code', 'gemini-cli'],
|
|
48
|
+
design: ['cursor', 'antigravity', 'gemini-cli'],
|
|
50
49
|
};
|
|
51
50
|
// ─── Agent Display ──────────────────────────────────────────────────────────
|
|
52
51
|
const AGENT_DISPLAY = {
|
|
53
52
|
'antigravity': 'Google Antigravity',
|
|
54
53
|
'claude-code': 'Claude Code',
|
|
54
|
+
'codex': 'OpenAI Codex',
|
|
55
|
+
'opencode': 'OpenCode',
|
|
55
56
|
'cursor': 'Cursor',
|
|
56
57
|
'gemini-cli': 'Gemini CLI',
|
|
57
58
|
'windsurf': 'Windsurf',
|
|
@@ -562,11 +562,19 @@ const TOOLS = [
|
|
|
562
562
|
},
|
|
563
563
|
},
|
|
564
564
|
];
|
|
565
|
-
// ─── MCP stdio protocol (JSON-RPC 2.0,
|
|
565
|
+
// ─── MCP stdio protocol (JSON-RPC 2.0, auto-detect framing) ─────────────────
|
|
566
|
+
// Supports both NDJSON (MCP spec) and Content-Length framing (LSP-style).
|
|
567
|
+
// Auto-detects based on the first message received from the client.
|
|
568
|
+
let useContentLengthFraming = false;
|
|
566
569
|
function sendMessage(msg) {
|
|
567
570
|
const json = JSON.stringify(msg);
|
|
568
|
-
|
|
569
|
-
|
|
571
|
+
if (useContentLengthFraming) {
|
|
572
|
+
const header = `Content-Length: ${Buffer.byteLength(json)}\r\n\r\n`;
|
|
573
|
+
process.stdout.write(header + json);
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
process.stdout.write(json + '\n');
|
|
577
|
+
}
|
|
570
578
|
}
|
|
571
579
|
function respond(id, result) {
|
|
572
580
|
sendMessage({ jsonrpc: '2.0', id, result });
|
|
@@ -576,10 +584,11 @@ function respondError(id, code, message) {
|
|
|
576
584
|
}
|
|
577
585
|
function handleRequest(msg) {
|
|
578
586
|
return __awaiter(this, void 0, void 0, function* () {
|
|
587
|
+
var _a;
|
|
579
588
|
const { id, method, params } = msg;
|
|
580
589
|
if (method === 'initialize') {
|
|
581
590
|
respond(id, {
|
|
582
|
-
protocolVersion: '2024-11-05',
|
|
591
|
+
protocolVersion: (_a = params === null || params === void 0 ? void 0 : params.protocolVersion) !== null && _a !== void 0 ? _a : '2024-11-05',
|
|
583
592
|
capabilities: { tools: {} },
|
|
584
593
|
serverInfo: { name: SERVER_NAME, version: SERVER_VERSION },
|
|
585
594
|
});
|
|
@@ -651,31 +660,44 @@ function handleRequest(msg) {
|
|
|
651
660
|
}
|
|
652
661
|
});
|
|
653
662
|
}
|
|
654
|
-
// ─── Stdin reader (Content-Length
|
|
655
|
-
let
|
|
663
|
+
// ─── Stdin reader (supports both NDJSON and Content-Length framing) ─────────
|
|
664
|
+
let stdinBuffer = '';
|
|
665
|
+
process.stdin.setEncoding('utf8');
|
|
656
666
|
process.stdin.on('data', (chunk) => __awaiter(void 0, void 0, void 0, function* () {
|
|
657
|
-
|
|
658
|
-
while (
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
+
stdinBuffer += chunk;
|
|
668
|
+
while (stdinBuffer.length > 0) {
|
|
669
|
+
// Check for Content-Length framing (LSP-style)
|
|
670
|
+
const clMatch = stdinBuffer.match(/^Content-Length:\s*(\d+)\r\n\r\n/i);
|
|
671
|
+
if (clMatch) {
|
|
672
|
+
useContentLengthFraming = true;
|
|
673
|
+
const contentLength = parseInt(clMatch[1], 10);
|
|
674
|
+
const headerEnd = clMatch[0].length;
|
|
675
|
+
if (stdinBuffer.length < headerEnd + contentLength)
|
|
676
|
+
break; // wait for more data
|
|
677
|
+
const body = stdinBuffer.slice(headerEnd, headerEnd + contentLength);
|
|
678
|
+
stdinBuffer = stdinBuffer.slice(headerEnd + contentLength);
|
|
679
|
+
try {
|
|
680
|
+
const msg = JSON.parse(body);
|
|
681
|
+
yield handleRequest(msg);
|
|
682
|
+
}
|
|
683
|
+
catch (_a) {
|
|
684
|
+
// ignore malformed messages
|
|
685
|
+
}
|
|
686
|
+
continue;
|
|
667
687
|
}
|
|
668
|
-
|
|
669
|
-
const
|
|
670
|
-
if (
|
|
688
|
+
// NDJSON: newline-delimited JSON
|
|
689
|
+
const nl = stdinBuffer.indexOf('\n');
|
|
690
|
+
if (nl === -1)
|
|
671
691
|
break;
|
|
672
|
-
const
|
|
673
|
-
|
|
692
|
+
const line = stdinBuffer.slice(0, nl).trim();
|
|
693
|
+
stdinBuffer = stdinBuffer.slice(nl + 1);
|
|
694
|
+
if (!line)
|
|
695
|
+
continue;
|
|
674
696
|
try {
|
|
675
|
-
const msg = JSON.parse(
|
|
697
|
+
const msg = JSON.parse(line);
|
|
676
698
|
yield handleRequest(msg);
|
|
677
699
|
}
|
|
678
|
-
catch (
|
|
700
|
+
catch (_b) {
|
|
679
701
|
// ignore malformed messages
|
|
680
702
|
}
|
|
681
703
|
}
|
package/dist/mcp-skills-tools.js
CHANGED
|
@@ -49,8 +49,8 @@ function cmReviewTool(projectPath) {
|
|
|
49
49
|
function cmQaTool(projectPath) {
|
|
50
50
|
return {
|
|
51
51
|
browse_daemon: 'Run: cm browse start --token <secret> then POST /session/start',
|
|
52
|
-
visual: 'cm
|
|
53
|
-
gates: ['cm-quality-gate'
|
|
52
|
+
visual: 'Use the cm-browse workflow against http://localhost:3000 for visual QA',
|
|
53
|
+
gates: ['cm-quality-gate'],
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
function cmDeployTool(projectPath) {
|
package/dist/skill-chain.js
CHANGED
|
@@ -21,6 +21,7 @@ const builtin_1 = require("./chains/builtin");
|
|
|
21
21
|
const context_bus_1 = require("./context-bus");
|
|
22
22
|
const execution_analyzer_1 = require("./execution-analyzer");
|
|
23
23
|
const storage_backend_1 = require("./storage-backend");
|
|
24
|
+
const skill_execution_cache_1 = require("./skill-execution-cache");
|
|
24
25
|
// ─── Chain Matching ─────────────────────────────────────────────────────────
|
|
25
26
|
// TRIZ #10: Preliminary Action — analyze task BEFORE dispatching
|
|
26
27
|
/**
|
|
@@ -114,15 +115,36 @@ function findChain(chainId) {
|
|
|
114
115
|
function createChainExecution(chain, projectId, taskTitle, agent, projectPath) {
|
|
115
116
|
const now = new Date().toISOString();
|
|
116
117
|
const backend = projectPath ? (0, storage_backend_1.getBackend)(projectPath) : undefined;
|
|
118
|
+
const cache = projectPath ? new skill_execution_cache_1.SkillExecutionCache(projectPath) : undefined;
|
|
117
119
|
let selectedSteps;
|
|
120
|
+
let cacheHit = false;
|
|
118
121
|
backend === null || backend === void 0 ? void 0 : backend.initialize();
|
|
122
|
+
cache === null || cache === void 0 ? void 0 : cache.initialize();
|
|
119
123
|
try {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
const cachedChain = cache === null || cache === void 0 ? void 0 : cache.findCachedChain(taskTitle);
|
|
125
|
+
if (cachedChain === null || cachedChain === void 0 ? void 0 : cachedChain.skillChain.length) {
|
|
126
|
+
const selectedSkills = new Set(cachedChain.skillChain);
|
|
127
|
+
const cachedSteps = chain.steps.filter(step => selectedSkills.has(step.skill));
|
|
128
|
+
if (cachedSteps.length > 0) {
|
|
129
|
+
selectedSteps = cachedSteps;
|
|
130
|
+
cache === null || cache === void 0 ? void 0 : cache.recordHit(cachedChain.taskPattern);
|
|
131
|
+
cacheHit = true;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
selectedSteps = selectTopSkills(taskTitle, chain, 3, {
|
|
135
|
+
getSkillMetric: backend ? (skill) => backend.getSkillMetric(skill) : undefined,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
selectedSteps = selectTopSkills(taskTitle, chain, 3, {
|
|
141
|
+
getSkillMetric: backend ? (skill) => backend.getSkillMetric(skill) : undefined,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
123
144
|
}
|
|
124
145
|
finally {
|
|
125
146
|
backend === null || backend === void 0 ? void 0 : backend.close();
|
|
147
|
+
cache === null || cache === void 0 ? void 0 : cache.close();
|
|
126
148
|
}
|
|
127
149
|
const steps = selectedSteps.map((step, index) => ({
|
|
128
150
|
index,
|
|
@@ -149,6 +171,7 @@ function createChainExecution(chain, projectId, taskTitle, agent, projectPath) {
|
|
|
149
171
|
steps,
|
|
150
172
|
startedAt: now,
|
|
151
173
|
updatedAt: now,
|
|
174
|
+
cacheHit,
|
|
152
175
|
};
|
|
153
176
|
// Init context bus for this chain execution
|
|
154
177
|
if (projectPath) {
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.analyzeSkillTokenFootprint = analyzeSkillTokenFootprint;
|
|
7
|
+
exports.formatSkillTokenReport = formatSkillTokenReport;
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const token_budget_1 = require("./token-budget");
|
|
11
|
+
function fileStat(filePath) {
|
|
12
|
+
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
13
|
+
return {
|
|
14
|
+
path: filePath,
|
|
15
|
+
bytes: Buffer.byteLength(content, 'utf-8'),
|
|
16
|
+
lines: content === '' ? 0 : content.split('\n').length,
|
|
17
|
+
tokens: (0, token_budget_1.estimateTokens)(content),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function addStats(pathLabel, stats) {
|
|
21
|
+
return stats.reduce((acc, stat) => ({
|
|
22
|
+
path: pathLabel,
|
|
23
|
+
bytes: acc.bytes + stat.bytes,
|
|
24
|
+
lines: acc.lines + stat.lines,
|
|
25
|
+
tokens: acc.tokens + stat.tokens,
|
|
26
|
+
}), { path: pathLabel, bytes: 0, lines: 0, tokens: 0 });
|
|
27
|
+
}
|
|
28
|
+
function delta(from, to) {
|
|
29
|
+
return {
|
|
30
|
+
bytes: from.bytes - to.bytes,
|
|
31
|
+
lines: from.lines - to.lines,
|
|
32
|
+
tokens: from.tokens - to.tokens,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function analyzeSkillTokenFootprint(skillName, opts = {}) {
|
|
36
|
+
var _a;
|
|
37
|
+
const projectPath = path_1.default.resolve((_a = opts.projectPath) !== null && _a !== void 0 ? _a : process.cwd());
|
|
38
|
+
const skillPath = path_1.default.join(projectPath, 'skills', skillName);
|
|
39
|
+
const skillMdPath = path_1.default.join(skillPath, 'SKILL.md');
|
|
40
|
+
if (!fs_1.default.existsSync(skillMdPath)) {
|
|
41
|
+
throw new Error(`Skill "${skillName}" not found at ${skillMdPath}`);
|
|
42
|
+
}
|
|
43
|
+
const core = fileStat(skillMdPath);
|
|
44
|
+
const referencesDir = path_1.default.join(skillPath, 'references');
|
|
45
|
+
const references = fs_1.default.existsSync(referencesDir)
|
|
46
|
+
? fs_1.default.readdirSync(referencesDir, { withFileTypes: true })
|
|
47
|
+
.filter((entry) => entry.isFile())
|
|
48
|
+
.map((entry) => path_1.default.join(referencesDir, entry.name))
|
|
49
|
+
.sort((a, b) => a.localeCompare(b))
|
|
50
|
+
.map(fileStat)
|
|
51
|
+
: [];
|
|
52
|
+
const progressiveMin = Object.assign(Object.assign({}, core), { path: 'progressive_min' });
|
|
53
|
+
const progressiveMax = addStats('progressive_max', [core, ...references]);
|
|
54
|
+
const report = {
|
|
55
|
+
skill: skillName,
|
|
56
|
+
project_path: projectPath,
|
|
57
|
+
skill_path: skillPath,
|
|
58
|
+
core,
|
|
59
|
+
references,
|
|
60
|
+
progressive_min: progressiveMin,
|
|
61
|
+
progressive_max: progressiveMax,
|
|
62
|
+
};
|
|
63
|
+
if (opts.baselinePath) {
|
|
64
|
+
const baselinePath = path_1.default.resolve(projectPath, opts.baselinePath);
|
|
65
|
+
if (!fs_1.default.existsSync(baselinePath)) {
|
|
66
|
+
throw new Error(`Baseline file not found: ${baselinePath}`);
|
|
67
|
+
}
|
|
68
|
+
const baseline = fileStat(baselinePath);
|
|
69
|
+
report.baseline = {
|
|
70
|
+
path: baseline.path,
|
|
71
|
+
bytes: baseline.bytes,
|
|
72
|
+
lines: baseline.lines,
|
|
73
|
+
tokens: baseline.tokens,
|
|
74
|
+
delta_vs_progressive_min: delta(baseline, progressiveMin),
|
|
75
|
+
delta_vs_progressive_max: delta(baseline, progressiveMax),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return report;
|
|
79
|
+
}
|
|
80
|
+
function formatSkillTokenReport(report) {
|
|
81
|
+
const lines = [
|
|
82
|
+
`Skill Token Report: ${report.skill}`,
|
|
83
|
+
`Project: ${report.project_path}`,
|
|
84
|
+
`Skill path: ${report.skill_path}`,
|
|
85
|
+
'',
|
|
86
|
+
`core: ${report.core.tokens} tok · ${report.core.lines} lines · ${report.core.bytes} bytes`,
|
|
87
|
+
`progressive_min: ${report.progressive_min.tokens} tok · ${report.progressive_min.lines} lines · ${report.progressive_min.bytes} bytes`,
|
|
88
|
+
`progressive_max: ${report.progressive_max.tokens} tok · ${report.progressive_max.lines} lines · ${report.progressive_max.bytes} bytes`,
|
|
89
|
+
`references: ${report.references.length}`,
|
|
90
|
+
];
|
|
91
|
+
if (report.references.length > 0) {
|
|
92
|
+
lines.push('');
|
|
93
|
+
lines.push('Reference files:');
|
|
94
|
+
for (const ref of report.references) {
|
|
95
|
+
lines.push(`- ${path_1.default.basename(ref.path)}: ${ref.tokens} tok · ${ref.lines} lines · ${ref.bytes} bytes`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (report.baseline) {
|
|
99
|
+
lines.push('');
|
|
100
|
+
lines.push(`baseline: ${report.baseline.tokens} tok · ${report.baseline.lines} lines · ${report.baseline.bytes} bytes`);
|
|
101
|
+
lines.push(`baseline delta vs progressive_min: ${report.baseline.delta_vs_progressive_min.tokens} tok · ${report.baseline.delta_vs_progressive_min.lines} lines · ${report.baseline.delta_vs_progressive_min.bytes} bytes`);
|
|
102
|
+
lines.push(`baseline delta vs progressive_max: ${report.baseline.delta_vs_progressive_max.tokens} tok · ${report.baseline.delta_vs_progressive_max.lines} lines · ${report.baseline.delta_vs_progressive_max.bytes} bytes`);
|
|
103
|
+
}
|
|
104
|
+
return lines.join('\n');
|
|
105
|
+
}
|
package/dist/sprint-pipeline.js
CHANGED
|
@@ -240,12 +240,12 @@ function skillMappingForStep(step) {
|
|
|
240
240
|
const map = {
|
|
241
241
|
brainstorm: 'cm-brainstorm-idea',
|
|
242
242
|
plan: 'cm-planning',
|
|
243
|
-
design: 'cm-
|
|
243
|
+
design: 'cm-design-system',
|
|
244
244
|
tdd: 'cm-tdd',
|
|
245
245
|
build: 'cm-execution',
|
|
246
246
|
review: 'cm-code-review',
|
|
247
|
-
qa: 'cm-quality-gate
|
|
248
|
-
security: 'cm-
|
|
247
|
+
qa: 'cm-quality-gate',
|
|
248
|
+
security: 'cm-safe-deploy / cm-identity-guard',
|
|
249
249
|
ship: 'cm-safe-deploy',
|
|
250
250
|
monitor: 'cm-canary (post-deploy)',
|
|
251
251
|
retro: 'cm-retro',
|
package/dist/ui/onboarding.js
CHANGED
|
@@ -280,13 +280,12 @@ function runOnboarding(version) {
|
|
|
280
280
|
] },
|
|
281
281
|
{ domain: '🚀 Operations', skills: [
|
|
282
282
|
{ name: 'cm-safe-deploy', desc: 'Multi-gate deploy' },
|
|
283
|
-
{ name: 'cm-
|
|
284
|
-
{ name: 'cm-git-worktrees', desc: 'Isolated branches' },
|
|
283
|
+
{ name: 'cm-execution', desc: 'Parallel execution + isolation' },
|
|
285
284
|
{ name: 'cm-identity-guard', desc: 'Account & project safety' },
|
|
286
285
|
] },
|
|
287
286
|
{ domain: '🎨 Product & Design', skills: [
|
|
288
287
|
{ name: 'cm-planning', desc: 'Plan before you code' },
|
|
289
|
-
{ name: 'cm-
|
|
288
|
+
{ name: 'cm-design-system', desc: 'AI-powered design generation' },
|
|
290
289
|
{ name: 'cm-ux-master', desc: '48 UX Laws + design system' },
|
|
291
290
|
{ name: 'cm-design-system', desc: 'Design token intelligence' },
|
|
292
291
|
] },
|
|
@@ -300,7 +299,7 @@ function runOnboarding(version) {
|
|
|
300
299
|
{ name: 'cm-execution', desc: 'Parallel agent dispatch' },
|
|
301
300
|
{ name: 'cm-skill-chain', desc: 'Multi-skill pipelines' },
|
|
302
301
|
{ name: 'cm-continuity', desc: 'Working memory protocol' },
|
|
303
|
-
{ name: 'cm-skill-
|
|
302
|
+
{ name: 'cm-skill-index', desc: 'Meta-skill discovery discipline' },
|
|
304
303
|
] },
|
|
305
304
|
{ domain: '🔧 Workflow', skills: [
|
|
306
305
|
{ name: 'cm-start', desc: 'Idea → production code' },
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Storage: `.cm/design-taste.json` (JSON, not JSONL — small file, full rewrite).
|
|
8
8
|
*
|
|
9
|
-
* Consumed by cm-design-system
|
|
9
|
+
* Consumed by cm-design-system to bias token / prompt
|
|
10
10
|
* generation toward what the user has already approved.
|
|
11
11
|
*/
|
|
12
12
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
@@ -11,6 +11,7 @@ exports.compressNpmTest = compressNpmTest;
|
|
|
11
11
|
exports.collapseRepeatedLines = collapseRepeatedLines;
|
|
12
12
|
exports.summarizeBuildLog = summarizeBuildLog;
|
|
13
13
|
exports.compressFor = compressFor;
|
|
14
|
+
exports.compressMaybe = compressMaybe;
|
|
14
15
|
const STATUS_LINE = /^(?:\s*)([MADRCU?!]{1,2}|\?\?)\s+(.+)$/;
|
|
15
16
|
function compressGitStatus(stdout) {
|
|
16
17
|
const lines = stdout.split('\n');
|
|
@@ -141,3 +142,10 @@ function compressFor(command, stdout) {
|
|
|
141
142
|
}
|
|
142
143
|
return collapseRepeatedLines(stdout, 3);
|
|
143
144
|
}
|
|
145
|
+
function compressMaybe(command, stdout, maxLines = 50) {
|
|
146
|
+
const lines = stdout.split('\n');
|
|
147
|
+
if (lines.length <= maxLines && stdout.length <= 4000) {
|
|
148
|
+
return stdout;
|
|
149
|
+
}
|
|
150
|
+
return compressFor(command, stdout);
|
|
151
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codymaster",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.3",
|
|
4
4
|
"description": "CodyMaster v7.0 — 50+ AI agent skills with Browse Hybrid Bridge (agent-browser + Playwright), a11y snapshots, structured error collection, video recording. Hybrid browser automation for visual QA and testing.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"check:platforms": "node scripts/build-skills.mjs --platforms cursor,codex,opencode --check",
|
|
38
38
|
"sync:all": "node scripts/build-skills.mjs --all-platforms",
|
|
39
39
|
"sync:all:check": "node scripts/build-skills.mjs --all-platforms --check",
|
|
40
|
+
"pack:plugin": "node scripts/pack-plugin.mjs",
|
|
40
41
|
"changelog": "bash scripts/update-changelog.sh",
|
|
41
42
|
"changelog:dry": "bash scripts/update-changelog.sh --dry-run",
|
|
42
43
|
"update": "cm update --full",
|
package/public/dashboard/app.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* opencode Mission Control v4 — Multi-Project, History, Deploy, Changelog, Auto-Sync */
|
|
2
2
|
|
|
3
3
|
(function () {
|
|
4
4
|
'use strict';
|
|
@@ -34,14 +34,14 @@
|
|
|
34
34
|
});
|
|
35
35
|
const API = '/api';
|
|
36
36
|
const AGENT_COLORS = {
|
|
37
|
-
'antigravity': '#3fb950', 'claude-code': '#bc8cff', '
|
|
38
|
-
'gemini-cli': '#d29922', '
|
|
39
|
-
'copilot': '#8b949e', 'manual': '#e6edf3',
|
|
37
|
+
'antigravity': '#3fb950', 'claude-code': '#bc8cff', 'codex': '#10a37f',
|
|
38
|
+
'cursor': '#58a6ff', 'gemini-cli': '#d29922', 'opencode': '#ff6b6b', 'windsurf': '#f97316',
|
|
39
|
+
'cline': '#a1887f', 'copilot': '#8b949e', 'manual': '#e6edf3',
|
|
40
40
|
};
|
|
41
41
|
const AGENT_LABELS = {
|
|
42
|
-
'antigravity': 'Antigravity', 'claude-code': 'Claude Code', '
|
|
43
|
-
'gemini-cli': 'Gemini CLI', '
|
|
44
|
-
'copilot': 'Copilot', 'manual': 'Manual',
|
|
42
|
+
'antigravity': 'Antigravity', 'claude-code': 'Claude Code', 'codex': 'Codex',
|
|
43
|
+
'cursor': 'Cursor', 'gemini-cli': 'Gemini CLI', 'opencode': 'OpenCode', 'windsurf': 'Windsurf',
|
|
44
|
+
'cline': 'Cline', 'copilot': 'Copilot', 'manual': 'Manual',
|
|
45
45
|
};
|
|
46
46
|
const ACTIVITY_ICONS = {
|
|
47
47
|
'task_created': '✨', 'task_moved': '↔️', 'task_done': '✅', 'task_deleted': '🗑️', 'task_updated': '✏️',
|
|
@@ -314,12 +314,11 @@
|
|
|
314
314
|
});
|
|
315
315
|
|
|
316
316
|
// Agents
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
if (Object.keys(allAgents).length === 0) {
|
|
317
|
+
const visibleAgents = getVisibleAgents();
|
|
318
|
+
if (visibleAgents.length === 0) {
|
|
320
319
|
agentListEl.innerHTML = '<div class="agent-empty">No active agents</div>';
|
|
321
320
|
} else {
|
|
322
|
-
agentListEl.innerHTML =
|
|
321
|
+
agentListEl.innerHTML = visibleAgents.map(({ agent, count }) => {
|
|
323
322
|
const color = AGENT_COLORS[agent] || '#8b949e';
|
|
324
323
|
return `<div class="agent-badge"><span class="agent-dot" style="background:${color}"></span><span>${esc(AGENT_LABELS[agent] || agent)}</span><span class="agent-task-count">${count}</span></div>`;
|
|
325
324
|
}).join('');
|
|
@@ -330,6 +329,34 @@
|
|
|
330
329
|
|
|
331
330
|
function countAllTasks() { return projects.reduce((s, p) => s + (p.taskCount || 0), 0); }
|
|
332
331
|
|
|
332
|
+
function getVisibleAgents() {
|
|
333
|
+
const taskCounts = {};
|
|
334
|
+
tasks.forEach(t => {
|
|
335
|
+
if (t.agent) taskCounts[t.agent] = (taskCounts[t.agent] || 0) + 1;
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
const visibleAgents = new Set();
|
|
339
|
+
const sourceProjects = selectedProjectId
|
|
340
|
+
? projects.filter(p => p.id === selectedProjectId)
|
|
341
|
+
: projects;
|
|
342
|
+
|
|
343
|
+
sourceProjects.forEach(project => {
|
|
344
|
+
(project.activeAgents || project.agents || []).forEach(agent => {
|
|
345
|
+
if (agent) visibleAgents.add(agent);
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
Object.keys(taskCounts).forEach(agent => visibleAgents.add(agent));
|
|
350
|
+
|
|
351
|
+
return Array.from(visibleAgents)
|
|
352
|
+
.sort((a, b) => {
|
|
353
|
+
const countDiff = (taskCounts[b] || 0) - (taskCounts[a] || 0);
|
|
354
|
+
if (countDiff !== 0) return countDiff;
|
|
355
|
+
return String(AGENT_LABELS[a] || a).localeCompare(String(AGENT_LABELS[b] || b));
|
|
356
|
+
})
|
|
357
|
+
.map(agent => ({ agent, count: taskCounts[agent] || 0 }));
|
|
358
|
+
}
|
|
359
|
+
|
|
333
360
|
// ── Board Rendering ────────────────────────
|
|
334
361
|
function renderBoard() {
|
|
335
362
|
const colNames = ['backlog', 'in-progress', 'review', 'done'];
|
|
@@ -469,7 +496,7 @@
|
|
|
469
496
|
function renderDeploys() {
|
|
470
497
|
const container = document.getElementById('deploy-list');
|
|
471
498
|
if (deployments.length === 0) {
|
|
472
|
-
container.innerHTML = '<div class="deploy-empty">No deployments yet. Deploy from CLI with: <code>
|
|
499
|
+
container.innerHTML = '<div class="deploy-empty">No deployments yet. Deploy from CLI with: <code>opencode deploy staging</code></div>';
|
|
473
500
|
return;
|
|
474
501
|
}
|
|
475
502
|
|
|
@@ -515,7 +542,7 @@
|
|
|
515
542
|
function renderChangelog() {
|
|
516
543
|
const container = document.getElementById('changelog-list');
|
|
517
544
|
if (changelog.length === 0) {
|
|
518
|
-
container.innerHTML = '<div class="changelog-empty">No changelog entries yet. Add one with the button above or CLI: <code>
|
|
545
|
+
container.innerHTML = '<div class="changelog-empty">No changelog entries yet. Add one with the button above or CLI: <code>opencode changelog add</code></div>';
|
|
519
546
|
return;
|
|
520
547
|
}
|
|
521
548
|
|