codymaster 4.8.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +331 -7
- package/README.md +226 -296
- package/dist/advisory-handoff.js +89 -0
- package/dist/advisory-report.js +105 -0
- package/dist/agent/antigravity.js +152 -0
- package/dist/agent/backend.js +2 -0
- package/dist/agent/claude.js +196 -0
- package/dist/agent/codex.js +204 -0
- package/dist/agent/copilot.js +284 -0
- package/dist/agent/cursor.js +211 -0
- package/dist/agent/factory.js +30 -0
- package/dist/agent/gemini.js +142 -0
- package/dist/agent/opencode.js +205 -0
- package/dist/agent/spawn-helper.js +237 -0
- package/dist/agent/version.js +25 -0
- package/dist/browse/adapter-factory.js +69 -0
- package/dist/browse/adapters/agent-browser-adapter.js +305 -0
- package/dist/browse/adapters/playwright-adapter.js +309 -0
- package/dist/browse/adapters/types.js +6 -0
- package/dist/browse/error-collector.js +132 -0
- package/dist/browse/event-log.js +109 -0
- package/dist/browse/index.js +17 -0
- package/dist/browse-server.js +204 -120
- package/dist/cli/command-registry.js +20 -0
- package/dist/cli/commands/bench.js +69 -0
- package/dist/cli/commands/brain.js +108 -0
- package/dist/cli/commands/dashboard.js +76 -2
- package/dist/cli/commands/engineering.js +326 -4
- package/dist/cli/commands/evolve.js +123 -0
- package/dist/cli/commands/install.js +160 -0
- package/dist/cli/commands/learn.js +181 -0
- package/dist/cli/commands/mcp-serve.js +104 -0
- package/dist/cli/commands/parallel.js +138 -0
- package/dist/cli/commands/quality.js +105 -0
- package/dist/cli/commands/stack.js +49 -0
- package/dist/cli/commands/update.js +159 -0
- package/dist/cli/update-check.js +94 -10
- package/dist/cm-config.js +0 -18
- package/dist/codybench/judges/automated.js +31 -0
- package/dist/codybench/runners/claude-code.js +32 -0
- package/dist/codybench/suites/memory-retention.js +85 -0
- package/dist/codybench/suites/tdd-regression.js +35 -0
- package/dist/codybench/suites/token-efficiency.js +55 -0
- package/dist/codybench/types.js +2 -0
- package/dist/context-db.js +157 -0
- package/dist/continuity.js +5 -7
- package/dist/dashboard.js +47 -6
- package/dist/data.js +35 -0
- package/dist/execution/tdd-gate.js +113 -0
- package/dist/execution-analyzer.js +138 -0
- package/dist/executor/cancel.js +34 -0
- package/dist/executor/gc.js +74 -0
- package/dist/executor/index.js +14 -0
- package/dist/executor/runner.js +70 -0
- package/dist/executor/workdir.js +31 -0
- package/dist/handoff/contracts.js +22 -0
- package/dist/handoff/index.js +18 -0
- package/dist/handoff/io.js +121 -0
- package/dist/index.js +7 -3
- package/dist/indexer/skills-lib.js +533 -0
- package/dist/indexer/skills-map.js +1374 -0
- package/dist/indexer/skills.js +16 -0
- package/dist/indexer/stack-detect.js +219 -0
- package/dist/install/copy.js +98 -0
- package/dist/install/engine.js +42 -0
- package/dist/install/paths.js +70 -0
- package/dist/install/platforms/_simple.js +85 -0
- package/dist/install/platforms/antigravity.js +91 -0
- package/dist/install/platforms/claude-code.js +107 -0
- package/dist/install/platforms/cursor.js +77 -0
- package/dist/install/platforms/index.js +27 -0
- package/dist/install/platforms/simple.js +163 -0
- package/dist/install/profiles.js +75 -0
- package/dist/install/types.js +2 -0
- package/dist/learning-promoter.js +246 -0
- package/dist/learnings.js +208 -0
- package/dist/mcp-context-server.js +230 -1
- package/dist/middleware/metrics.js +30 -0
- package/dist/middleware/security-headers.js +14 -0
- package/dist/realtime/event-bus.js +29 -0
- package/dist/realtime/ws-hub.js +91 -0
- package/dist/schemas/task-schema.js +48 -0
- package/dist/schemas/validate.js +18 -0
- package/dist/skill-chain.js +63 -1
- package/dist/skill-evolver.js +456 -0
- package/dist/skill-execution-cache.js +254 -0
- package/dist/skills-lock.js +96 -0
- package/dist/smart-brain-router.js +184 -0
- package/dist/sprint-pipeline.js +26 -0
- package/dist/storage/index.js +21 -0
- package/dist/storage/repos/activity-repo.js +46 -0
- package/dist/storage/repos/message-repo.js +39 -0
- package/dist/storage/repos/project-repo.js +56 -0
- package/dist/storage/repos/task-repo.js +142 -0
- package/dist/storage/services/project-service.js +49 -0
- package/dist/storage/services/task-service.js +97 -0
- package/dist/storage/sqlite.js +113 -0
- package/dist/storage-backend.js +10 -8
- package/dist/tier-classify.js +131 -0
- package/dist/token-budget.js +88 -0
- package/dist/ui/onboarding.js +51 -15
- package/dist/utils/cli-utils.js +7 -2
- package/dist/utils/design-taste.js +108 -0
- package/dist/utils/output-compress.js +143 -0
- package/dist/vibecoding-index.js +126 -0
- package/package.json +20 -6
- package/public/dashboard/app.js +52 -1
- package/scripts/build-skills-lock.mjs +88 -0
- package/scripts/build-skills.mjs +187 -28
- package/scripts/compress-skill.mjs +73 -0
- package/scripts/deprecate-skill.mjs +72 -0
- package/scripts/install.sh +170 -0
- package/scripts/mcp-bridge.js +2 -2
- package/scripts/postinstall.js +53 -335
- package/scripts/update-changelog.sh +88 -0
- package/scripts/validate-skills.mjs +101 -4
- package/skills/CLAUDE.md +0 -5
- package/skills/_shared/SKILL_TEMPLATE.md +62 -0
- package/skills/_shared/helpers.md +2 -8
- package/skills/cm-autopilot/scripts/autopilot.py +19 -2
- package/skills/cm-brainstorm-idea/SKILL.md +9 -0
- package/skills/cm-browse/SKILL.md +6 -0
- package/skills/cm-clean-code/SKILL.md +20 -0
- package/skills/cm-code-review/SKILL.md +21 -0
- package/skills/cm-codeintell/SKILL.md +9 -0
- package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
- package/skills/cm-conductor-worktrees/SKILL.md +20 -18
- package/skills/cm-continuity/SKILL.md +41 -33
- package/skills/cm-dashboard/SKILL.archive.md +15 -0
- package/skills/cm-dashboard/SKILL.md +20 -9
- package/skills/cm-dashboard/ui/app.js +9 -1
- package/skills/cm-debugging/SKILL.md +9 -0
- package/skills/cm-design-studio/SKILL.archive.md +34 -0
- package/skills/cm-design-studio/SKILL.md +20 -24
- package/skills/cm-design-system/SKILL.md +1 -0
- package/skills/cm-ecosystem-roadmap/SKILL.md +4 -0
- package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
- package/skills/cm-engineering-meta/SKILL.md +19 -62
- package/skills/cm-execution/SKILL.md +98 -0
- package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
- package/skills/cm-git-worktrees/SKILL.md +15 -146
- package/skills/cm-guardian-runtime/SKILL.md +5 -1
- package/skills/cm-identity-guard/SKILL.md +8 -0
- package/skills/cm-mcp-engineering/SKILL.md +4 -0
- package/skills/cm-planning/SKILL.md +63 -92
- package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
- package/skills/cm-post-deploy-canary/SKILL.md +20 -12
- package/skills/cm-project-bootstrap/SKILL.md +11 -0
- package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
- package/skills/cm-qa-visual-cli/SKILL.md +19 -11
- package/skills/cm-quality-gate/SKILL.md +38 -0
- package/skills/cm-retro-cli/SKILL.md +4 -0
- package/skills/cm-safe-deploy/SKILL.md +9 -0
- package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
- package/skills/cm-second-opinion-cli/SKILL.md +20 -13
- package/skills/cm-secret-shield/SKILL.archive.md +580 -0
- package/skills/cm-secret-shield/SKILL.md +15 -569
- package/skills/cm-security-gate/SKILL.archive.md +239 -0
- package/skills/cm-security-gate/SKILL.md +16 -228
- package/skills/cm-skill-chain/SKILL.md +25 -4
- package/skills/cm-skill-evolution/SKILL.md +83 -0
- package/skills/cm-skill-health/SKILL.archive.md +83 -0
- package/skills/cm-skill-health/SKILL.md +26 -0
- package/skills/cm-skill-index/SKILL.md +19 -3
- package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
- package/skills/cm-skill-mastery/SKILL.md +16 -146
- package/skills/cm-skill-search/SKILL.archive.md +49 -0
- package/skills/cm-skill-search/SKILL.md +26 -0
- package/skills/cm-skill-share/SKILL.archive.md +58 -0
- package/skills/cm-skill-share/SKILL.md +26 -0
- package/skills/cm-sprint-bus/SKILL.md +13 -0
- package/skills/cm-start/SKILL.md +17 -10
- package/skills/cm-tdd/SKILL.md +21 -2
- package/skills/cm-terminal/SKILL.md +15 -0
- package/skills/cm-test-gate/SKILL.archive.md +245 -0
- package/skills/cm-test-gate/SKILL.md +15 -234
- package/skills/cm-ui-preview/SKILL.archive.md +153 -0
- package/skills/cm-ui-preview/SKILL.md +16 -143
- package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
- package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
- package/skills/cm-ux-master/mcp/server.py +2 -2
- package/skills/profiles/design.txt +1 -1
- package/skills/profiles/full.txt +4 -10
- package/skills/profiles/growth.txt +8 -8
- package/skills/profiles/knowledge.txt +1 -1
- package/skills/profiles/top35.json +41 -0
- package/adapters/antigravity.js +0 -15
- package/adapters/claude-code.js +0 -17
- package/adapters/cursor.js +0 -16
- package/install.sh +0 -1125
- package/scripts/viking-demo.ts +0 -105
- package/skills/cm-ads-tracker/SKILL.md +0 -401
- package/skills/cm-ads-tracker/evals/evals.json +0 -55
- package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
- package/skills/cm-ads-tracker/references/industry-events.md +0 -294
- package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
- package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
- package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
- package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
- package/skills/cm-auto-publisher/SKILL.md +0 -81
- package/skills/cm-booking-calendar/SKILL.md +0 -521
- package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
- package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
- package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
- package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
- package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
- package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
- package/skills/cm-content-factory/.content-factory-state.json +0 -132
- package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
- package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
- package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
- package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
- package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
- package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
- package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
- package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
- package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
- package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
- package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
- package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
- package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
- package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
- package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
- package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
- package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
- package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
- package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
- package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
- package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
- package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
- package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
- package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
- package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
- package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
- package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
- package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
- package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
- package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
- package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
- package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
- package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
- package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
- package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
- package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
- package/skills/cm-content-factory/AGENTS.md +0 -61
- package/skills/cm-content-factory/CLAUDE.md +0 -63
- package/skills/cm-content-factory/CURSOR.md +0 -43
- package/skills/cm-content-factory/Content Factory.zip +0 -0
- package/skills/cm-content-factory/SKILL.md +0 -416
- package/skills/cm-content-factory/cf +0 -313
- package/skills/cm-content-factory/config.schema.json +0 -397
- package/skills/cm-content-factory/dashboard/app.js +0 -556
- package/skills/cm-content-factory/dashboard/index.html +0 -397
- package/skills/cm-content-factory/dashboard/style.css +0 -1211
- package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
- package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
- package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
- package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
- package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
- package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
- package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
- package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
- package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
- package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
- package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
- package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
- package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
- package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
- package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
- package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
- package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
- package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
- package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
- package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
- package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
- package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
- package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
- package/skills/cm-content-factory/extensions/hooks.py +0 -126
- package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
- package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
- package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
- package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
- package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
- package/skills/cm-content-factory/landing/docs/content/openviking.md +0 -33
- package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
- package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
- package/skills/cm-content-factory/landing/docs/index.html +0 -240
- package/skills/cm-content-factory/landing/index.html +0 -680
- package/skills/cm-content-factory/landing/script.js +0 -143
- package/skills/cm-content-factory/landing/style.css +0 -1216
- package/skills/cm-content-factory/landing/translations.js +0 -508
- package/skills/cm-content-factory/logs/events.jsonl +0 -11
- package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
- package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
- package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
- package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
- package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
- package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
- package/skills/cm-content-factory/scripts/audit.py +0 -106
- package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
- package/skills/cm-content-factory/scripts/deploy.py +0 -146
- package/skills/cm-content-factory/scripts/extract.py +0 -132
- package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
- package/skills/cm-content-factory/scripts/memory.py +0 -521
- package/skills/cm-content-factory/scripts/monetize.py +0 -239
- package/skills/cm-content-factory/scripts/pipeline.py +0 -357
- package/skills/cm-content-factory/scripts/plan.py +0 -163
- package/skills/cm-content-factory/scripts/publish.py +0 -145
- package/skills/cm-content-factory/scripts/research.py +0 -337
- package/skills/cm-content-factory/scripts/scaffold.py +0 -464
- package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
- package/skills/cm-content-factory/scripts/seo.py +0 -90
- package/skills/cm-content-factory/scripts/state_manager.py +0 -320
- package/skills/cm-content-factory/scripts/token_manager.py +0 -268
- package/skills/cm-content-factory/scripts/validate.py +0 -221
- package/skills/cm-content-factory/scripts/wizard.py +0 -329
- package/skills/cm-content-factory/scripts/write.py +0 -93
- package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
- package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
- package/skills/cm-content-factory/tests/conftest.py +0 -66
- package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
- package/skills/cm-content-factory/tests/test_memory.py +0 -128
- package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
- package/skills/cm-content-factory/tests/test_research.py +0 -56
- package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
- package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
- package/skills/cm-content-factory/tests/test_wizard.py +0 -121
- package/skills/cm-cro-methodology/SKILL.md +0 -290
- package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
- package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
- package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
- package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
- package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
- package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
- package/skills/cm-google-form/SKILL.md +0 -266
- package/skills/cm-google-form/templates/apps-script.js +0 -55
- package/skills/cm-google-form/templates/form-markup.html +0 -110
- package/skills/cm-google-form/templates/form-submit.js +0 -201
- package/skills/cm-google-form/templates/toast.css +0 -152
- package/skills/cm-growth-hacking/SKILL.md +0 -282
- package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
- package/skills/cm-growth-hacking/calendar-integration.md +0 -264
- package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
- package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
- package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
- package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
- package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
- package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
- package/skills/cm-growth-hacking/tracking-events.md +0 -246
- package/skills/cm-growth-hacking/trigger-system.md +0 -342
- package/skills/cm-jtbd/SKILL.md +0 -98
- package/skills/cm-notebooklm/SKILL.md +0 -156
- package/skills/cm-notebooklm/references/command_reference.md +0 -94
- package/skills/cm-notebooklm/references/workflows.md +0 -60
- package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
- package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
- package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
- package/skills/cm-readit/SKILL.md +0 -289
- package/skills/cm-readit/audio-player.md +0 -206
- package/skills/cm-readit/examples/blog-reader.js +0 -352
- package/skills/cm-readit/examples/voice-cro.js +0 -390
- package/skills/cm-readit/tts-engine.md +0 -262
- package/skills/cm-readit/ui-patterns.md +0 -362
- package/skills/cm-readit/voice-cro.md +0 -223
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"niche": "fitness-blog",
|
|
3
|
-
"brand": {
|
|
4
|
-
"name": "FitZone Academy",
|
|
5
|
-
"slogan": "Science-Based Fitness for Everyone",
|
|
6
|
-
"tone": "casual-energetic",
|
|
7
|
-
"language": "en",
|
|
8
|
-
"colors": {
|
|
9
|
-
"primary": "#FF6B35",
|
|
10
|
-
"secondary": "#1A1A2E",
|
|
11
|
-
"accent": "#F5F5F5"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"content": {
|
|
15
|
-
"article_types": [
|
|
16
|
-
{
|
|
17
|
-
"id": "exercise-guide",
|
|
18
|
-
"title_template": "How to Do {topic_name}: Complete Form Guide + Variations",
|
|
19
|
-
"category": "exercises",
|
|
20
|
-
"seo_intent": "informational",
|
|
21
|
-
"tags_base": [
|
|
22
|
-
"workout",
|
|
23
|
-
"form",
|
|
24
|
-
"technique"
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "nutrition-article",
|
|
29
|
-
"title_template": "{topic_name}: What Science Says + Meal Plan",
|
|
30
|
-
"category": "nutrition",
|
|
31
|
-
"seo_intent": "informational",
|
|
32
|
-
"tags_base": [
|
|
33
|
-
"nutrition",
|
|
34
|
-
"diet",
|
|
35
|
-
"meal prep"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"id": "program-review",
|
|
40
|
-
"title_template": "{topic_name} Program Review: Is It Worth It?",
|
|
41
|
-
"category": "reviews",
|
|
42
|
-
"seo_intent": "commercial",
|
|
43
|
-
"tags_base": [
|
|
44
|
-
"review",
|
|
45
|
-
"program",
|
|
46
|
-
"results"
|
|
47
|
-
]
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"id": "faq-article",
|
|
51
|
-
"title_template": "{topic_name}: Top 10 Questions Answered by Experts",
|
|
52
|
-
"category": "faq",
|
|
53
|
-
"seo_intent": "informational",
|
|
54
|
-
"tags_base": [
|
|
55
|
-
"FAQ",
|
|
56
|
-
"beginners",
|
|
57
|
-
"tips"
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
|
-
"frontmatter_schema": {
|
|
62
|
-
"required": [
|
|
63
|
-
"title",
|
|
64
|
-
"slug",
|
|
65
|
-
"description",
|
|
66
|
-
"category"
|
|
67
|
-
],
|
|
68
|
-
"optional": [
|
|
69
|
-
"date",
|
|
70
|
-
"author",
|
|
71
|
-
"tags",
|
|
72
|
-
"image",
|
|
73
|
-
"readingTime"
|
|
74
|
-
]
|
|
75
|
-
},
|
|
76
|
-
"word_count": {
|
|
77
|
-
"min": 800,
|
|
78
|
-
"max": 2000
|
|
79
|
-
},
|
|
80
|
-
"language": "en",
|
|
81
|
-
"disclaimer": "Always consult a healthcare professional before starting any new exercise program."
|
|
82
|
-
},
|
|
83
|
-
"sources": {
|
|
84
|
-
"type": "markdown",
|
|
85
|
-
"path": "knowledge/"
|
|
86
|
-
},
|
|
87
|
-
"output": {
|
|
88
|
-
"content_dir": "content/blog/",
|
|
89
|
-
"knowledge_dir": "knowledge/",
|
|
90
|
-
"queue_dir": "topics-queue/"
|
|
91
|
-
},
|
|
92
|
-
"pipeline": {
|
|
93
|
-
"concurrency": 3,
|
|
94
|
-
"ai_provider": "gemini-cli",
|
|
95
|
-
"auto_validate": true,
|
|
96
|
-
"auto_publish": false,
|
|
97
|
-
"git_branch": "main"
|
|
98
|
-
},
|
|
99
|
-
"audit": {
|
|
100
|
-
"error_patterns": [
|
|
101
|
-
"I cannot",
|
|
102
|
-
"Please provide",
|
|
103
|
-
"As an AI"
|
|
104
|
-
],
|
|
105
|
-
"min_headings": 3,
|
|
106
|
-
"require_faq": false,
|
|
107
|
-
"require_cta": false,
|
|
108
|
-
"require_disclaimer": true
|
|
109
|
-
},
|
|
110
|
-
"extensions": {
|
|
111
|
-
"openclaw": {
|
|
112
|
-
"enabled": false
|
|
113
|
-
},
|
|
114
|
-
"hooks": {}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"niche": "tech-blog",
|
|
3
|
-
"brand": {
|
|
4
|
-
"name": "DevStack Weekly",
|
|
5
|
-
"slogan": "Practical Engineering, No Fluff",
|
|
6
|
-
"tone": "technical-conversational",
|
|
7
|
-
"language": "en",
|
|
8
|
-
"colors": {
|
|
9
|
-
"primary": "#0F172A",
|
|
10
|
-
"secondary": "#38BDF8",
|
|
11
|
-
"accent": "#F8FAFC"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"content": {
|
|
15
|
-
"article_types": [
|
|
16
|
-
{
|
|
17
|
-
"id": "tutorial",
|
|
18
|
-
"title_template": "{topic_name}: Step-by-Step Tutorial with Code Examples",
|
|
19
|
-
"category": "tutorials",
|
|
20
|
-
"seo_intent": "informational",
|
|
21
|
-
"tags_base": [
|
|
22
|
-
"tutorial",
|
|
23
|
-
"code",
|
|
24
|
-
"development"
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "comparison",
|
|
29
|
-
"title_template": "{topic_name}: Pros, Cons & When to Use Each",
|
|
30
|
-
"category": "comparisons",
|
|
31
|
-
"seo_intent": "commercial",
|
|
32
|
-
"tags_base": [
|
|
33
|
-
"comparison",
|
|
34
|
-
"tools",
|
|
35
|
-
"architecture"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"id": "deep-dive",
|
|
40
|
-
"title_template": "Understanding {topic_name}: A Deep Dive",
|
|
41
|
-
"category": "concepts",
|
|
42
|
-
"seo_intent": "educational",
|
|
43
|
-
"tags_base": [
|
|
44
|
-
"concepts",
|
|
45
|
-
"architecture",
|
|
46
|
-
"internals"
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"frontmatter_schema": {
|
|
51
|
-
"required": [
|
|
52
|
-
"title",
|
|
53
|
-
"slug",
|
|
54
|
-
"description",
|
|
55
|
-
"category",
|
|
56
|
-
"date"
|
|
57
|
-
],
|
|
58
|
-
"optional": [
|
|
59
|
-
"author",
|
|
60
|
-
"tags",
|
|
61
|
-
"image",
|
|
62
|
-
"series",
|
|
63
|
-
"difficulty"
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
|
-
"word_count": {
|
|
67
|
-
"min": 1000,
|
|
68
|
-
"max": 3000
|
|
69
|
-
},
|
|
70
|
-
"language": "en"
|
|
71
|
-
},
|
|
72
|
-
"sources": {
|
|
73
|
-
"type": "manual",
|
|
74
|
-
"path": "knowledge/"
|
|
75
|
-
},
|
|
76
|
-
"output": {
|
|
77
|
-
"content_dir": "content/posts/",
|
|
78
|
-
"knowledge_dir": "knowledge/",
|
|
79
|
-
"queue_dir": "topics-queue/"
|
|
80
|
-
},
|
|
81
|
-
"pipeline": {
|
|
82
|
-
"concurrency": 2,
|
|
83
|
-
"ai_provider": "gemini-cli",
|
|
84
|
-
"auto_validate": true,
|
|
85
|
-
"auto_publish": false,
|
|
86
|
-
"git_branch": "main",
|
|
87
|
-
"build_command": "npm run build"
|
|
88
|
-
},
|
|
89
|
-
"audit": {
|
|
90
|
-
"error_patterns": [
|
|
91
|
-
"I cannot",
|
|
92
|
-
"Please provide",
|
|
93
|
-
"As an AI",
|
|
94
|
-
"I'm sorry"
|
|
95
|
-
],
|
|
96
|
-
"min_headings": 4,
|
|
97
|
-
"require_faq": false,
|
|
98
|
-
"require_cta": false,
|
|
99
|
-
"require_disclaimer": false
|
|
100
|
-
},
|
|
101
|
-
"extensions": {
|
|
102
|
-
"openclaw": {
|
|
103
|
-
"enabled": false
|
|
104
|
-
},
|
|
105
|
-
"hooks": {}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Extension Guide — Content Factory
|
|
2
|
-
|
|
3
|
-
## Hook System
|
|
4
|
-
|
|
5
|
-
Hooks let you inject custom logic at any phase boundary in the pipeline.
|
|
6
|
-
|
|
7
|
-
### Available Hook Points
|
|
8
|
-
|
|
9
|
-
| Hook | Fires when |
|
|
10
|
-
|------|-----------|
|
|
11
|
-
| `pre_extract` | Before source extraction begins |
|
|
12
|
-
| `post_extract` | After knowledge-base is generated |
|
|
13
|
-
| `pre_plan` | Before topic planning |
|
|
14
|
-
| `post_plan` | After topic queue is created |
|
|
15
|
-
| `pre_write` | Before AI content generation |
|
|
16
|
-
| `post_write` | After articles are written |
|
|
17
|
-
| `pre_audit` | Before content audit |
|
|
18
|
-
| `post_audit` | After audit/fix completes |
|
|
19
|
-
| `pre_publish` | Before build + deploy |
|
|
20
|
-
| `post_publish` | After content is published |
|
|
21
|
-
|
|
22
|
-
### Creating a Hook
|
|
23
|
-
|
|
24
|
-
1. Create a Python script anywhere in your project
|
|
25
|
-
2. Register it in `content-factory.config.json`
|
|
26
|
-
3. Your script receives the config file path as `sys.argv[1]`
|
|
27
|
-
|
|
28
|
-
```python
|
|
29
|
-
#!/usr/bin/env python3
|
|
30
|
-
"""Example: Auto-translate articles after writing."""
|
|
31
|
-
import json, sys
|
|
32
|
-
from pathlib import Path
|
|
33
|
-
|
|
34
|
-
config_path = sys.argv[1]
|
|
35
|
-
with open(config_path) as f:
|
|
36
|
-
config = json.load(f)
|
|
37
|
-
|
|
38
|
-
project_root = Path(config_path).parent
|
|
39
|
-
content_dir = project_root / config["output"]["content_dir"]
|
|
40
|
-
|
|
41
|
-
for article in content_dir.glob("*.md"):
|
|
42
|
-
print(f" Processing: {article.name}")
|
|
43
|
-
# ... your logic here
|
|
44
|
-
|
|
45
|
-
print("✅ Hook complete")
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Register in config:
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"extensions": {
|
|
52
|
-
"hooks": {
|
|
53
|
-
"post_write": ["scripts/my_translate_hook.py"]
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## OpenClaw Integration (Future)
|
|
60
|
-
|
|
61
|
-
When OpenClaw API becomes available:
|
|
62
|
-
|
|
63
|
-
1. Set `extensions.openclaw.enabled: true` in config
|
|
64
|
-
2. Set `extensions.openclaw.endpoint` to API URL
|
|
65
|
-
3. Set env var `OPENCLAW_API_KEY`
|
|
66
|
-
4. The adapter in `openclaw_adapter.py` handles communication
|
|
67
|
-
|
|
68
|
-
### Planned Features
|
|
69
|
-
|
|
70
|
-
- **Multi-agent review**: Content reviewed by specialized AI agents
|
|
71
|
-
- **Knowledge sharing**: Cross-project knowledge base federation
|
|
72
|
-
- **Distributed pipeline**: Scale content generation across agent network
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Hook System — Pre/post phase hook execution for Content Factory pipeline.
|
|
4
|
-
|
|
5
|
-
Hooks are Python scripts registered in content-factory.config.json under
|
|
6
|
-
extensions.hooks. Each hook receives the config file path as argument.
|
|
7
|
-
|
|
8
|
-
Usage in custom hook scripts:
|
|
9
|
-
import sys, json
|
|
10
|
-
config_path = sys.argv[1]
|
|
11
|
-
with open(config_path) as f:
|
|
12
|
-
config = json.load(f)
|
|
13
|
-
# ... your hook logic
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
import json
|
|
17
|
-
import sys
|
|
18
|
-
import subprocess
|
|
19
|
-
from pathlib import Path
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def load_hooks(config_path: str) -> dict:
|
|
23
|
-
"""Load hook registry from config."""
|
|
24
|
-
with open(config_path, "r", encoding="utf-8") as f:
|
|
25
|
-
config = json.load(f)
|
|
26
|
-
return config.get("extensions", {}).get("hooks", {})
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def fire(hook_name: str, config_path: str, project_root: str = None) -> list:
|
|
30
|
-
"""
|
|
31
|
-
Execute all registered hooks for a given hook point.
|
|
32
|
-
|
|
33
|
-
Args:
|
|
34
|
-
hook_name: e.g., "pre_write", "post_publish"
|
|
35
|
-
config_path: Path to content-factory.config.json
|
|
36
|
-
project_root: Project root directory (defaults to config parent)
|
|
37
|
-
|
|
38
|
-
Returns:
|
|
39
|
-
List of (script, success, output) tuples
|
|
40
|
-
"""
|
|
41
|
-
hooks = load_hooks(config_path)
|
|
42
|
-
scripts = hooks.get(hook_name, [])
|
|
43
|
-
|
|
44
|
-
if not scripts:
|
|
45
|
-
return []
|
|
46
|
-
|
|
47
|
-
if not project_root:
|
|
48
|
-
project_root = str(Path(config_path).resolve().parent)
|
|
49
|
-
|
|
50
|
-
results = []
|
|
51
|
-
for script in scripts:
|
|
52
|
-
script_path = Path(project_root) / script
|
|
53
|
-
if not script_path.exists():
|
|
54
|
-
results.append((script, False, f"Not found: {script_path}"))
|
|
55
|
-
continue
|
|
56
|
-
|
|
57
|
-
try:
|
|
58
|
-
result = subprocess.run(
|
|
59
|
-
["python3", str(script_path), config_path],
|
|
60
|
-
cwd=project_root,
|
|
61
|
-
capture_output=True, text=True,
|
|
62
|
-
timeout=300 # 5 min per hook
|
|
63
|
-
)
|
|
64
|
-
results.append((script, result.returncode == 0, result.stdout[:500]))
|
|
65
|
-
except subprocess.TimeoutExpired:
|
|
66
|
-
results.append((script, False, "Timeout (5 min)"))
|
|
67
|
-
except Exception as e:
|
|
68
|
-
results.append((script, False, str(e)))
|
|
69
|
-
|
|
70
|
-
return results
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def list_hooks(config_path: str) -> dict:
|
|
74
|
-
"""List all registered hooks with their status."""
|
|
75
|
-
hooks = load_hooks(config_path)
|
|
76
|
-
project_root = Path(config_path).resolve().parent
|
|
77
|
-
status = {}
|
|
78
|
-
|
|
79
|
-
for hook_name, scripts in hooks.items():
|
|
80
|
-
status[hook_name] = []
|
|
81
|
-
for script in scripts:
|
|
82
|
-
exists = (project_root / script).exists()
|
|
83
|
-
status[hook_name].append({
|
|
84
|
-
"script": script,
|
|
85
|
-
"exists": exists,
|
|
86
|
-
"path": str(project_root / script)
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
return status
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# Convenience hook points
|
|
93
|
-
HOOK_POINTS = [
|
|
94
|
-
"pre_extract", "post_extract",
|
|
95
|
-
"pre_plan", "post_plan",
|
|
96
|
-
"pre_write", "post_write",
|
|
97
|
-
"pre_audit", "post_audit",
|
|
98
|
-
"pre_seo", "post_seo",
|
|
99
|
-
"pre_publish", "post_publish",
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if __name__ == "__main__":
|
|
104
|
-
if len(sys.argv) < 2:
|
|
105
|
-
print("Usage: python3 hooks.py <config_path> [hook_name]")
|
|
106
|
-
print(f"\nAvailable hook points: {', '.join(HOOK_POINTS)}")
|
|
107
|
-
sys.exit(1)
|
|
108
|
-
|
|
109
|
-
config_path = sys.argv[1]
|
|
110
|
-
if len(sys.argv) > 2:
|
|
111
|
-
hook_name = sys.argv[2]
|
|
112
|
-
results = fire(hook_name, config_path)
|
|
113
|
-
for script, ok, output in results:
|
|
114
|
-
icon = "✅" if ok else "❌"
|
|
115
|
-
print(f" {icon} {script}: {output[:100]}")
|
|
116
|
-
else:
|
|
117
|
-
status = list_hooks(config_path)
|
|
118
|
-
print("🔗 Registered Hooks:")
|
|
119
|
-
for hook_name, scripts in status.items():
|
|
120
|
-
if scripts:
|
|
121
|
-
print(f"\n {hook_name}:")
|
|
122
|
-
for s in scripts:
|
|
123
|
-
icon = "✅" if s["exists"] else "❌"
|
|
124
|
-
print(f" {icon} {s['script']}")
|
|
125
|
-
if not any(status.values()):
|
|
126
|
-
print(" (none registered)")
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
OpenClaw Adapter — Future integration layer for OpenClaw multi-agent platform.
|
|
4
|
-
|
|
5
|
-
This adapter provides a standardized interface for OpenClaw integration.
|
|
6
|
-
Currently a stub — implement when OpenClaw API becomes available.
|
|
7
|
-
|
|
8
|
-
Planned capabilities:
|
|
9
|
-
1. Multi-agent content review before publish
|
|
10
|
-
2. Cross-niche knowledge sharing between projects
|
|
11
|
-
3. Distributed pipeline execution across agents
|
|
12
|
-
4. Quality scoring with specialized reviewers
|
|
13
|
-
|
|
14
|
-
Usage:
|
|
15
|
-
from extensions.openclaw_adapter import OpenClawAdapter
|
|
16
|
-
adapter = OpenClawAdapter(config)
|
|
17
|
-
adapter.review_content(articles)
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
import json
|
|
21
|
-
import os
|
|
22
|
-
from pathlib import Path
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class OpenClawAdapter:
|
|
26
|
-
"""Adapter for OpenClaw multi-agent platform."""
|
|
27
|
-
|
|
28
|
-
def __init__(self, config: dict):
|
|
29
|
-
self.enabled = config.get("extensions", {}).get("openclaw", {}).get("enabled", False)
|
|
30
|
-
self.endpoint = config.get("extensions", {}).get("openclaw", {}).get("endpoint", "")
|
|
31
|
-
self.api_key_env = config.get("extensions", {}).get("openclaw", {}).get("api_key_env", "OPENCLAW_API_KEY")
|
|
32
|
-
self.agents = config.get("extensions", {}).get("openclaw", {}).get("agents", [])
|
|
33
|
-
self._api_key = None
|
|
34
|
-
|
|
35
|
-
@property
|
|
36
|
-
def api_key(self) -> str:
|
|
37
|
-
if not self._api_key:
|
|
38
|
-
self._api_key = os.environ.get(self.api_key_env, "")
|
|
39
|
-
return self._api_key
|
|
40
|
-
|
|
41
|
-
def is_ready(self) -> bool:
|
|
42
|
-
"""Check if OpenClaw integration is configured and ready."""
|
|
43
|
-
return self.enabled and bool(self.endpoint) and bool(self.api_key)
|
|
44
|
-
|
|
45
|
-
def review_content(self, article_paths: list) -> dict:
|
|
46
|
-
"""
|
|
47
|
-
Submit articles for multi-agent review.
|
|
48
|
-
|
|
49
|
-
Args:
|
|
50
|
-
article_paths: List of absolute paths to markdown articles
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
Review results dict with scores and feedback per article
|
|
54
|
-
"""
|
|
55
|
-
if not self.is_ready():
|
|
56
|
-
return {"status": "disabled", "message": "OpenClaw not configured"}
|
|
57
|
-
|
|
58
|
-
# TODO: Implement when OpenClaw API is available
|
|
59
|
-
# Expected flow:
|
|
60
|
-
# 1. POST articles to endpoint/review
|
|
61
|
-
# 2. OpenClaw dispatches to reviewer agents
|
|
62
|
-
# 3. Each agent scores: accuracy, SEO, readability, compliance
|
|
63
|
-
# 4. Aggregated results returned
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
"status": "stub",
|
|
67
|
-
"message": "OpenClaw integration not yet implemented. Awaiting API release.",
|
|
68
|
-
"articles_submitted": len(article_paths)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
def share_knowledge(self, knowledge_base_path: str) -> dict:
|
|
72
|
-
"""
|
|
73
|
-
Share knowledge base with OpenClaw network.
|
|
74
|
-
|
|
75
|
-
Enables cross-niche knowledge discovery and reuse.
|
|
76
|
-
"""
|
|
77
|
-
if not self.is_ready():
|
|
78
|
-
return {"status": "disabled"}
|
|
79
|
-
|
|
80
|
-
# TODO: Implement knowledge sharing
|
|
81
|
-
return {"status": "stub", "message": "Knowledge sharing not yet implemented"}
|
|
82
|
-
|
|
83
|
-
def dispatch_pipeline(self, phase: str, config_path: str) -> dict:
|
|
84
|
-
"""
|
|
85
|
-
Dispatch a pipeline phase to OpenClaw for distributed execution.
|
|
86
|
-
|
|
87
|
-
Useful for large-scale content generation across multiple agents.
|
|
88
|
-
"""
|
|
89
|
-
if not self.is_ready():
|
|
90
|
-
return {"status": "disabled"}
|
|
91
|
-
|
|
92
|
-
# TODO: Implement distributed pipeline
|
|
93
|
-
return {"status": "stub", "message": "Distributed pipeline not yet implemented"}
|
|
94
|
-
|
|
95
|
-
def get_status(self) -> dict:
|
|
96
|
-
"""Get OpenClaw connection status."""
|
|
97
|
-
return {
|
|
98
|
-
"enabled": self.enabled,
|
|
99
|
-
"ready": self.is_ready(),
|
|
100
|
-
"endpoint": self.endpoint,
|
|
101
|
-
"agents": self.agents,
|
|
102
|
-
"api_key_set": bool(self.api_key)
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def main():
|
|
107
|
-
"""CLI for testing OpenClaw adapter."""
|
|
108
|
-
import sys
|
|
109
|
-
if len(sys.argv) < 2:
|
|
110
|
-
print("Usage: python3 openclaw_adapter.py <config_path>")
|
|
111
|
-
return
|
|
112
|
-
|
|
113
|
-
with open(sys.argv[1], "r", encoding="utf-8") as f:
|
|
114
|
-
config = json.load(f)
|
|
115
|
-
|
|
116
|
-
adapter = OpenClawAdapter(config)
|
|
117
|
-
status = adapter.get_status()
|
|
118
|
-
|
|
119
|
-
print("🐙 OpenClaw Adapter Status:")
|
|
120
|
-
for k, v in status.items():
|
|
121
|
-
print(f" {k}: {v}")
|
|
122
|
-
|
|
123
|
-
if not adapter.is_ready():
|
|
124
|
-
print("\n ⬜ OpenClaw is not configured.")
|
|
125
|
-
print(" To enable, set in content-factory.config.json:")
|
|
126
|
-
print(' "extensions.openclaw.enabled": true')
|
|
127
|
-
print(' "extensions.openclaw.endpoint": "https://api.openclaw.dev"')
|
|
128
|
-
print(f' Set env: export {adapter.api_key_env}=your-key')
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if __name__ == "__main__":
|
|
132
|
-
main()
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Changelog & What's New in v5
|
|
2
|
-
|
|
3
|
-
Welcome to the **"Neural Spine"** era! Version 5 is a massive milestone that transitions CodyMaster from a specialized "Content Factory" tool into a full-fledged **Senior AI-Native Engineering Workspace**.
|
|
4
|
-
|
|
5
|
-
We achieved this paradigm shift by deeply studying and integrating the architectural breakthroughs from two external frameworks: **OpenViking** and **OpenSpace**.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 🚀 Key Architectural Shifts
|
|
10
|
-
|
|
11
|
-
### 1. Replaced "Dumb" RAG with OpenViking (Semantic Memory)
|
|
12
|
-
**The Problem in v4**: AI agents suffered from "code amnesia." Standard Retrieval-Augmented Generation (RAG) relied on chunking text indiscriminately. Agents hallucinated imports and forgot how system components linked together.
|
|
13
|
-
**The v5 Upgrade**:
|
|
14
|
-
By adopting OpenViking concepts, CodyMaster v5 introduces an **AST (Abstract Syntax Tree)** and **Vector-based Memory Engine**.
|
|
15
|
-
- It creates a **L0 Skeleton Index** of your entire system's structure instantly.
|
|
16
|
-
- It provides a **L1 Symbol Index** to grasp function signatures perfectly without bogging down the LLM context window with implementation details.
|
|
17
|
-
- Your AI agent now acts like a senior dev who inherently "knows" your monolith's entire structure before typing a single line.
|
|
18
|
-
|
|
19
|
-
### 2. Upgraded to OpenSpace (The Autonomous Executor)
|
|
20
|
-
**The Problem in v4**: Agents were essentially advanced type-writers. They wrote code, but you had to physically run the terminal commands, test the code, read the errors, and paste the errors back to the AI.
|
|
21
|
-
**The v5 Upgrade**:
|
|
22
|
-
We introduced **OpenSpace**—a secure sandbox and execution container.
|
|
23
|
-
- Agents can now natively execute Bash commands (`npm test`, `git pull`) within a safe holding environment.
|
|
24
|
-
- The framework auto-captures standard-error (stderr) logs and creates a self-healing loop. If the AI writes a bug, the test suite catches it, and the AI fixes itself autonomously *before* presenting the final code to you.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## 🌟 New Features at a Glance
|
|
29
|
-
|
|
30
|
-
* **100% Zero-Regression Deployments**: Through TDD-first gates in OpenSpace, no commit is permitted unless tests successfully pass.
|
|
31
|
-
* **Context Bus**: An infrastructure pipeline allowing parallel sub-agents (e.g., a "Backend Database" agent and a "Frontend React" agent) to exchange variables and context natively without losing vital token budgets.
|
|
32
|
-
* **Vision & UI Auto-Healing**: Equipped with frontend Playwright capture mechanisms, agents can take screenshots of their code results, run Vision Models to spot CSS un-alignments, and natively fix visual bugs.
|
|
33
|
-
* **Completely Self-Evolving Skills**: The Skill Chain Engine analyzes repeated commands in your workflow and dynamically builds *new* automation skills specifically tailored to your unique codebase.
|
|
34
|
-
|
|
35
|
-
> [!TIP]
|
|
36
|
-
> **To Experience It Directly:** Try assigning a task requiring multi-file context tracking, such as *"Migrate our authentication endpoints across the monolith to use the new JWT standard."* and watch OpenViking automatically pull the precise 7 files needed.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Deployment Guide
|
|
2
|
-
|
|
3
|
-
Setting up CodyMaster v5 for your engineering team is straightforward. Follow this guide to initialize the Neural Spine architecture.
|
|
4
|
-
|
|
5
|
-
## 1. Prerequisites
|
|
6
|
-
|
|
7
|
-
Ensure your environment meets the following requirements:
|
|
8
|
-
- Node.js v18.0.0 or higher
|
|
9
|
-
- Git
|
|
10
|
-
- SQLite (for local OpenViking memory limits, pre-packaged)
|
|
11
|
-
|
|
12
|
-
## 2. Installation
|
|
13
|
-
|
|
14
|
-
Install the framework globally via npm to make the `cm` CLI available anywhere on your machine:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
npm install -g @codymaster/cli@next
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## 3. Initializing a Workspace
|
|
21
|
-
|
|
22
|
-
Navigate to your existing Next.js, React, or Python repository and initialize the OpenSpace environment:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cd my-enterprise-project
|
|
26
|
-
cm init
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
This will automatically:
|
|
30
|
-
1. Generate the `.agent/` folder structure to house specialized skills.
|
|
31
|
-
2. Spin up the **OpenViking** indexer, which will immediately begin mapping your project's Abstract Syntax Trees (AST) and caching semantic vectors.
|
|
32
|
-
|
|
33
|
-
## 4. Bootstrapping Agents
|
|
34
|
-
|
|
35
|
-
You can dispatch your first agent task utilizing the full memory and execution layer:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
cm do "Refactor the user dashboard to utilize Tailwind CSS dark mode variants, ensuring all current unit tests still pass."
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
- Watch the terminal to see OpenViking extract relevant context without filling the token window with unnecessary `.json` configs.
|
|
42
|
-
- Watch OpenSpace dynamically spin up `npm run test` immediately after the code generation completes, self-correcting any errors before offering a Git commit.
|
|
43
|
-
|
|
44
|
-
## Continuous CI/CD (Founders Edition)
|
|
45
|
-
|
|
46
|
-
For teams on the Founders Edition, CodyMaster integrates directly into your GitHub Actions or GitLab CI pipelines. The agent intercepts failed PRs, pushes self-healing commits, and verifies visual integrity entirely autonomously.
|