codymaster 5.2.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 (378) hide show
  1. package/CHANGELOG.md +276 -0
  2. package/README.md +216 -333
  3. package/dist/agent/antigravity.js +152 -0
  4. package/dist/agent/backend.js +2 -0
  5. package/dist/agent/claude.js +196 -0
  6. package/dist/agent/codex.js +204 -0
  7. package/dist/agent/copilot.js +284 -0
  8. package/dist/agent/cursor.js +211 -0
  9. package/dist/agent/factory.js +30 -0
  10. package/dist/agent/gemini.js +142 -0
  11. package/dist/agent/opencode.js +205 -0
  12. package/dist/agent/spawn-helper.js +237 -0
  13. package/dist/agent/version.js +25 -0
  14. package/dist/browse/adapter-factory.js +69 -0
  15. package/dist/browse/adapters/agent-browser-adapter.js +305 -0
  16. package/dist/browse/adapters/playwright-adapter.js +309 -0
  17. package/dist/browse/adapters/types.js +6 -0
  18. package/dist/browse/error-collector.js +132 -0
  19. package/dist/browse/event-log.js +109 -0
  20. package/dist/browse/index.js +17 -0
  21. package/dist/browse-server.js +204 -120
  22. package/dist/cli/command-registry.js +12 -0
  23. package/dist/cli/commands/dashboard.js +76 -2
  24. package/dist/cli/commands/engineering.js +218 -4
  25. package/dist/cli/commands/install.js +160 -0
  26. package/dist/cli/commands/learn.js +181 -0
  27. package/dist/cli/commands/parallel.js +138 -0
  28. package/dist/cli/commands/quality.js +105 -0
  29. package/dist/cli/commands/stack.js +49 -0
  30. package/dist/cli/commands/update.js +159 -0
  31. package/dist/cli/update-check.js +94 -10
  32. package/dist/continuity.js +3 -1
  33. package/dist/dashboard.js +47 -6
  34. package/dist/data.js +35 -0
  35. package/dist/execution/tdd-gate.js +113 -0
  36. package/dist/executor/cancel.js +34 -0
  37. package/dist/executor/gc.js +74 -0
  38. package/dist/executor/index.js +14 -0
  39. package/dist/executor/runner.js +70 -0
  40. package/dist/executor/workdir.js +31 -0
  41. package/dist/handoff/contracts.js +22 -0
  42. package/dist/handoff/index.js +18 -0
  43. package/dist/handoff/io.js +121 -0
  44. package/dist/index.js +7 -3
  45. package/dist/indexer/stack-detect.js +219 -0
  46. package/dist/install/copy.js +98 -0
  47. package/dist/install/engine.js +42 -0
  48. package/dist/install/paths.js +70 -0
  49. package/dist/install/platforms/_simple.js +85 -0
  50. package/dist/install/platforms/antigravity.js +91 -0
  51. package/dist/install/platforms/claude-code.js +107 -0
  52. package/dist/install/platforms/cursor.js +77 -0
  53. package/dist/install/platforms/index.js +27 -0
  54. package/dist/install/platforms/simple.js +163 -0
  55. package/dist/install/profiles.js +75 -0
  56. package/dist/install/types.js +2 -0
  57. package/dist/learnings.js +208 -0
  58. package/dist/middleware/metrics.js +30 -0
  59. package/dist/middleware/security-headers.js +14 -0
  60. package/dist/realtime/event-bus.js +29 -0
  61. package/dist/realtime/ws-hub.js +91 -0
  62. package/dist/schemas/task-schema.js +48 -0
  63. package/dist/schemas/validate.js +18 -0
  64. package/dist/skills-lock.js +96 -0
  65. package/dist/sprint-pipeline.js +26 -0
  66. package/dist/storage/index.js +21 -0
  67. package/dist/storage/repos/activity-repo.js +46 -0
  68. package/dist/storage/repos/message-repo.js +39 -0
  69. package/dist/storage/repos/project-repo.js +56 -0
  70. package/dist/storage/repos/task-repo.js +142 -0
  71. package/dist/storage/services/project-service.js +49 -0
  72. package/dist/storage/services/task-service.js +97 -0
  73. package/dist/storage/sqlite.js +113 -0
  74. package/dist/tier-classify.js +131 -0
  75. package/dist/ui/onboarding.js +51 -15
  76. package/dist/utils/cli-utils.js +7 -2
  77. package/dist/utils/design-taste.js +108 -0
  78. package/dist/utils/output-compress.js +143 -0
  79. package/dist/vibecoding-index.js +126 -0
  80. package/package.json +19 -4
  81. package/public/dashboard/app.js +52 -1
  82. package/scripts/build-skills-lock.mjs +88 -0
  83. package/scripts/build-skills.mjs +187 -28
  84. package/scripts/compress-skill.mjs +73 -0
  85. package/scripts/deprecate-skill.mjs +72 -0
  86. package/scripts/install.sh +170 -0
  87. package/scripts/mcp-bridge.js +2 -2
  88. package/scripts/postinstall.js +54 -287
  89. package/scripts/update-changelog.sh +88 -0
  90. package/scripts/validate-skills.mjs +101 -4
  91. package/skills/_shared/SKILL_TEMPLATE.md +62 -0
  92. package/skills/cm-autopilot/scripts/autopilot.py +19 -2
  93. package/skills/cm-brainstorm-idea/SKILL.md +9 -0
  94. package/skills/cm-clean-code/SKILL.md +20 -0
  95. package/skills/cm-code-review/SKILL.md +21 -0
  96. package/skills/cm-codeintell/SKILL.md +9 -0
  97. package/skills/cm-conductor-worktrees/SKILL.archive.md +28 -0
  98. package/skills/cm-conductor-worktrees/SKILL.md +17 -19
  99. package/skills/cm-continuity/SKILL.md +9 -0
  100. package/skills/cm-dashboard/SKILL.archive.md +15 -0
  101. package/skills/cm-dashboard/SKILL.md +20 -9
  102. package/skills/cm-dashboard/ui/app.js +9 -1
  103. package/skills/cm-debugging/SKILL.md +9 -0
  104. package/skills/cm-design-studio/SKILL.archive.md +34 -0
  105. package/skills/cm-design-studio/SKILL.md +17 -25
  106. package/skills/cm-design-system/SKILL.md +1 -0
  107. package/skills/cm-engineering-meta/SKILL.archive.md +73 -0
  108. package/skills/cm-engineering-meta/SKILL.md +16 -63
  109. package/skills/cm-execution/SKILL.md +98 -0
  110. package/skills/cm-git-worktrees/SKILL.archive.md +157 -0
  111. package/skills/cm-git-worktrees/SKILL.md +15 -146
  112. package/skills/cm-identity-guard/SKILL.md +8 -0
  113. package/skills/cm-planning/SKILL.md +63 -92
  114. package/skills/cm-post-deploy-canary/SKILL.archive.md +22 -0
  115. package/skills/cm-post-deploy-canary/SKILL.md +17 -13
  116. package/skills/cm-qa-visual-cli/SKILL.archive.md +22 -0
  117. package/skills/cm-qa-visual-cli/SKILL.md +16 -12
  118. package/skills/cm-quality-gate/SKILL.md +38 -0
  119. package/skills/cm-safe-deploy/SKILL.md +9 -0
  120. package/skills/cm-second-opinion-cli/SKILL.archive.md +23 -0
  121. package/skills/cm-second-opinion-cli/SKILL.md +17 -14
  122. package/skills/cm-secret-shield/SKILL.archive.md +580 -0
  123. package/skills/cm-secret-shield/SKILL.md +15 -569
  124. package/skills/cm-security-gate/SKILL.archive.md +239 -0
  125. package/skills/cm-security-gate/SKILL.md +15 -228
  126. package/skills/cm-skill-health/SKILL.archive.md +83 -0
  127. package/skills/cm-skill-health/SKILL.md +16 -73
  128. package/skills/cm-skill-index/SKILL.md +8 -0
  129. package/skills/cm-skill-mastery/SKILL.archive.md +156 -0
  130. package/skills/cm-skill-mastery/SKILL.md +16 -146
  131. package/skills/cm-skill-search/SKILL.archive.md +49 -0
  132. package/skills/cm-skill-search/SKILL.md +17 -40
  133. package/skills/cm-skill-share/SKILL.archive.md +58 -0
  134. package/skills/cm-skill-share/SKILL.md +17 -49
  135. package/skills/cm-sprint-bus/SKILL.md +9 -0
  136. package/skills/cm-start/SKILL.md +17 -0
  137. package/skills/cm-tdd/SKILL.md +19 -0
  138. package/skills/cm-terminal/SKILL.md +15 -0
  139. package/skills/cm-test-gate/SKILL.archive.md +245 -0
  140. package/skills/cm-test-gate/SKILL.md +15 -234
  141. package/skills/cm-ui-preview/SKILL.archive.md +153 -0
  142. package/skills/cm-ui-preview/SKILL.md +16 -143
  143. package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +1 -1
  144. package/skills/cm-ux-master/mcp/mcp-config.json +1 -1
  145. package/skills/cm-ux-master/mcp/server.py +2 -2
  146. package/skills/profiles/design.txt +1 -1
  147. package/skills/profiles/full.txt +0 -10
  148. package/skills/profiles/growth.txt +8 -8
  149. package/skills/profiles/knowledge.txt +1 -1
  150. package/skills/profiles/top35.json +41 -0
  151. package/adapters/antigravity.js +0 -15
  152. package/adapters/claude-code.js +0 -17
  153. package/adapters/cursor.js +0 -16
  154. package/skills/cm-ads-tracker/SKILL.md +0 -401
  155. package/skills/cm-ads-tracker/evals/evals.json +0 -55
  156. package/skills/cm-ads-tracker/references/gtm-architecture.md +0 -321
  157. package/skills/cm-ads-tracker/references/industry-events.md +0 -294
  158. package/skills/cm-ads-tracker/references/platforms-api.md +0 -238
  159. package/skills/cm-ads-tracker/templates/capi-payload.md +0 -79
  160. package/skills/cm-ads-tracker/templates/datalayer-push.js +0 -104
  161. package/skills/cm-ads-tracker/templates/gtm-variables.js +0 -56
  162. package/skills/cm-auto-publisher/SKILL.md +0 -81
  163. package/skills/cm-booking-calendar/SKILL.md +0 -521
  164. package/skills/cm-booking-calendar/references/industry-patterns.md +0 -527
  165. package/skills/cm-booking-calendar/templates/booking-form.css +0 -626
  166. package/skills/cm-booking-calendar/templates/booking-form.html +0 -477
  167. package/skills/cm-booking-calendar/templates/calendar-engine.js +0 -419
  168. package/skills/cm-booking-calendar/templates/calendar-export.js +0 -395
  169. package/skills/cm-booking-calendar/templates/reminder-config.js +0 -629
  170. package/skills/cm-content-factory/.content-factory-state.json +0 -132
  171. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +0 -1
  172. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +0 -1
  173. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  174. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  175. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  176. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  177. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  178. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  179. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  180. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  181. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  182. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  183. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  184. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  185. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  186. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  187. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  188. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  189. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  190. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  191. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  192. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  193. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  194. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  195. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  196. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  197. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  198. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  199. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  200. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  201. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  202. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  203. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  204. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  205. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  206. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  207. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  208. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  209. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  210. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  211. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  212. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  213. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  214. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  215. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  216. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +0 -5
  217. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  218. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  219. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  220. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  221. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  222. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  223. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  224. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  225. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  226. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  227. package/skills/cm-content-factory/.git 2/refs/heads/main +0 -1
  228. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +0 -1
  229. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +0 -76
  230. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +0 -1
  231. package/skills/cm-content-factory/AGENTS.md +0 -61
  232. package/skills/cm-content-factory/CLAUDE.md +0 -63
  233. package/skills/cm-content-factory/CURSOR.md +0 -43
  234. package/skills/cm-content-factory/Content Factory.zip +0 -0
  235. package/skills/cm-content-factory/SKILL.md +0 -416
  236. package/skills/cm-content-factory/cf +0 -313
  237. package/skills/cm-content-factory/config.schema.json +0 -397
  238. package/skills/cm-content-factory/dashboard/app.js +0 -556
  239. package/skills/cm-content-factory/dashboard/index.html +0 -397
  240. package/skills/cm-content-factory/dashboard/style.css +0 -1211
  241. package/skills/cm-content-factory/examples/01-real-estate.config.json +0 -146
  242. package/skills/cm-content-factory/examples/02-personal-finance.config.json +0 -146
  243. package/skills/cm-content-factory/examples/03-health-wellness.config.json +0 -147
  244. package/skills/cm-content-factory/examples/04-saas-software.config.json +0 -147
  245. package/skills/cm-content-factory/examples/05-legal-services.config.json +0 -147
  246. package/skills/cm-content-factory/examples/06-insurance.config.json +0 -146
  247. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +0 -146
  248. package/skills/cm-content-factory/examples/08-online-education.config.json +0 -147
  249. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +0 -147
  250. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +0 -147
  251. package/skills/cm-content-factory/examples/11-home-services.config.json +0 -146
  252. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +0 -147
  253. package/skills/cm-content-factory/examples/13-pet-care.config.json +0 -147
  254. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +0 -147
  255. package/skills/cm-content-factory/examples/15-ai-automation.config.json +0 -147
  256. package/skills/cm-content-factory/examples/16-wedding-events.config.json +0 -147
  257. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +0 -148
  258. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +0 -147
  259. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +0 -148
  260. package/skills/cm-content-factory/examples/20-solar-energy.config.json +0 -147
  261. package/skills/cm-content-factory/examples/fitness-blog.config.json +0 -116
  262. package/skills/cm-content-factory/examples/tech-blog.config.json +0 -107
  263. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +0 -72
  264. package/skills/cm-content-factory/extensions/hooks.py +0 -126
  265. package/skills/cm-content-factory/extensions/openclaw_adapter.py +0 -132
  266. package/skills/cm-content-factory/landing/docs/content/changelog.md +0 -36
  267. package/skills/cm-content-factory/landing/docs/content/deployment.md +0 -46
  268. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +0 -67
  269. package/skills/cm-content-factory/landing/docs/content/memory-system.md +0 -38
  270. package/skills/cm-content-factory/landing/docs/content/openspace.md +0 -27
  271. package/skills/cm-content-factory/landing/docs/content/use-cases.md +0 -26
  272. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +0 -28
  273. package/skills/cm-content-factory/landing/docs/index.html +0 -240
  274. package/skills/cm-content-factory/landing/index.html +0 -680
  275. package/skills/cm-content-factory/landing/script.js +0 -143
  276. package/skills/cm-content-factory/landing/style.css +0 -1216
  277. package/skills/cm-content-factory/landing/translations.js +0 -508
  278. package/skills/cm-content-factory/logs/events.jsonl +0 -11
  279. package/skills/cm-content-factory/profiles/_template.profile.json +0 -231
  280. package/skills/cm-content-factory/profiles/finance.profile.json +0 -278
  281. package/skills/cm-content-factory/profiles/legal.profile.json +0 -263
  282. package/skills/cm-content-factory/profiles/medical-research.profile.json +0 -321
  283. package/skills/cm-content-factory/profiles/technology.profile.json +0 -275
  284. package/skills/cm-content-factory/scripts/agent_dispatcher.py +0 -266
  285. package/skills/cm-content-factory/scripts/audit.py +0 -106
  286. package/skills/cm-content-factory/scripts/dashboard_server.py +0 -225
  287. package/skills/cm-content-factory/scripts/deploy.py +0 -146
  288. package/skills/cm-content-factory/scripts/extract.py +0 -132
  289. package/skills/cm-content-factory/scripts/landing_generator.py +0 -459
  290. package/skills/cm-content-factory/scripts/memory.py +0 -521
  291. package/skills/cm-content-factory/scripts/monetize.py +0 -239
  292. package/skills/cm-content-factory/scripts/pipeline.py +0 -357
  293. package/skills/cm-content-factory/scripts/plan.py +0 -163
  294. package/skills/cm-content-factory/scripts/publish.py +0 -145
  295. package/skills/cm-content-factory/scripts/research.py +0 -337
  296. package/skills/cm-content-factory/scripts/scaffold.py +0 -464
  297. package/skills/cm-content-factory/scripts/scoreboard.py +0 -336
  298. package/skills/cm-content-factory/scripts/seo.py +0 -90
  299. package/skills/cm-content-factory/scripts/state_manager.py +0 -320
  300. package/skills/cm-content-factory/scripts/token_manager.py +0 -268
  301. package/skills/cm-content-factory/scripts/validate.py +0 -221
  302. package/skills/cm-content-factory/scripts/wizard.py +0 -329
  303. package/skills/cm-content-factory/scripts/write.py +0 -93
  304. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  305. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +0 -90
  306. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +0 -54
  307. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +0 -38
  308. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +0 -65
  309. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +0 -48
  310. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +0 -39
  311. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +0 -42
  312. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +0 -51
  313. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +0 -52
  314. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +0 -86
  315. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +0 -80
  316. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +0 -58
  317. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +0 -102
  318. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +0 -45
  319. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +0 -29
  320. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +0 -55
  321. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +0 -29
  322. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +0 -41
  323. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +0 -40
  324. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +0 -56
  325. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +0 -46
  326. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +0 -45
  327. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +0 -45
  328. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +0 -108
  329. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +0 -22
  330. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +0 -52
  331. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +0 -58
  332. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +0 -92
  333. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +0 -575
  334. package/skills/cm-content-factory/tests/conftest.py +0 -66
  335. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +0 -125
  336. package/skills/cm-content-factory/tests/test_memory.py +0 -128
  337. package/skills/cm-content-factory/tests/test_pipeline.py +0 -107
  338. package/skills/cm-content-factory/tests/test_research.py +0 -56
  339. package/skills/cm-content-factory/tests/test_state_manager.py +0 -131
  340. package/skills/cm-content-factory/tests/test_token_manager.py +0 -110
  341. package/skills/cm-content-factory/tests/test_wizard.py +0 -121
  342. package/skills/cm-cro-methodology/SKILL.md +0 -290
  343. package/skills/cm-cro-methodology/references/COPYWRITING.md +0 -178
  344. package/skills/cm-cro-methodology/references/OBJECTIONS.md +0 -135
  345. package/skills/cm-cro-methodology/references/PERSUASION.md +0 -158
  346. package/skills/cm-cro-methodology/references/RESEARCH.md +0 -220
  347. package/skills/cm-cro-methodology/references/funnel-analysis.md +0 -365
  348. package/skills/cm-cro-methodology/references/testing-methodology.md +0 -330
  349. package/skills/cm-google-form/SKILL.md +0 -266
  350. package/skills/cm-google-form/templates/apps-script.js +0 -55
  351. package/skills/cm-google-form/templates/form-markup.html +0 -110
  352. package/skills/cm-google-form/templates/form-submit.js +0 -201
  353. package/skills/cm-google-form/templates/toast.css +0 -152
  354. package/skills/cm-growth-hacking/SKILL.md +0 -282
  355. package/skills/cm-growth-hacking/bottom-sheet-engine.md +0 -261
  356. package/skills/cm-growth-hacking/calendar-integration.md +0 -264
  357. package/skills/cm-growth-hacking/references/engagement-patterns.md +0 -346
  358. package/skills/cm-growth-hacking/templates/bottom-sheet.css +0 -528
  359. package/skills/cm-growth-hacking/templates/bottom-sheet.js +0 -269
  360. package/skills/cm-growth-hacking/templates/calendar-cta.js +0 -213
  361. package/skills/cm-growth-hacking/templates/tracking-events.js +0 -211
  362. package/skills/cm-growth-hacking/templates/trigger-manager.js +0 -254
  363. package/skills/cm-growth-hacking/tracking-events.md +0 -246
  364. package/skills/cm-growth-hacking/trigger-system.md +0 -342
  365. package/skills/cm-jtbd/SKILL.md +0 -98
  366. package/skills/cm-notebooklm/SKILL.md +0 -156
  367. package/skills/cm-notebooklm/references/command_reference.md +0 -94
  368. package/skills/cm-notebooklm/references/workflows.md +0 -60
  369. package/skills/cm-notebooklm/resources/knowledge_sources.md +0 -106
  370. package/skills/cm-notebooklm/scripts/brain-sync.sh +0 -453
  371. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +0 -101
  372. package/skills/cm-readit/SKILL.md +0 -289
  373. package/skills/cm-readit/audio-player.md +0 -206
  374. package/skills/cm-readit/examples/blog-reader.js +0 -352
  375. package/skills/cm-readit/examples/voice-cro.js +0 -390
  376. package/skills/cm-readit/tts-engine.md +0 -262
  377. package/skills/cm-readit/ui-patterns.md +0 -362
  378. package/skills/cm-readit/voice-cro.md +0 -223
