codymaster 4.1.3 → 4.3.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 +22 -2
- package/README.md +54 -84
- package/dist/index.js +589 -510
- package/dist/ui/box.js +49 -0
- package/install.sh +2 -2
- package/package.json +3 -9
- package/skills/AGENTS.md +61 -0
- package/skills/CLAUDE.md +158 -0
- package/skills/boxme-git-config/SKILL.md +56 -0
- package/skills/boxme-local-dev/SKILL.md +66 -0
- package/skills/build.sh +30 -0
- package/skills/cf +314 -0
- package/skills/cf 2 +313 -0
- package/skills/cm-ads-tracker/SKILL.md +364 -69
- 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 +15 -24
- package/skills/cm-clean-code/SKILL.md +300 -0
- package/skills/cm-code-review/SKILL.md +0 -27
- package/skills/cm-codeintell/SKILL.md +598 -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/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/index.html +680 -0
- package/skills/cm-content-factory/landing/script.js +101 -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 +7 -0
- package/skills/cm-cro-methodology/SKILL.md +290 -0
- package/skills/cm-dashboard/SKILL.md +7 -525
- package/skills/cm-debugging/SKILL.md +7 -116
- package/skills/cm-deep-search/SKILL.md +5 -1
- package/skills/cm-dockit/README.md +6 -15
- package/skills/cm-dockit/SKILL.md +20 -37
- package/skills/cm-execution/SKILL.md +6 -1
- package/skills/cm-frappe-agent/SKILL.md +134 -0
- package/skills/cm-frappe-agent/agents/doctype-architect.md +596 -0
- package/skills/cm-frappe-agent/agents/erpnext-customizer.md +643 -0
- package/skills/cm-frappe-agent/agents/frappe-backend.md +814 -0
- package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +557 -0
- package/skills/cm-frappe-agent/agents/frappe-debugger.md +625 -0
- package/skills/cm-frappe-agent/agents/frappe-fixer.md +275 -0
- package/skills/cm-frappe-agent/agents/frappe-frontend.md +660 -0
- package/skills/cm-frappe-agent/agents/frappe-installer.md +158 -0
- package/skills/cm-frappe-agent/agents/frappe-performance.md +307 -0
- package/skills/cm-frappe-agent/agents/frappe-planner.md +419 -0
- package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +153 -0
- package/skills/cm-frappe-agent/agents/github-workflow.md +286 -0
- package/skills/cm-frappe-agent/commands/frappe-app.md +351 -0
- package/skills/cm-frappe-agent/commands/frappe-backend.md +162 -0
- package/skills/cm-frappe-agent/commands/frappe-bench.md +254 -0
- package/skills/cm-frappe-agent/commands/frappe-debug.md +263 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +272 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +310 -0
- package/skills/cm-frappe-agent/commands/frappe-erpnext.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fix.md +59 -0
- package/skills/cm-frappe-agent/commands/frappe-frontend.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fullstack.md +243 -0
- package/skills/cm-frappe-agent/commands/frappe-github.md +57 -0
- package/skills/cm-frappe-agent/commands/frappe-install.md +52 -0
- package/skills/cm-frappe-agent/commands/frappe-plan.md +442 -0
- package/skills/cm-frappe-agent/commands/frappe-remote.md +58 -0
- package/skills/cm-frappe-agent/commands/frappe-test.md +356 -0
- package/skills/cm-frappe-agent/docs/README.md +51 -0
- package/skills/cm-frappe-agent/docs/agents-catalog.md +113 -0
- package/skills/cm-frappe-agent/docs/architecture.md +149 -0
- package/skills/cm-frappe-agent/docs/commands-catalog.md +82 -0
- package/skills/cm-frappe-agent/docs/resources-catalog.md +66 -0
- package/skills/cm-frappe-agent/docs/sitemap-urls.txt +52 -0
- package/skills/cm-frappe-agent/docs/sitemap.md +81 -0
- package/skills/cm-frappe-agent/docs/sop/user-guide.md +178 -0
- package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +122 -0
- package/skills/cm-frappe-agent/resources/7-layer-architecture.md +985 -0
- package/skills/cm-frappe-agent/resources/bench_commands.md +73 -0
- package/skills/cm-frappe-agent/resources/code-patterns-guide.md +948 -0
- package/skills/cm-frappe-agent/resources/common_pitfalls.md +266 -0
- package/skills/cm-frappe-agent/resources/doctype-registry.md +158 -0
- package/skills/cm-frappe-agent/resources/installation-guide.md +289 -0
- package/skills/cm-frappe-agent/resources/rest-api-patterns.md +182 -0
- package/skills/cm-frappe-agent/resources/scaffold_checklist.md +82 -0
- package/skills/cm-frappe-agent/resources/upgrade_patterns.md +113 -0
- package/skills/cm-frappe-agent/resources/web-form-patterns.md +252 -0
- package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +621 -0
- package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +642 -0
- package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +576 -0
- package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +740 -0
- package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +47 -0
- package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +608 -0
- package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +46 -0
- package/skills/cm-git-worktrees/SKILL.md +0 -7
- 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 +293 -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 +20 -4
- package/skills/cm-identity-guard/SKILL.md +0 -11
- package/skills/cm-jtbd/SKILL.md +1 -1
- package/skills/cm-notebooklm/SKILL.md +172 -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 +39 -52
- package/skills/cm-project-bootstrap/SKILL.md +1307 -99
- package/skills/cm-quality-gate/SKILL.md +13 -106
- package/skills/cm-reactor/SKILL.md +274 -0
- package/skills/cm-safe-deploy/SKILL.md +415 -52
- package/skills/cm-safe-i18n/SKILL.md +1 -22
- package/skills/cm-secret-shield/SKILL.md +2 -2
- package/skills/cm-security-gate/SKILL.md +114 -0
- package/skills/cm-skill-chain/SKILL.md +2 -2
- package/skills/cm-skill-index/SKILL.md +9 -6
- package/skills/cm-skill-mastery/SKILL.md +2 -15
- package/skills/cm-start/SKILL.md +9 -0
- package/skills/cm-tdd/SKILL.md +8 -41
- package/skills/cm-ui-preview/SKILL.md +35 -173
- package/skills/cm-ux-master/FEATURES-v4.md +305 -0
- package/skills/cm-ux-master/README-ru.md +135 -0
- package/skills/cm-ux-master/README-vi.md +135 -0
- package/skills/cm-ux-master/README-zh.md +135 -0
- package/skills/cm-ux-master/README.md +489 -0
- package/skills/cm-ux-master/SKILL.md +773 -62
- package/skills/cm-ux-master/cli/README.md +180 -0
- package/skills/cm-ux-master/cli/pyproject.toml +106 -0
- package/skills/cm-ux-master/cli/requirements.txt +21 -0
- package/skills/cm-ux-master/cli/templates/base/skill-core.md +262 -0
- package/skills/cm-ux-master/cli/templates/platforms/claude.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/cursor.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/figma.yaml +24 -0
- package/skills/cm-ux-master/cli/templates/platforms/vscode-mcp.yaml +28 -0
- package/skills/cm-ux-master/cli/templates/platforms/windsurf.yaml +21 -0
- package/skills/cm-ux-master/cli/uxmaster/__init__.py +10 -0
- package/skills/cm-ux-master/cli/uxmaster/__main__.py +19 -0
- package/skills/cm-ux-master/cli/uxmaster/cli.py +349 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/__init__.py +8 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/extract.py +18 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/init.py +58 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +194 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/search.py +23 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/validate.py +270 -0
- package/skills/cm-ux-master/cli/uxmaster/search_engine.py +532 -0
- package/skills/cm-ux-master/cli/uxmaster/template_engine.py +458 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/__init__.py +9 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/console.py +42 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/detect.py +83 -0
- package/skills/cm-ux-master/data/accessibility-advanced.csv +26 -0
- package/skills/cm-ux-master/data/animation.csv +31 -0
- package/skills/cm-ux-master/data/charts.csv +26 -0
- package/skills/cm-ux-master/data/colors.csv +97 -0
- package/skills/cm-ux-master/data/design-tests.csv +37 -0
- package/skills/cm-ux-master/data/devices.csv +21 -0
- package/skills/cm-ux-master/data/icons.csv +101 -0
- package/skills/cm-ux-master/data/landing.csv +31 -0
- package/skills/cm-ux-master/data/products.csv +97 -0
- package/skills/cm-ux-master/data/react-performance.csv +45 -0
- package/skills/cm-ux-master/data/responsive.csv +26 -0
- package/skills/cm-ux-master/data/semi-tokens.csv +52 -0
- package/skills/cm-ux-master/data/stacks/angular.csv +34 -0
- package/skills/cm-ux-master/data/stacks/astro.csv +54 -0
- package/skills/cm-ux-master/data/stacks/electron.csv +32 -0
- package/skills/cm-ux-master/data/stacks/flutter.csv +53 -0
- package/skills/cm-ux-master/data/stacks/html-tailwind.csv +56 -0
- package/skills/cm-ux-master/data/stacks/htmx.csv +28 -0
- package/skills/cm-ux-master/data/stacks/jetpack-compose.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nextjs.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nuxt-ui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/nuxtjs.csv +59 -0
- package/skills/cm-ux-master/data/stacks/react-native.csv +52 -0
- package/skills/cm-ux-master/data/stacks/react.csv +54 -0
- package/skills/cm-ux-master/data/stacks/shadcn.csv +61 -0
- package/skills/cm-ux-master/data/stacks/svelte.csv +54 -0
- package/skills/cm-ux-master/data/stacks/swiftui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/tauri.csv +29 -0
- package/skills/cm-ux-master/data/stacks/vue.csv +50 -0
- package/skills/cm-ux-master/data/styles.csv +68 -0
- package/skills/cm-ux-master/data/typography.csv +58 -0
- package/skills/cm-ux-master/data/ui-reasoning.csv +101 -0
- package/skills/cm-ux-master/data/ux-guidelines.csv +100 -0
- package/skills/cm-ux-master/data/ux-laws.csv +49 -0
- package/skills/cm-ux-master/data/web-interface.csv +31 -0
- package/skills/cm-ux-master/docs/LANDING-PAGE.html +377 -0
- package/skills/cm-ux-master/docs/README.md +108 -0
- package/skills/cm-ux-master/docs/css/styles.css +573 -0
- package/skills/cm-ux-master/docs/examples/demo-script.md +319 -0
- package/skills/cm-ux-master/docs/guides/for-designers.md +692 -0
- package/skills/cm-ux-master/docs/guides/for-developers.md +778 -0
- package/skills/cm-ux-master/docs/guides/for-product-managers.md +693 -0
- package/skills/cm-ux-master/docs/guides/react-guide-vi.md +50 -0
- package/skills/cm-ux-master/docs/index.html +1062 -0
- package/skills/cm-ux-master/docs/js/i18n.js +84 -0
- package/skills/cm-ux-master/docs/js/lang/de.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/en.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/fr.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/hi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/id.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ja.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ko.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ru.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/vi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/zh.js +145 -0
- package/skills/cm-ux-master/docs/js/main.js +117 -0
- package/skills/cm-ux-master/docs/plan/PHASE1-COMPLETION.md +217 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-COMPLETION.md +199 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-ENHANCED-COMPLETION.md +352 -0
- package/skills/cm-ux-master/docs/plan/PHASE3-VALIDATION-COMPLETION.md +499 -0
- package/skills/cm-ux-master/docs/plan/PHASE4-TESTING-POLISH-COMPLETION.md +483 -0
- package/skills/cm-ux-master/docs/plan/UXM-2.0-ROADMAP.md +681 -0
- package/skills/cm-ux-master/docs/plan/WOW-PITCH.md +410 -0
- package/skills/cm-ux-master/docs/technical/api-reference.md +824 -0
- package/skills/cm-ux-master/docs/technical/harvester-v4.md +328 -0
- package/skills/cm-ux-master/docs/technical/how-it-works.md +1128 -0
- package/skills/cm-ux-master/docs/tutorials/quickstart.md +339 -0
- package/skills/cm-ux-master/docs/tutorials/tutorials.md +939 -0
- package/skills/cm-ux-master/docs/tutorials/user-guide.md +716 -0
- package/skills/cm-ux-master/examples/README.md +63 -0
- package/skills/cm-ux-master/mcp/__init__.py +3 -0
- package/skills/cm-ux-master/mcp/integrations/__init__.py +11 -0
- package/skills/cm-ux-master/mcp/integrations/figma/__init__.py +6 -0
- package/skills/cm-ux-master/mcp/integrations/figma/client.py +293 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/code.js +561 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/ui.html +334 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/__init__.py +5 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/client.py +410 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/package.json +167 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/src/extension.ts +81 -0
- package/skills/cm-ux-master/mcp/mcp-config.json +274 -0
- package/skills/cm-ux-master/mcp/server.py +771 -0
- package/skills/cm-ux-master/mcp/tools/__init__.py +13 -0
- package/skills/cm-ux-master/mcp-server/server.py +595 -0
- package/skills/cm-ux-master/output/fila/FilaDashboard.tsx +47 -0
- package/skills/cm-ux-master/output/fila/components/badge/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/badge/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/button/component.tsx +53 -0
- package/skills/cm-ux-master/output/fila/components/button/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/card/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/card/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/input/component.tsx +41 -0
- package/skills/cm-ux-master/output/fila/components/input/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/design-system.css +151 -0
- package/skills/cm-ux-master/output/fila/design-system.html +1596 -0
- package/skills/cm-ux-master/output/fila/design-system.json +168 -0
- package/skills/cm-ux-master/output/fila/figma-tokens.json +523 -0
- package/skills/cm-ux-master/output/fila/harvest-v4-raw.json +406 -0
- package/skills/cm-ux-master/output/fila/semi-theme-override.css +95 -0
- package/skills/cm-ux-master/output/haravan/HaravanDashboard.tsx +103 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3-live.html +2716 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3.html +1770 -0
- package/skills/cm-ux-master/output/haravan/design-system.html +914 -0
- package/skills/cm-ux-master/output/haravan/figma-tokens.json +84 -0
- package/skills/cm-ux-master/output/haravan/haravan-harvest.json +33 -0
- package/skills/cm-ux-master/output/haravan/harvest-v3-raw.json +167 -0
- package/skills/cm-ux-master/output/haravan/semi-theme-override.css +39 -0
- package/skills/cm-ux-master/references/audit-template.md +257 -0
- package/skills/cm-ux-master/references/cultural-ux.md +346 -0
- package/skills/cm-ux-master/references/dark-patterns.md +362 -0
- package/skills/cm-ux-master/references/heuristic-conflicts.md +296 -0
- package/skills/cm-ux-master/references/krug-principles.md +289 -0
- package/skills/cm-ux-master/references/nielsen-heuristics.md +360 -0
- package/skills/cm-ux-master/references/wcag-checklist.md +306 -0
- package/skills/cm-ux-master/scripts/component_generator.py +631 -0
- package/skills/cm-ux-master/scripts/core.py +305 -0
- package/skills/cm-ux-master/scripts/demo_validation.py +452 -0
- package/skills/cm-ux-master/scripts/design_doc_generator.py +1325 -0
- package/skills/cm-ux-master/scripts/design_system.py +1141 -0
- package/skills/cm-ux-master/scripts/design_system_indexer.py +889 -0
- package/skills/cm-ux-master/scripts/extract_i18n.py +251 -0
- package/skills/cm-ux-master/scripts/extractor.py +1437 -0
- package/skills/cm-ux-master/scripts/figma_bridge.py +406 -0
- package/skills/cm-ux-master/scripts/generate.py +147 -0
- package/skills/cm-ux-master/scripts/harvest_session.py +207 -0
- package/skills/cm-ux-master/scripts/harvester.js +240 -0
- package/skills/cm-ux-master/scripts/harvester_browser.py +717 -0
- package/skills/cm-ux-master/scripts/harvester_cli.py +431 -0
- package/skills/cm-ux-master/scripts/harvester_v1.js +275 -0
- package/skills/cm-ux-master/scripts/harvester_v3.js +620 -0
- package/skills/cm-ux-master/scripts/harvester_v4.js +1003 -0
- package/skills/cm-ux-master/scripts/install.py +528 -0
- package/skills/cm-ux-master/scripts/license.py +81 -0
- package/skills/cm-ux-master/scripts/media/qrpayment.png +0 -0
- package/skills/cm-ux-master/scripts/pro_stubs.py +120 -0
- package/skills/cm-ux-master/scripts/project_registry.py +217 -0
- package/skills/cm-ux-master/scripts/search.py +114 -0
- package/skills/cm-ux-master/scripts/semi_mcp_bridge.py +425 -0
- package/skills/cm-ux-master/scripts/stitch_integration.py +583 -0
- package/skills/cm-ux-master/scripts/test_harvester_v4.py +335 -0
- package/skills/cm-ux-master/scripts/token_mapper.py +626 -0
- package/skills/cm-ux-master/scripts/validation_engine.py +1571 -0
- package/skills/cm-ux-master/scripts/wizard.py +653 -0
- package/skills/cm-ux-master/setup.py +93 -0
- package/skills/cm-ux-master/templates/base/flutter-widget.dart +69 -0
- package/skills/cm-ux-master/templates/base/html-page.html +152 -0
- package/skills/cm-ux-master/templates/base/react-component.tsx +47 -0
- package/skills/cm-ux-master/templates/base/swiftui-view.swift +62 -0
- package/skills/cm-ux-master/templates/quick-start.sh +176 -0
- package/skills/cm-ux-master/tests/automation/batch-validate.sh +250 -0
- package/skills/cm-ux-master/tests/automation/generate-test-projects.sh +561 -0
- package/skills/cm-ux-master/tests/automation/run-all-tests.sh +315 -0
- package/skills/cm-ux-master/tests/test_design_doc.py +145 -0
- package/skills/cm-ux-master/tests/test_devices.py +74 -0
- package/skills/cm-ux-master/tests/test_generator.py +116 -0
- package/skills/cm-ux-master/tests/test_harvest_session.py +131 -0
- package/skills/cm-ux-master/tests/test_harvester.py +127 -0
- package/skills/cm-ux-master/tests/test_harvester_v3.py +324 -0
- package/skills/cm-ux-master/tests/test_mcp_server.py +496 -0
- package/skills/cm-ux-master/tests/test_new_domains.py +108 -0
- package/skills/cm-ux-master/tests/test_new_stacks.py +103 -0
- package/skills/cm-ux-master/tests/test_project_registry.py +146 -0
- package/skills/cm-ux-master/tests/test_semi_mcp_bridge.py +207 -0
- package/skills/cm-ux-master/tests/test_token_mapper.py +247 -0
- package/skills/cm-ux-master/tests/test_validation_engine.py +617 -0
- package/skills/config.schema.json +397 -0
- package/skills/frappe-app-builder.zip +0 -0
- package/skills/jobs-to-be-done/SKILL.md +266 -0
- package/skills/jobs-to-be-done/references/case-studies.md +154 -0
- package/skills/jobs-to-be-done/references/competitive-strategy.md +280 -0
- package/skills/jobs-to-be-done/references/diagnostics.md +158 -0
- package/skills/jobs-to-be-done/references/innovation-process.md +392 -0
- package/skills/jobs-to-be-done/references/organizational-change.md +328 -0
- package/skills/marketplace-report-crawler/SKILL.md +176 -0
- package/skills/marketplace-report-crawler/config/accounts.json +41 -0
- package/skills/marketplace-report-crawler/config/report-types.json +422 -0
- package/skills/marketplace-report-crawler/config/sessions.json +3 -0
- package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +102 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +114 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +94 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +272 -0
- package/skills/marketplace-report-crawler/scripts/crawl-runner.js +281 -0
- package/skills/marketplace-report-crawler/scripts/session-check.sh +72 -0
- package/skills/marketplace-report-crawler/scripts/session-manager.sh +349 -0
- package/skills/marketplace-report-crawler/scripts/setup-folders.sh +83 -0
- package/skills/medical-research/SKILL.md +194 -0
- package/skills/medical-research/scripts/evidence_checker.py +288 -0
- package/skills/mom-test/SKILL.md +267 -0
- package/skills/mom-test/references/avoiding-bad-data.md +221 -0
- package/skills/mom-test/references/case-studies.md +306 -0
- package/skills/mom-test/references/commitment-advancement.md +219 -0
- package/skills/mom-test/references/finding-conversations.md +251 -0
- package/skills/mom-test/references/processing-learning.md +256 -0
- package/skills/mom-test/references/question-patterns.md +198 -0
- package/skills/pandasai-analytics/SKILL.md +251 -0
- package/skills/release-it/SKILL.md +235 -0
- package/skills/release-it/references/anti-patterns.md +279 -0
- package/skills/release-it/references/capacity-planning.md +285 -0
- package/skills/release-it/references/chaos-engineering.md +325 -0
- package/skills/release-it/references/deployment-strategies.md +331 -0
- package/skills/release-it/references/observability.md +301 -0
- package/skills/release-it/references/stability-patterns.md +355 -0
- package/skills/scripts/sync-ide-skills.sh +61 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +37 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +34 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +51 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +39 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +52 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +25 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +31 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +25 -0
- package/skills/skill-creator-ultra/README.md +1242 -0
- package/skills/skill-creator-ultra/SKILL.md +388 -0
- package/skills/skill-creator-ultra/agents/analyzer.md +274 -0
- package/skills/skill-creator-ultra/agents/comparator.md +202 -0
- package/skills/skill-creator-ultra/agents/grader.md +223 -0
- package/skills/skill-creator-ultra/assets/eval_review.html +146 -0
- package/skills/skill-creator-ultra/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator-ultra/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +109 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +116 -0
- package/skills/skill-creator-ultra/examples/example_api_docs.md +189 -0
- package/skills/skill-creator-ultra/examples/example_db_migration.md +253 -0
- package/skills/skill-creator-ultra/examples/example_git_commit.md +111 -0
- package/skills/skill-creator-ultra/install.ps1 +289 -0
- package/skills/skill-creator-ultra/install.sh +313 -0
- package/skills/skill-creator-ultra/phases/phase1_interview.md +202 -0
- package/skills/skill-creator-ultra/phases/phase2_extract.md +55 -0
- package/skills/skill-creator-ultra/phases/phase3_detect.md +57 -0
- package/skills/skill-creator-ultra/phases/phase4_generate.md +543 -0
- package/skills/skill-creator-ultra/phases/phase5_test.md +319 -0
- package/skills/skill-creator-ultra/phases/phase6_eval.md +301 -0
- package/skills/skill-creator-ultra/phases/phase7_iterate.md +103 -0
- package/skills/skill-creator-ultra/phases/phase8_optimize.md +113 -0
- package/skills/skill-creator-ultra/resources/advanced_patterns.md +499 -0
- package/skills/skill-creator-ultra/resources/anti_patterns.md +376 -0
- package/skills/skill-creator-ultra/resources/blueprints.md +498 -0
- package/skills/skill-creator-ultra/resources/checklist.md +243 -0
- package/skills/skill-creator-ultra/resources/composition_cookbook.md +291 -0
- package/skills/skill-creator-ultra/resources/description_optimization.md +90 -0
- package/skills/skill-creator-ultra/resources/eval_guide.md +133 -0
- package/skills/skill-creator-ultra/resources/industry_questions.md +189 -0
- package/skills/skill-creator-ultra/resources/interview_questions.md +200 -0
- package/skills/skill-creator-ultra/resources/pattern_detection.md +200 -0
- package/skills/skill-creator-ultra/resources/prompt_engineering.md +531 -0
- package/skills/skill-creator-ultra/resources/schemas.md +430 -0
- package/skills/skill-creator-ultra/resources/script_integration.md +593 -0
- package/skills/skill-creator-ultra/resources/scripts_guide.md +339 -0
- package/skills/skill-creator-ultra/resources/skill_template.md +124 -0
- package/skills/skill-creator-ultra/resources/skill_writing_guide.md +634 -0
- package/skills/skill-creator-ultra/resources/versioning_guide.md +193 -0
- package/skills/skill-creator-ultra/scripts/ci_eval.py +200 -0
- package/skills/skill-creator-ultra/scripts/package_skill.py +165 -0
- package/skills/skill-creator-ultra/scripts/simulate_skill.py +398 -0
- package/skills/skill-creator-ultra/scripts/skill_audit.py +611 -0
- package/skills/skill-creator-ultra/scripts/skill_compare.py +265 -0
- package/skills/skill-creator-ultra/scripts/skill_export.py +334 -0
- package/skills/skill-creator-ultra/scripts/skill_scaffold.py +403 -0
- package/skills/skill-creator-ultra/scripts/skill_stats.py +339 -0
- package/skills/skill-creator-ultra/scripts/validate_skill.py +411 -0
- package/skills/tailwind-mastery/SKILL.md +229 -0
- package/skills/vercel-react-best-practices/AGENTS.md +3373 -0
- package/skills/vercel-react-best-practices/README.md +123 -0
- package/skills/vercel-react-best-practices/SKILL.md +143 -0
- package/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/cro-methodology/SKILL.md +0 -98
- /package/skills/{cro-methodology → cm-cro-methodology}/references/COPYWRITING.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/OBJECTIONS.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/PERSUASION.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/RESEARCH.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/funnel-analysis.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/testing-methodology.md +0 -0
|
@@ -3,107 +3,402 @@ name: cm-ads-tracker
|
|
|
3
3
|
description: |
|
|
4
4
|
Expert CRO conversion tracking strategist. From a single chat message, generates a COMPLETE tracking setup: Facebook/Meta Pixel + CAPI, TikTok Pixel + Events API, Google Ads Enhanced Conversions, GTM container architecture, first-touch/last-touch attribution, and cross-channel deduplication.
|
|
5
5
|
|
|
6
|
-
AUTO-DETECTS industry and maps correct standard events per platform specs. Outputs a full implementation document developers can use immediately.
|
|
6
|
+
AUTO-DETECTS industry and maps correct standard events per platform specs. Outputs a full implementation document developers can use immediately — GTM tags, triggers, variables, dataLayer schema, UTM conventions, CAPI specs — all with the user's exact tracking IDs.
|
|
7
7
|
|
|
8
|
-
ALWAYS trigger for: pixel, tracking, GTM, Facebook pixel, Meta pixel, CAPI, TikTok pixel, Google Ads conversion, UTM, attribution, "setup tracking", "measure conversions", "measure ROAS".
|
|
8
|
+
ALWAYS trigger for: pixel, tracking code, GTM, tag manager, Facebook pixel, Meta pixel, CAPI, Conversions API, TikTok pixel, Events API, Google Ads conversion, Enhanced Conversions, UTM, attribution, first-touch, last-touch, "setup tracking", "install tracking", "install pixel", "measure conversions", "tracking ads", "measure ROAS", "optimize conversions", conversion event, lead tracking, purchase tracking, ROAS measurement. Use even with partial information.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# CM Ads Tracker v2
|
|
12
12
|
|
|
13
|
-
You are the world's best conversion tracking architect.
|
|
13
|
+
You are the world's best conversion tracking architect. Your mission: from **a single chat message**, produce a complete, platform-specific, attribution-aware tracking setup that any developer or marketer can implement immediately.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
You know by heart every standard event spec for Meta, TikTok, and Google Ads. You think in dataLayer-first architecture, where GTM is the intelligent orchestration layer between the website and all ad platforms.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Phase 1: Express Onboarding (Maximum 5 Questions, One Message)
|
|
20
|
+
|
|
21
|
+
Use `AskUserQuestion` to ask ALL questions in a single shot. Keep it lean — you can infer a lot from their answers:
|
|
22
|
+
|
|
23
|
+
1. **Industry / website type** — E-commerce (fashion/electronics/FMCG)? Lead gen (real estate/insurance/education/finance)? SaaS/app? Online courses? Restaurant/F&B? Other?
|
|
24
|
+
2. **Ad platforms in use** — Facebook/Meta? TikTok? Google (Search/Shopping/Display)? Other?
|
|
25
|
+
3. **Tracking IDs** — Provide all IDs you have: Facebook Pixel ID, TikTok Pixel ID, Google Ads Conversion ID + Label, GTM Container ID, GA4 Measurement ID
|
|
26
|
+
4. **Website platform** — Shopify? WooCommerce? Custom HTML? Next.js/React? Webflow?
|
|
27
|
+
5. **Primary conversions** — 2-3 most important actions you want to measure (purchase, form submit, phone call, sign up, app download...)
|
|
28
|
+
|
|
29
|
+
> After receiving answers, proceed directly to Phase 2. Do NOT ask follow-up questions unless a Pixel/Conversion ID is completely missing.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 2: Industry Auto-Detection and Event Taxonomy
|
|
34
|
+
|
|
35
|
+
Based on the user's industry, select the appropriate event set from this master taxonomy. Read `references/industry-events.md` for the full event library with all platform-specific parameters.
|
|
36
|
+
|
|
37
|
+
### Quick Industry to Event Map
|
|
38
|
+
|
|
39
|
+
**E-COMMERCE (fashion, electronics, FMCG)**
|
|
40
|
+
Priority events (train algorithm most): `Purchase` > `InitiateCheckout` > `AddToCart` > `ViewContent`
|
|
41
|
+
Supporting: `Search`, `AddToWishlist`, `AddPaymentInfo`
|
|
42
|
+
|
|
43
|
+
**LEAD GEN (real estate, insurance, finance, B2B)**
|
|
44
|
+
Priority events: `Lead` / `SubmitForm` > `Contact` > `ViewContent` (key pages)
|
|
45
|
+
Supporting: `CompleteRegistration`, `Schedule` (if booking flow exists)
|
|
46
|
+
|
|
47
|
+
**EDUCATION / ONLINE COURSES**
|
|
48
|
+
Priority events: `Purchase` (enroll) > `CompleteRegistration` (free signup) > `InitiateCheckout` > `ViewContent` (course page)
|
|
49
|
+
Supporting: `Subscribe` (newsletter/lead magnet), `Download` (syllabus/brochure)
|
|
50
|
+
|
|
51
|
+
**SAAS / APP**
|
|
52
|
+
Priority events: `CompleteRegistration` (trial/signup) > `Purchase` (paid plan) > `ViewContent` (pricing page)
|
|
53
|
+
Supporting: `Subscribe`, `Contact`
|
|
54
|
+
|
|
55
|
+
**F&B / RESTAURANT**
|
|
56
|
+
Priority events: `Contact` (reservation/call) > `SubmitForm` (booking form) > `ViewContent` (menu/location)
|
|
57
|
+
Supporting: `CompleteRegistration` (loyalty signup), `Purchase` (online order)
|
|
58
|
+
|
|
59
|
+
**TRAVEL / HOTEL**
|
|
60
|
+
Priority events: `Purchase` (booking) > `InitiateCheckout` > `Search` (date/destination) > `ViewContent`
|
|
61
|
+
Supporting: `AddToWishlist`, `AddPaymentInfo`
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Phase 3: GTM Architecture — DataLayer-First Design
|
|
66
|
+
|
|
67
|
+
The core principle: **the website speaks to the dataLayer; GTM listens and broadcasts to all platforms.**
|
|
68
|
+
|
|
69
|
+
Read `references/gtm-architecture.md` for full GTM container build specs.
|
|
70
|
+
|
|
71
|
+
### The GTM Orchestration Model
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Website Action
|
|
75
|
+
↓
|
|
76
|
+
dataLayer.push({ event: 'cro_purchase', ... })
|
|
77
|
+
↓
|
|
78
|
+
GTM Custom Event Trigger: "cro_purchase"
|
|
79
|
+
↓ (fires simultaneously to all platforms)
|
|
80
|
+
FB Pixel Purchase | TikTok Purchase | Google Ads Conversion | GA4 purchase
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Why this matters: Developer writes ONE dataLayer.push() per event. GTM broadcasts to all platforms. Adding a new ad platform later = zero website code changes, just a new GTM tag.
|
|
84
|
+
|
|
85
|
+
### GTM Variables to Always Create
|
|
86
|
+
|
|
87
|
+
| Variable Name | Type | Value / Rule |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `DL - event_id` | DataLayer | event_id |
|
|
90
|
+
| `DL - order_id` | DataLayer | transaction_id |
|
|
91
|
+
| `DL - order_value` | DataLayer | value |
|
|
92
|
+
| `DL - currency` | DataLayer | currency |
|
|
93
|
+
| `DL - content_ids` | DataLayer | content_ids |
|
|
94
|
+
| `DL - content_type` | DataLayer | content_type |
|
|
95
|
+
| `DL - content_name` | DataLayer | content_name |
|
|
96
|
+
| `DL - email_hashed` | DataLayer | email_hashed (SHA256) |
|
|
97
|
+
| `DL - phone_hashed` | DataLayer | phone_hashed (SHA256) |
|
|
98
|
+
| `FTC - source` | 1st-Party Cookie | Cookie name: _ftc, key: src |
|
|
99
|
+
| `FTC - medium` | 1st-Party Cookie | Cookie name: _ftc, key: med |
|
|
100
|
+
| `FTC - campaign` | 1st-Party Cookie | Cookie name: _ftc, key: cmp |
|
|
101
|
+
| `URL - utm_source` | URL | Query param: utm_source |
|
|
102
|
+
| `URL - utm_medium` | URL | Query param: utm_medium |
|
|
103
|
+
| `URL - utm_campaign` | URL | Query param: utm_campaign |
|
|
104
|
+
| `URL - fbclid` | URL | Query param: fbclid |
|
|
105
|
+
| `URL - ttclid` | URL | Query param: ttclid |
|
|
106
|
+
| `URL - gclid` | URL | Query param: gclid |
|
|
107
|
+
|
|
108
|
+
---
|
|
22
109
|
|
|
23
|
-
## Phase
|
|
110
|
+
## Phase 4: Platform-Specific Implementation
|
|
111
|
+
|
|
112
|
+
### 4.1 Facebook / Meta Pixel + Conversions API (CAPI)
|
|
113
|
+
|
|
114
|
+
Pixel (browser-side via GTM) + CAPI (server-side) = best signal quality. Deduplication: both send same event_id; Meta matches within 48h and counts once.
|
|
115
|
+
|
|
116
|
+
#### Facebook Standard Events
|
|
117
|
+
|
|
118
|
+
| User Action | FB Event Name | Required Parameters | Optional for Enhanced Matching |
|
|
119
|
+
|---|---|---|---|
|
|
120
|
+
| Purchase | `Purchase` | value, currency, order_id (as eventID) | content_ids, content_type, num_items, email_hashed, phone_hashed |
|
|
121
|
+
| Add to Cart | `AddToCart` | content_ids, content_type, value, currency | content_name, contents |
|
|
122
|
+
| Initiate Checkout | `InitiateCheckout` | value, currency, num_items | content_ids |
|
|
123
|
+
| View Product | `ViewContent` | content_ids, content_type, value, currency | content_name |
|
|
124
|
+
| Lead / Form Submit | `Lead` | — | content_name (form name), value (lead value) |
|
|
125
|
+
| Registration | `CompleteRegistration` | status | value, currency |
|
|
126
|
+
| Search | `Search` | search_string | value |
|
|
127
|
+
| Contact | `Contact` | — | — |
|
|
128
|
+
| Subscribe | `Subscribe` | value, currency | — |
|
|
129
|
+
|
|
130
|
+
**Enhanced Matching — always pass these on conversions (hashed):**
|
|
131
|
+
- em: SHA256(lowercase(email))
|
|
132
|
+
- ph: SHA256(digits-only phone)
|
|
133
|
+
- fn: SHA256(lowercase(first name))
|
|
134
|
+
- ln: SHA256(lowercase(last name))
|
|
135
|
+
|
|
136
|
+
**CAPI Required Payload Fields:**
|
|
137
|
+
event_name, event_time (Unix), event_id, action_source: "website", event_source_url,
|
|
138
|
+
user_data: { em, ph, client_ip_address, client_user_agent, fbp, fbc },
|
|
139
|
+
custom_data: { value, currency, order_id, content_ids }
|
|
140
|
+
|
|
141
|
+
### 4.2 TikTok Pixel + Events API
|
|
142
|
+
|
|
143
|
+
14 Standard Events with TikTok-specific naming:
|
|
144
|
+
|
|
145
|
+
| User Action | TikTok Event Name | Required Parameters | Notes |
|
|
146
|
+
|---|---|---|---|
|
|
147
|
+
| Purchase | `CompletePayment` / `Purchase` | value, currency, content_ids, content_type | Pass contents array |
|
|
148
|
+
| Add to Cart | `AddToCart` | content_id, content_type, value, currency | |
|
|
149
|
+
| Checkout Start | `InitiateCheckout` | value, currency | |
|
|
150
|
+
| View Product | `ViewContent` | content_id, content_type, content_name | |
|
|
151
|
+
| Submit Form / Lead | `SubmitForm` | — | For lead gen |
|
|
152
|
+
| Registration | `CompleteRegistration` | status | |
|
|
153
|
+
| Search | `Search` | search_string | |
|
|
154
|
+
| Button Click | `ClickButton` | — | Soft CTAs |
|
|
155
|
+
| Download | `Download` | — | Lead magnets |
|
|
156
|
+
| Subscribe | `Subscribe` | value, currency | |
|
|
157
|
+
| Contact | `Contact` | — | Call/chat triggers |
|
|
158
|
+
| Add to Wishlist | `AddToWishlist` | content_id, value | |
|
|
159
|
+
| Add Payment Info | `AddPaymentInfo` | — | Between checkout steps |
|
|
160
|
+
| Place an Order | `PlaceAnOrder` | value, currency | |
|
|
161
|
+
|
|
162
|
+
TikTok contents array format: [{content_id, content_type, content_name, quantity, price}]
|
|
163
|
+
Currency VND is supported. Pass event_id for Events API dedup (48h window).
|
|
164
|
+
|
|
165
|
+
### 4.3 Google Ads + Enhanced Conversions
|
|
166
|
+
|
|
167
|
+
| Conversion Action | GTM Trigger | Value | Key Settings |
|
|
168
|
+
|---|---|---|---|
|
|
169
|
+
| Purchase | cro_purchase dataLayer event | DL - order_value | Pass Order ID as transaction ID |
|
|
170
|
+
| Lead / Form Submit | cro_lead event or thank-you URL | Fixed or dynamic lead value | |
|
|
171
|
+
| Phone Call Click | Click on tel: links | Fixed value | Click URL Contains "tel:" |
|
|
172
|
+
| Button CTA | Specific button click trigger | Optional | |
|
|
173
|
+
|
|
174
|
+
**Enhanced Conversions (2025 — critical, adds 15-25% conversion recovery):**
|
|
175
|
+
- Enable in Google Ads > Conversions > Enhanced Conversions settings
|
|
176
|
+
- In GTM Google Ads tag: add user_data object with email_address, phone_number
|
|
177
|
+
- GTM reads DL - email_hashed and DL - phone_hashed variables
|
|
178
|
+
- Hashing: SHA256 lowercase for email, digits-only for phone
|
|
24
179
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
| SaaS/App | CompleteRegistration > Purchase > ViewContent (pricing) |
|
|
31
|
-
| F&B | Contact (reservation) > SubmitForm > ViewContent (menu) |
|
|
32
|
-
| Travel | Purchase > InitiateCheckout > Search > ViewContent |
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Phase 5: Attribution Strategy
|
|
183
|
+
|
|
184
|
+
### First-Touch — Cookie Architecture
|
|
33
185
|
|
|
34
|
-
|
|
186
|
+
GTM fires a "First Touch Capture" Custom HTML tag on All Pages, but ONLY writes cookie if _ftc is absent (90-day expiry).
|
|
35
187
|
|
|
36
|
-
|
|
188
|
+
Cookie _ftc structure (JSON-serialized):
|
|
189
|
+
{ src, med, cmp, cnt, trm, fbclid, ttclid, gclid, ref (referrer domain), ts (timestamp) }
|
|
37
190
|
|
|
38
|
-
|
|
191
|
+
On every conversion event, GTM reads _ftc cookie and passes FTC - source, FTC - medium, FTC - campaign as custom parameters to all platforms. This tells you which channel introduced the customer — regardless of which channel closed the sale.
|
|
39
192
|
|
|
40
|
-
|
|
193
|
+
### Last-Touch — Platform Native
|
|
41
194
|
|
|
42
|
-
|
|
195
|
+
Each platform pixel tracks its own most recent click via click IDs:
|
|
196
|
+
- Facebook: fbp (browser cookie) + fbc (fbclid at event time)
|
|
197
|
+
- TikTok: ttclid parameter passed at event time
|
|
198
|
+
- Google: gclid auto-tagged
|
|
43
199
|
|
|
44
|
-
|
|
200
|
+
Pass click IDs explicitly on every conversion to maximize match rates.
|
|
45
201
|
|
|
46
|
-
|
|
202
|
+
### Cross-Channel Deduplication — The Overlap Problem and Solution
|
|
47
203
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Enhanced Matching: SHA256(lowercase email), SHA256(digits-only phone). CAPI dedup via same event_id (48h window).
|
|
204
|
+
When customer clicks Facebook on Day 1, Google on Day 7, then buys:
|
|
205
|
+
Both platforms claim full credit. Neither is lying — both influenced the sale.
|
|
51
206
|
|
|
52
|
-
|
|
53
|
-
|
|
207
|
+
Solution:
|
|
208
|
+
1. Unique Event ID: Generate UUID per conversion page load. Pass to ALL platforms as event_id simultaneously. Each platform deduplicates its pixel vs. API (not across platforms).
|
|
209
|
+
2. Order ID: Always pass same order ID across all platforms as reference key.
|
|
210
|
+
3. GA4 as Single Source of Truth: Use GA4 data-driven attribution (or linear model). GA4 is neutral — it sees all channels without incentive to over-claim.
|
|
211
|
+
4. Inflation Rate Check: Total reported conversions across platforms / actual orders. Above 1.5x means significant double-counting. Fix by tightening attribution windows or adding CAPI.
|
|
54
212
|
|
|
55
|
-
###
|
|
56
|
-
Pass transaction_id, enable Enhanced Conversions (adds 15-25% recovery), pass hashed email/phone via user_data object.
|
|
213
|
+
### Attribution Window Recommendations
|
|
57
214
|
|
|
58
|
-
|
|
215
|
+
| Platform | Click Window | View Window | Best For |
|
|
216
|
+
|---|---|---|---|
|
|
217
|
+
| Facebook/Meta | 7-day click | 1-day view | E-commerce |
|
|
218
|
+
| Facebook/Meta | 1-day click | Off | Lead gen, short sales cycle |
|
|
219
|
+
| TikTok | 7-day click | 1-day view | E-commerce |
|
|
220
|
+
| TikTok | 1-day click | Off | Lead gen |
|
|
221
|
+
| Google Search | 30-day | — | All |
|
|
222
|
+
| Google Display | 7-day | 1-day | Retargeting |
|
|
223
|
+
| Google Shopping | 30-day | — | E-commerce |
|
|
59
224
|
|
|
60
|
-
|
|
61
|
-
**Last-Touch:** Platform native via click IDs (fbp/fbc, ttclid, gclid).
|
|
62
|
-
**Dedup:** Unique event_id per conversion → all platforms. Order ID as reference. GA4 as neutral source of truth. Check inflation rate: total platform conversions / actual orders.
|
|
225
|
+
---
|
|
63
226
|
|
|
64
|
-
## Phase 6: DataLayer Push
|
|
227
|
+
## Phase 6: DataLayer Push Specifications
|
|
228
|
+
|
|
229
|
+
These are the EXACT specifications to give the developer. One push per event. GTM does the rest.
|
|
230
|
+
|
|
231
|
+
### Standard DataLayer Event Names
|
|
232
|
+
|
|
233
|
+
| Conversion | dataLayer event name | When to fire |
|
|
234
|
+
|---|---|---|
|
|
235
|
+
| Page/Product View | cro_view_content | Product/service page load |
|
|
236
|
+
| Add to Cart | cro_add_to_cart | Add to cart button click |
|
|
237
|
+
| Initiate Checkout | cro_initiate_checkout | Checkout page load |
|
|
238
|
+
| Add Payment Info | cro_add_payment_info | Payment step reached |
|
|
239
|
+
| Purchase | cro_purchase | Order confirmation page load |
|
|
240
|
+
| Lead / Form Submit | cro_lead | Form success callback |
|
|
241
|
+
| Registration | cro_registration | Account/signup completion |
|
|
242
|
+
| Phone Call Click | cro_phone_call | Tel: link click |
|
|
243
|
+
| Search | cro_search | Search executed |
|
|
244
|
+
| Button Click | cro_click_button | CTA click (non-purchase) |
|
|
245
|
+
|
|
246
|
+
### Master DataLayer Schema — Purchase
|
|
247
|
+
|
|
248
|
+
dataLayer.push({
|
|
249
|
+
event: 'cro_purchase',
|
|
250
|
+
event_id: '[UUID generated server-side — same value sent to CAPI]',
|
|
251
|
+
transaction_id: '[order_id]',
|
|
252
|
+
value: [numeric order total — NOT string],
|
|
253
|
+
currency: '[CURRENCY_CODE]', // e.g., 'USD', 'VND', 'EUR' — from Phase 1 answers
|
|
254
|
+
content_type: 'product',
|
|
255
|
+
content_ids: ['[product_id_1]', '[product_id_2]'],
|
|
256
|
+
contents: [
|
|
257
|
+
{ content_id: '[id]', content_name: '[name]', content_type: 'product', quantity: 1, price: [price] }
|
|
258
|
+
],
|
|
259
|
+
num_items: [total_item_count],
|
|
260
|
+
email_hashed: '[SHA256(lowercase(email))]',
|
|
261
|
+
phone_hashed: '[SHA256(digits-only phone)]'
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
### Master DataLayer Schema — Lead
|
|
265
|
+
|
|
266
|
+
dataLayer.push({
|
|
267
|
+
event: 'cro_lead',
|
|
268
|
+
event_id: '[UUID]',
|
|
269
|
+
lead_id: '[unique lead identifier]',
|
|
270
|
+
content_name: '[form_name or page_name]',
|
|
271
|
+
value: [lead_value_if_known — optional],
|
|
272
|
+
currency: '[CURRENCY_CODE]', // e.g., 'USD', 'VND', 'EUR' — from Phase 1 answers
|
|
273
|
+
email_hashed: '[SHA256(lowercase(email))]',
|
|
274
|
+
phone_hashed: '[SHA256(digits-only phone)]'
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
Customize the schema based on the user's specific industry and conversion events.
|
|
65
278
|
|
|
66
|
-
|
|
279
|
+
---
|
|
67
280
|
|
|
68
|
-
|
|
281
|
+
## Phase 7: UTM Naming Convention
|
|
69
282
|
|
|
70
|
-
|
|
283
|
+
Universal rules: always lowercase, use hyphens not underscores, no special chars.
|
|
284
|
+
Campaign format: [product/offer]-[audience-segment]-[YYYYMM]
|
|
285
|
+
Content format: [ad-format]-[creative-variant]
|
|
71
286
|
|
|
72
|
-
|
|
287
|
+
| Platform | utm_source | utm_medium | utm_campaign example | utm_content example |
|
|
288
|
+
|---|---|---|---|---|
|
|
289
|
+
| Facebook Feed | facebook | paid-social | product-retarget-202501 | video-15s-a |
|
|
290
|
+
| Facebook Story | facebook | paid-social | product-cold-lookalike-202501 | story-img-b |
|
|
291
|
+
| TikTok Feed | tiktok | paid-social | product-roas-202501 | ugc-30s-a |
|
|
292
|
+
| Google Search | google | paid-search | keyword-group-branded-202501 | rsp-ad-1 |
|
|
293
|
+
| Google Shopping | google | paid-shopping | all-products-202501 | — |
|
|
294
|
+
| Google Display | google | paid-display | retarget-cart-abandon-202501 | banner-300x250 |
|
|
295
|
+
| Zalo Ads | zalo | paid-social | product-zalo-202501 | img-a |
|
|
296
|
+
| Email | email | email | promo-tet-202501 | btn-cta |
|
|
73
297
|
|
|
74
|
-
|
|
75
|
-
|----------|-----------|-----------|
|
|
76
|
-
| Facebook | facebook | paid-social |
|
|
77
|
-
| TikTok | tiktok | paid-social |
|
|
78
|
-
| Google Search | google | paid-search |
|
|
79
|
-
| Google Shopping | google | paid-shopping |
|
|
80
|
-
| Google Display | google | paid-display |
|
|
298
|
+
---
|
|
81
299
|
|
|
82
|
-
##
|
|
300
|
+
## Phase 8: Tracking ID Registry
|
|
83
301
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
302
|
+
| Platform | ID Type | ID Value | Status |
|
|
303
|
+
|---|---|---|---|
|
|
304
|
+
| Facebook/Meta | Pixel ID | [from user] | Pending |
|
|
305
|
+
| Facebook/Meta | CAPI Access Token | [to be generated in Events Manager — store as server env var only, NEVER in GTM or client-side code] | Pending |
|
|
306
|
+
| TikTok | Pixel ID | [from user] | Pending |
|
|
307
|
+
| Google Ads | Conversion ID | [from user] | Pending |
|
|
308
|
+
| Google Ads | Conversion Label | [from user] | Pending |
|
|
309
|
+
| GTM | Container ID | [from user] | Pending |
|
|
310
|
+
| GA4 | Measurement ID | [from user if provided] | Pending |
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Phase 9: Implementation Checklist
|
|
315
|
+
|
|
316
|
+
Phase A — GTM Foundation (Developer, 2h)
|
|
317
|
+
- [ ] Install GTM head + body snippets on all pages
|
|
318
|
+
- [ ] Verify GTM fires on all pages via GTM Preview mode
|
|
319
|
+
- [ ] Create all GTM Variables from Phase 3 table (verify exact count matches your setup)
|
|
320
|
+
- [ ] Create First-Touch Cookie tag (Custom HTML, All Pages, once if _ftc absent)
|
|
321
|
+
- [ ] Test _ftc cookie in DevTools > Application > Cookies
|
|
322
|
+
|
|
323
|
+
Phase B — Base Pixels (1h)
|
|
324
|
+
- [ ] Facebook Base Pixel tag > All Pages trigger
|
|
325
|
+
- [ ] TikTok Base Pixel tag > All Pages trigger
|
|
326
|
+
- [ ] Google Ads Remarketing tag > All Pages trigger
|
|
327
|
+
- [ ] GA4 Configuration tag > All Pages trigger
|
|
328
|
+
- [ ] Verify with platform pixel helper browser extensions
|
|
329
|
+
|
|
330
|
+
Phase C — DataLayer Pushes (Developer, 2-4h)
|
|
331
|
+
- [ ] cro_purchase on order confirmation page
|
|
332
|
+
- [ ] cro_lead on form success / thank-you
|
|
333
|
+
- [ ] cro_view_content on product/service pages
|
|
334
|
+
- [ ] cro_initiate_checkout on checkout page
|
|
335
|
+
- [ ] cro_add_to_cart on cart button click
|
|
336
|
+
- [ ] Test all pushes in GTM Preview > dataLayer tab
|
|
337
|
+
|
|
338
|
+
Phase D — Conversion Tags (GTM, 2h)
|
|
339
|
+
For each [conversion event] x [active platform]: create a tag
|
|
340
|
+
- [ ] FB Purchase > cro_purchase trigger
|
|
341
|
+
- [ ] TikTok Purchase/CompletePayment > cro_purchase trigger
|
|
342
|
+
- [ ] Google Ads Purchase Conversion > cro_purchase trigger
|
|
343
|
+
- [ ] GA4 purchase event > cro_purchase trigger
|
|
344
|
+
- [ ] Repeat pattern for Lead, ViewContent, AddToCart, InitiateCheckout
|
|
345
|
+
|
|
346
|
+
Phase E — Enhanced Signals (1-2h)
|
|
347
|
+
- [ ] Enable Enhanced Conversions in Google Ads settings
|
|
348
|
+
- [ ] Add user_data to Google Ads tags (email, phone via hashed DL variables)
|
|
349
|
+
- [ ] Configure Meta CAPI: generate Access Token in Events Manager, set up server-side
|
|
350
|
+
- [ ] Configure TikTok Events API
|
|
351
|
+
|
|
352
|
+
Phase F — QA and Verification (2h)
|
|
353
|
+
- [ ] Test purchase > verify in FB Events Manager (Pixel + CAPI deduplicated)
|
|
354
|
+
- [ ] Test lead > verify in TikTok Pixel Helper
|
|
355
|
+
- [ ] Verify Google Ads tag fires in GTM Preview
|
|
356
|
+
- [ ] Check UTM params in GA4 > Reports > Acquisition
|
|
357
|
+
- [ ] Confirm no duplicate events (each event fires once per platform)
|
|
358
|
+
- [ ] Verify event_id deduplication: Events Manager shows "Matched events" count
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Phase 10: Common Anti-Patterns and Fixes
|
|
363
|
+
|
|
364
|
+
Anti-pattern: Pixel fires a second Purchase event from base pixel tag
|
|
365
|
+
Fix: Use GTM trigger exceptions or sequencing to prevent base pixel re-firing on conversion page.
|
|
366
|
+
|
|
367
|
+
Anti-pattern: Missing event_id causes CAPI double-counting
|
|
368
|
+
Fix: Generate one UUID server-side, send to both browser dataLayer and CAPI payload with the same value.
|
|
369
|
+
|
|
370
|
+
Anti-pattern: UTM parameters lost on redirect (session shows direct)
|
|
371
|
+
Fix: Capture UTM on first page load immediately into _ftc cookie. Never rely on document.referrer.
|
|
372
|
+
|
|
373
|
+
Anti-pattern: Pixel fires before dataLayer.push() completes (empty parameters)
|
|
374
|
+
Fix: Use Custom Event trigger keyed to cro_purchase, not Page View. GTM waits for the push.
|
|
375
|
+
|
|
376
|
+
Anti-pattern: value sent as string not number (breaks revenue reporting)
|
|
377
|
+
Fix: Always parseFloat(orderTotal) before pushing to dataLayer.
|
|
378
|
+
|
|
379
|
+
Anti-pattern: Not passing hashed email/phone on conversions (CAPI match rate drops)
|
|
380
|
+
Fix: SHA256 hash and pass em/ph on every purchase and lead event.
|
|
381
|
+
|
|
382
|
+
Anti-pattern: Cross-domain tracking broken (landing page to checkout subdomain)
|
|
383
|
+
Fix: Configure GTM cross-domain linker + add both domains to GA4 configuration.
|
|
384
|
+
|
|
385
|
+
---
|
|
90
386
|
|
|
91
|
-
##
|
|
387
|
+
## Output Format
|
|
92
388
|
|
|
93
|
-
|
|
94
|
-
- Missing event_id → CAPI double-counts → Generate ONE UUID, send to both
|
|
95
|
-
- UTM lost on redirect → Capture into _ftc cookie on first page load
|
|
96
|
-
- value as string → breaks revenue → Always parseFloat()
|
|
97
|
-
- No hashed email/phone → CAPI match drops → Hash and pass on every conversion
|
|
389
|
+
Save the complete strategy as: tracking-strategy-[brand]-[YYYYMMDD].md
|
|
98
390
|
|
|
99
|
-
|
|
391
|
+
The document must be so specific that a developer can implement without asking a single follow-up question. Every tag, trigger, variable, and dataLayer push must be fully specified using the user's exact IDs and event names.
|
|
100
392
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
393
|
+
Include a Quick Reference Card at the end (1-page summary):
|
|
394
|
+
- All tracking IDs in one table
|
|
395
|
+
- DataLayer event names cheat sheet
|
|
396
|
+
- UTM convention quick reference
|
|
397
|
+
- Top 3 priority events to implement first (ranked by algorithm impact)
|
|
106
398
|
|
|
107
|
-
|
|
399
|
+
After saving, use present_files if available, otherwise share file link.
|
|
108
400
|
|
|
109
|
-
|
|
401
|
+
Offer follow-up options:
|
|
402
|
+
1. "Want me to create a GTM Container JSON spec for direct import?"
|
|
403
|
+
2. "Want me to create a separate CAPI server-side implementation guide?"
|
|
404
|
+
3. "Need a Google Sheets template for UTM convention tracking for the whole team?"
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cm-auto-publisher
|
|
3
|
+
description: Comprehensive publishing automation skill bridging AI agents (OpenClaw, Manus, Claude) to the Content Factory Router. Uses the Router API to publish markdown articles with rich media to any connected Astro site natively.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# cm-auto-publisher: The Agentic Publishing Skill
|
|
7
|
+
|
|
8
|
+
> **Goal:** Take unstructured input (links, ideas, raw text), write a highly engaging article following Content Factory rules, and instantly publish it via the Content Factory Router API.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
**ALWAYS when:**
|
|
13
|
+
- User provides a link/video and says "Write an article about this and publish it".
|
|
14
|
+
- User says "Draft and push this news to the blog".
|
|
15
|
+
- You have finished drafting an article and need to deploy it to the live site.
|
|
16
|
+
- An automated cron job triggers you to aggregate news and auto-publish.
|
|
17
|
+
|
|
18
|
+
## The Process
|
|
19
|
+
|
|
20
|
+
### Phase 1: Content Extraction & Structuring
|
|
21
|
+
1. **Analyze Input:** If given a URL, use `read_url_content` (or your browsing tool) to read the source. If given images or Youtube links, extract them.
|
|
22
|
+
2. **Draft Content:** Write a compelling article in standard Markdown.
|
|
23
|
+
- Use headings (`##`, `###`).
|
|
24
|
+
- For YouTube videos, use the Astro component: `<YouTube id="VIDEO_ID" />`.
|
|
25
|
+
- For images, just use standard markdown: ``.
|
|
26
|
+
|
|
27
|
+
### Phase 2: Media Preparation
|
|
28
|
+
Identify all external images that need to be published with the article.
|
|
29
|
+
DO NOT try to download them to the local disk using bash commands. The Content Factory Router will handle this.
|
|
30
|
+
Instead, build a `media` array mapping the original URLs to the desired clean filenames.
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
"media": [
|
|
34
|
+
{
|
|
35
|
+
"url": "https://source.com/raw-image-123.jpg",
|
|
36
|
+
"filename": "clean-seo-friendly-name.jpg"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Phase 3: API Payload Construction
|
|
42
|
+
Construct the JSON payload matching the target site's schema.
|
|
43
|
+
Standard Target: `cody-master` (mapped to `tody-agent/todyle-web`).
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"site_id": "cody-master",
|
|
48
|
+
"title": "[Engaging Title]",
|
|
49
|
+
"description": "[1-2 sentence SEO meta description]",
|
|
50
|
+
"category": "news", // or "guide", "use-case"
|
|
51
|
+
"readingTime": "5 min read",
|
|
52
|
+
"tags": ["AI", "Vibe Coding", "Automation"],
|
|
53
|
+
"content": "The raw markdown content here...",
|
|
54
|
+
"media": [ ... ]
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Phase 4: Publish via Router API
|
|
59
|
+
Send the payload to the Cloudflare Worker via a standard `fetch` or `curl` command.
|
|
60
|
+
|
|
61
|
+
1. **Get the Secret:** Retrieve the API token from the `.env` file or ask the user for the `PUBLISHER_API_KEY`.
|
|
62
|
+
2. **Send POST Request:**
|
|
63
|
+
Use a local script or curl to send the data to the worker.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Example curl (assuming the payload is saved to payload.json)
|
|
67
|
+
curl -X POST https://content-factory-router.<YOUR-CLOUDFLARE-ACCOUNT>.workers.dev/publish \
|
|
68
|
+
-H "Content-Type: application/json" \
|
|
69
|
+
-H "Authorization: Bearer <API_KEY>" \
|
|
70
|
+
-d @payload.json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Phase 5: Verification
|
|
74
|
+
1. Check the response from the Worker. It should return `{"success": true, "message": "Published...", "commit_sha": "..."}`.
|
|
75
|
+
2. Inform the user that the article has been successfully committed to GitHub and Cloudflare Pages is now building it.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Red Flags - STOP!
|
|
80
|
+
- ❌ **DO NOT** manually create `.mdx` files in `src/content/articles/` and run `git push` if using this skill! Let the Router API handle the Git history and image blob creation to ensure data consistency.
|
|
81
|
+
- ❌ **DO NOT** use `cat` or `echo` to build complex JSON payloads in bash. Save the payload to a `.json` file using your file writing tool, then pass it to `curl`.
|