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.
Files changed (416) hide show
  1. package/CHANGELOG.md +331 -7
  2. package/README.md +226 -296
  3. package/dist/advisory-handoff.js +89 -0
  4. package/dist/advisory-report.js +105 -0
  5. package/dist/agent/antigravity.js +152 -0
  6. package/dist/agent/backend.js +2 -0
  7. package/dist/agent/claude.js +196 -0
  8. package/dist/agent/codex.js +204 -0
  9. package/dist/agent/copilot.js +284 -0
  10. package/dist/agent/cursor.js +211 -0
  11. package/dist/agent/factory.js +30 -0
  12. package/dist/agent/gemini.js +142 -0
  13. package/dist/agent/opencode.js +205 -0
  14. package/dist/agent/spawn-helper.js +237 -0
  15. package/dist/agent/version.js +25 -0
  16. package/dist/browse/adapter-factory.js +69 -0
  17. package/dist/browse/adapters/agent-browser-adapter.js +305 -0
  18. package/dist/browse/adapters/playwright-adapter.js +309 -0
  19. package/dist/browse/adapters/types.js +6 -0
  20. package/dist/browse/error-collector.js +132 -0
  21. package/dist/browse/event-log.js +109 -0
  22. package/dist/browse/index.js +17 -0
  23. package/dist/browse-server.js +204 -120
  24. package/dist/cli/command-registry.js +20 -0
  25. package/dist/cli/commands/bench.js +69 -0
  26. package/dist/cli/commands/brain.js +108 -0
  27. package/dist/cli/commands/dashboard.js +76 -2
  28. package/dist/cli/commands/engineering.js +326 -4
  29. package/dist/cli/commands/evolve.js +123 -0
  30. package/dist/cli/commands/install.js +160 -0
  31. package/dist/cli/commands/learn.js +181 -0
  32. package/dist/cli/commands/mcp-serve.js +104 -0
  33. package/dist/cli/commands/parallel.js +138 -0
  34. package/dist/cli/commands/quality.js +105 -0
  35. package/dist/cli/commands/stack.js +49 -0
  36. package/dist/cli/commands/update.js +159 -0
  37. package/dist/cli/update-check.js +94 -10
  38. package/dist/cm-config.js +0 -18
  39. package/dist/codybench/judges/automated.js +31 -0
  40. package/dist/codybench/runners/claude-code.js +32 -0
  41. package/dist/codybench/suites/memory-retention.js +85 -0
  42. package/dist/codybench/suites/tdd-regression.js +35 -0
  43. package/dist/codybench/suites/token-efficiency.js +55 -0
  44. package/dist/codybench/types.js +2 -0
  45. package/dist/context-db.js +157 -0
  46. package/dist/continuity.js +5 -7
  47. package/dist/dashboard.js +47 -6
  48. package/dist/data.js +35 -0
  49. package/dist/execution/tdd-gate.js +113 -0
  50. package/dist/execution-analyzer.js +138 -0
  51. package/dist/executor/cancel.js +34 -0
  52. package/dist/executor/gc.js +74 -0
  53. package/dist/executor/index.js +14 -0
  54. package/dist/executor/runner.js +70 -0
  55. package/dist/executor/workdir.js +31 -0
  56. package/dist/handoff/contracts.js +22 -0
  57. package/dist/handoff/index.js +18 -0
  58. package/dist/handoff/io.js +121 -0
  59. package/dist/index.js +7 -3
  60. package/dist/indexer/skills-lib.js +533 -0
  61. package/dist/indexer/skills-map.js +1374 -0
  62. package/dist/indexer/skills.js +16 -0
  63. package/dist/indexer/stack-detect.js +219 -0
  64. package/dist/install/copy.js +98 -0
  65. package/dist/install/engine.js +42 -0
  66. package/dist/install/paths.js +70 -0
  67. package/dist/install/platforms/_simple.js +85 -0
  68. package/dist/install/platforms/antigravity.js +91 -0
  69. package/dist/install/platforms/claude-code.js +107 -0
  70. package/dist/install/platforms/cursor.js +77 -0
  71. package/dist/install/platforms/index.js +27 -0
  72. package/dist/install/platforms/simple.js +163 -0
  73. package/dist/install/profiles.js +75 -0
  74. package/dist/install/types.js +2 -0
  75. package/dist/learning-promoter.js +246 -0
  76. package/dist/learnings.js +208 -0
  77. package/dist/mcp-context-server.js +230 -1
  78. package/dist/middleware/metrics.js +30 -0
  79. package/dist/middleware/security-headers.js +14 -0
  80. package/dist/realtime/event-bus.js +29 -0
  81. package/dist/realtime/ws-hub.js +91 -0
  82. package/dist/schemas/task-schema.js +48 -0
  83. package/dist/schemas/validate.js +18 -0
  84. package/dist/skill-chain.js +63 -1
  85. package/dist/skill-evolver.js +456 -0
  86. package/dist/skill-execution-cache.js +254 -0
  87. package/dist/skills-lock.js +96 -0
  88. package/dist/smart-brain-router.js +184 -0
  89. package/dist/sprint-pipeline.js +26 -0
  90. package/dist/storage/index.js +21 -0
  91. package/dist/storage/repos/activity-repo.js +46 -0
  92. package/dist/storage/repos/message-repo.js +39 -0
  93. package/dist/storage/repos/project-repo.js +56 -0
  94. package/dist/storage/repos/task-repo.js +142 -0
  95. package/dist/storage/services/project-service.js +49 -0
  96. package/dist/storage/services/task-service.js +97 -0
  97. package/dist/storage/sqlite.js +113 -0
  98. package/dist/storage-backend.js +10 -8
  99. package/dist/tier-classify.js +131 -0
  100. package/dist/token-budget.js +88 -0
  101. package/dist/ui/onboarding.js +51 -15
  102. package/dist/utils/cli-utils.js +7 -2
  103. package/dist/utils/design-taste.js +108 -0
  104. package/dist/utils/output-compress.js +143 -0
  105. package/dist/vibecoding-index.js +126 -0
  106. package/package.json +20 -6
  107. package/public/dashboard/app.js +52 -1
  108. package/scripts/build-skills-lock.mjs +88 -0
  109. package/scripts/build-skills.mjs +187 -28
  110. package/scripts/compress-skill.mjs +73 -0
  111. package/scripts/deprecate-skill.mjs +72 -0
  112. package/scripts/install.sh +170 -0
  113. package/scripts/mcp-bridge.js +2 -2
  114. package/scripts/postinstall.js +53 -335
  115. package/scripts/update-changelog.sh +88 -0
  116. package/scripts/validate-skills.mjs +101 -4
  117. package/skills/CLAUDE.md +0 -5
  118. package/skills/_shared/SKILL_TEMPLATE.md +62 -0
  119. package/skills/_shared/helpers.md +2 -8
  120. package/skills/cm-autopilot/scripts/autopilot.py +19 -2
  121. package/skills/cm-brainstorm-idea/SKILL.md +9 -0
  122. package/skills/cm-browse/SKILL.md +6 -0
  123. package/skills/cm-clean-code/SKILL.md +20 -0
  124. package/skills/cm-code-review/SKILL.md +21 -0
  125. package/skills/cm-codeintell/SKILL.md +9 -0
  126. package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
  127. package/skills/cm-conductor-worktrees/SKILL.md +20 -18
  128. package/skills/cm-continuity/SKILL.md +41 -33
  129. package/skills/cm-dashboard/SKILL.archive.md +15 -0
  130. package/skills/cm-dashboard/SKILL.md +20 -9
  131. package/skills/cm-dashboard/ui/app.js +9 -1
  132. package/skills/cm-debugging/SKILL.md +9 -0
  133. package/skills/cm-design-studio/SKILL.archive.md +34 -0
  134. package/skills/cm-design-studio/SKILL.md +20 -24
  135. package/skills/cm-design-system/SKILL.md +1 -0
  136. package/skills/cm-ecosystem-roadmap/SKILL.md +4 -0
  137. package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
  138. package/skills/cm-engineering-meta/SKILL.md +19 -62
  139. package/skills/cm-execution/SKILL.md +98 -0
  140. package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
  141. package/skills/cm-git-worktrees/SKILL.md +15 -146
  142. package/skills/cm-guardian-runtime/SKILL.md +5 -1
  143. package/skills/cm-identity-guard/SKILL.md +8 -0
  144. package/skills/cm-mcp-engineering/SKILL.md +4 -0
  145. package/skills/cm-planning/SKILL.md +63 -92
  146. package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
  147. package/skills/cm-post-deploy-canary/SKILL.md +20 -12
  148. package/skills/cm-project-bootstrap/SKILL.md +11 -0
  149. package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
  150. package/skills/cm-qa-visual-cli/SKILL.md +19 -11
  151. package/skills/cm-quality-gate/SKILL.md +38 -0
  152. package/skills/cm-retro-cli/SKILL.md +4 -0
  153. package/skills/cm-safe-deploy/SKILL.md +9 -0
  154. package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
  155. package/skills/cm-second-opinion-cli/SKILL.md +20 -13
  156. package/skills/cm-secret-shield/SKILL.archive.md +580 -0
  157. package/skills/cm-secret-shield/SKILL.md +15 -569
  158. package/skills/cm-security-gate/SKILL.archive.md +239 -0
  159. package/skills/cm-security-gate/SKILL.md +16 -228
  160. package/skills/cm-skill-chain/SKILL.md +25 -4
  161. package/skills/cm-skill-evolution/SKILL.md +83 -0
  162. package/skills/cm-skill-health/SKILL.archive.md +83 -0
  163. package/skills/cm-skill-health/SKILL.md +26 -0
  164. package/skills/cm-skill-index/SKILL.md +19 -3
  165. package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
  166. package/skills/cm-skill-mastery/SKILL.md +16 -146
  167. package/skills/cm-skill-search/SKILL.archive.md +49 -0
  168. package/skills/cm-skill-search/SKILL.md +26 -0
  169. package/skills/cm-skill-share/SKILL.archive.md +58 -0
  170. package/skills/cm-skill-share/SKILL.md +26 -0
  171. package/skills/cm-sprint-bus/SKILL.md +13 -0
  172. package/skills/cm-start/SKILL.md +17 -10
  173. package/skills/cm-tdd/SKILL.md +21 -2
  174. package/skills/cm-terminal/SKILL.md +15 -0
  175. package/skills/cm-test-gate/SKILL.archive.md +245 -0
  176. package/skills/cm-test-gate/SKILL.md +15 -234
  177. package/skills/cm-ui-preview/SKILL.archive.md +153 -0
  178. package/skills/cm-ui-preview/SKILL.md +16 -143
  179. package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
  180. package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
  181. package/skills/cm-ux-master/mcp/server.py +2 -2
  182. package/skills/profiles/design.txt +1 -1
  183. package/skills/profiles/full.txt +4 -10
  184. package/skills/profiles/growth.txt +8 -8
  185. package/skills/profiles/knowledge.txt +1 -1
  186. package/skills/profiles/top35.json +41 -0
  187. package/adapters/antigravity.js +0 -15
  188. package/adapters/claude-code.js +0 -17
  189. package/adapters/cursor.js +0 -16
  190. package/install.sh +0 -1125
  191. package/scripts/viking-demo.ts +0 -105
  192. package/skills/cm-ads-tracker/SKILL.md +0 -401
  193. package/skills/cm-ads-tracker/evals/evals.json +0 -55
  194. package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
  195. package/skills/cm-ads-tracker/references/industry-events.md +0 -294
  196. package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
  197. package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
  198. package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
  199. package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
  200. package/skills/cm-auto-publisher/SKILL.md +0 -81
  201. package/skills/cm-booking-calendar/SKILL.md +0 -521
  202. package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
  203. package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
  204. package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
  205. package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
  206. package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
  207. package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
  208. package/skills/cm-content-factory/.content-factory-state.json +0 -132
  209. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
  210. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
  211. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  212. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  213. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  214. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  215. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  216. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  217. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  218. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  219. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  220. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  221. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  222. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  223. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  224. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  225. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  226. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  227. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  228. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  229. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  230. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  231. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  232. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  233. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  234. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  235. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  236. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  237. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  238. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  239. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  240. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  241. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  242. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  243. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  244. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  245. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  246. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  247. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  248. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  249. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  250. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  251. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  252. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  253. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  254. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
  255. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  256. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  257. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  258. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  259. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  260. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  261. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  262. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  263. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  264. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  265. package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
  266. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
  267. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
  268. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
  269. package/skills/cm-content-factory/AGENTS.md +0 -61
  270. package/skills/cm-content-factory/CLAUDE.md +0 -63
  271. package/skills/cm-content-factory/CURSOR.md +0 -43
  272. package/skills/cm-content-factory/Content Factory.zip +0 -0
  273. package/skills/cm-content-factory/SKILL.md +0 -416
  274. package/skills/cm-content-factory/cf +0 -313
  275. package/skills/cm-content-factory/config.schema.json +0 -397
  276. package/skills/cm-content-factory/dashboard/app.js +0 -556
  277. package/skills/cm-content-factory/dashboard/index.html +0 -397
  278. package/skills/cm-content-factory/dashboard/style.css +0 -1211
  279. package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
  280. package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
  281. package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
  282. package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
  283. package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
  284. package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
  285. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
  286. package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
  287. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
  288. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
  289. package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
  290. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
  291. package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
  292. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
  293. package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
  294. package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
  295. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
  296. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
  297. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
  298. package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
  299. package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
  300. package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
  301. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
  302. package/skills/cm-content-factory/extensions/hooks.py +0 -126
  303. package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
  304. package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
  305. package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
  306. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
  307. package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
  308. package/skills/cm-content-factory/landing/docs/content/openviking.md +0 -33
  309. package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
  310. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
  311. package/skills/cm-content-factory/landing/docs/index.html +0 -240
  312. package/skills/cm-content-factory/landing/index.html +0 -680
  313. package/skills/cm-content-factory/landing/script.js +0 -143
  314. package/skills/cm-content-factory/landing/style.css +0 -1216
  315. package/skills/cm-content-factory/landing/translations.js +0 -508
  316. package/skills/cm-content-factory/logs/events.jsonl +0 -11
  317. package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
  318. package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
  319. package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
  320. package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
  321. package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
  322. package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
  323. package/skills/cm-content-factory/scripts/audit.py +0 -106
  324. package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
  325. package/skills/cm-content-factory/scripts/deploy.py +0 -146
  326. package/skills/cm-content-factory/scripts/extract.py +0 -132
  327. package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
  328. package/skills/cm-content-factory/scripts/memory.py +0 -521
  329. package/skills/cm-content-factory/scripts/monetize.py +0 -239
  330. package/skills/cm-content-factory/scripts/pipeline.py +0 -357
  331. package/skills/cm-content-factory/scripts/plan.py +0 -163
  332. package/skills/cm-content-factory/scripts/publish.py +0 -145
  333. package/skills/cm-content-factory/scripts/research.py +0 -337
  334. package/skills/cm-content-factory/scripts/scaffold.py +0 -464
  335. package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
  336. package/skills/cm-content-factory/scripts/seo.py +0 -90
  337. package/skills/cm-content-factory/scripts/state_manager.py +0 -320
  338. package/skills/cm-content-factory/scripts/token_manager.py +0 -268
  339. package/skills/cm-content-factory/scripts/validate.py +0 -221
  340. package/skills/cm-content-factory/scripts/wizard.py +0 -329
  341. package/skills/cm-content-factory/scripts/write.py +0 -93
  342. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  343. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
  344. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
  345. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
  346. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
  347. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
  348. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
  349. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
  350. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
  351. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
  352. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
  353. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
  354. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
  355. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
  356. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
  357. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
  358. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
  359. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
  360. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
  361. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
  362. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
  363. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
  364. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
  365. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
  366. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
  367. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
  368. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
  369. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
  370. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
  371. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
  372. package/skills/cm-content-factory/tests/conftest.py +0 -66
  373. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
  374. package/skills/cm-content-factory/tests/test_memory.py +0 -128
  375. package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
  376. package/skills/cm-content-factory/tests/test_research.py +0 -56
  377. package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
  378. package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
  379. package/skills/cm-content-factory/tests/test_wizard.py +0 -121
  380. package/skills/cm-cro-methodology/SKILL.md +0 -290
  381. package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
  382. package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
  383. package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
  384. package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
  385. package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
  386. package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
  387. package/skills/cm-google-form/SKILL.md +0 -266
  388. package/skills/cm-google-form/templates/apps-script.js +0 -55
  389. package/skills/cm-google-form/templates/form-markup.html +0 -110
  390. package/skills/cm-google-form/templates/form-submit.js +0 -201
  391. package/skills/cm-google-form/templates/toast.css +0 -152
  392. package/skills/cm-growth-hacking/SKILL.md +0 -282
  393. package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
  394. package/skills/cm-growth-hacking/calendar-integration.md +0 -264
  395. package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
  396. package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
  397. package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
  398. package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
  399. package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
  400. package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
  401. package/skills/cm-growth-hacking/tracking-events.md +0 -246
  402. package/skills/cm-growth-hacking/trigger-system.md +0 -342
  403. package/skills/cm-jtbd/SKILL.md +0 -98
  404. package/skills/cm-notebooklm/SKILL.md +0 -156
  405. package/skills/cm-notebooklm/references/command_reference.md +0 -94
  406. package/skills/cm-notebooklm/references/workflows.md +0 -60
  407. package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
  408. package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
  409. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
  410. package/skills/cm-readit/SKILL.md +0 -289
  411. package/skills/cm-readit/audio-player.md +0 -206
  412. package/skills/cm-readit/examples/blog-reader.js +0 -352
  413. package/skills/cm-readit/examples/voice-cro.js +0 -390
  414. package/skills/cm-readit/tts-engine.md +0 -262
  415. package/skills/cm-readit/ui-patterns.md +0 -362
  416. package/skills/cm-readit/voice-cro.md +0 -223