@@ -1,121 +0,0 @@
1
- """Tests for wizard.py — Config generation and utility functions."""
2
- import json
3
- import sys
4
- import pytest
5
- from pathlib import Path
6
-
7
- SCRIPTS_DIR = Path(__file__).resolve().parent.parent / "scripts"
8
- sys.path.insert(0, str(SCRIPTS_DIR))
9
-
10
-
11
- class TestSlugify:
12
- """Test Wizard._slugify() method."""
13
-
14
- def test_basic_slug(self):
15
- """Should lowercase and replace spaces with hyphens."""
16
- from wizard import Wizard
17
- w = Wizard()
18
- assert w._slugify("Hello World") == "hello-world"
19
-
20
- def test_special_characters(self):
21
- """Should strip special characters."""
22
- from wizard import Wizard
23
- w = Wizard()
24
- assert w._slugify("Hello! @World #123") == "hello-world-123"
25
-
26
- def test_unicode_text(self):
27
- """Should handle Vietnamese/unicode text."""
28
- from wizard import Wizard
29
- w = Wizard()
30
- result = w._slugify("Spa Massage Đông Y")
31
- assert "-" in result or len(result) > 0
32
-
33
- def test_empty_string(self):
34
- """Should handle empty string."""
35
- from wizard import Wizard
36
- w = Wizard()
37
- assert w._slugify("") == ""
38
-
39
- def test_already_slug(self):
40
- """Should not change already-slugified text."""
41
- from wizard import Wizard
42
- w = Wizard()
43
- assert w._slugify("hello-world") == "hello-world"
44
-
45
- def test_leading_trailing_special(self):
46
- """Should strip leading/trailing hyphens."""
47
- from wizard import Wizard
48
- w = Wizard()
49
- assert w._slugify("--hello--") == "hello"
50
-
51
-
52
- class TestGenerateConfig:
53
- """Test Wizard._generate_config() method."""
54
-
55
- def test_generates_valid_config(self):
56
- """Should produce a config with all required keys."""
57
- from wizard import Wizard
58
- w = Wizard()
59
- w.answers = {
60
- "niche": {"id": "test-niche"},
61
- "brand_name": "TestBrand",
62
- "slogan": "Test Slogan",
63
- "language": "en",
64
- "deploy": "cloudflare"
65
- }
66
- config = w._generate_config()
67
-
68
- assert "niche" in config
69
- assert "brand" in config
70
- assert config["brand"]["name"] == "TestBrand"
71
- assert config["brand"]["slogan"] == "Test Slogan"
72
- assert "content" in config
73
- assert "sources" in config
74
- assert "output" in config
75
-
76
- def test_config_has_memory_section(self):
77
- """Generated config should include memory settings."""
78
- from wizard import Wizard
79
- w = Wizard()
80
- w.answers = {
81
- "niche": {"id": "test"},
82
- "brand_name": "T",
83
- "slogan": "S",
84
- "language": "vi",
85
- "deploy": "none"
86
- }
87
- config = w._generate_config()
88
- assert "memory" in config
89
- assert config["memory"]["enabled"] is True
90
-
91
- def test_config_has_scoring_section(self):
92
- """Generated config should include scoring settings."""
93
- from wizard import Wizard
94
- w = Wizard()
95
- w.answers = {
96
- "niche": {"id": "test"},
97
- "brand_name": "T",
98
- "slogan": "S",
99
- "language": "vi",
100
- "deploy": "none"
101
- }
102
- config = w._generate_config()
103
- assert "scoring" in config
104
- assert config["scoring"]["reward_praise"] == 10
105
- assert config["scoring"]["penalty_delete"] == -10
106
-
107
- def test_config_from_template(self):
108
- """When niche has a template, should use it as base."""
109
- from wizard import Wizard
110
- w = Wizard()
111
- template = {"niche": "template-niche", "content": {"article_types": []}, "sources": {"type": "url", "path": "/"}, "output": {"content_dir": "c/"}}
112
- w.answers = {
113
- "niche": {"id": "templated", "template": template},
114
- "brand_name": "TB",
115
- "slogan": "TS",
116
- "language": "en",
117
- "deploy": "github"
118
- }
119
- config = w._generate_config()
120
- assert config["brand"]["name"] == "TB"
121
- assert "deploy" in config
@@ -1,290 +0,0 @@
1
- ---
2
- name: cm-cro-methodology
3
- description: 'Audit websites and landing pages for conversion issues and design evidence-based A/B tests. Use when the user mentions "landing page isn''t converting", "conversion rate", "A/B test", "why visitors leave", or "objection handling". Covers funnel mapping, persuasion assets, and objection/counter-objection frameworks. For overall marketing strategy, see one-page-marketing. For usability issues, see ux-heuristics.'
4
- license: MIT
5
- metadata:
6
- author: wondelai
7
- version: "1.1.1"
8
- ---
9
-
10
- # CRO Methodology
11
-
12
- Scientific, customer-centric approach to conversion rate optimization based on the CRE Methodology(TM). Extraordinary improvements come from understanding WHY visitors don't convert, not from copying competitors or applying generic tips.
13
-
14
- ## Core Principle
15
-
16
- **Don't guess -- discover.** The methodology rejects "best practices" and "magic buttons" in favor of evidence-based optimization. Most websites underperform not because of bad design, but because no one has systematically researched why visitors leave without converting.
17
-
18
- **The foundation:** Every visitor who doesn't convert has a reason. Your job is to discover those reasons through research, then systematically eliminate them with evidence and proof. This customer-centric approach consistently outperforms intuition, competitor copying, and "expert" opinions.
19
-
20
- ## Scoring
21
-
22
- **Goal: 10/10.** When reviewing or creating landing pages, funnels, or conversion flows, rate them 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.
23
-
24
- ## The CRO Frameworks
25
-
26
- ### 1. The CRO Process
27
-
28
- **Core concept:** A systematic 9-step process for optimizing conversion rates, moving from defining success metrics through research, experimentation, and scaling wins across the business.
29
-
30
- **Why it works:** Random optimization efforts fail because they skip the critical research steps. The CRE process forces you to understand visitors before changing anything, ensuring changes are based on evidence rather than opinion.
31
-
32
- **Key insights:**
33
- - Define success metrics aligned with business KPIs before touching any page
34
- - Map the entire conversion funnel to find "blocked arteries" (high-traffic underperforming paths) and "missing links" (absent funnel stages)
35
- - Understand visitors in three dimensions: who they are (types and intentions), what blocks them (UX problems), and what stops them (objections)
36
- - Gather market intelligence from competitors, reviews, and other industries
37
- - Prioritize ideas using ICE scoring (Impact, Confidence, Ease) before testing
38
- - Create bold experimental designs based on research, not "meek tweaks"
39
- - Run experiments with proper statistical rigor (95% confidence minimum, full business cycles)
40
- - Scale wins across landing pages, ad copy, email sequences, and offline materials
41
-
42
- **Product applications:**
43
-
44
- | Context | CRO Process Step | Example |
45
- |---------|-----------------|---------|
46
- | **Landing page audit** | Steps 1-3: Define goals, map funnel, research visitors | Identify that 70% of traffic bounces because value prop is unclear |
47
- | **Checkout optimization** | Step 2: Map funnel for blocked arteries | Discover shipping cost shock causes 40% cart abandonment |
48
- | **New feature launch** | Steps 6-8: Strategize, design, experiment | A/B test two positioning approaches before full rollout |
49
- | **Email sequence** | Step 9: Scale wins | Apply winning objection-handling copy from landing page to drip emails |
50
- | **Competitor response** | Step 4: Market intelligence | Transfer proven strategies from adjacent industries |
51
-
52
- **Copy patterns:**
53
- - "What's preventing you from [action] today?" (exit survey question to discover objections)
54
- - "Here's what [X] customers found..." (counter-objection with social proof)
55
- - Document hypothesis: "If we [change X], then [metric Y] will improve because [reason from research]"
56
- - Always calculate required sample size BEFORE starting any test
57
-
58
- **Ethical boundary:** Never manipulate test results or cherry-pick data. Report all tests, including failures, and wait for genuine statistical significance.
59
-
60
- See: [testing-methodology.md](references/testing-methodology.md) for detailed ICE scoring, A/B vs. multivariate guidance, and statistical rigor.
61
-
62
- ### 2. Customer Research & Objections
63
-
64
- **Core concept:** Visitors don't convert for specific, discoverable reasons. Research methods -- exit surveys, chat logs, support tickets, sales calls, reviews -- reveal the "voice of the customer" and their real objections.
65
-
66
- **Why it works:** Companies guess why visitors leave, but guesses are almost always wrong. Direct research consistently uncovers objections that teams never anticipated, and the language customers use is more persuasive than any copywriter's invention.
67
-
68
- **Key insights:**
69
- - Primary sources (exit surveys, live chat logs, support tickets, sales call recordings) give you direct visitor language
70
- - Secondary sources (reviews, social media, competitor analysis) reveal industry-wide objections
71
- - Objections fall into two categories: explicit ("too expensive") and implicit ("I'm not sure I'll follow through")
72
- - The "Big 5" universal objections are Trust, Price, Fit, Timing, and Effort
73
- - Post-purchase surveys ("What almost stopped you from buying?") reveal the objections that matter most
74
- - Non-converter surveys should ask ONE question for maximum response rate
75
- - Quantitative research (analytics, heatmaps) shows WHERE problems are; qualitative research (surveys, interviews) shows WHY
76
-
77
- **Product applications:**
78
-
79
- | Context | Research Method | Example |
80
- |---------|---------------|---------|
81
- | **Exit intent** | On-site survey (Hotjar, Qualaroo) | "What's preventing you from signing up today?" |
82
- | **Post-purchase** | Email survey within 7 days | "What almost stopped you from buying?" |
83
- | **Objection mining** | Support ticket analysis | Search for "but", "however", "worried about" patterns |
84
- | **Voice of customer** | Sales call recordings | Capture exact language customers use to describe problems |
85
- | **Competitive gaps** | Review mining (yours and competitors') | Negative reviews = unaddressed objections |
86
-
87
- **Copy patterns:**
88
- - Use exact customer language in headlines and body copy (more persuasive than polished marketing copy)
89
- - "What's the one thing we could change to make you [action]?"
90
- - "How would you describe [product] to a friend?" (reveals positioning in customer terms)
91
- - Ask open-ended questions for discovery; save multiple choice for validation
92
-
93
- **Ethical boundary:** Respect customer privacy in research. Anonymize data, get consent for recordings, and don't survey so aggressively that you degrade the user experience.
94
-
95
- See: [RESEARCH.md](references/RESEARCH.md) for tools, survey questions, and data analysis methods.
96
-
97
- ### 3. Persuasion Assets
98
-
99
- **Core concept:** Every company has overlooked proof elements -- testimonials not displayed, awards not mentioned, statistics not highlighted, guarantees not prominent, team credentials hidden. These are "persuasion assets" that must be inventoried, acquired, and displayed.
100
-
101
- **Why it works:** Visitors make decisions based on evidence and proof, not claims. A bold claim without proof is just noise. A modest claim with overwhelming proof is irresistible. Most companies sit on goldmines of proof they never use.
102
-
103
- **Key insights:**
104
- - Audit five categories: Credentials & Authority, Social Proof, Risk Reversal, Data & Specificity, Process & Methodology
105
- - Create a "wish list" for missing assets and actively acquire them (request testimonials, apply for awards, compile statistics)
106
- - The "proof sandwich" structure: Claim (bold promise) then Proof (evidence) then Reinforcement (secondary proof)
107
- - Hierarchy of proof from strongest to weakest: specific results with context, named testimonials with photos, case studies, statistics, logos/badges, generic testimonials
108
- - Place proof at points of friction, not hidden in FAQs
109
- - Specific numbers beat round numbers ("47,832 customers" beats "About 50,000")
110
-
111
- **Product applications:**
112
-
113
- | Context | Persuasion Asset | Example |
114
- |---------|-----------------|---------|
115
- | **Landing page header** | Logo bar + rating | "Trusted by 10,000+ companies" with 5 recognizable logos |
116
- | **Pricing page** | Risk reversal | "30-day money-back guarantee, no questions asked" |
117
- | **Product page** | Specific testimonial | Photo + name + company + "Increased conversion by 47% in 3 weeks" |
118
- | **Checkout flow** | Trust badges near forms | Security certification, payment logos, guarantee seal |
119
- | **About page** | Team credentials | Years of experience, certifications, publications, patents |
120
-
121
- **Copy patterns:**
122
- - "Here's how we did it for [Company X]..." (case study proof)
123
- - "And here's what their CEO says about working with us..." (testimonial reinforcement)
124
- - "[Specific number] businesses trust us" (not "thousands of customers")
125
- - Lead with benefits, not features: "Never delete another photo" beats "256GB storage"
126
-
127
- **Ethical boundary:** Never fabricate testimonials, inflate statistics, or display fake trust badges. All proof must be genuine and verifiable.
128
-
129
- See: [PERSUASION.md](references/PERSUASION.md) for the full persuasion assets checklist and psychological triggers.
130
-
131
- ### 4. The O/CO Framework
132
-
133
- **Core concept:** The Objection/Counter-Objection (O/CO) table is the core CRE technique. Create a two-column table mapping every visitor objection to specific, evidence-backed counter-objections.
134
-
135
- **Why it works:** Visitors arrive with objections. If the page doesn't address them, visitors leave. The O/CO framework ensures no objection goes unanswered, and counter-objections are placed exactly where objections naturally arise during the reading flow.
136
-
137
- **Key insights:**
138
- - Don't guess objections -- research them from surveys, chat logs, support tickets, and sales calls
139
- - Implicit objections (ones visitors won't admit) require "CO Only" approach: address the objection without stating it
140
- - Place counter-objections at the point of friction (credit card objection near payment form), not buried in FAQ
141
- - Address primary objections above the fold, secondary objections in the flow
142
- - Use multiple formats for the same counter-objection: text, video, testimonial, data
143
- - Canned support responses are goldmines of tested counter-objections
144
-
145
- **Product applications:**
146
-
147
- | Context | Objection Type | O/CO Example |
148
- |---------|---------------|-------------|
149
- | **Trust** | "Why should I believe you?" | Specific testimonials, media logos, awards, money-back guarantee |
150
- | **Price** | "Is it worth the money?" | ROI calculator, cost comparison vs. alternatives, payment plans |
151
- | **Fit** | "Will it work for MY situation?" | Case studies from similar customers, segmented landing pages, free trial |
152
- | **Timing** | "Why should I act now?" | Cost of delay calculation, genuine limited-time offers, seasonal relevance |
153
- | **Effort** | "How hard will this be?" | "Done for you" framing, "Set up in 5 minutes", step-by-step breakdown |
154
-
155
- **Copy patterns:**
156
- - Bad (stating implicit objection): "Worried you're too lazy to learn a language?"
157
- - Good (CO Only): "Let the audio do the work for you."
158
- - "What's preventing you from signing up today?" (survey to discover objections)
159
- - "What almost stopped you from buying?" (post-purchase survey to validate O/CO table)
160
-
161
- **Ethical boundary:** Address real objections with honest counter-objections. Never dismiss legitimate concerns or use deception to overcome valid hesitations.
162
-
163
- See: [OBJECTIONS.md](references/OBJECTIONS.md) for the full O/CO framework, research methods, and counter-objection techniques.
164
-
165
- ### 5. Hypothesis Design
166
-
167
- **Core concept:** Every experiment needs a documented hypothesis linking a specific change to an expected outcome with a reason grounded in research. Prioritize using ICE scoring (Impact, Confidence, Ease).
168
-
169
- **Why it works:** Without a hypothesis, you're just changing things randomly. The hypothesis forces you to articulate WHY a change should work, which means it must be grounded in customer research. ICE scoring prevents teams from wasting time on low-impact "meek tweaks."
170
-
171
- **Key insights:**
172
- - Hypothesis format: "If we [change X], then [metric Y] will improve because [reason based on research]"
173
- - Define primary metric (determines winner), secondary metrics (additional monitoring), and guardrail metrics (must not decrease)
174
- - ICE scores: Impact (1-10: could this double conversion?), Confidence (1-10: is research backing strong?), Ease (1-10: how easy to implement?)
175
- - Make BOLD changes, not "meek tweaks" -- small changes rarely reach statistical significance and waste resources
176
- - Before testing, ask: "Could this 10x our results?" If not, reconsider priority
177
- - Worth testing: complete page redesign, new value proposition, fundamentally different offer
178
- - Not worth testing: button color, font size, image swap
179
-
180
- **Product applications:**
181
-
182
- | Context | Hypothesis Example | ICE Score |
183
- |---------|-------------------|-----------|
184
- | **Headline rewrite** | "If we use customer language from surveys, conversion will increase because visitors see their own words reflected" | I:8, C:9, E:10 = 9.0 |
185
- | **Video testimonial** | "If we add video testimonial addressing price objection, signups will increase because visitors need trust proof" | I:7, C:7, E:6 = 6.7 |
186
- | **Checkout redesign** | "If we simplify checkout to one page, completion will increase because analytics show 40% drop at step 2" | I:9, C:6, E:3 = 6.0 |
187
- | **Button color** | "If we change button from blue to green, clicks will increase because green means go" | I:2, C:2, E:10 = 4.7 |
188
-
189
- **Copy patterns:**
190
- - "Based on our research, visitors' #1 objection is [X]. This test addresses it by [Y]."
191
- - Document before: hypothesis, primary metric, sample size, duration, traffic allocation
192
- - Document after: raw numbers, confidence interval, practical significance, learnings, next steps
193
- - Every test adds to organizational knowledge regardless of outcome
194
-
195
- **Ethical boundary:** Report all test results honestly, including failures. Never cherry-pick data or run tests until you get the result you want.
196
-
197
- See: [testing-methodology.md](references/testing-methodology.md) for ICE scoring tables and detailed prioritization.
198
-
199
- ### 6. A/B Testing Methodology
200
-
201
- **Core concept:** Run controlled experiments comparing page versions to determine which performs better, using proper statistical rigor to ensure results are real, not random noise.
202
-
203
- **Why it works:** Without controlled experiments, you can't distinguish real improvements from random variation. Proper A/B testing methodology prevents the most common errors: peeking and stopping early, insufficient sample size, ignoring practical significance, and the multiple comparison problem.
204
-
205
- **Key insights:**
206
- - Calculate required sample size BEFORE starting (inputs: baseline rate, minimum detectable effect, 80% power, 95% significance)
207
- - Run for at least one full business cycle (1-2 weeks) including weekdays AND weekends
208
- - Never peek at results and stop early -- this inflates false positive rates dramatically
209
- - 95% confidence minimum (p-value less than 0.05) before calling a winner
210
- - A statistically significant 0.1% lift isn't worth implementation complexity (practical significance matters)
211
- - Start with A/B tests; only move to multivariate when you have 100k+ monthly visitors and a proven winning page
212
- - A failed test that teaches you something is more valuable than a winning test you don't understand
213
- - Promote winners to new control and iterate
214
-
215
- **Product applications:**
216
-
217
- | Context | Test Type | Example |
218
- |---------|----------|---------|
219
- | **Concept validation** | A/B test (2-4 variants) | Test two fundamentally different page layouts based on different customer insights |
220
- | **Element optimization** | Multivariate (100k+ visitors) | Test 3 headlines x 3 images x 2 CTAs on proven winning page |
221
- | **Low traffic** | Bold A/B test | Make dramatic changes detectable with smaller samples (~4,000 visitors for 50% lift) |
222
- | **High traffic** | Rapid iteration | Run parallel tests on non-overlapping pages, 10-20 tests/month |
223
- | **Post-test** | Scale wins | Apply winning insights across landing pages, ad copy, email sequences |
224
-
225
- **Copy patterns:**
226
- - "We increased [metric] by [X]% with [Y]% confidence over [Z] weeks"
227
- - "Test showed no significant difference, teaching us that [insight about customers]"
228
- - "Control outperformed challenger, suggesting visitors prefer [existing approach] because [reason]"
229
- - Always document learnings: Test, Hypothesis, Result, Learning, Applicable to
230
-
231
- **Ethical boundary:** Never manipulate statistical methods to manufacture significance. Report confidence intervals honestly and acknowledge when results are inconclusive.
232
-
233
- See: [testing-methodology.md](references/testing-methodology.md) for statistical significance, sample size calculations, and platform comparison.
234
-
235
- ## Common Mistakes
236
-
237
- | Mistake | Why It Fails | Fix |
238
- |---------|-------------|------|
239
- | **Copying competitors blindly** | You don't know if their approach works for them, let alone for you | Research YOUR visitors' objections and build YOUR evidence |
240
- | **Testing button colors before understanding objections** | Addresses surface symptoms, not root causes; tiny effects waste sample size | Do customer research first, then test big changes based on findings |
241
- | **Assuming you know why visitors leave** | Teams are almost always wrong about visitor motivations | Use exit surveys, chat logs, and support analysis to discover real reasons |
242
- | **Using "best practices" without validation** | What works elsewhere may not work for your audience, product, or context | Treat best practices as hypotheses to test, not rules to follow |
243
- | **Making decisions based on HiPPO** | Highest Paid Person's Opinion is not data; authority bias kills optimization | Let research and test results determine changes, not seniority |
244
- | **Optimizing pages without funnel context** | Improving one step may shift problems to another; miss biggest opportunities | Map entire funnel first, identify blocked arteries, prioritize by impact |
245
- | **Making "meek tweaks" instead of bold changes** | Small changes rarely reach statistical significance; wastes time and traffic | Test changes that could double conversion, not nudge it 2% |
246
- | **Giving up after one failed test** | The opportunity still exists; you just haven't found the solution yet | Investigate why, go back to research, try a bolder change |
247
-
248
- ## Quick Diagnostic
249
-
250
- Audit any landing page or conversion flow:
251
-
252
- | Question | If No | Action |
253
- |----------|-------|--------|
254
- | Do we know the ONE action visitors should take on this page? | Page lacks focus, visitors are confused | Define single primary conversion goal and remove competing CTAs |
255
- | Have we researched why visitors aren't converting (not guessed)? | Optimization is based on assumptions, not evidence | Run exit surveys, analyze chat logs, review support tickets |
256
- | Do we have an O/CO table mapping objections to counter-objections? | Visitor objections go unanswered on the page | Build O/CO table from research, place counter-objections at friction points |
257
- | Is the value proposition crystal clear within 5 seconds? | Visitors bounce before understanding the offer | Run 5-second test, rewrite headline using customer language |
258
- | Are persuasion assets visible (testimonials, awards, guarantees)? | Page makes claims without proof, visitors don't believe | Audit persuasion assets, acquire missing ones, display prominently |
259
- | Have we mapped the full funnel and identified blocked arteries? | Optimizing wrong page or missing biggest opportunity | Map traffic volume at each stage, compare to benchmarks, prioritize by impact |
260
-
261
- ## Quick-Start Checklist
262
-
263
- When optimizing any page:
264
-
265
- 1. [ ] What is the ONE action visitors should take?
266
- 2. [ ] Who are the visitors? What stage of buying journey?
267
- 3. [ ] What are their top 3-5 objections? (Don't guess -- research)
268
- 4. [ ] What proof/counter-objections address each?
269
- 5. [ ] Is the value proposition crystal clear in 5 seconds?
270
- 6. [ ] Are there UX blockers? (speed, mobile, forms)
271
- 7. [ ] What persuasion assets are missing or hidden?
272
-
273
- ## Reference Files
274
-
275
- - [OBJECTIONS.md](references/OBJECTIONS.md): O/CO framework, research methods, counter-objection techniques
276
- - [COPYWRITING.md](references/COPYWRITING.md): Headlines, proof elements, persuasive writing
277
- - [PERSUASION.md](references/PERSUASION.md): Persuasion assets checklist, psychological triggers
278
- - [RESEARCH.md](references/RESEARCH.md): Tools, survey questions, data analysis
279
- - [testing-methodology.md](references/testing-methodology.md): A/B testing, statistical significance, ICE prioritization, multivariate testing
280
- - [funnel-analysis.md](references/funnel-analysis.md): Blocked arteries, missing links, industry funnels, cross-sell mapping
281
-
282
- ## Further Reading
283
-
284
- This skill is based on the CRE Methodology(TM) developed by Conversion Rate Experts. For the complete methodology, detailed case studies, and advanced techniques, read the original book:
285
-
286
- - [*"Making Websites Win: Apply the Customer-Centric Methodology That Has Doubled the Sales of Many Leading Websites"*](https://www.amazon.com/Making-Websites-Win-Customer-Centric-Methodology/dp/1544500513) by Dr. Karl Blanks and Ben Jesson
287
-
288
- ## About the Author
289
-
290
- **Dr. Karl Blanks and Ben Jesson** are the cofounders of Conversion Rate Experts (CRE), the world's leading agency specializing in conversion rate optimization. Their clients have included Google, Apple, Amazon, Facebook, Dropbox, and many other technology leaders. CRE's methodology has been recognized with a Queen's Award for Enterprise (Innovation), the UK's highest business honor. Blanks holds a PhD in user experience and previously managed teams of usability researchers at Hewlett-Packard. Jesson's background is in direct-response marketing and web development. Together they developed the CRE Methodology, which has been applied across hundreds of websites and consistently delivered significant conversion improvements. Their book *Making Websites Win* distills this methodology into a systematic, repeatable process for evidence-based website optimization.
@@ -1,178 +0,0 @@
1
- # Persuasive Copywriting for CRO
2
-
3
- Evidence-based copywriting principles. Write as much as it takes to communicate your entire sales message—but not one word more.
4
-
5
- ## Headlines
6
-
7
- The headline's job: Get visitors to read the next line.
8
-
9
- ### Headline Formulas That Work
10
-
11
- **Problem-agitate-solve**:
12
- "Tired of [problem]? [Solution] lets you [benefit]."
13
-
14
- **Specificity wins**:
15
- Bad: "Improve your conversion rate"
16
- Good: "How we increased conversions by 363%"
17
-
18
- **News angle**:
19
- "[X] facts about [topic] you were never told"
20
-
21
- **How-to**:
22
- "How to [achieve result] without [common pain]"
23
-
24
- **Question**:
25
- "What's stopping your website from converting?"
26
-
27
- ### Headline Testing Priority
28
-
29
- 1. Value proposition clarity
30
- 2. Specific numbers/results
31
- 3. Audience targeting
32
- 4. Urgency/timeliness
33
- 5. Emotional hook
34
-
35
- ## Body Copy Principles
36
-
37
- ### Length
38
- Write as much as it takes to:
39
- - Communicate the complete sales message
40
- - Address all major objections
41
- - Provide sufficient proof
42
-
43
- Long copy works when visitors are:
44
- - Unfamiliar with product category
45
- - Making a high-commitment decision
46
- - Comparing alternatives
47
-
48
- Short copy works when:
49
- - Brand is well-known
50
- - Product is simple/commoditized
51
- - Visitors are already convinced
52
-
53
- ### Structure
54
-
55
- **Lead with benefits, not features**
56
- Feature: "256GB storage"
57
- Benefit: "Never delete another photo"
58
-
59
- **Use specific numbers**
60
- Weak: "Thousands of customers"
61
- Strong: "47,832 businesses trust us"
62
-
63
- **Write for scanners**
64
- - Subheadings that tell the story alone
65
- - Bold key phrases
66
- - Bullet points for multiple items
67
- - Short paragraphs (2-4 sentences)
68
-
69
- ### Voice
70
-
71
- **Clarity over cleverness**
72
- No reader is too sophisticated for simple sentences.
73
-
74
- **Active voice**
75
- Bad: "Your conversion rate will be improved"
76
- Good: "We'll improve your conversion rate"
77
-
78
- **"You" focus**
79
- Count "you" vs. "we" in your copy. Visitors care about themselves.
80
-
81
- **Circle adjectives and adverbs**
82
- Replace vague modifiers with specific facts:
83
- Bad: "incredibly fast delivery"
84
- Good: "delivery in 2 hours or less"
85
-
86
- ## Proof Elements
87
-
88
- ### Hierarchy of proof (strongest to weakest)
89
-
90
- 1. **Specific results with context**
91
- "Increased revenue by $2.4M in 6 months"
92
-
93
- 2. **Named testimonials with photos**
94
- Real people, real companies, specific outcomes
95
-
96
- 3. **Case studies**
97
- Problem → Solution → Results format
98
-
99
- 4. **Statistics and data**
100
- Industry benchmarks, research findings
101
-
102
- 5. **Logos and badges**
103
- Client logos, media mentions, certifications
104
-
105
- 6. **Generic testimonials**
106
- Unnamed quotes (weakest form)
107
-
108
- ### Testimonial Best Practices
109
-
110
- **Include specifics**:
111
- Bad: "Great product!"
112
- Good: "Increased our conversion rate from 2.1% to 4.7% in 3 weeks"
113
-
114
- **Address objections**:
115
- Choose testimonials that counter specific fears
116
-
117
- **Match the audience**:
118
- B2B visitors want testimonials from similar companies/roles
119
-
120
- **Use photos**:
121
- Real photos > stock photos > no photos
122
-
123
- ## Calls-to-Action
124
-
125
- ### CTA Copy
126
-
127
- **Benefit-oriented**:
128
- Bad: "Submit"
129
- Good: "Get my free report"
130
-
131
- **Reduce perceived commitment**:
132
- "Start free trial" vs. "Sign up"
133
- "See pricing" vs. "Buy now"
134
-
135
- **Match button to promise**:
136
- If page promises "10 ways to improve X", CTA should be:
137
- "Show me the 10 ways" not "Learn more"
138
-
139
- ### CTA Placement
140
-
141
- - Above the fold (for aware visitors)
142
- - After each major section
143
- - At moment of peak interest
144
- - Sticky/floating for long pages
145
-
146
- ### CTA Testing Ideas
147
-
148
- 1. Benefit vs. action language
149
- 2. Commitment level (free vs. buy)
150
- 3. Urgency elements
151
- 4. Size and color (test AFTER copy)
152
- 5. Number of CTAs per page
153
-
154
- ## Common Copywriting Mistakes
155
-
156
- 1. **Features without benefits**
157
- Always answer "So what?"
158
-
159
- 2. **Vague claims**
160
- "Best in class" → "Rated #1 by [source]"
161
-
162
- 3. **Talking about yourself**
163
- Reframe everything around the visitor
164
-
165
- 4. **Burying the lead**
166
- Put most important information first
167
-
168
- 5. **Assuming knowledge**
169
- Explain industry jargon
170
-
171
- 6. **Missing objections**
172
- Address hesitations head-on
173
-
174
- 7. **Weak proof**
175
- Generic testimonials, no specifics
176
-
177
- 8. **Unclear next step**
178
- Always make the action obvious