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,264 +0,0 @@
1
- # Calendar Integration
2
-
3
- > Kế thừa từ `cm-booking-calendar` skill. Focus vào post-engagement calendar CTA.
4
- > Google Calendar deep link + Apple Calendar ICS + smart device routing.
5
-
6
- ---
7
-
8
- ## 🎯 Purpose
9
-
10
- Sau khi user hoàn thành một action trong bottom sheet (đặt lịch, đăng ký event, nhận promo), hiển thị **Calendar CTA** để:
11
-
12
- 1. **Giảm no-show 30-60%** — Calendar reminder thay SMS
13
- 2. **Tăng commitment 40%** — Micro-action = tâm lý cam kết
14
- 3. **Free reminder forever** — Không tốn SMS/ZNS
15
- 4. **Google Maps built-in** — Navigate 1 chạm
16
-
17
- ---
18
-
19
- ## 📱 Smart Device Routing
20
-
21
- ```
22
- User clicks "Add to Calendar"
23
-
24
- ├─ iOS detected (iPhone/iPad)
25
- │ └─ Download .ics file
26
- │ └─ iOS auto-opens Apple Calendar
27
-
28
- ├─ Android detected
29
- │ └─ Open Google Calendar deep link
30
- │ └─ Pre-filled event in new tab
31
-
32
- └─ Desktop
33
- └─ Show both options
34
- └─ "Google Calendar" + "Tải file lịch (.ics)"
35
- ```
36
-
37
- ### Detection Logic
38
-
39
- ```javascript
40
- function detectDevice() {
41
- const ua = navigator.userAgent;
42
- if (/iPhone|iPad|iPod/.test(ua)) return 'ios';
43
- if (/Android/.test(ua)) return 'android';
44
- return 'desktop';
45
- }
46
-
47
- function addToCalendar(event, config) {
48
- const device = detectDevice();
49
- if (device === 'ios') {
50
- downloadICS(event, config);
51
- } else if (device === 'android') {
52
- addToGoogleCal(event, config);
53
- } else {
54
- // Desktop: show both options
55
- showCalendarOptions(event, config);
56
- }
57
- }
58
- ```
59
-
60
- ---
61
-
62
- ## 📅 Google Calendar Deep Link
63
-
64
- ### URL Structure
65
-
66
- ```
67
- https://calendar.google.com/calendar/render?action=TEMPLATE
68
- &text={title}
69
- &dates={startISO}/{endISO}
70
- &details={description}
71
- &location={location}
72
- &sf=true
73
- &output=xml
74
- ```
75
-
76
- ### Building the URL
77
-
78
- ```javascript
79
- function buildGoogleCalUrl(event, config) {
80
- const formatDate = (d) => d.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}/, '');
81
-
82
- const start = formatDate(new Date(event.date + 'T' + event.time));
83
- const end = formatDate(new Date(new Date(event.date + 'T' + event.time).getTime() + 60 * 60 * 1000)); // +1h
84
-
85
- const description = [
86
- event.description || '',
87
- '',
88
- `📍 ${config.clinicName}`,
89
- `📌 ${config.address}`,
90
- `📞 ${config.phone}`,
91
- config.mapsUrl ? `🗺️ ${config.mapsUrl}` : '',
92
- '',
93
- config.preparation ? `⚠️ Lưu ý: ${config.preparation}` : '',
94
- ].filter(Boolean).join('\n');
95
-
96
- const params = new URLSearchParams({
97
- action: 'TEMPLATE',
98
- text: event.title || `${event.service} — ${config.clinicName}`,
99
- dates: `${start}/${end}`,
100
- details: description,
101
- location: config.address || '',
102
- sf: 'true',
103
- output: 'xml',
104
- });
105
-
106
- return `https://calendar.google.com/calendar/render?${params.toString()}`;
107
- }
108
- ```
109
-
110
- ---
111
-
112
- ## 📥 ICS File Generation (Apple Calendar + Others)
113
-
114
- ### RFC 5545 Format
115
-
116
- ```javascript
117
- function buildICSContent(event, config) {
118
- const uid = `${Date.now()}-${Math.random().toString(36).substr(2, 9)}@${window.location.hostname}`;
119
- const formatICSDate = (d) => d.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}/, '');
120
-
121
- const start = new Date(event.date + 'T' + event.time);
122
- const end = new Date(start.getTime() + 60 * 60 * 1000);
123
- const now = new Date();
124
-
125
- const description = [
126
- event.description || event.service,
127
- '',
128
- `📍 ${config.clinicName}`,
129
- `📌 ${config.address}`,
130
- `📞 ${config.phone}`,
131
- config.preparation ? `⚠️ ${config.preparation}` : '',
132
- ].filter(Boolean).join('\\n');
133
-
134
- let ics = [
135
- 'BEGIN:VCALENDAR',
136
- 'VERSION:2.0',
137
- 'PRODID:-//CMGrowthHacking//Calendar//VI',
138
- 'CALSCALE:GREGORIAN',
139
- 'METHOD:PUBLISH',
140
- 'BEGIN:VEVENT',
141
- `UID:${uid}`,
142
- `DTSTAMP:${formatICSDate(now)}`,
143
- `DTSTART:${formatICSDate(start)}`,
144
- `DTEND:${formatICSDate(end)}`,
145
- `SUMMARY:${event.title || event.service + ' — ' + config.clinicName}`,
146
- `DESCRIPTION:${description}`,
147
- `LOCATION:${config.address || ''}`,
148
- config.mapsUrl ? `URL:${config.mapsUrl}` : '',
149
- ];
150
-
151
- // Add reminders (VALARM)
152
- const reminders = config.reminderMinutes || [1440, 120]; // 1 day + 2h
153
- reminders.forEach(minutes => {
154
- ics.push(
155
- 'BEGIN:VALARM',
156
- 'TRIGGER:-PT' + minutes + 'M',
157
- 'ACTION:DISPLAY',
158
- `DESCRIPTION:${event.title || event.service} — ${getReminderText(minutes)}`,
159
- 'END:VALARM'
160
- );
161
- });
162
-
163
- ics.push('END:VEVENT', 'END:VCALENDAR');
164
-
165
- return ics.filter(Boolean).join('\r\n');
166
- }
167
-
168
- function getReminderText(minutes) {
169
- if (minutes >= 1440) return `Nhắc trước ${minutes / 1440} ngày`;
170
- if (minutes >= 60) return `Nhắc trước ${minutes / 60} giờ`;
171
- return `Nhắc trước ${minutes} phút`;
172
- }
173
- ```
174
-
175
- ### Download Trigger
176
-
177
- ```javascript
178
- function triggerICSDownload(content, filename) {
179
- const blob = new Blob([content], { type: 'text/calendar;charset=utf-8' });
180
- const url = URL.createObjectURL(blob);
181
- const a = document.createElement('a');
182
- a.href = url;
183
- a.download = filename || 'appointment.ics';
184
- document.body.appendChild(a);
185
- a.click();
186
- document.body.removeChild(a);
187
- URL.revokeObjectURL(url);
188
- }
189
- ```
190
-
191
- ---
192
-
193
- ## 🗓️ Calendar CTA UI Pattern
194
-
195
- After successful form submission, swap bottom sheet content to calendar CTA:
196
-
197
- ```javascript
198
- function showCalendarCTA(event, config) {
199
- const device = detectDevice();
200
-
201
- let buttonsHTML = '';
202
-
203
- if (device === 'ios') {
204
- buttonsHTML = `
205
- <button onclick="downloadICS()" class="eng-btn eng-btn--primary eng-btn--full">
206
- 📥 Thêm vào Apple Calendar
207
- </button>
208
- `;
209
- } else if (device === 'android') {
210
- buttonsHTML = `
211
- <button onclick="addToGoogleCal()" class="eng-btn eng-btn--primary eng-btn--full">
212
- <img src="gcal-icon.svg" alt="" width="20"> Thêm vào Google Calendar
213
- </button>
214
- `;
215
- } else {
216
- buttonsHTML = `
217
- <button onclick="addToGoogleCal()" class="eng-btn eng-btn--gcal">
218
- <img src="gcal-icon.svg" alt="" width="20"> Google Calendar
219
- </button>
220
- <button onclick="downloadICS()" class="eng-btn eng-btn--ics">
221
- 📥 Tải file lịch (.ics)
222
- </button>
223
- `;
224
- }
225
-
226
- return `
227
- <div class="eng-content-calendar">
228
- <div class="eng-content__icon">✅</div>
229
- <h3 class="eng-content__title">Đặt lịch thành công!</h3>
230
- <p class="eng-content__subtitle">Thêm vào lịch để không quên nhé</p>
231
- <div class="eng-calendar-buttons">${buttonsHTML}</div>
232
- <p class="eng-content__benefit">
233
- 💡 Lịch sẽ tự nhắc bạn trước ${config.reminderMinutes[0] / 60}h — hoàn toàn miễn phí
234
- </p>
235
- </div>
236
- `;
237
- }
238
- ```
239
-
240
- ---
241
-
242
- ## ⚙️ Configuration Defaults
243
-
244
- ```javascript
245
- const CALENDAR_DEFAULTS = {
246
- reminderMinutes: [1440, 120], // 1 day + 2 hours before
247
- duration: 60, // event duration in minutes
248
- timezone: 'Asia/Ho_Chi_Minh',
249
- providers: ['gcal', 'ics'], // available calendar providers
250
- };
251
- ```
252
-
253
- ---
254
-
255
- ## 🔗 Skill Inheritance
256
-
257
- | Feature | Source Skill | Reuse |
258
- |---------|-------------|-------|
259
- | `BookingCalendarEngine` class | `cm-booking-calendar/calendar-engine.js` | Full schedule generation for milestone-based industries |
260
- | Industry reminder configs | `cm-booking-calendar/reminder-config.js` | 20 industry presets with preparation instructions |
261
- | ICS export | `cm-booking-calendar/calendar-export.js` | Core ICS generation logic |
262
- | GCal deep link | `cm-booking-calendar/calendar-export.js` | URL builder |
263
-
264
- > 📌 **Rule:** If user needs full scheduling (milestones, follow-ups, multi-appointment), delegate to `cm-booking-calendar` skill. This module handles the **post-action calendar CTA** only.
@@ -1,346 +0,0 @@
1
- # Engagement Patterns by Industry
2
-
3
- > Config-ready patterns cho 10+ ngành nghề.
4
- > Mỗi pattern = trigger + sheet + calendar + tracking config đầy đủ.
5
-
6
- ---
7
-
8
- ## 📋 Pattern Index
9
-
10
- | # | Industry | Key Pattern | Calendar? |
11
- |---|----------|-------------|-----------|
12
- | 1 | Healthcare / Phòng khám | Booking + Follow-up Reminder | ✅ |
13
- | 2 | Dental / Nha khoa | Booking + Periodic Reminder | ✅ |
14
- | 3 | Salon / Spa | Booking + Re-booking Nudge | ✅ |
15
- | 4 | Education / Đào tạo | Lead Capture + Event Registration | ✅ |
16
- | 5 | Real Estate / BĐS | Lead Capture + Viewing Appointment | ✅ |
17
- | 6 | E-commerce | Flash Sale + Cart Reminder | ⚪ |
18
- | 7 | F&B / Nhà hàng | Reservation + Review | ✅ |
19
- | 8 | Fitness / Gym | Trial Booking + Class Schedule | ✅ |
20
- | 9 | Legal / Tư vấn pháp lý | Consultation Booking | ✅ |
21
- | 10 | Events / Sự kiện | Event Registration + Calendar | ✅ |
22
- | 11 | Insurance / Bảo hiểm | Lead Capture + Callback | ⚪ |
23
- | 12 | Automotive / Ô tô | Test Drive Booking + Service Reminder | ✅ |
24
-
25
- ---
26
-
27
- ## 1. Healthcare / Phòng Khám
28
-
29
- ```javascript
30
- const HEALTHCARE_PATTERN = {
31
- type: 'booking',
32
- trigger: { type: 'scroll', value: 0.25, delay: 0 },
33
- sheet: {
34
- size: 'standard',
35
- title: '📅 Đặt Lịch Khám',
36
- icon: '🏥',
37
- ariaLabel: 'Đặt lịch khám bệnh',
38
- },
39
- form: {
40
- fields: ['name', 'phone', 'date', 'timeSlot', 'service', 'note'],
41
- services: ['Khám tổng quát', 'Khám thai', 'Siêu âm', 'Xét nghiệm'],
42
- submitText: 'Xác Nhận Đặt Lịch',
43
- },
44
- calendar: {
45
- enabled: true,
46
- reminderMinutes: [1440, 120],
47
- preparation: 'Mang theo sổ khám, CCCD, thẻ BHYT. Đến sớm 15 phút.',
48
- duration: 60,
49
- },
50
- tracking: {
51
- events: ['cro_sheet_shown', 'cro_booking_submit', 'cro_calendar_add'],
52
- conversionValue: 500000,
53
- currency: 'VND',
54
- },
55
- session: { dismissKey: 'eng_healthcare_booking', storage: 'sessionStorage' },
56
- };
57
- ```
58
-
59
- ---
60
-
61
- ## 2. Dental / Nha Khoa
62
-
63
- ```javascript
64
- const DENTAL_PATTERN = {
65
- type: 'booking',
66
- trigger: { type: 'scroll', value: 0.25 },
67
- sheet: { size: 'standard', title: '🦷 Đặt Lịch Khám Răng', icon: '🦷' },
68
- form: {
69
- fields: ['name', 'phone', 'date', 'timeSlot', 'service'],
70
- services: ['Khám tổng quát', 'Tẩy trắng', 'Niềng răng', 'Nhổ răng khôn', 'Trồng implant'],
71
- submitText: 'Đặt Lịch',
72
- },
73
- calendar: {
74
- enabled: true,
75
- reminderMinutes: [1440, 120],
76
- preparation: 'Đánh răng sạch trước khi đến. Mang theo kết quả X-ray cũ (nếu có).',
77
- duration: 45,
78
- },
79
- tracking: { conversionValue: 300000 },
80
- session: { dismissKey: 'eng_dental_booking', storage: 'sessionStorage' },
81
- };
82
- ```
83
-
84
- ---
85
-
86
- ## 3. Salon / Spa
87
-
88
- ```javascript
89
- const SALON_PATTERN = {
90
- type: 'booking',
91
- trigger: { type: 'dual', value: { time: 12000, scroll: 0.2 } },
92
- sheet: { size: 'standard', title: '💆 Đặt Lịch Làm Đẹp', icon: '💅' },
93
- form: {
94
- fields: ['name', 'phone', 'date', 'timeSlot', 'service', 'branch'],
95
- services: ['Cắt tóc', 'Nhuộm tóc', 'Nail', 'Massage', 'Facial', 'Gội đầu dưỡng sinh'],
96
- submitText: 'Đặt Lịch',
97
- },
98
- calendar: {
99
- enabled: true,
100
- reminderMinutes: [1440, 60],
101
- preparation: 'Đến đúng giờ để được phục vụ tốt nhất.',
102
- duration: 90,
103
- },
104
- tracking: { conversionValue: 200000 },
105
- session: { dismissKey: 'eng_salon_booking', storage: 'sessionStorage' },
106
- };
107
- ```
108
-
109
- ---
110
-
111
- ## 4. Education / Đào Tạo
112
-
113
- ```javascript
114
- const EDUCATION_PATTERN = {
115
- type: 'lead',
116
- trigger: { type: 'exit', fallbackDelay: 20000 }, // exit intent on desktop
117
- sheet: {
118
- size: 'standard',
119
- title: '🎓 Nhận Tư Vấn Miễn Phí',
120
- icon: '📚',
121
- },
122
- form: {
123
- fields: ['name', 'phone', 'course'],
124
- services: ['Tiếng Anh giao tiếp', 'IELTS', 'Lập trình', 'Marketing'],
125
- submitText: 'Tư Vấn Cho Tôi',
126
- },
127
- calendar: {
128
- enabled: false, // no calendar for lead capture
129
- },
130
- tracking: {
131
- events: ['cro_sheet_shown', 'cro_lead_capture'],
132
- conversionValue: 100000,
133
- },
134
- session: { dismissKey: 'eng_edu_lead', storage: 'localStorage' },
135
- };
136
- ```
137
-
138
- ---
139
-
140
- ## 5. Real Estate / BĐS
141
-
142
- ```javascript
143
- const REALESTATE_PATTERN = {
144
- type: 'lead',
145
- trigger: { type: 'scroll', value: 0.3, delay: 5000 },
146
- sheet: {
147
- size: 'standard',
148
- title: '🏠 Đặt Lịch Xem Nhà',
149
- icon: '🏡',
150
- },
151
- form: {
152
- fields: ['name', 'phone', 'date', 'budget', 'area'],
153
- submitText: 'Đặt Lịch Xem',
154
- },
155
- calendar: {
156
- enabled: true,
157
- reminderMinutes: [1440, 120],
158
- preparation: 'Mang CCCD. Chuẩn bị câu hỏi về pháp lý, tiện ích.',
159
- duration: 60,
160
- },
161
- tracking: { conversionValue: 1000000 },
162
- session: { dismissKey: 'eng_re_lead', storage: 'localStorage' },
163
- };
164
- ```
165
-
166
- ---
167
-
168
- ## 6. E-commerce
169
-
170
- ```javascript
171
- const ECOMMERCE_PATTERN = {
172
- type: 'promo',
173
- trigger: { type: 'exit', fallbackDelay: 15000 },
174
- sheet: {
175
- size: 'compact',
176
- title: '🔥 Ưu Đãi Đặc Biệt',
177
- icon: '🎁',
178
- },
179
- promo: {
180
- message: 'Giảm 15% cho đơn hàng đầu tiên!',
181
- code: 'WELCOME15',
182
- countdown: true,
183
- countdownHours: 24,
184
- },
185
- calendar: { enabled: false },
186
- tracking: {
187
- events: ['cro_sheet_shown', 'cro_promo_engage'],
188
- conversionValue: 0, // varies per order
189
- },
190
- session: { dismissKey: 'eng_ecom_promo', storage: 'localStorage' },
191
- };
192
- ```
193
-
194
- ---
195
-
196
- ## 7. F&B / Nhà Hàng
197
-
198
- ```javascript
199
- const FNB_PATTERN = {
200
- type: 'booking',
201
- trigger: { type: 'scroll', value: 0.2 },
202
- sheet: { size: 'standard', title: '🍽️ Đặt Bàn', icon: '🍽️' },
203
- form: {
204
- fields: ['name', 'phone', 'date', 'timeSlot', 'guests', 'note'],
205
- submitText: 'Đặt Bàn',
206
- },
207
- calendar: {
208
- enabled: true,
209
- reminderMinutes: [180, 60], // 3h + 1h
210
- preparation: 'Gọi xác nhận nếu thay đổi số người.',
211
- duration: 120,
212
- },
213
- tracking: { conversionValue: 500000 },
214
- session: { dismissKey: 'eng_fnb_booking', storage: 'sessionStorage' },
215
- };
216
- ```
217
-
218
- ---
219
-
220
- ## 8. Fitness / Gym
221
-
222
- ```javascript
223
- const FITNESS_PATTERN = {
224
- type: 'booking',
225
- trigger: { type: 'dual', value: { time: 15000, scroll: 0.3 } },
226
- sheet: { size: 'standard', title: '💪 Đăng Ký Tập Thử', icon: '🏋️' },
227
- form: {
228
- fields: ['name', 'phone', 'date', 'timeSlot', 'goal'],
229
- services: ['Tập gym', 'Yoga', 'Boxing', 'CrossFit', 'Pilates'],
230
- submitText: 'Đăng Ký',
231
- },
232
- calendar: {
233
- enabled: true,
234
- reminderMinutes: [1440, 60],
235
- preparation: 'Mang quần áo thể thao, giày tập, khăn, nước uống.',
236
- duration: 90,
237
- },
238
- tracking: { conversionValue: 200000 },
239
- session: { dismissKey: 'eng_fitness_trial', storage: 'sessionStorage' },
240
- };
241
- ```
242
-
243
- ---
244
-
245
- ## 9. Legal / Tư Vấn Pháp Lý
246
-
247
- ```javascript
248
- const LEGAL_PATTERN = {
249
- type: 'booking',
250
- trigger: { type: 'scroll', value: 0.35 },
251
- sheet: { size: 'standard', title: '⚖️ Đặt Lịch Tư Vấn', icon: '⚖️' },
252
- form: {
253
- fields: ['name', 'phone', 'date', 'service', 'note'],
254
- services: ['Hôn nhân gia đình', 'Doanh nghiệp', 'Đất đai', 'Hình sự', 'Lao động'],
255
- submitText: 'Đặt Lịch Tư Vấn',
256
- },
257
- calendar: {
258
- enabled: true,
259
- reminderMinutes: [1440, 120],
260
- preparation: 'Mang theo hồ sơ, giấy tờ liên quan. Chuẩn bị tóm tắt vấn đề.',
261
- duration: 60,
262
- },
263
- tracking: { conversionValue: 500000 },
264
- session: { dismissKey: 'eng_legal_consult', storage: 'sessionStorage' },
265
- };
266
- ```
267
-
268
- ---
269
-
270
- ## 10. Events / Sự Kiện
271
-
272
- ```javascript
273
- const EVENT_PATTERN = {
274
- type: 'event',
275
- trigger: { type: 'time', value: 10000 },
276
- sheet: {
277
- size: 'standard',
278
- title: '🎤 Đăng Ký Tham Dự',
279
- icon: '🎪',
280
- },
281
- form: {
282
- fields: ['name', 'phone', 'email', 'tickets'],
283
- submitText: 'Đăng Ký',
284
- },
285
- calendar: {
286
- enabled: true, // Always add event to calendar
287
- reminderMinutes: [10080, 1440, 120], // 1 week + 1 day + 2h
288
- preparation: 'Mang email xác nhận / QR code để check-in.',
289
- duration: 180,
290
- },
291
- tracking: {
292
- events: ['cro_sheet_shown', 'cro_event_register', 'cro_calendar_add'],
293
- conversionValue: 300000,
294
- },
295
- session: { dismissKey: 'eng_event_register', storage: 'localStorage' },
296
- };
297
- ```
298
-
299
- ---
300
-
301
- ## 🔧 How to Use Patterns
302
-
303
- ```javascript
304
- // 1. Import pattern
305
- const config = HEALTHCARE_PATTERN;
306
-
307
- // 2. Override with site-specific config
308
- config.calendar.clinicName = 'Phòng Khám An Sinh';
309
- config.calendar.address = '123 Nguyễn Văn A, Q9, TPHCM';
310
- config.calendar.phone = '0559 669 663';
311
- config.calendar.mapsUrl = 'https://maps.google.com/?q=Phong+Kham+An+Sinh';
312
-
313
- // 3. Initialize
314
- const sheet = new BottomSheetEngine({
315
- id: 'booking',
316
- size: config.sheet.size,
317
- content: buildFormHTML(config),
318
- onShow: () => EngagementTracker.sheetShown(config.type, config.trigger.type),
319
- onDismiss: (s, dur) => EngagementTracker.sheetDismissed(config.type, 'close', dur),
320
- });
321
-
322
- const trigger = new TriggerManager({
323
- trigger: config.trigger,
324
- session: config.session,
325
- onTrigger: () => sheet.show(),
326
- });
327
-
328
- trigger.init();
329
- ```
330
-
331
- ---
332
-
333
- ## 📊 Conversion Value Guide
334
-
335
- | Industry | Avg Conversion Value (VND) | Rationale |
336
- |----------|---------------------------|-----------|
337
- | Healthcare | 300,000 - 1,000,000 | Consultation + follow-up potential |
338
- | Dental | 200,000 - 500,000 | Exam + treatment plan |
339
- | Salon/Spa | 150,000 - 500,000 | Service booking |
340
- | Education | 50,000 - 200,000 | Lead value (not enrollment) |
341
- | Real Estate | 500,000 - 2,000,000 | High-ticket lead |
342
- | E-commerce | Varies per order | Dynamic value |
343
- | F&B | 200,000 - 1,000,000 | Table reservation value |
344
- | Fitness | 100,000 - 300,000 | Trial → membership funnel |
345
- | Legal | 500,000 - 2,000,000 | Consultation fee |
346
- | Events | 100,000 - 500,000 | Ticket value |