@@ -1,238 +0,0 @@
1
- # Platform Server-Side APIs Reference
2
-
3
- ## Why Server-Side APIs Matter
4
-
5
- Browser-side pixels face increasing signal loss due to:
6
- - Ad blockers (15-40% of users block tracking scripts)
7
- - iOS 14+ and browser privacy restrictions (Safari ITP, Firefox ETP)
8
- - Cookie deprecation timeline
9
-
10
- Server-side APIs (CAPI, Events API) send events directly from your server to the platform — bypassing browser restrictions entirely. Combined with browser pixels and deduplication via event_id, this gives you the best possible signal quality.
11
-
12
- Typical uplift from adding server-side APIs:
13
- - Meta CAPI: +10-20% more matched conversions
14
- - TikTok Events API: +8-15% uplift
15
- - Google Enhanced Conversions: +15-25% conversion recovery
16
-
17
- ---
18
-
19
- ## 1. Meta Conversions API (CAPI)
20
-
21
- ### Setup Methods (choose one)
22
-
23
- **Option A: Via Server-Side GTM (recommended for non-developers)**
24
- - Set up GTM Server-Side container (hosted on Google Cloud or Stape.io)
25
- - Route website events through server GTM → server GTM sends to Meta CAPI
26
- - No backend code changes needed
27
-
28
- **Option B: Direct API Integration (for developers)**
29
- - Endpoint: https://graph.facebook.com/v18.0/{pixel_id}/events
30
- - Authentication: System User Access Token from Meta Business Manager
31
- - Server sends HTTP POST for each conversion event
32
-
33
- ### Required Fields for Every CAPI Event
34
-
35
- ```
36
- {
37
- "data": [{
38
- "event_name": "Purchase", // Standard Meta event name
39
- "event_time": 1703123456, // Unix timestamp (server time)
40
- "event_id": "uuid-generated-at-conversion", // CRITICAL for dedup
41
- "action_source": "website", // Required
42
- "event_source_url": "https://yoursite.com/thank-you",
43
- "user_data": {
44
- "em": ["sha256_of_lowercase_email"], // Hashed email
45
- "ph": ["sha256_of_digitsonly_phone"], // Hashed phone
46
- "client_ip_address": "123.456.789.0", // Server-detected IP
47
- "client_user_agent": "Mozilla/5.0...", // From request headers
48
- "fbp": "_fb.1.1234567890.abcdefg", // _fbp cookie value
49
- "fbc": "fb.1.1234567890.AbCdEfGhIj" // _fbc cookie value (from fbclid)
50
- },
51
- "custom_data": {
52
- "value": 500000,
53
- "currency": "VND",
54
- "content_ids": ["PROD-123"],
55
- "content_type": "product",
56
- "contents": [{"id": "PROD-123", "quantity": 1, "item_price": 500000}],
57
- "num_items": 1,
58
- "order_id": "ORDER-20240101-001"
59
- }
60
- }],
61
- "access_token": "EAAxxxxxxxxxxxx"
62
- }
63
- ```
64
-
65
- ### Deduplication Logic
66
-
67
- When your browser pixel AND CAPI both fire for the same conversion:
68
- - Both include identical `event_id` value
69
- - Meta's system receives both events within 48-hour window
70
- - Meta matches them by event_id and counts as ONE conversion
71
- - You see "Matched events" count in Events Manager
72
-
73
- The `event_id` MUST be:
74
- - Generated ONCE per conversion (not per request)
75
- - Identical in both browser dataLayer.push() and CAPI payload
76
- - Unique across all conversions (use UUID v4)
77
-
78
- ### How to Get CAPI Access Token
79
-
80
- 1. Go to Meta Business Manager → Events Manager
81
- 2. Select your Pixel → Settings
82
- 3. Scroll to "Conversions API"
83
- 4. Click "Generate Access Token" (or use System User token from Business Settings)
84
- 5. Copy token — treat it as a secret (never expose in browser-side code)
85
-
86
- ### Testing CAPI Events
87
-
88
- Use Meta's Test Events tool in Events Manager → Test Events tab.
89
- Set test_event_code in payload during development:
90
- Add "test_event_code": "TEST12345" to the payload root (not inside data array).
91
-
92
- ---
93
-
94
- ## 2. TikTok Events API
95
-
96
- ### Setup Methods
97
-
98
- **Option A: Via Server-Side GTM with TikTok template**
99
- - Use community TikTok Events API GTM server-side template
100
- - Route events through server GTM
101
-
102
- **Option B: Direct API Integration**
103
- - Endpoint: https://business-api.tiktok.com/open_api/v1.3/event/track/
104
- - Authentication: Access Token from TikTok Events Manager
105
-
106
- ### Required Fields for Every Events API Event
107
-
108
- ```
109
- {
110
- "pixel_code": "CXXXXXXXXXX",
111
- "event": "CompletePayment", // TikTok standard event name
112
- "event_id": "uuid-generated-at-conversion", // For dedup with pixel
113
- "timestamp": "2024-01-15T10:30:00+07:00",
114
- "context": {
115
- "page": {
116
- "url": "https://yoursite.com/thank-you",
117
- "referrer": "https://yoursite.com/checkout"
118
- },
119
- "user": {
120
- "email": "sha256_of_lowercase_email",
121
- "phone_number": "sha256_of_digits_only_phone"
122
- },
123
- "ip": "123.456.789.0",
124
- "user_agent": "Mozilla/5.0..."
125
- },
126
- "properties": {
127
- "value": 500000,
128
- "currency": "VND",
129
- "content_ids": ["PROD-123"],
130
- "content_type": "product",
131
- "contents": [
132
- {
133
- "content_id": "PROD-123",
134
- "content_name": "Product Name",
135
- "content_type": "product",
136
- "quantity": 1,
137
- "price": 500000
138
- }
139
- ]
140
- }
141
- }
142
- ```
143
-
144
- Authentication header: "Access-Token: [your access token]"
145
- Content-Type: application/json
146
-
147
- ### Getting TikTok Events API Access Token
148
-
149
- 1. TikTok Ads Manager → Assets → Events
150
- 2. Select your Pixel → Set Up Web Events → Events API
151
- 3. Generate Access Token
152
- 4. Store securely server-side
153
-
154
- ### TikTok Deduplication
155
-
156
- Works identically to Meta: same event_id sent from both pixel and Events API.
157
- TikTok matches within 48-hour window.
158
-
159
- ---
160
-
161
- ## 3. Google Enhanced Conversions
162
-
163
- ### How It Works
164
-
165
- Unlike Meta CAPI and TikTok Events API (which are standalone APIs), Google Enhanced Conversions supplements your existing Google Ads conversion tag with hashed user data.
166
-
167
- The existing GTM Google Ads tag is enhanced with a user_data object containing:
168
- - email_address (raw — Google hashes it)
169
- - phone_number (raw — with country code prefix e.g. "+84912345678")
170
- - address.first_name, address.last_name, address.country, address.postal_code
171
-
172
- IMPORTANT: Google hashes the data itself (unlike Meta/TikTok where you pre-hash).
173
- Do NOT SHA256 hash for Enhanced Conversions — pass raw data.
174
-
175
- ### Setup in GTM
176
-
177
- In your existing Google Ads Conversion Tracking tag:
178
- 1. Scroll to "Enhanced conversions"
179
- 2. Enable "Include user-provided data from your website"
180
- 3. Under "User-provided data variable", create a new variable:
181
- - Type: User-Provided Data
182
- - Enter email variable: [DataLayer variable for email]
183
- - Enter phone variable: [DataLayer variable for phone]
184
-
185
- The DataLayer push should include raw (unhashed) email and phone:
186
- email: "customer@email.com"
187
- phone: "+84912345678"
188
-
189
- Or if privacy is a concern: pre-hash with SHA256 and mark as "sha256_email_address" in the enhanced conversions config.
190
-
191
- ### Google Tag API (Server-Side Enhanced Conversions)
192
-
193
- For server-side Enhanced Conversions via the Google Ads API:
194
- - Use the Google Ads API ConversionUploadService
195
- - Send click conversion with hashed user identifiers
196
- - Match window: same as your conversion window setting
197
-
198
- ---
199
-
200
- ## 4. Attribution Accuracy Benchmark
201
-
202
- After implementing pixel + server-side API for all platforms, expect:
203
-
204
- | Scenario | Pixel Only | Pixel + CAPI/Events API |
205
- |---|---|---|
206
- | iOS 14+ users | 30-50% signal loss | Full signal recovery |
207
- | Ad blocker users | 0% tracking | 80-90% recovery |
208
- | Overall conversion match rate | 60-70% | 85-95% |
209
- | ROAS accuracy | Understated by 20-40% | Near-accurate |
210
-
211
- ### Validating Server-Side Setup
212
-
213
- **Meta:** Events Manager → Pixel → Overview → Check "Event match quality" score
214
- - Score 6-7: Good
215
- - Score 8+: Excellent
216
- - Below 5: Missing user_data fields (em, ph, fbp, fbc)
217
-
218
- **TikTok:** Ads Manager → Assets → Events → Pixel → Data Details
219
- - Check "Match rate" percentage
220
- - Target: 60%+ match rate
221
-
222
- **Google:** Google Ads → Conversions → View column "Enhanced conv." count
223
- - Compare with standard conversion count
224
- - Uplift of 15-25% is typical and expected
225
-
226
- ---
227
-
228
- ## 5. Priority Implementation Order
229
-
230
- If budget/time is limited, implement in this order:
231
-
232
- 1. Browser pixels via GTM (Phase B) — covers 60-70% of users
233
- 2. First-touch cookie + UTM tracking — attribution clarity
234
- 3. Meta CAPI — highest ROI platform, biggest uplift from server-side
235
- 4. Google Enhanced Conversions — easy to add, 15-25% uplift
236
- 5. TikTok Events API — add once other platforms are stable
237
-
238
- Never implement CAPI without also keeping the browser pixel — you need both for deduplication to work. If you only have CAPI, you lose browser-generated signals like fbp cookie.
@@ -1,79 +0,0 @@
1
- # Facebook/Meta CAPI Server-Side Template
2
-
3
- ## Required Payload Fields
4
-
5
- ```json
6
- {
7
- "data": [{
8
- "event_name": "Purchase",
9
- "event_time": 1700000000,
10
- "event_id": "uuid-same-as-pixel-event-id",
11
- "action_source": "website",
12
- "event_source_url": "https://example.com/thank-you",
13
- "user_data": {
14
- "em": ["sha256_hashed_email"],
15
- "ph": ["sha256_hashed_phone_digits_only"],
16
- "client_ip_address": "1.2.3.4",
17
- "client_user_agent": "Mozilla/5.0...",
18
- "fbp": "_fbp cookie value",
19
- "fbc": "fb.1.timestamp.fbclid_value"
20
- },
21
- "custom_data": {
22
- "value": 299000,
23
- "currency": "VND",
24
- "order_id": "ORD-12345",
25
- "content_ids": ["prod_001", "prod_002"],
26
- "content_type": "product",
27
- "num_items": 2
28
- }
29
- }]
30
- }
31
- ```
32
-
33
- ## API Endpoint
34
-
35
- ```
36
- POST https://graph.facebook.com/v21.0/{PIXEL_ID}/events?access_token={CAPI_ACCESS_TOKEN}
37
- ```
38
-
39
- ## Deduplication
40
-
41
- Both browser Pixel and CAPI send the SAME `event_id`. Meta matches within 48h and counts once.
42
-
43
- ## Enhanced Matching Priority (hash with SHA256)
44
-
45
- 1. `em` — email (lowercase, trim whitespace)
46
- 2. `ph` — phone (digits only, include country code)
47
- 3. `fn` — first name (lowercase)
48
- 4. `ln` — last name (lowercase)
49
- 5. `fbp` — Facebook browser cookie
50
- 6. `fbc` — Facebook click ID cookie
51
-
52
- ## TikTok Events API Equivalent
53
-
54
- ```
55
- POST https://business-api.tiktok.com/open_api/v1.3/event/track/
56
- Headers: Access-Token: {TIKTOK_ACCESS_TOKEN}
57
- ```
58
-
59
- ```json
60
- {
61
- "pixel_code": "TIKTOK_PIXEL_ID",
62
- "event": "CompletePayment",
63
- "event_id": "same-uuid-as-pixel",
64
- "timestamp": "2025-01-15T10:30:00+07:00",
65
- "context": {
66
- "user_agent": "Mozilla/5.0...",
67
- "ip": "1.2.3.4"
68
- },
69
- "properties": {
70
- "value": 299000,
71
- "currency": "VND",
72
- "content_id": "prod_001",
73
- "content_type": "product",
74
- "contents": [
75
- {"content_id": "prod_001", "content_name": "Product A", "quantity": 1, "price": 299000}
76
- ]
77
- }
78
- }
79
- ```
@@ -1,104 +0,0 @@
1
- // DataLayer Push Templates — CM Ads Tracker v2
2
- // Copy and customize these for your project.
3
- // Developer writes ONE push per event. GTM does the rest.
4
-
5
- // ═══════════════════════════════════════════
6
- // PURCHASE (E-commerce, Courses, SaaS)
7
- // ═══════════════════════════════════════════
8
- dataLayer.push({
9
- event: 'cro_purchase',
10
- event_id: '[UUID generated server-side — same value sent to CAPI]',
11
- transaction_id: '[order_id]',
12
- value: 0, // numeric order total — NOT string
13
- currency: 'VND', // ISO 4217 code
14
- content_type: 'product',
15
- content_ids: ['product_id_1', 'product_id_2'],
16
- contents: [
17
- { content_id: 'id', content_name: 'name', content_type: 'product', quantity: 1, price: 0 }
18
- ],
19
- num_items: 1,
20
- email_hashed: '[SHA256(lowercase(email))]',
21
- phone_hashed: '[SHA256(digits-only phone)]'
22
- });
23
-
24
- // ═══════════════════════════════════════════
25
- // LEAD / FORM SUBMIT (Lead Gen, B2B, Education)
26
- // ═══════════════════════════════════════════
27
- dataLayer.push({
28
- event: 'cro_lead',
29
- event_id: '[UUID]',
30
- lead_id: '[unique lead identifier]',
31
- content_name: '[form_name or page_name]',
32
- value: 0, // lead_value_if_known — optional
33
- currency: 'VND',
34
- email_hashed: '[SHA256(lowercase(email))]',
35
- phone_hashed: '[SHA256(digits-only phone)]'
36
- });
37
-
38
- // ═══════════════════════════════════════════
39
- // VIEW CONTENT (Product/Service page)
40
- // ═══════════════════════════════════════════
41
- dataLayer.push({
42
- event: 'cro_view_content',
43
- event_id: '[UUID]',
44
- content_ids: ['product_id'],
45
- content_type: 'product',
46
- content_name: '[Product Name]',
47
- value: 0,
48
- currency: 'VND'
49
- });
50
-
51
- // ═══════════════════════════════════════════
52
- // ADD TO CART
53
- // ═══════════════════════════════════════════
54
- dataLayer.push({
55
- event: 'cro_add_to_cart',
56
- event_id: '[UUID]',
57
- content_ids: ['product_id'],
58
- content_type: 'product',
59
- content_name: '[Product Name]',
60
- value: 0,
61
- currency: 'VND',
62
- quantity: 1
63
- });
64
-
65
- // ═══════════════════════════════════════════
66
- // INITIATE CHECKOUT
67
- // ═══════════════════════════════════════════
68
- dataLayer.push({
69
- event: 'cro_initiate_checkout',
70
- event_id: '[UUID]',
71
- value: 0,
72
- currency: 'VND',
73
- num_items: 1,
74
- content_ids: ['product_id_1']
75
- });
76
-
77
- // ═══════════════════════════════════════════
78
- // REGISTRATION / SIGNUP
79
- // ═══════════════════════════════════════════
80
- dataLayer.push({
81
- event: 'cro_registration',
82
- event_id: '[UUID]',
83
- status: 'complete',
84
- email_hashed: '[SHA256]',
85
- phone_hashed: '[SHA256]'
86
- });
87
-
88
- // ═══════════════════════════════════════════
89
- // PHONE CALL CLICK
90
- // ═══════════════════════════════════════════
91
- dataLayer.push({
92
- event: 'cro_phone_call',
93
- event_id: '[UUID]',
94
- phone_number: '[phone number clicked]'
95
- });
96
-
97
- // ═══════════════════════════════════════════
98
- // SEARCH
99
- // ═══════════════════════════════════════════
100
- dataLayer.push({
101
- event: 'cro_search',
102
- event_id: '[UUID]',
103
- search_string: '[user search query]'
104
- });
@@ -1,56 +0,0 @@
1
- // GTM Variables — Full Configuration Reference
2
- // Create ALL of these in GTM > Variables > User-Defined Variables
3
-
4
- // ═══════ DataLayer Variables ═══════
5
- // Variable Name | Type | DataLayer Variable Name
6
- // DL - event_id | Data Layer Variable | event_id
7
- // DL - order_id | Data Layer Variable | transaction_id
8
- // DL - order_value | Data Layer Variable | value
9
- // DL - currency | Data Layer Variable | currency
10
- // DL - content_ids | Data Layer Variable | content_ids
11
- // DL - content_type | Data Layer Variable | content_type
12
- // DL - content_name | Data Layer Variable | content_name
13
- // DL - email_hashed | Data Layer Variable | email_hashed
14
- // DL - phone_hashed | Data Layer Variable | phone_hashed
15
-
16
- // ═══════ First-Touch Cookie Variables ═══════
17
- // Variable Name | Type | Cookie / Key
18
- // FTC - source | 1st-Party Cookie | Cookie: _ftc, key: src
19
- // FTC - medium | 1st-Party Cookie | Cookie: _ftc, key: med
20
- // FTC - campaign | 1st-Party Cookie | Cookie: _ftc, key: cmp
21
-
22
- // ═══════ URL Parameters ═══════
23
- // Variable Name | Type | Query Parameter
24
- // URL - utm_source | URL | utm_source
25
- // URL - utm_medium | URL | utm_medium
26
- // URL - utm_campaign | URL | utm_campaign
27
- // URL - fbclid | URL | fbclid
28
- // URL - ttclid | URL | ttclid
29
- // URL - gclid | URL | gclid
30
-
31
- // ═══════ First-Touch Cookie Capture (Custom HTML Tag) ═══════
32
- // Trigger: All Pages
33
- // Fire once: Only if _ftc cookie does NOT exist
34
- <script>
35
- (function(){
36
- if (document.cookie.indexOf('_ftc=') !== -1) return;
37
- var params = new URLSearchParams(window.location.search);
38
- var ftc = {
39
- src: params.get('utm_source') || '',
40
- med: params.get('utm_medium') || '',
41
- cmp: params.get('utm_campaign') || '',
42
- cnt: params.get('utm_content') || '',
43
- trm: params.get('utm_term') || '',
44
- fbclid: params.get('fbclid') || '',
45
- ttclid: params.get('ttclid') || '',
46
- gclid: params.get('gclid') || '',
47
- ref: document.referrer ? new URL(document.referrer).hostname : '',
48
- ts: new Date().toISOString()
49
- };
50
- var expiry = new Date();
51
- expiry.setDate(expiry.getDate() + 90);
52
- document.cookie = '_ftc=' + encodeURIComponent(JSON.stringify(ftc))
53
- + ';expires=' + expiry.toUTCString()
54
- + ';path=/;SameSite=Lax';
55
- })();
56
- </script>
@@ -1,81 +0,0 @@
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: `![Alt text](image_filename.jpg)`.
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`.