codymaster 4.1.4 → 4.4.1

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 (662) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +56 -86
  3. package/dist/index.js +130 -16
  4. package/dist/ui/box.js +2 -2
  5. package/dist/ui/onboarding.js +11 -5
  6. package/install.sh +317 -35
  7. package/package.json +8 -8
  8. package/public/dashboard/app.js +1270 -0
  9. package/public/dashboard/index.html +218 -0
  10. package/public/dashboard/style.css +440 -0
  11. package/skills/AGENTS.md +61 -0
  12. package/skills/CLAUDE.md +158 -0
  13. package/skills/boxme-git-config/SKILL.md +56 -0
  14. package/skills/boxme-local-dev/SKILL.md +66 -0
  15. package/skills/build.sh +30 -0
  16. package/skills/cf +314 -0
  17. package/skills/cf 2 +313 -0
  18. package/skills/cm-ads-tracker/SKILL.md +364 -69
  19. package/skills/cm-auto-publisher/SKILL.md +81 -0
  20. package/skills/cm-booking-calendar/SKILL.md +521 -0
  21. package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
  22. package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
  23. package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
  24. package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
  25. package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
  26. package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
  27. package/skills/cm-brainstorm-idea/SKILL.md +15 -24
  28. package/skills/cm-clean-code/SKILL.md +300 -0
  29. package/skills/cm-code-review/SKILL.md +0 -27
  30. package/skills/cm-codeintell/SKILL.md +598 -0
  31. package/skills/cm-content-factory/.content-factory-state.json +132 -0
  32. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
  33. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
  34. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  35. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  36. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  37. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  38. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  39. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  40. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  41. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  42. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  43. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  44. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  45. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  46. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  47. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  48. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  49. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  50. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  51. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  52. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  53. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  54. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  55. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  56. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  57. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  58. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  59. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  60. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  61. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  62. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  63. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  64. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  65. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  66. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  67. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  68. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  69. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  70. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  71. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  72. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  73. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  74. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  75. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  76. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  77. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
  78. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  79. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  80. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  81. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  82. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  83. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  84. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  85. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  86. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  87. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  88. package/skills/cm-content-factory/.git 2/refs/heads/main +1 -0
  89. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
  90. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
  91. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
  92. package/skills/cm-content-factory/AGENTS.md +61 -0
  93. package/skills/cm-content-factory/CLAUDE.md +63 -0
  94. package/skills/cm-content-factory/CURSOR.md +43 -0
  95. package/skills/cm-content-factory/Content Factory.zip +0 -0
  96. package/skills/cm-content-factory/cf +313 -0
  97. package/skills/cm-content-factory/config.schema.json +397 -0
  98. package/skills/cm-content-factory/dashboard/app.js +556 -0
  99. package/skills/cm-content-factory/dashboard/index.html +397 -0
  100. package/skills/cm-content-factory/dashboard/style.css +1211 -0
  101. package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
  102. package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
  103. package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
  104. package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
  105. package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
  106. package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
  107. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
  108. package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
  109. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
  110. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
  111. package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
  112. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
  113. package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
  114. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
  115. package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
  116. package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
  117. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
  118. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
  119. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
  120. package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
  121. package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
  122. package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
  123. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
  124. package/skills/cm-content-factory/extensions/hooks.py +126 -0
  125. package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
  126. package/skills/cm-content-factory/landing/index.html +680 -0
  127. package/skills/cm-content-factory/landing/script.js +101 -0
  128. package/skills/cm-content-factory/landing/style.css +1216 -0
  129. package/skills/cm-content-factory/landing/translations.js +508 -0
  130. package/skills/cm-content-factory/logs/events.jsonl +11 -0
  131. package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
  132. package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
  133. package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
  134. package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
  135. package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
  136. package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
  137. package/skills/cm-content-factory/scripts/audit.py +106 -0
  138. package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
  139. package/skills/cm-content-factory/scripts/deploy.py +146 -0
  140. package/skills/cm-content-factory/scripts/extract.py +132 -0
  141. package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
  142. package/skills/cm-content-factory/scripts/memory.py +521 -0
  143. package/skills/cm-content-factory/scripts/monetize.py +239 -0
  144. package/skills/cm-content-factory/scripts/pipeline.py +357 -0
  145. package/skills/cm-content-factory/scripts/plan.py +163 -0
  146. package/skills/cm-content-factory/scripts/publish.py +145 -0
  147. package/skills/cm-content-factory/scripts/research.py +337 -0
  148. package/skills/cm-content-factory/scripts/scaffold.py +464 -0
  149. package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
  150. package/skills/cm-content-factory/scripts/seo.py +90 -0
  151. package/skills/cm-content-factory/scripts/state_manager.py +320 -0
  152. package/skills/cm-content-factory/scripts/token_manager.py +268 -0
  153. package/skills/cm-content-factory/scripts/validate.py +221 -0
  154. package/skills/cm-content-factory/scripts/wizard.py +329 -0
  155. package/skills/cm-content-factory/scripts/write.py +93 -0
  156. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  157. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +90 -0
  158. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
  159. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
  160. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
  161. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
  162. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
  163. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
  164. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
  165. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
  166. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
  167. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
  168. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
  169. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
  170. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
  171. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
  172. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
  173. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
  174. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
  175. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
  176. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
  177. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
  178. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
  179. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
  180. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
  181. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
  182. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
  183. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
  184. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
  185. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
  186. package/skills/cm-content-factory/tests/conftest.py +66 -0
  187. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
  188. package/skills/cm-content-factory/tests/test_memory.py +128 -0
  189. package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
  190. package/skills/cm-content-factory/tests/test_research.py +56 -0
  191. package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
  192. package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
  193. package/skills/cm-content-factory/tests/test_wizard.py +121 -0
  194. package/skills/cm-continuity/SKILL.md +7 -0
  195. package/skills/cm-cro-methodology/SKILL.md +290 -0
  196. package/skills/cm-dashboard/SKILL.md +7 -525
  197. package/skills/cm-debugging/SKILL.md +7 -116
  198. package/skills/cm-deep-search/SKILL.md +5 -1
  199. package/skills/cm-dockit/README.md +6 -15
  200. package/skills/cm-dockit/SKILL.md +20 -37
  201. package/skills/cm-execution/SKILL.md +6 -1
  202. package/skills/cm-frappe-agent/SKILL.md +134 -0
  203. package/skills/cm-frappe-agent/agents/doctype-architect.md +596 -0
  204. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +643 -0
  205. package/skills/cm-frappe-agent/agents/frappe-backend.md +814 -0
  206. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +557 -0
  207. package/skills/cm-frappe-agent/agents/frappe-debugger.md +625 -0
  208. package/skills/cm-frappe-agent/agents/frappe-fixer.md +275 -0
  209. package/skills/cm-frappe-agent/agents/frappe-frontend.md +660 -0
  210. package/skills/cm-frappe-agent/agents/frappe-installer.md +158 -0
  211. package/skills/cm-frappe-agent/agents/frappe-performance.md +307 -0
  212. package/skills/cm-frappe-agent/agents/frappe-planner.md +419 -0
  213. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +153 -0
  214. package/skills/cm-frappe-agent/agents/github-workflow.md +286 -0
  215. package/skills/cm-frappe-agent/commands/frappe-app.md +351 -0
  216. package/skills/cm-frappe-agent/commands/frappe-backend.md +162 -0
  217. package/skills/cm-frappe-agent/commands/frappe-bench.md +254 -0
  218. package/skills/cm-frappe-agent/commands/frappe-debug.md +263 -0
  219. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +272 -0
  220. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +310 -0
  221. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +210 -0
  222. package/skills/cm-frappe-agent/commands/frappe-fix.md +59 -0
  223. package/skills/cm-frappe-agent/commands/frappe-frontend.md +210 -0
  224. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +243 -0
  225. package/skills/cm-frappe-agent/commands/frappe-github.md +57 -0
  226. package/skills/cm-frappe-agent/commands/frappe-install.md +52 -0
  227. package/skills/cm-frappe-agent/commands/frappe-plan.md +442 -0
  228. package/skills/cm-frappe-agent/commands/frappe-remote.md +58 -0
  229. package/skills/cm-frappe-agent/commands/frappe-test.md +356 -0
  230. package/skills/cm-frappe-agent/docs/README.md +51 -0
  231. package/skills/cm-frappe-agent/docs/agents-catalog.md +113 -0
  232. package/skills/cm-frappe-agent/docs/architecture.md +149 -0
  233. package/skills/cm-frappe-agent/docs/commands-catalog.md +82 -0
  234. package/skills/cm-frappe-agent/docs/resources-catalog.md +66 -0
  235. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +52 -0
  236. package/skills/cm-frappe-agent/docs/sitemap.md +81 -0
  237. package/skills/cm-frappe-agent/docs/sop/user-guide.md +178 -0
  238. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +122 -0
  239. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +985 -0
  240. package/skills/cm-frappe-agent/resources/bench_commands.md +73 -0
  241. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +948 -0
  242. package/skills/cm-frappe-agent/resources/common_pitfalls.md +266 -0
  243. package/skills/cm-frappe-agent/resources/doctype-registry.md +158 -0
  244. package/skills/cm-frappe-agent/resources/installation-guide.md +289 -0
  245. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +182 -0
  246. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +82 -0
  247. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +113 -0
  248. package/skills/cm-frappe-agent/resources/web-form-patterns.md +252 -0
  249. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +621 -0
  250. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +642 -0
  251. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +576 -0
  252. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +740 -0
  253. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +47 -0
  254. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +608 -0
  255. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +46 -0
  256. package/skills/cm-git-worktrees/SKILL.md +0 -7
  257. package/skills/cm-google-form/SKILL.md +266 -0
  258. package/skills/cm-google-form/templates/apps-script.js +55 -0
  259. package/skills/cm-google-form/templates/form-markup.html +110 -0
  260. package/skills/cm-google-form/templates/form-submit.js +201 -0
  261. package/skills/cm-google-form/templates/toast.css +152 -0
  262. package/skills/cm-growth-hacking/SKILL.md +293 -0
  263. package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
  264. package/skills/cm-growth-hacking/calendar-integration.md +264 -0
  265. package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
  266. package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
  267. package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
  268. package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
  269. package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
  270. package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
  271. package/skills/cm-growth-hacking/tracking-events.md +246 -0
  272. package/skills/cm-growth-hacking/trigger-system.md +342 -0
  273. package/skills/cm-how-it-work/SKILL.md +20 -4
  274. package/skills/cm-identity-guard/SKILL.md +0 -11
  275. package/skills/cm-jtbd/SKILL.md +1 -1
  276. package/skills/cm-notebooklm/SKILL.md +172 -0
  277. package/skills/cm-notebooklm/references/command_reference.md +94 -0
  278. package/skills/cm-notebooklm/references/workflows.md +60 -0
  279. package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
  280. package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
  281. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
  282. package/skills/cm-planning/SKILL.md +39 -52
  283. package/skills/cm-project-bootstrap/SKILL.md +1308 -99
  284. package/skills/cm-quality-gate/SKILL.md +13 -106
  285. package/skills/cm-reactor/SKILL.md +274 -0
  286. package/skills/cm-safe-deploy/SKILL.md +415 -52
  287. package/skills/cm-safe-i18n/SKILL.md +1 -22
  288. package/skills/cm-secret-shield/SKILL.md +2 -2
  289. package/skills/cm-security-gate/SKILL.md +114 -0
  290. package/skills/cm-skill-chain/SKILL.md +2 -2
  291. package/skills/cm-skill-index/SKILL.md +9 -6
  292. package/skills/cm-skill-mastery/SKILL.md +2 -15
  293. package/skills/cm-start/SKILL.md +9 -0
  294. package/skills/cm-tdd/SKILL.md +16 -49
  295. package/skills/cm-ui-preview/SKILL.md +35 -173
  296. package/skills/cm-ux-master/FEATURES-v4.md +305 -0
  297. package/skills/cm-ux-master/README-ru.md +135 -0
  298. package/skills/cm-ux-master/README-vi.md +135 -0
  299. package/skills/cm-ux-master/README-zh.md +135 -0
  300. package/skills/cm-ux-master/README.md +489 -0
  301. package/skills/cm-ux-master/SKILL.md +773 -62
  302. package/skills/cm-ux-master/cli/README.md +180 -0
  303. package/skills/cm-ux-master/cli/pyproject.toml +106 -0
  304. package/skills/cm-ux-master/cli/requirements.txt +21 -0
  305. package/skills/cm-ux-master/cli/templates/base/skill-core.md +262 -0
  306. package/skills/cm-ux-master/cli/templates/platforms/claude.yaml +21 -0
  307. package/skills/cm-ux-master/cli/templates/platforms/cursor.yaml +21 -0
  308. package/skills/cm-ux-master/cli/templates/platforms/figma.yaml +24 -0
  309. package/skills/cm-ux-master/cli/templates/platforms/vscode-mcp.yaml +28 -0
  310. package/skills/cm-ux-master/cli/templates/platforms/windsurf.yaml +21 -0
  311. package/skills/cm-ux-master/cli/uxmaster/__init__.py +10 -0
  312. package/skills/cm-ux-master/cli/uxmaster/__main__.py +19 -0
  313. package/skills/cm-ux-master/cli/uxmaster/cli.py +349 -0
  314. package/skills/cm-ux-master/cli/uxmaster/commands/__init__.py +8 -0
  315. package/skills/cm-ux-master/cli/uxmaster/commands/extract.py +18 -0
  316. package/skills/cm-ux-master/cli/uxmaster/commands/init.py +58 -0
  317. package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +194 -0
  318. package/skills/cm-ux-master/cli/uxmaster/commands/search.py +23 -0
  319. package/skills/cm-ux-master/cli/uxmaster/commands/validate.py +270 -0
  320. package/skills/cm-ux-master/cli/uxmaster/search_engine.py +532 -0
  321. package/skills/cm-ux-master/cli/uxmaster/template_engine.py +458 -0
  322. package/skills/cm-ux-master/cli/uxmaster/utils/__init__.py +9 -0
  323. package/skills/cm-ux-master/cli/uxmaster/utils/console.py +42 -0
  324. package/skills/cm-ux-master/cli/uxmaster/utils/detect.py +83 -0
  325. package/skills/cm-ux-master/data/accessibility-advanced.csv +26 -0
  326. package/skills/cm-ux-master/data/animation.csv +31 -0
  327. package/skills/cm-ux-master/data/charts.csv +26 -0
  328. package/skills/cm-ux-master/data/colors.csv +97 -0
  329. package/skills/cm-ux-master/data/design-tests.csv +37 -0
  330. package/skills/cm-ux-master/data/devices.csv +21 -0
  331. package/skills/cm-ux-master/data/icons.csv +101 -0
  332. package/skills/cm-ux-master/data/landing.csv +31 -0
  333. package/skills/cm-ux-master/data/products.csv +97 -0
  334. package/skills/cm-ux-master/data/react-performance.csv +45 -0
  335. package/skills/cm-ux-master/data/responsive.csv +26 -0
  336. package/skills/cm-ux-master/data/semi-tokens.csv +52 -0
  337. package/skills/cm-ux-master/data/stacks/angular.csv +34 -0
  338. package/skills/cm-ux-master/data/stacks/astro.csv +54 -0
  339. package/skills/cm-ux-master/data/stacks/electron.csv +32 -0
  340. package/skills/cm-ux-master/data/stacks/flutter.csv +53 -0
  341. package/skills/cm-ux-master/data/stacks/html-tailwind.csv +56 -0
  342. package/skills/cm-ux-master/data/stacks/htmx.csv +28 -0
  343. package/skills/cm-ux-master/data/stacks/jetpack-compose.csv +53 -0
  344. package/skills/cm-ux-master/data/stacks/nextjs.csv +53 -0
  345. package/skills/cm-ux-master/data/stacks/nuxt-ui.csv +51 -0
  346. package/skills/cm-ux-master/data/stacks/nuxtjs.csv +59 -0
  347. package/skills/cm-ux-master/data/stacks/react-native.csv +52 -0
  348. package/skills/cm-ux-master/data/stacks/react.csv +54 -0
  349. package/skills/cm-ux-master/data/stacks/shadcn.csv +61 -0
  350. package/skills/cm-ux-master/data/stacks/svelte.csv +54 -0
  351. package/skills/cm-ux-master/data/stacks/swiftui.csv +51 -0
  352. package/skills/cm-ux-master/data/stacks/tauri.csv +29 -0
  353. package/skills/cm-ux-master/data/stacks/vue.csv +50 -0
  354. package/skills/cm-ux-master/data/styles.csv +68 -0
  355. package/skills/cm-ux-master/data/typography.csv +58 -0
  356. package/skills/cm-ux-master/data/ui-reasoning.csv +101 -0
  357. package/skills/cm-ux-master/data/ux-guidelines.csv +100 -0
  358. package/skills/cm-ux-master/data/ux-laws.csv +49 -0
  359. package/skills/cm-ux-master/data/web-interface.csv +31 -0
  360. package/skills/cm-ux-master/docs/LANDING-PAGE.html +377 -0
  361. package/skills/cm-ux-master/docs/README.md +108 -0
  362. package/skills/cm-ux-master/docs/css/styles.css +573 -0
  363. package/skills/cm-ux-master/docs/examples/demo-script.md +319 -0
  364. package/skills/cm-ux-master/docs/guides/for-designers.md +692 -0
  365. package/skills/cm-ux-master/docs/guides/for-developers.md +778 -0
  366. package/skills/cm-ux-master/docs/guides/for-product-managers.md +693 -0
  367. package/skills/cm-ux-master/docs/guides/react-guide-vi.md +50 -0
  368. package/skills/cm-ux-master/docs/index.html +1062 -0
  369. package/skills/cm-ux-master/docs/js/i18n.js +84 -0
  370. package/skills/cm-ux-master/docs/js/lang/de.js +145 -0
  371. package/skills/cm-ux-master/docs/js/lang/en.js +145 -0
  372. package/skills/cm-ux-master/docs/js/lang/fr.js +145 -0
  373. package/skills/cm-ux-master/docs/js/lang/hi.js +145 -0
  374. package/skills/cm-ux-master/docs/js/lang/id.js +145 -0
  375. package/skills/cm-ux-master/docs/js/lang/ja.js +145 -0
  376. package/skills/cm-ux-master/docs/js/lang/ko.js +145 -0
  377. package/skills/cm-ux-master/docs/js/lang/ru.js +145 -0
  378. package/skills/cm-ux-master/docs/js/lang/vi.js +145 -0
  379. package/skills/cm-ux-master/docs/js/lang/zh.js +145 -0
  380. package/skills/cm-ux-master/docs/js/main.js +117 -0
  381. package/skills/cm-ux-master/docs/plan/PHASE1-COMPLETION.md +217 -0
  382. package/skills/cm-ux-master/docs/plan/PHASE2-COMPLETION.md +199 -0
  383. package/skills/cm-ux-master/docs/plan/PHASE2-ENHANCED-COMPLETION.md +352 -0
  384. package/skills/cm-ux-master/docs/plan/PHASE3-VALIDATION-COMPLETION.md +499 -0
  385. package/skills/cm-ux-master/docs/plan/PHASE4-TESTING-POLISH-COMPLETION.md +483 -0
  386. package/skills/cm-ux-master/docs/plan/UXM-2.0-ROADMAP.md +681 -0
  387. package/skills/cm-ux-master/docs/plan/WOW-PITCH.md +410 -0
  388. package/skills/cm-ux-master/docs/technical/api-reference.md +824 -0
  389. package/skills/cm-ux-master/docs/technical/harvester-v4.md +328 -0
  390. package/skills/cm-ux-master/docs/technical/how-it-works.md +1128 -0
  391. package/skills/cm-ux-master/docs/tutorials/quickstart.md +339 -0
  392. package/skills/cm-ux-master/docs/tutorials/tutorials.md +939 -0
  393. package/skills/cm-ux-master/docs/tutorials/user-guide.md +716 -0
  394. package/skills/cm-ux-master/examples/README.md +63 -0
  395. package/skills/cm-ux-master/mcp/__init__.py +3 -0
  396. package/skills/cm-ux-master/mcp/integrations/__init__.py +11 -0
  397. package/skills/cm-ux-master/mcp/integrations/figma/__init__.py +6 -0
  398. package/skills/cm-ux-master/mcp/integrations/figma/client.py +293 -0
  399. package/skills/cm-ux-master/mcp/integrations/figma/plugin/code.js +561 -0
  400. package/skills/cm-ux-master/mcp/integrations/figma/plugin/ui.html +334 -0
  401. package/skills/cm-ux-master/mcp/integrations/stitch/__init__.py +5 -0
  402. package/skills/cm-ux-master/mcp/integrations/stitch/client.py +410 -0
  403. package/skills/cm-ux-master/mcp/integrations/vscode/package.json +167 -0
  404. package/skills/cm-ux-master/mcp/integrations/vscode/src/extension.ts +81 -0
  405. package/skills/cm-ux-master/mcp/mcp-config.json +274 -0
  406. package/skills/cm-ux-master/mcp/server.py +771 -0
  407. package/skills/cm-ux-master/mcp/tools/__init__.py +13 -0
  408. package/skills/cm-ux-master/mcp-server/server.py +595 -0
  409. package/skills/cm-ux-master/output/fila/FilaDashboard.tsx +47 -0
  410. package/skills/cm-ux-master/output/fila/components/badge/component.tsx +35 -0
  411. package/skills/cm-ux-master/output/fila/components/badge/index.ts +1 -0
  412. package/skills/cm-ux-master/output/fila/components/button/component.tsx +53 -0
  413. package/skills/cm-ux-master/output/fila/components/button/index.ts +1 -0
  414. package/skills/cm-ux-master/output/fila/components/card/component.tsx +35 -0
  415. package/skills/cm-ux-master/output/fila/components/card/index.ts +1 -0
  416. package/skills/cm-ux-master/output/fila/components/input/component.tsx +41 -0
  417. package/skills/cm-ux-master/output/fila/components/input/index.ts +1 -0
  418. package/skills/cm-ux-master/output/fila/design-system.css +151 -0
  419. package/skills/cm-ux-master/output/fila/design-system.html +1596 -0
  420. package/skills/cm-ux-master/output/fila/design-system.json +168 -0
  421. package/skills/cm-ux-master/output/fila/figma-tokens.json +523 -0
  422. package/skills/cm-ux-master/output/fila/harvest-v4-raw.json +406 -0
  423. package/skills/cm-ux-master/output/fila/semi-theme-override.css +95 -0
  424. package/skills/cm-ux-master/output/haravan/HaravanDashboard.tsx +103 -0
  425. package/skills/cm-ux-master/output/haravan/design-system-v3-live.html +2716 -0
  426. package/skills/cm-ux-master/output/haravan/design-system-v3.html +1770 -0
  427. package/skills/cm-ux-master/output/haravan/design-system.html +914 -0
  428. package/skills/cm-ux-master/output/haravan/figma-tokens.json +84 -0
  429. package/skills/cm-ux-master/output/haravan/haravan-harvest.json +33 -0
  430. package/skills/cm-ux-master/output/haravan/harvest-v3-raw.json +167 -0
  431. package/skills/cm-ux-master/output/haravan/semi-theme-override.css +39 -0
  432. package/skills/cm-ux-master/references/audit-template.md +257 -0
  433. package/skills/cm-ux-master/references/cultural-ux.md +346 -0
  434. package/skills/cm-ux-master/references/dark-patterns.md +362 -0
  435. package/skills/cm-ux-master/references/heuristic-conflicts.md +296 -0
  436. package/skills/cm-ux-master/references/krug-principles.md +289 -0
  437. package/skills/cm-ux-master/references/nielsen-heuristics.md +360 -0
  438. package/skills/cm-ux-master/references/wcag-checklist.md +306 -0
  439. package/skills/cm-ux-master/scripts/component_generator.py +631 -0
  440. package/skills/cm-ux-master/scripts/core.py +305 -0
  441. package/skills/cm-ux-master/scripts/demo_validation.py +452 -0
  442. package/skills/cm-ux-master/scripts/design_doc_generator.py +1325 -0
  443. package/skills/cm-ux-master/scripts/design_system.py +1141 -0
  444. package/skills/cm-ux-master/scripts/design_system_indexer.py +889 -0
  445. package/skills/cm-ux-master/scripts/extract_i18n.py +251 -0
  446. package/skills/cm-ux-master/scripts/extractor.py +1437 -0
  447. package/skills/cm-ux-master/scripts/figma_bridge.py +406 -0
  448. package/skills/cm-ux-master/scripts/generate.py +147 -0
  449. package/skills/cm-ux-master/scripts/harvest_session.py +207 -0
  450. package/skills/cm-ux-master/scripts/harvester.js +240 -0
  451. package/skills/cm-ux-master/scripts/harvester_browser.py +717 -0
  452. package/skills/cm-ux-master/scripts/harvester_cli.py +431 -0
  453. package/skills/cm-ux-master/scripts/harvester_v1.js +275 -0
  454. package/skills/cm-ux-master/scripts/harvester_v3.js +620 -0
  455. package/skills/cm-ux-master/scripts/harvester_v4.js +1003 -0
  456. package/skills/cm-ux-master/scripts/install.py +528 -0
  457. package/skills/cm-ux-master/scripts/license.py +81 -0
  458. package/skills/cm-ux-master/scripts/media/qrpayment.png +0 -0
  459. package/skills/cm-ux-master/scripts/pro_stubs.py +120 -0
  460. package/skills/cm-ux-master/scripts/project_registry.py +217 -0
  461. package/skills/cm-ux-master/scripts/search.py +114 -0
  462. package/skills/cm-ux-master/scripts/semi_mcp_bridge.py +425 -0
  463. package/skills/cm-ux-master/scripts/stitch_integration.py +583 -0
  464. package/skills/cm-ux-master/scripts/test_harvester_v4.py +335 -0
  465. package/skills/cm-ux-master/scripts/token_mapper.py +626 -0
  466. package/skills/cm-ux-master/scripts/validation_engine.py +1571 -0
  467. package/skills/cm-ux-master/scripts/wizard.py +653 -0
  468. package/skills/cm-ux-master/setup.py +93 -0
  469. package/skills/cm-ux-master/templates/base/flutter-widget.dart +69 -0
  470. package/skills/cm-ux-master/templates/base/html-page.html +152 -0
  471. package/skills/cm-ux-master/templates/base/react-component.tsx +47 -0
  472. package/skills/cm-ux-master/templates/base/swiftui-view.swift +62 -0
  473. package/skills/cm-ux-master/templates/quick-start.sh +176 -0
  474. package/skills/cm-ux-master/tests/automation/batch-validate.sh +250 -0
  475. package/skills/cm-ux-master/tests/automation/generate-test-projects.sh +561 -0
  476. package/skills/cm-ux-master/tests/automation/run-all-tests.sh +315 -0
  477. package/skills/cm-ux-master/tests/test_design_doc.py +145 -0
  478. package/skills/cm-ux-master/tests/test_devices.py +74 -0
  479. package/skills/cm-ux-master/tests/test_generator.py +116 -0
  480. package/skills/cm-ux-master/tests/test_harvest_session.py +131 -0
  481. package/skills/cm-ux-master/tests/test_harvester.py +127 -0
  482. package/skills/cm-ux-master/tests/test_harvester_v3.py +324 -0
  483. package/skills/cm-ux-master/tests/test_mcp_server.py +496 -0
  484. package/skills/cm-ux-master/tests/test_new_domains.py +108 -0
  485. package/skills/cm-ux-master/tests/test_new_stacks.py +103 -0
  486. package/skills/cm-ux-master/tests/test_project_registry.py +146 -0
  487. package/skills/cm-ux-master/tests/test_semi_mcp_bridge.py +207 -0
  488. package/skills/cm-ux-master/tests/test_token_mapper.py +247 -0
  489. package/skills/cm-ux-master/tests/test_validation_engine.py +617 -0
  490. package/skills/config.schema.json +397 -0
  491. package/skills/frappe-app-builder.zip +0 -0
  492. package/skills/jobs-to-be-done/SKILL.md +266 -0
  493. package/skills/jobs-to-be-done/references/case-studies.md +154 -0
  494. package/skills/jobs-to-be-done/references/competitive-strategy.md +280 -0
  495. package/skills/jobs-to-be-done/references/diagnostics.md +158 -0
  496. package/skills/jobs-to-be-done/references/innovation-process.md +392 -0
  497. package/skills/jobs-to-be-done/references/organizational-change.md +328 -0
  498. package/skills/marketplace-report-crawler/SKILL.md +176 -0
  499. package/skills/marketplace-report-crawler/config/accounts.json +41 -0
  500. package/skills/marketplace-report-crawler/config/report-types.json +422 -0
  501. package/skills/marketplace-report-crawler/config/sessions.json +3 -0
  502. package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +102 -0
  503. package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +114 -0
  504. package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +94 -0
  505. package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +272 -0
  506. package/skills/marketplace-report-crawler/scripts/crawl-runner.js +281 -0
  507. package/skills/marketplace-report-crawler/scripts/session-check.sh +72 -0
  508. package/skills/marketplace-report-crawler/scripts/session-manager.sh +349 -0
  509. package/skills/marketplace-report-crawler/scripts/setup-folders.sh +83 -0
  510. package/skills/medical-research/SKILL.md +194 -0
  511. package/skills/medical-research/scripts/evidence_checker.py +288 -0
  512. package/skills/mom-test/SKILL.md +267 -0
  513. package/skills/mom-test/references/avoiding-bad-data.md +221 -0
  514. package/skills/mom-test/references/case-studies.md +306 -0
  515. package/skills/mom-test/references/commitment-advancement.md +219 -0
  516. package/skills/mom-test/references/finding-conversations.md +251 -0
  517. package/skills/mom-test/references/processing-learning.md +256 -0
  518. package/skills/mom-test/references/question-patterns.md +198 -0
  519. package/skills/pandasai-analytics/SKILL.md +251 -0
  520. package/skills/release-it/SKILL.md +235 -0
  521. package/skills/release-it/references/anti-patterns.md +279 -0
  522. package/skills/release-it/references/capacity-planning.md +285 -0
  523. package/skills/release-it/references/chaos-engineering.md +325 -0
  524. package/skills/release-it/references/deployment-strategies.md +331 -0
  525. package/skills/release-it/references/observability.md +301 -0
  526. package/skills/release-it/references/stability-patterns.md +355 -0
  527. package/skills/scripts/sync-ide-skills.sh +61 -0
  528. package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +37 -0
  529. package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +34 -0
  530. package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +51 -0
  531. package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +39 -0
  532. package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +52 -0
  533. package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +25 -0
  534. package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +31 -0
  535. package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +25 -0
  536. package/skills/skill-creator-ultra/README.md +1242 -0
  537. package/skills/skill-creator-ultra/SKILL.md +388 -0
  538. package/skills/skill-creator-ultra/agents/analyzer.md +274 -0
  539. package/skills/skill-creator-ultra/agents/comparator.md +202 -0
  540. package/skills/skill-creator-ultra/agents/grader.md +223 -0
  541. package/skills/skill-creator-ultra/assets/eval_review.html +146 -0
  542. package/skills/skill-creator-ultra/eval-viewer/generate_review.py +471 -0
  543. package/skills/skill-creator-ultra/eval-viewer/viewer.html +1325 -0
  544. package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +109 -0
  545. package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +116 -0
  546. package/skills/skill-creator-ultra/examples/example_api_docs.md +189 -0
  547. package/skills/skill-creator-ultra/examples/example_db_migration.md +253 -0
  548. package/skills/skill-creator-ultra/examples/example_git_commit.md +111 -0
  549. package/skills/skill-creator-ultra/install.ps1 +289 -0
  550. package/skills/skill-creator-ultra/install.sh +313 -0
  551. package/skills/skill-creator-ultra/phases/phase1_interview.md +202 -0
  552. package/skills/skill-creator-ultra/phases/phase2_extract.md +55 -0
  553. package/skills/skill-creator-ultra/phases/phase3_detect.md +57 -0
  554. package/skills/skill-creator-ultra/phases/phase4_generate.md +543 -0
  555. package/skills/skill-creator-ultra/phases/phase5_test.md +319 -0
  556. package/skills/skill-creator-ultra/phases/phase6_eval.md +301 -0
  557. package/skills/skill-creator-ultra/phases/phase7_iterate.md +103 -0
  558. package/skills/skill-creator-ultra/phases/phase8_optimize.md +113 -0
  559. package/skills/skill-creator-ultra/resources/advanced_patterns.md +499 -0
  560. package/skills/skill-creator-ultra/resources/anti_patterns.md +376 -0
  561. package/skills/skill-creator-ultra/resources/blueprints.md +498 -0
  562. package/skills/skill-creator-ultra/resources/checklist.md +243 -0
  563. package/skills/skill-creator-ultra/resources/composition_cookbook.md +291 -0
  564. package/skills/skill-creator-ultra/resources/description_optimization.md +90 -0
  565. package/skills/skill-creator-ultra/resources/eval_guide.md +133 -0
  566. package/skills/skill-creator-ultra/resources/industry_questions.md +189 -0
  567. package/skills/skill-creator-ultra/resources/interview_questions.md +200 -0
  568. package/skills/skill-creator-ultra/resources/pattern_detection.md +200 -0
  569. package/skills/skill-creator-ultra/resources/prompt_engineering.md +531 -0
  570. package/skills/skill-creator-ultra/resources/schemas.md +430 -0
  571. package/skills/skill-creator-ultra/resources/script_integration.md +593 -0
  572. package/skills/skill-creator-ultra/resources/scripts_guide.md +339 -0
  573. package/skills/skill-creator-ultra/resources/skill_template.md +124 -0
  574. package/skills/skill-creator-ultra/resources/skill_writing_guide.md +634 -0
  575. package/skills/skill-creator-ultra/resources/versioning_guide.md +193 -0
  576. package/skills/skill-creator-ultra/scripts/ci_eval.py +200 -0
  577. package/skills/skill-creator-ultra/scripts/package_skill.py +165 -0
  578. package/skills/skill-creator-ultra/scripts/simulate_skill.py +398 -0
  579. package/skills/skill-creator-ultra/scripts/skill_audit.py +611 -0
  580. package/skills/skill-creator-ultra/scripts/skill_compare.py +265 -0
  581. package/skills/skill-creator-ultra/scripts/skill_export.py +334 -0
  582. package/skills/skill-creator-ultra/scripts/skill_scaffold.py +403 -0
  583. package/skills/skill-creator-ultra/scripts/skill_stats.py +339 -0
  584. package/skills/skill-creator-ultra/scripts/validate_skill.py +411 -0
  585. package/skills/tailwind-mastery/SKILL.md +229 -0
  586. package/skills/vercel-react-best-practices/AGENTS.md +3373 -0
  587. package/skills/vercel-react-best-practices/README.md +123 -0
  588. package/skills/vercel-react-best-practices/SKILL.md +143 -0
  589. package/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  590. package/skills/vercel-react-best-practices/rules/_template.md +28 -0
  591. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  592. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  593. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  594. package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  595. package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  596. package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  597. package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  598. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  599. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  600. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  601. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  602. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  603. package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  604. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  605. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  606. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  607. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  608. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  609. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  610. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  611. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  612. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  613. package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  614. package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  615. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  616. package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  617. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  618. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  619. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  620. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  621. package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  622. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  623. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  624. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  625. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  626. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  627. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  628. package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  629. package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  630. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  631. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  632. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  633. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  634. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  635. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  636. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  637. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  638. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  639. package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  640. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  641. package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  642. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  643. package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  644. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  645. package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  646. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  647. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  648. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  649. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  650. package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  651. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  652. package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +142 -0
  653. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  654. package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  655. package/skills/web-design-guidelines/SKILL.md +39 -0
  656. package/skills/cro-methodology/SKILL.md +0 -98
  657. /package/skills/{cro-methodology → cm-cro-methodology}/references/COPYWRITING.md +0 -0
  658. /package/skills/{cro-methodology → cm-cro-methodology}/references/OBJECTIONS.md +0 -0
  659. /package/skills/{cro-methodology → cm-cro-methodology}/references/PERSUASION.md +0 -0
  660. /package/skills/{cro-methodology → cm-cro-methodology}/references/RESEARCH.md +0 -0
  661. /package/skills/{cro-methodology → cm-cro-methodology}/references/funnel-analysis.md +0 -0
  662. /package/skills/{cro-methodology → cm-cro-methodology}/references/testing-methodology.md +0 -0
@@ -3,165 +3,1374 @@ name: cm-project-bootstrap
3
3
  description: Use when starting any new project from scratch. Asks for project identity (name, GitHub org, Cloudflare account), detects project type, sets up design system, staging+production, i18n from day 1, SEO foundation, AGENTS.md manifest, test infrastructure, 8-gate deploy pipeline, and disciplined development workflows. Prevents wrong deploys, redundant repos, and technical debt from day 0.
4
4
  ---
5
5
 
6
- # CodyMaster Project Bootstrap v2.0
6
+ # 🏗️ Cody Master Project Bootstrap v2.0
7
7
 
8
8
  > **Every project starts here. No exceptions.**
9
+ > Inspired by best practices from Amp, Claude Code, Cursor, Lovable, and Manus agents.
9
10
 
10
11
  ## Core Principles
11
12
 
12
- - ASK FIRST. BUILD SECOND. NEVER ASSUME IDENTITY.
13
- - STAGING IS MANDATORY. PRODUCTION IS EARNED.
14
- - I18N FROM DAY 1. DESIGN SYSTEM BEFORE COMPONENTS.
15
- - SEO IS INFRASTRUCTURE. EVERY PROJECT GETS AN AGENTS.MD.
13
+ ```
14
+ ASK FIRST. BUILD SECOND. NEVER ASSUME IDENTITY.
15
+ STAGING IS MANDATORY. PRODUCTION IS EARNED.
16
+ I18N FROM DAY 1. NOT "LATER."
17
+ DESIGN SYSTEM BEFORE COMPONENTS. TOKENS BEFORE PIXELS.
18
+ SEO IS NOT AN AFTERTHOUGHT. IT'S INFRASTRUCTURE.
19
+ EVERY PROJECT GETS AN AGENTS.MD. NO EXCEPTIONS.
20
+ ```
21
+
22
+ ---
16
23
 
17
24
  ## 11-Phase Bootstrap Process
18
25
 
19
- | Phase | Name | Purpose |
20
- |-------|------|---------|
21
- | 0 | Identity Lock | WHO are you deploying as? |
22
- | 0.5 | Security Foundation | HOW to prevent secret leaks? (calls `cm-secret-shield`) |
23
- | 1 | Project Type Detection | WHAT kind of project? |
24
- | 2 | Repository & Environments | WHERE does code live? |
25
- | 3 | Design System Foundation | HOW does it look? |
26
- | 4 | i18n From Day 1 | WHICH languages? |
27
- | 5 | SEO Foundation | HOW will people find it? |
28
- | 6 | AGENTS.md + Git Safety | HOW do agents collaborate? |
29
- | 7 | Test Infrastructure | HOW do we catch bugs? |
30
- | 8 | Deploy Pipeline (8 Gates) | HOW does code ship? |
31
- | 9 | Development Workflow | HOW do we work daily? |
26
+ ```
27
+ Phase 0: Identity Lock — WHO are you deploying as?
28
+ Phase 0.5: Security Foundation — HOW do we prevent secret leaks?
29
+ Phase 1: Project Type Detection — WHAT kind of project?
30
+ Phase 2: Repository & Environments WHERE does code live?
31
+ Phase 3: Design System Foundation HOW does it look?
32
+ Phase 4: i18n From Day 1 — WHICH languages?
33
+ Phase 5: SEO Foundation — HOW will people find it?
34
+ Phase 6: AGENTS.md + Git Safety — HOW do agents collaborate?
35
+ Phase 7: Test Infrastructure — HOW do we catch bugs?
36
+ Phase 8: Deploy Pipeline (8 Gates) HOW does code ship?
37
+ Phase 9: Development Workflow — HOW do we work daily?
38
+ ```
32
39
 
33
40
  ---
34
41
 
35
42
  ## Phase 0: Identity Lock 🔐
36
43
 
37
44
  > **MANDATORY. Cannot proceed without this.**
45
+ > **Values are NOT hardcoded — check history, suggest, let user confirm.**
46
+
47
+ ### Step 1: Check Identity History
48
+
49
+ Before asking anything, check if `~/.cm-identity-history.json` exists.
50
+ If it does, load previous identities and **suggest** the most recently used values.
51
+
52
+ ```json
53
+ // ~/.cm-identity-history.json — Auto-maintained across projects
54
+ {
55
+ "lastUsed": "2026-03-17",
56
+ "identities": [
57
+ {
58
+ "github": { "org": "my-work-org" },
59
+ "cloudflare": { "accountId": "abc123def456ghi789jkl012mno345pqr" },
60
+ "i18n": { "primary": "en", "targets": ["es", "fr", "de"] },
61
+ "usedCount": 5,
62
+ "lastProject": "my-awesome-project",
63
+ "lastUsed": "2026-03-17"
64
+ }
65
+ ]
66
+ }
67
+ ```
68
+
69
+ ### Step 2: Ask with Suggestions
70
+
71
+ Present the 6 questions, pre-filling from history where available.
72
+ User only needs to **confirm or change**:
73
+
74
+ ```
75
+ 📋 NEW PROJECT — Identity Setup
76
+ (Values from your last project shown as suggestions)
77
+
78
+ 1. Project name (kebab-case): ___________
79
+ 2. GitHub org [my-work-org]: → Enter to keep, or type new
80
+ 3. Cloudflare ID [abc12...5pqr]: → Enter to keep, or type new
81
+ 4. Domain: ___________
82
+ 5. Primary language [en]: → Enter to keep, or type new
83
+ 6. Target languages [es, fr, de]: → Enter to keep, or type new
84
+ ```
85
+
86
+ > **RULE:** Never assume. Always show. Let user confirm.
87
+ > If no history exists, ask all 6 from scratch.
88
+
89
+ ### Step 3: Verify Identity
90
+
91
+ ```
92
+ ⚠️ BEFORE PROCEEDING — CONFIRM:
93
+ 🔐 GitHub Org: {org}
94
+ ☁️ Cloudflare: {accountId}
95
+ 🌐 Domain: {domain}
96
+ 🗣️ Languages: {primary} (primary), {targets}
97
+ ✅ Correct? → proceed
98
+ ❌ Wrong? → fix before continuing
99
+ ```
100
+
101
+ ### Step 4: Create `.project-identity.json`
102
+
103
+ ```json
104
+ {
105
+ "projectName": "{name}",
106
+ "github": {
107
+ "org": "{org}",
108
+ "repo": "{name}"
109
+ },
110
+ "cloudflare": {
111
+ "accountId": "{accountId}",
112
+ "projectName": "{name}",
113
+ "productionBranch": "production"
114
+ },
115
+ "domain": {
116
+ "production": "{domain}",
117
+ "staging": "staging.{domain}"
118
+ },
119
+ "i18n": {
120
+ "primary": "{primary}",
121
+ "targets": ["{targets}"]
122
+ },
123
+ "createdAt": "{date}",
124
+ "bootstrapVersion": "2.0"
125
+ }
126
+ ```
127
+
128
+ ### Step 5: Save to History
129
+
130
+ After creating `.project-identity.json`, update `~/.cm-identity-history.json`:
131
+ - Add or update the identity entry
132
+ - Increment `usedCount`
133
+ - Update `lastProject` and `lastUsed`
134
+ - This ensures **next project** gets pre-filled suggestions automatically
38
135
 
39
- 1. Check `~/.cm-identity-history.json` for previous identities suggest pre-fill
40
- 2. Ask 6 questions (with suggestions from history):
41
- - Project name (kebab-case), GitHub org, Cloudflare ID, Domain, Primary language, Target languages
42
- 3. Verify identity with user confirmation
43
- 4. Create `.project-identity.json` with all config
44
- 5. Save to `~/.cm-identity-history.json` for future projects
45
- 6. Call `cm-identity-guard` to verify git config matches
136
+ > Call `cm-identity-guard` to verify git config matches the GitHub org BEFORE any git push.
137
+
138
+ ---
46
139
 
47
140
  ## Phase 0.5: Security Foundation 🛡️
48
141
 
49
- > Calls `cm-secret-shield` for setup + adds code-level security utilities.
142
+ > **NEW — Defense-in-depth from day 0. Secrets leak at project start when security is "later."**
143
+ > **Calls `cm-secret-shield` for setup.**
144
+
145
+ ### Step 1: Create `.gitleaks.toml`
146
+
147
+ Create project-level Gitleaks configuration:
148
+
149
+ ```toml
150
+ # .gitleaks.toml — Secret Shield Config
151
+ title = "CM Secret Shield"
152
+
153
+ [extend]
154
+ useDefault = true
155
+
156
+ [[rules]]
157
+ id = "supabase-service-key"
158
+ description = "Supabase Service Role Key"
159
+ regex = '''eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+'''
160
+ tags = ["supabase", "jwt"]
161
+
162
+ [[rules]]
163
+ id = "generic-high-entropy"
164
+ description = "High entropy string that may be a secret"
165
+ regex = '''(?i)(api[_-]?key|secret[_-]?key|access[_-]?token|private[_-]?key|auth[_-]?token)\s*[=:]\s*['"][a-zA-Z0-9/+=]{20,}['"]'''
166
+ tags = ["generic"]
167
+
168
+ [allowlist]
169
+ paths = ['''\.gitleaks\.toml$''', '''\.dev\.vars\.example$''', '''node_modules/''', '''dist/''']
170
+ ```
171
+
172
+ ### Step 2: Setup Pre-Commit Hook
173
+
174
+ ```bash
175
+ # Install git pre-commit hook for secret scanning
176
+ mkdir -p .git/hooks
177
+ cat > .git/hooks/pre-commit << 'EOF'
178
+ #!/bin/sh
179
+ echo "🛡️ Secret Shield: scanning staged files..."
180
+ if command -v gitleaks &> /dev/null; then
181
+ gitleaks git --pre-commit --staged --verbose
182
+ if [ $? -ne 0 ]; then
183
+ echo "❌ SECRET DETECTED! Commit blocked."
184
+ exit 1
185
+ fi
186
+ echo "✅ No secrets detected"
187
+ else
188
+ echo "⚠️ Gitleaks not installed. Running basic checks..."
189
+ STAGED=$(git diff --cached --name-only --diff-filter=ACM)
190
+ PATTERNS="SERVICE_KEY|ANON_KEY|PRIVATE_KEY|DB_PASSWORD|SECRET_KEY|sk-[a-zA-Z0-9]{20,}"
191
+ for file in $STAGED; do
192
+ if echo "$file" | grep -qE '\.(js|ts|json|toml|yaml|env)$'; then
193
+ if git diff --cached "$file" | grep -qE "$PATTERNS"; then
194
+ echo "❌ Potential secret in: $file"
195
+ exit 1
196
+ fi
197
+ fi
198
+ done
199
+ echo "✅ Basic check passed"
200
+ fi
201
+ EOF
202
+ chmod +x .git/hooks/pre-commit
203
+ ```
204
+
205
+ ### Step 3: Add Security Script
206
+
207
+ Add to `package.json`:
208
+ ```json
209
+ {
210
+ "scripts": {
211
+ "security:scan": "node scripts/security-scan.js || echo 'Create scripts/security-scan.js from cm-secret-shield'"
212
+ }
213
+ }
214
+ ```
215
+
216
+ ### Step 4: Create `.dev.vars.example`
217
+
218
+ ```bash
219
+ # .dev.vars.example — Template for local secrets (committed to repo)
220
+ # Copy to .dev.vars and fill in real values
221
+ SUPABASE_URL=https://YOUR_PROJECT.supabase.co
222
+ SUPABASE_SERVICE_KEY=your_service_key_here
223
+ SUPABASE_ANON_KEY=your_anon_key_here
224
+ ```
50
225
 
51
- 1. Create `.gitleaks.toml` with Supabase + generic high-entropy rules
52
- 2. Setup pre-commit hook (`.git/hooks/pre-commit`) — scans staged files
53
- 3. Add `security:scan` script to `package.json`
54
- 4. Create `.dev.vars.example` template (committed). `.dev.vars` = real secrets (gitignored)
55
- 5. **[NEW] Security Utilities (Learned: March 2026):**
56
- - **Python projects:** Copy `safe_path.py` to `scripts/` — provides `safe_resolve()`, `safe_join()`, `safe_open()` for path traversal prevention
57
- - **JS/TS frontend:** Add `esc()` function to sanitize HTML — prevent DOM XSS
58
- - **Express apps:** Add `app.disable('x-powered-by')` + `express.json({ limit: '1mb' })`
59
- - **Create `.snyk`** policy file for managing false positives
60
- - **Rule:** ALL paths from CLI/config/API → `safe_resolve()`. ALL innerHTML → `esc()`. No exceptions.
226
+ > **RULE:** `.dev.vars` = real secrets (gitignored). `.dev.vars.example` = template (committed).
227
+
228
+ ---
61
229
 
62
230
  ## Phase 1: Project Type Detection 🔍
63
231
 
64
- > Default UI: shadcn/ui + Tailwind. Default layout: Mobile-first.
232
+ > **Detect project type auto-select the right stack.**
233
+ > **Default UI: shadcn/ui + Tailwind. Default layout: Mobile-first.**
234
+ > **Unless user explicitly requests otherwise.**
235
+
236
+ ### Step 1: Ask Project Type
237
+
238
+ Present these options to the user:
239
+
240
+ | Type | When to use | Stack |
241
+ |------|------------|-------|
242
+ | **A. Static Website** | Docs, landing pages, portfolios | HTML + vanilla JS + CSS |
243
+ | **B. SPA (Vite)** | Dashboards, apps with client routing | Vite + React + TypeScript + **shadcn/ui** |
244
+ | **C. Cloudflare Workers** | APIs, backends, serverless functions | Hono + wrangler + TypeScript |
245
+ | **D. Fullstack (Workers + SPA)** | Complete apps with API + frontend | Hono + Vite + React + **shadcn/ui** |
246
+ | **E. Content Site (Astro)** | Blogs, docs, content-heavy sites | Astro + MDX |
247
+
248
+ ### UI Library Default Rules
249
+
250
+ ```
251
+ 🎨 DEFAULT UI LIBRARY: shadcn/ui + Tailwind CSS
252
+ 📱 DEFAULT LAYOUT: Mobile-first responsive
253
+
254
+ These defaults apply UNLESS user explicitly says otherwise.
255
+ Examples of overrides:
256
+ - "Use Ant Design" → switch to Ant Design
257
+ - "No mobile needed" → skip mobile optimization
258
+ - "Desktop only" → desktop-first layout
259
+
260
+ If user says nothing about UI → use shadcn/ui + mobile-first.
261
+ ```
262
+
263
+ ### Step 2: Scaffold Based on Type
264
+
265
+ #### Type A: Static Website
266
+ ```bash
267
+ mkdir -p public/static/{css,js,img} src tests/unit docs
268
+ touch public/index.html public/static/css/design-tokens.css public/static/css/style.css public/static/js/app.js
269
+ ```
270
+
271
+ #### Type B: SPA (Vite) — with shadcn/ui
272
+ ```bash
273
+ # Check available options first
274
+ npx -y create-vite@latest --help
275
+ # Scaffold React + TypeScript
276
+ npx -y create-vite@latest ./ --template react-ts
277
+ # Install Tailwind CSS
278
+ npm install -D tailwindcss @tailwindcss/vite
279
+ # Install and init shadcn/ui
280
+ npx -y shadcn@latest init
281
+ ```
282
+
283
+ #### Type C: Cloudflare Workers
284
+ ```bash
285
+ npm init -y
286
+ npm install hono wrangler --save-dev
287
+ mkdir -p src tests/unit
288
+ touch src/index.ts wrangler.jsonc
289
+ ```
290
+
291
+ #### Type D: Fullstack — with shadcn/ui
292
+ ```bash
293
+ # Workers backend + Vite frontend in one repo
294
+ mkdir -p api/src frontend/src tests/{unit,integration}
295
+ npm init -y
296
+ npm install hono wrangler --save-dev
297
+ cd frontend && npx -y create-vite@latest ./ --template react-ts
298
+ npm install -D tailwindcss @tailwindcss/vite
299
+ npx -y shadcn@latest init
300
+ ```
301
+
302
+ #### Type E: Astro
303
+ ```bash
304
+ npx -y create-astro@latest --help
305
+ npx -y create-astro@latest ./ --template blog --typescript strict
306
+ ```
307
+
308
+ ### Step 3: Install Common Dependencies
65
309
 
66
- | Type | Stack |
67
- |------|-------|
68
- | A. Static Website | HTML + vanilla JS + CSS |
69
- | B. SPA (Vite) | Vite + React + TS + shadcn/ui |
70
- | C. Cloudflare Workers | Hono + wrangler + TS |
71
- | D. Fullstack | Hono + Vite + React + shadcn/ui |
72
- | E. Content Site | Astro + MDX |
310
+ For ALL project types:
311
+ ```bash
312
+ npm install --save-dev vitest
313
+ ```
73
314
 
74
- Scaffold based on type, install `vitest` for all. Enforce mobile-first base styles.
315
+ ### Step 4: Mobile-First Setup
316
+
317
+ For ALL projects with UI, enforce mobile-first from scaffold:
318
+
319
+ ```css
320
+ /* Mobile-first media queries — ALWAYS start from mobile */
321
+ /* Default styles = mobile (< 640px) */
322
+
323
+ /* sm: 640px+ */
324
+ @media (min-width: 640px) { }
325
+ /* md: 768px+ */
326
+ @media (min-width: 768px) { }
327
+ /* lg: 1024px+ */
328
+ @media (min-width: 1024px) { }
329
+ /* xl: 1280px+ */
330
+ @media (min-width: 1280px) { }
331
+ ```
332
+
333
+ ```
334
+ 📱 MOBILE-FIRST RULES:
335
+ 1. Default CSS = mobile layout (no media query needed)
336
+ 2. Add complexity with min-width media queries
337
+ 3. Touch targets minimum 44x44px
338
+ 4. Test on 375px width (iPhone SE) as baseline
339
+ 5. Navigation: bottom nav or hamburger on mobile
340
+ 6. Tables: horizontal scroll or card layout on mobile
341
+ 7. Forms: single column, full width inputs on mobile
342
+ ```
343
+
344
+ ---
75
345
 
76
346
  ## Phase 2: Repository & Environments 🏠
77
347
 
78
- 1. `git init` + `main` (staging) + `production` branches
79
- 2. Configure Cloudflare Pages: `npx wrangler pages project create`
80
- 3. Add `deploy:staging` and `deploy:production` scripts
81
- 4. Create hardened `.gitignore` (secrets, env files, build output)
348
+ ### Step 1: Initialize Git
349
+
350
+ ```bash
351
+ git init
352
+ git checkout -b main
353
+ ```
354
+
355
+ ### Step 2: Create Staging + Production Branches
356
+
357
+ ```bash
358
+ # main = staging (default)
359
+ # production = production only
360
+ git checkout -b production
361
+ git checkout main
362
+ ```
363
+
364
+ ### Step 3: Configure Cloudflare Pages
365
+
366
+ ```bash
367
+ npx wrangler pages project create PROJECT_NAME --production-branch production
368
+ ```
369
+
370
+ ### Step 4: Add Deploy Scripts to package.json
371
+
372
+ ```json
373
+ {
374
+ "scripts": {
375
+ "deploy:staging": "npx wrangler pages deploy ./public --project-name=PROJECT_NAME --branch=main",
376
+ "deploy:production": "npx wrangler pages deploy ./public --project-name=PROJECT_NAME --branch=production",
377
+ "test": "vitest run",
378
+ "test:gate": "npm run test"
379
+ }
380
+ }
381
+ ```
382
+
383
+ > Adjust `./public` to match your build output directory based on project type.
384
+
385
+ ### Step 5: Create `.gitignore` (Hardened)
386
+
387
+ ```gitignore
388
+ # === Secret Shield: Mandatory Ignores ===
389
+ # Environment & secret files
390
+ .env
391
+ .env.*
392
+ !.env.example
393
+ !.env.test
394
+ .dev.vars
395
+ !.dev.vars.example
396
+ .secret-lifecycle.json
397
+
398
+ # Platform-specific secrets
399
+ *.pem
400
+ *.key
401
+ *.p12
402
+
403
+ # Build & dependencies
404
+ node_modules/
405
+ dist/
406
+ .wrangler/
407
+ .next/
408
+
409
+ # OS & IDE
410
+ .DS_Store
411
+ *.log
412
+ ```
413
+
414
+ ---
82
415
 
83
416
  ## Phase 3: Design System Foundation 🎨
84
417
 
85
- > Design tokens BEFORE components. shadcn/ui as default. Mobile-first always.
418
+ > **Design tokens BEFORE components. Semantic naming ALWAYS.**
419
+ > **Saved per brand — consistent across ALL projects of the same user/company.**
420
+ > **shadcn/ui components as default. Mobile-first always.**
421
+
422
+ ### Step 0: Check for Existing Brand Profile
423
+
424
+ Before creating a new design system, check if `~/.cm-design-profiles/` exists.
425
+ If the user has a previous design profile, **reuse it** for brand consistency.
426
+
427
+ ```json
428
+ // ~/.cm-design-profiles/{org-name}.json
429
+ // Auto-saved after first project. Reused for all future projects.
430
+ {
431
+ "orgName": "my-work-org",
432
+ "brand": {
433
+ "name": "Acme Corp",
434
+ "industry": "technology",
435
+ "style": "professional-modern"
436
+ },
437
+ "colors": {
438
+ "primary": { "50": "#eff6ff", "500": "#3b82f6", "600": "#2563eb", "700": "#1d4ed8" },
439
+ "accent": { "500": "#f59e0b" },
440
+ "success": "#22c55e",
441
+ "warning": "#f59e0b",
442
+ "error": "#ef4444"
443
+ },
444
+ "typography": {
445
+ "fontFamily": "Inter",
446
+ "monoFamily": "JetBrains Mono"
447
+ },
448
+ "ui": {
449
+ "library": "shadcn/ui",
450
+ "borderRadius": "0.5rem",
451
+ "darkMode": true
452
+ },
453
+ "lastUpdated": "2026-03-17",
454
+ "usedInProjects": ["my-awesome-project", "my-frontend-app"]
455
+ }
456
+ ```
457
+
458
+ **Rules:**
459
+ - If profile exists → load and apply. Ask user: "Found design profile for {orgName}. Reuse it?"
460
+ - If no profile → ask user about brand/industry → create new profile
461
+ - After bootstrap, **always save** the design profile to `~/.cm-design-profiles/`
462
+ - Profile is updated with each new project that uses it
463
+
464
+ ### Step 1: Ask Brand Context (if no profile exists)
465
+
466
+ ```
467
+ 🎨 DESIGN SYSTEM SETUP
468
+
469
+ No existing design profile found. Tell me about your brand:
470
+
471
+ 1. Company/Brand name: ___________
472
+ 2. Industry: ___________
473
+ 3. Style preference: (professional / playful / minimal / bold)
474
+ 4. Primary brand color (hex): ___________ (or "auto" to suggest)
475
+ 5. Dark mode needed? (yes / no) [default: yes]
476
+ 6. UI Library: [shadcn/ui] (Enter to keep, or type alternative)
477
+ ```
478
+
479
+ ### Step 2: Create Design Tokens
480
+
481
+ **For shadcn/ui projects (default):**
482
+
483
+ Design tokens are managed through `tailwind.config.ts` and shadcn's CSS variables.
484
+ Customize `app/globals.css` (or `src/index.css`) with brand colors:
485
+
486
+ ```css
487
+ @tailwind base;
488
+ @tailwind components;
489
+ @tailwind utilities;
490
+
491
+ @layer base {
492
+ :root {
493
+ /* === Brand Colors (from profile or user input) === */
494
+ --background: 0 0% 100%;
495
+ --foreground: 222.2 84% 4.9%;
496
+ --card: 0 0% 100%;
497
+ --card-foreground: 222.2 84% 4.9%;
498
+ --popover: 0 0% 100%;
499
+ --popover-foreground: 222.2 84% 4.9%;
500
+ --primary: 221.2 83.2% 53.3%; /* ← Brand primary */
501
+ --primary-foreground: 210 40% 98%;
502
+ --secondary: 210 40% 96.1%;
503
+ --secondary-foreground: 222.2 47.4% 11.2%;
504
+ --muted: 210 40% 96.1%;
505
+ --muted-foreground: 215.4 16.3% 46.9%;
506
+ --accent: 210 40% 96.1%;
507
+ --accent-foreground: 222.2 47.4% 11.2%;
508
+ --destructive: 0 84.2% 60.2%;
509
+ --destructive-foreground: 210 40% 98%;
510
+ --border: 214.3 31.8% 91.4%;
511
+ --input: 214.3 31.8% 91.4%;
512
+ --ring: 221.2 83.2% 53.3%; /* ← Brand primary */
513
+ --radius: 0.5rem;
514
+
515
+ /* === Additional Semantic Tokens === */
516
+ --success: 142.1 76.2% 36.3%;
517
+ --warning: 37.7 92.1% 50.2%;
518
+ --info: 221.2 83.2% 53.3%;
519
+ }
520
+
521
+ .dark {
522
+ --background: 222.2 84% 4.9%;
523
+ --foreground: 210 40% 98%;
524
+ --card: 222.2 84% 4.9%;
525
+ --card-foreground: 210 40% 98%;
526
+ --popover: 222.2 84% 4.9%;
527
+ --popover-foreground: 210 40% 98%;
528
+ --primary: 217.2 91.2% 59.8%;
529
+ --primary-foreground: 222.2 47.4% 11.2%;
530
+ --secondary: 217.2 32.6% 17.5%;
531
+ --secondary-foreground: 210 40% 98%;
532
+ --muted: 217.2 32.6% 17.5%;
533
+ --muted-foreground: 215 20.2% 65.1%;
534
+ --accent: 217.2 32.6% 17.5%;
535
+ --accent-foreground: 210 40% 98%;
536
+ --destructive: 0 62.8% 30.6%;
537
+ --destructive-foreground: 210 40% 98%;
538
+ --border: 217.2 32.6% 17.5%;
539
+ --input: 217.2 32.6% 17.5%;
540
+ --ring: 224.3 76.3% 48%;
541
+ }
542
+ }
543
+ ```
544
+
545
+ **For vanilla/static projects:**
546
+
547
+ Create `design-tokens.css` with CSS custom properties (see example in project scaffold).
548
+ Use the same brand colors from the profile.
549
+
550
+ ### Step 3: Install shadcn/ui Components (SPA/Fullstack projects)
551
+
552
+ Install essential base components:
553
+
554
+ ```bash
555
+ # Core layout components
556
+ npx shadcn@latest add button
557
+ npx shadcn@latest add input
558
+ npx shadcn@latest add label
559
+ npx shadcn@latest add card
560
+ npx shadcn@latest add dialog
561
+ npx shadcn@latest add dropdown-menu
562
+ npx shadcn@latest add toast
563
+ npx shadcn@latest add skeleton
564
+ ```
565
+
566
+ > Only install what's needed. Add more components as features require them.
567
+
568
+ ### Step 4: Mobile-First Base Styles
569
+
570
+ ```css
571
+ /* Always include these mobile-first foundations */
572
+
573
+ /* Touch-friendly interactive elements */
574
+ button, a, [role="button"] {
575
+ min-height: 44px;
576
+ min-width: 44px;
577
+ }
578
+
579
+ /* Responsive container */
580
+ .container {
581
+ width: 100%;
582
+ padding-inline: 1rem;
583
+ }
86
584
 
87
- 1. Check `~/.cm-design-profiles/{org}.json` for existing brand profile → reuse
88
- 2. If no profile: ask brand context (name, industry, style, primary color, dark mode)
89
- 3. Create design tokens (CSS custom properties for shadcn/ui or vanilla)
90
- 4. Install base shadcn/ui components: button, input, label, card, dialog, dropdown-menu, toast, skeleton
91
- 5. Add mobile-first base styles (44px touch targets, responsive container, safe-area)
92
- 6. Save design profile to `~/.cm-design-profiles/`
585
+ @media (min-width: 640px) { .container { padding-inline: 1.5rem; } }
586
+ @media (min-width: 1024px) { .container { max-width: 1024px; margin-inline: auto; } }
587
+ @media (min-width: 1280px) { .container { max-width: 1280px; } }
588
+
589
+ /* Safe area for mobile devices */
590
+ body {
591
+ padding: env(safe-area-inset-top) env(safe-area-inset-right)
592
+ env(safe-area-inset-bottom) env(safe-area-inset-left);
593
+ }
594
+ ```
595
+
596
+ ### Step 5: Save Design Profile
597
+
598
+ After setting up the design system, **auto-save** to `~/.cm-design-profiles/{org}.json`:
599
+ - Brand colors, fonts, border radius, UI library preference
600
+ - Add current project to `usedInProjects` array
601
+ - Next project with same org → instant design system reuse
602
+
603
+ ### Design System Rules
604
+
605
+ ```
606
+ ✅ DO:
607
+ - Use shadcn/ui components as building blocks (SPA/Fullstack)
608
+ - Use semantic color tokens: bg-primary, text-muted-foreground
609
+ - Design mobile layout FIRST, then enhance for larger screens
610
+ - Reuse brand profile from ~/.cm-design-profiles/
611
+ - Touch targets: minimum 44x44px
612
+ - Test at 375px (iPhone SE) as baseline
613
+
614
+ ❌ DON'T:
615
+ - Use raw hex colors: color: #333 → use token
616
+ - Design desktop-first then "fix" mobile
617
+ - Create new color palette when brand profile exists
618
+ - Skip dark mode (enabled by default)
619
+ - Use fixed widths on mobile: width: 500px
620
+ - Ignore safe-area-inset on mobile
621
+ ```
622
+
623
+ ---
93
624
 
94
625
  ## Phase 4: i18n From Day 1 🌍
95
626
 
96
- 1. Create i18n engine (vanilla `i18n.js` or `react-i18next`)
97
- 2. Create language files: primary (source of truth) + targets
98
- 3. Rules: ALL strings via `t()` or `data-i18n`. MAX 30 strings per batch. Run i18n-sync test after every batch.
627
+ > **Keep from v1 enhanced to be framework-agnostic.**
628
+
629
+ ### Step 1: Create i18n Engine
630
+
631
+ For **static/vanilla** projects, create `i18n.js`:
632
+
633
+ ```javascript
634
+ const i18n = {
635
+ currentLang: 'vi',
636
+ translations: {},
637
+
638
+ async init(lang) {
639
+ this.currentLang = lang || localStorage.getItem('lang') || 'vi';
640
+ try {
641
+ const res = await fetch(`/static/i18n/${this.currentLang}.json`);
642
+ this.translations = await res.json();
643
+ } catch {
644
+ const fallback = await fetch('/static/i18n/vi.json');
645
+ this.translations = await fallback.json();
646
+ }
647
+ this.apply();
648
+ },
649
+
650
+ t(key) {
651
+ return key.split('.').reduce((obj, k) => obj?.[k], this.translations) || `[${key}]`;
652
+ },
653
+
654
+ apply() {
655
+ document.querySelectorAll('[data-i18n]').forEach(el => {
656
+ el.textContent = this.t(el.dataset.i18n);
657
+ });
658
+ document.querySelectorAll('[data-i18n-placeholder]').forEach(el => {
659
+ el.placeholder = this.t(el.dataset.i18nPlaceholder);
660
+ });
661
+ document.documentElement.lang = this.currentLang;
662
+ },
663
+
664
+ async switchTo(lang) {
665
+ localStorage.setItem('lang', lang);
666
+ await this.init(lang);
667
+ }
668
+ };
669
+ ```
670
+
671
+ For **React/Vite** projects, use `react-i18next`:
672
+ ```bash
673
+ npm install i18next react-i18next i18next-browser-languagedetector
674
+ ```
675
+
676
+ For **Astro** projects, use `astro-i18n` or manual routing.
677
+
678
+ ### Step 2: Create Language Files
679
+
680
+ ```
681
+ i18n/
682
+ ├── vi.json ← Source of truth (primary language)
683
+ ├── en.json
684
+ ├── th.json
685
+ └── ph.json
686
+ ```
687
+
688
+ ### Step 3: i18n Rules
689
+
690
+ ```
691
+ ✅ DO:
692
+ - Write ALL user-facing strings with t() or data-i18n
693
+ - Primary language file is source of truth
694
+ - MAX 30 strings per batch when extracting
695
+ - Run i18n-sync test after every batch
696
+
697
+ ❌ DON'T:
698
+ - Hardcode strings: "Save" → use t('common.save')
699
+ - Add 600 strings in one shot → app crashes
700
+ - Translate before primary language is complete
701
+ - Skip audit gates between batches
702
+ ```
703
+
704
+ ---
99
705
 
100
706
  ## Phase 5: SEO Foundation 🔍
101
707
 
102
- Every page must have: title (<60 chars), meta description (150-160 chars), exactly ONE h1, heading hierarchy (no skipping), semantic HTML, alt attributes, canonical URL, Open Graph, lang attribute, unique IDs.
708
+ > **NEW Learn from Lovable & Cursor: SEO is infrastructure, not afterthought.**
709
+
710
+ ### Step 1: HTML Head Template
711
+
712
+ Every page must include:
713
+
714
+ ```html
715
+ <!DOCTYPE html>
716
+ <html lang="vi">
717
+ <head>
718
+ <meta charset="UTF-8">
719
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
720
+
721
+ <!-- SEO: Title and Description -->
722
+ <title data-i18n="meta.title">Project Name — Short description</title>
723
+ <meta name="description" data-i18n-content="meta.description" content="Page description 150-160 characters">
724
+
725
+ <!-- SEO: Open Graph -->
726
+ <meta property="og:title" content="Project Name">
727
+ <meta property="og:description" content="Page description">
728
+ <meta property="og:type" content="website">
729
+ <meta property="og:url" content="https://yourdomain.com">
730
+ <meta property="og:image" content="https://yourdomain.com/og-image.png">
731
+
732
+ <!-- SEO: Twitter Card -->
733
+ <meta name="twitter:card" content="summary_large_image">
734
+ <meta name="twitter:title" content="Project Name">
735
+ <meta name="twitter:description" content="Page description">
736
+
737
+ <!-- SEO: Canonical URL -->
738
+ <link rel="canonical" href="https://yourdomain.com">
739
+
740
+ <!-- Performance: Preconnect to fonts -->
741
+ <link rel="preconnect" href="https://fonts.googleapis.com">
742
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
743
+
744
+ <!-- Favicon -->
745
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg">
746
+
747
+ <!-- Styles -->
748
+ <link rel="stylesheet" href="/static/css/design-tokens.css">
749
+ <link rel="stylesheet" href="/static/css/style.css">
750
+ </head>
751
+ <body>
752
+ <!-- Content with semantic HTML -->
753
+ <header role="banner">...</header>
754
+ <nav role="navigation" aria-label="Main">...</nav>
755
+ <main role="main">
756
+ <h1>One H1 per page</h1>
757
+ ...
758
+ </main>
759
+ <footer role="contentinfo">...</footer>
760
+
761
+ <script src="/static/js/i18n.js"></script>
762
+ <script src="/static/js/app.js" defer></script>
763
+ </body>
764
+ </html>
765
+ ```
766
+
767
+ ### Step 2: SEO Checklist
768
+
769
+ Every page must pass:
770
+
771
+ | # | Check | Rule |
772
+ |---|-------|------|
773
+ | 1 | Title tag | Descriptive, unique per page, < 60 chars |
774
+ | 2 | Meta description | Compelling, 150-160 chars |
775
+ | 3 | H1 tag | Exactly ONE per page |
776
+ | 4 | Heading hierarchy | h1 → h2 → h3 (no skipping) |
777
+ | 5 | Semantic HTML | `<header>`, `<nav>`, `<main>`, `<footer>`, `<article>`, `<section>` |
778
+ | 6 | Alt attributes | Every `<img>` has descriptive alt text |
779
+ | 7 | Canonical URL | Prevents duplicate content |
780
+ | 8 | Open Graph | Social sharing preview |
781
+ | 9 | Lang attribute | `<html lang="vi">` matches current language |
782
+ | 10 | Unique IDs | All interactive elements have unique, descriptive IDs |
783
+
784
+ ---
103
785
 
104
786
  ## Phase 6: AGENTS.md + Git Safety 🤖
105
787
 
106
- 1. Create `AGENTS.md` at root project overview, commands, structure, conventions, rules
107
- 2. Enforce conventional commits: `feat:`, `fix:`, `docs:`, `test:`, `chore:`, `i18n:`
108
- 3. Branch protection: main (staging, no force push), production (merge from main only)
109
- 4. Create PR template (`.github/pull_request_template.md`)
788
+ > **NEW Learn from Amp & Claude Code: Project manifest for AI collaboration.**
789
+
790
+ ### Step 1: Create AGENTS.md
791
+
792
+ Every project MUST have this file at root:
793
+
794
+ ```markdown
795
+ # AGENTS.md — Project Manifest
796
+
797
+ > This file helps AI agents understand and work with this project effectively.
798
+
799
+ ## Project Overview
800
+ - **Name**: my-awesome-docs
801
+ - **Type**: Static Website (Cloudflare Pages)
802
+ - **Primary Language**: English (en)
803
+ - **Tech Stack**: HTML, vanilla JS, CSS, Cloudflare Pages
804
+
805
+ ## Commands
806
+ - `npm run dev` — Start local dev server
807
+ - `npm run test` — Run all tests
808
+ - `npm run test:gate` — Run pre-deploy test gate
809
+ - `npm run deploy:staging` — Deploy to staging
810
+ - `npm run deploy:production` — Deploy to production
811
+
812
+ ## Project Structure
813
+ ```
814
+ public/ — Static files served directly
815
+ static/css/ — Stylesheets (design-tokens.css, style.css)
816
+ static/js/ — JavaScript (app.js, i18n.js)
817
+ static/i18n/ — Language files (vi.json, en.json, ...)
818
+ src/ — Backend source (if applicable)
819
+ tests/ — Test files
820
+ docs/plans/ — Implementation plans
821
+ ```
822
+
823
+ ## Code Conventions
824
+ - **i18n**: ALL user-facing strings must use t() or data-i18n. vi.json is source of truth.
825
+ - **CSS**: Use design tokens only. Never raw hex colors or arbitrary spacing.
826
+ - **Commits**: Conventional format — `feat:`, `fix:`, `docs:`, `test:`, `chore:`
827
+ - **Branches**: `main` = staging, `production` = production only
828
+ - **Deploy**: Always staging first. Production requires explicit request.
829
+
830
+ ## Important Rules
831
+ 1. Run `cm-identity-guard` before any git push
832
+ 2. Never force push to main or production
833
+ 3. i18n extraction: MAX 30 strings per batch
834
+ 4. Run test:gate before every deploy
835
+ 5. Check `.project-identity.json` for deploy targets
836
+ 6. Use `qmd` (cm-deep-search) for semantic codebase search. Ensure `.qmd` index is fresh.
837
+ ```
838
+
839
+ ### Step 2: Git Safety Protocol
840
+
841
+ #### Conventional Commits
842
+ From the very first commit, enforce:
843
+
844
+ ```
845
+ feat: add user login page
846
+ fix: correct i18n key for save button
847
+ docs: update README with deploy instructions
848
+ test: add frontend safety tests
849
+ chore: update dependencies
850
+ i18n: extract settings page strings (batch 3/5)
851
+ ```
852
+
853
+ #### Branch Protection Rules
854
+ ```
855
+ main branch:
856
+ ✅ Direct push allowed (staging)
857
+ ❌ Never force push
858
+ ✅ Run test:gate before deploy
859
+
860
+ production branch:
861
+ ❌ Never direct push
862
+ ✅ Only via: git checkout production && git merge main && git push
863
+ ✅ Requires staging verification first
864
+ ❌ Never force push
865
+ ```
866
+
867
+ #### First Commit
868
+ ```bash
869
+ git add .
870
+ git commit -m "chore: bootstrap project with cm-project-bootstrap v2.0"
871
+ ```
872
+
873
+ #### PR Template (`.github/pull_request_template.md`)
874
+ ```markdown
875
+ ## What Changed
876
+ <!-- Brief description -->
877
+
878
+ ## Test Plan
879
+ - [ ] Tests pass (`npm run test:gate`)
880
+ - [ ] Staging verified
881
+ - [ ] i18n keys present in all languages
882
+ - [ ] No raw strings in UI
883
+
884
+ ## Deploy
885
+ - [ ] Ready for staging
886
+ - [ ] Ready for production (requires staging verification)
887
+ ```
888
+
889
+ ---
110
890
 
111
891
  ## Phase 7: Test Infrastructure 🧪
112
892
 
113
- 1. Create `vitest.config.js`
114
- 2. Create `tests/unit/frontend-safety.test.js` — HTML structure, JS syntax, CSS tokens, AGENTS.md exists
115
- 3. Create `tests/unit/i18n-sync.test.js` — key parity across languages
116
- 4. Wire up `test:gate` in package.json
893
+ ### Step 1: Create Test Config
894
+
895
+ ```javascript
896
+ // vitest.config.js (or vitest.config.ts)
897
+ import { defineConfig } from 'vitest/config';
898
+
899
+ export default defineConfig({
900
+ test: {
901
+ globals: true,
902
+ environment: 'node',
903
+ include: ['tests/**/*.test.{js,ts}'],
904
+ },
905
+ });
906
+ ```
907
+
908
+ ### Step 2: Frontend Safety Tests
909
+
910
+ Create `tests/unit/frontend-safety.test.js`:
911
+
912
+ ```javascript
913
+ import { describe, it, expect } from 'vitest';
914
+ import { readFileSync, readdirSync, existsSync } from 'fs';
915
+ import { join } from 'path';
916
+
917
+ describe('Frontend Safety', () => {
918
+ // Test 1: HTML files have proper structure
919
+ it('index.html has required meta tags', () => {
920
+ const html = readFileSync('public/index.html', 'utf-8');
921
+ expect(html).toContain('<meta charset=');
922
+ expect(html).toContain('<meta name="viewport"');
923
+ expect(html).toContain('<title');
924
+ expect(html).toContain('lang=');
925
+ });
926
+
927
+ // Test 2: No syntax errors in JS files
928
+ it('JavaScript files parse without errors', () => {
929
+ const jsDir = 'public/static/js';
930
+ if (!existsSync(jsDir)) return;
931
+ const files = readdirSync(jsDir).filter(f => f.endsWith('.js'));
932
+ files.forEach(file => {
933
+ const content = readFileSync(join(jsDir, file), 'utf-8');
934
+ expect(() => new Function(content)).not.toThrow();
935
+ });
936
+ });
937
+
938
+ // Test 3: CSS files reference design tokens (not raw values)
939
+ it('stylesheets use design tokens', () => {
940
+ const cssFile = 'public/static/css/style.css';
941
+ if (!existsSync(cssFile)) return;
942
+ const css = readFileSync(cssFile, 'utf-8');
943
+ // Warn if raw hex colors found outside of design-tokens.css
944
+ const rawColors = css.match(/#[0-9a-fA-F]{3,8}(?!.*design-tokens)/g);
945
+ if (rawColors && rawColors.length > 0) {
946
+ console.warn(`⚠️ Found ${rawColors.length} raw color values. Use design tokens instead.`);
947
+ }
948
+ });
949
+
950
+ // Test 4: Design tokens file exists
951
+ it('design-tokens.css exists', () => {
952
+ expect(existsSync('public/static/css/design-tokens.css')).toBe(true);
953
+ });
954
+
955
+ // Test 5: AGENTS.md exists
956
+ it('AGENTS.md exists at project root', () => {
957
+ expect(existsSync('AGENTS.md')).toBe(true);
958
+ });
959
+
960
+ // Test 6: .project-identity.json exists
961
+ it('.project-identity.json exists', () => {
962
+ expect(existsSync('.project-identity.json')).toBe(true);
963
+ });
964
+ });
965
+ ```
966
+
967
+ ### Step 3: i18n Sync Tests
968
+
969
+ Create `tests/unit/i18n-sync.test.js`:
970
+
971
+ ```javascript
972
+ import { describe, it, expect } from 'vitest';
973
+ import { readFileSync, readdirSync, existsSync } from 'fs';
974
+ import { join } from 'path';
975
+
976
+ describe('i18n Sync', () => {
977
+ const i18nDir = 'public/static/i18n';
978
+
979
+ it('primary language file exists', () => {
980
+ expect(existsSync(join(i18nDir, 'vi.json'))).toBe(true);
981
+ });
982
+
983
+ it('all language files have same keys as primary', () => {
984
+ if (!existsSync(i18nDir)) return;
985
+ const primaryKeys = getAllKeys(
986
+ JSON.parse(readFileSync(join(i18nDir, 'vi.json'), 'utf-8'))
987
+ );
988
+
989
+ const langFiles = readdirSync(i18nDir)
990
+ .filter(f => f.endsWith('.json') && f !== 'vi.json');
991
+
992
+ langFiles.forEach(file => {
993
+ const langKeys = getAllKeys(
994
+ JSON.parse(readFileSync(join(i18nDir, file), 'utf-8'))
995
+ );
996
+ const missing = primaryKeys.filter(k => !langKeys.includes(k));
997
+ expect(missing, `${file} missing keys: ${missing.join(', ')}`).toEqual([]);
998
+ });
999
+ });
1000
+ });
1001
+
1002
+ function getAllKeys(obj, prefix = '') {
1003
+ return Object.entries(obj).flatMap(([key, val]) => {
1004
+ const fullKey = prefix ? `${prefix}.${key}` : key;
1005
+ return typeof val === 'object' && val !== null
1006
+ ? getAllKeys(val, fullKey)
1007
+ : [fullKey];
1008
+ });
1009
+ }
1010
+ ```
1011
+
1012
+ ### Step 4: Package Scripts
1013
+
1014
+ Ensure `package.json` has:
1015
+
1016
+ ```json
1017
+ {
1018
+ "scripts": {
1019
+ "test": "vitest run",
1020
+ "test:watch": "vitest",
1021
+ "test:gate": "vitest run"
1022
+ }
1023
+ }
1024
+ ```
1025
+
1026
+ ---
117
1027
 
118
1028
  ## Phase 8: Deploy Pipeline (8 Gates) 🚀
119
1029
 
120
- Gates run sequentially: Identity Branch Test Build i18n → Lint → Accessibility → Performance.
121
- See `cm-safe-deploy` for the full 9-gate pipeline details.
1030
+ > **Enhanced from 6 to 8 gates adding accessibility + performance.**
1031
+
1032
+ ### The 8 Gates
1033
+
1034
+ ```
1035
+ Gate 1: Identity Check — .project-identity.json matches deploy target
1036
+ Gate 2: Branch Check — On correct branch (main=staging, production=prod)
1037
+ Gate 3: Test Gate — npm run test:gate passes
1038
+ Gate 4: Build Gate — npm run build succeeds (if applicable)
1039
+ Gate 5: i18n Gate — All language files in sync
1040
+ Gate 6: Lint Gate — No lint errors (if linter configured)
1041
+ Gate 7: Accessibility Gate — Semantic HTML, alt tags, ARIA labels present
1042
+ Gate 8: Performance Gate — No obviously large bundles or unoptimized assets
1043
+ ```
1044
+
1045
+ ### Gate Implementation
1046
+
1047
+ #### Gate 1: Identity Check
1048
+ ```bash
1049
+ # Read .project-identity.json → confirm Cloudflare account + project name
1050
+ cat .project-identity.json | jq '.cloudflare'
1051
+ ```
1052
+
1053
+ #### Gate 2: Branch Check
1054
+ ```bash
1055
+ # Verify current branch
1056
+ BRANCH=$(git branch --show-current)
1057
+ if [ "$1" = "production" ] && [ "$BRANCH" != "production" ]; then
1058
+ echo "❌ Must be on production branch for production deploy"
1059
+ exit 1
1060
+ fi
1061
+ ```
1062
+
1063
+ #### Gate 3: Test Gate
1064
+ ```bash
1065
+ npm run test:gate
1066
+ ```
1067
+
1068
+ #### Gate 4: Build Gate
1069
+ ```bash
1070
+ npm run build 2>&1 || { echo "❌ Build failed"; exit 1; }
1071
+ ```
1072
+
1073
+ #### Gate 5: i18n Gate
1074
+ ```bash
1075
+ # Verified by i18n-sync test in Gate 3
1076
+ echo "✅ i18n sync verified by test suite"
1077
+ ```
1078
+
1079
+ #### Gate 6: Lint Gate
1080
+ ```bash
1081
+ npm run lint 2>&1 || echo "⚠️ Lint warnings (non-blocking)"
1082
+ ```
1083
+
1084
+ #### Gate 7: Accessibility Gate
1085
+ ```bash
1086
+ # Check HTML for basic accessibility
1087
+ echo "Checking semantic HTML..."
1088
+ grep -r '<img' public/ | grep -v 'alt=' && echo "❌ Images missing alt attributes" || echo "✅ All images have alt"
1089
+ grep -r 'role=' public/index.html > /dev/null && echo "✅ ARIA roles present" || echo "⚠️ Consider adding ARIA roles"
1090
+ ```
1091
+
1092
+ #### Gate 8: Performance Gate
1093
+ ```bash
1094
+ # Check for obviously large files
1095
+ find public/ -type f -size +500k | head -5
1096
+ if [ $? -eq 0 ]; then
1097
+ echo "⚠️ Large files detected. Consider optimizing."
1098
+ fi
1099
+ echo "✅ Performance gate passed"
1100
+ ```
1101
+
1102
+ ### Deploy Commands
1103
+
1104
+ ```bash
1105
+ # Staging (default)
1106
+ npm run deploy:staging
1107
+
1108
+ # Production (explicit only)
1109
+ npm run deploy:production
1110
+ ```
1111
+
1112
+ ---
122
1113
 
123
1114
  ## Phase 9: Development Workflow 🔄
124
1115
 
125
- Daily loop: Plan → Branch → TDD → Build → Test → Review → Commit → Deploy staging → Verify → Merge production.
1116
+ ### Daily Development Loop
126
1117
 
127
- Deploy rules: `deploy` = staging. `deploy production` = requires staging verified first.
1118
+ ```
1119
+ 1. Plan → cm-brainstorm / cm-writing-plans
1120
+ 2. Branch → cm-using-git-worktrees (optional for complex features)
1121
+ 3. TDD → cm-test-driven-development
1122
+ 4. Build → Implement the feature
1123
+ 5. Test → npm run test:gate
1124
+ 6. Review → cm-requesting-code-review
1125
+ 7. Commit → Conventional commit format
1126
+ 8. Deploy → deploy:staging (8-gate pipeline)
1127
+ 9. Verify → Check staging URL
1128
+ 10. Merge → production branch (when ready)
1129
+ ```
128
1130
 
129
- ## Phase 9.5: Working Memory Init 🧠
1131
+ ### When to Call Which Skill
1132
+
1133
+ | Situation | Skill |
1134
+ |-----------|-------|
1135
+ | Starting a feature | `cm-brainstorm` |
1136
+ | Writing implementation plan | `cm-writing-plans` |
1137
+ | Need isolated workspace | `cm-using-git-worktrees` |
1138
+ | Writing tests first | `cm-test-driven-development` |
1139
+ | Running independent tasks | `cm-subagent-driven-development` |
1140
+ | Executing a plan | `cm-executing-plans` |
1141
+ | Before deploying | `cm-pre-deploy-testing` → `cm-identity-guard` |
1142
+ | After implementing | `cm-requesting-code-review` |
1143
+ | Receiving review | `cm-receiving-code-review` |
1144
+ | Bug found | `cm-systematic-debugging` |
1145
+ | Extracting i18n | `cm-safe-i18n-translation` |
1146
+ | Before git push | `cm-identity-guard` |
1147
+ | Finishing feature branch | `cm-finishing-a-development-branch` |
1148
+ | Before claiming done | `cm-verification-before-completion` |
1149
+ | **Need a skill you don't have** | **→ Adaptive Skills Discovery (below)** |
1150
+
1151
+ ### Deploy Behavior Rules
130
1152
 
131
- 1. Create `.cm/CONTINUITY.md` from `cm-continuity` template
132
- 2. Add `.cm/` to `.gitignore` (local working memory)
133
- 3. Reference in AGENTS.md
1153
+ ```
1154
+ User says "deploy" → Deploy to STAGING
1155
+ User says "deploy staging" → Deploy to STAGING
1156
+ User says "deploy production"→ Deploy to PRODUCTION (requires staging verified)
1157
+ User says "deploy prod" → Deploy to PRODUCTION (requires staging verified)
1158
+
1159
+ After successful production deploy:
1160
+ → Suggest updating CHANGELOG.md
1161
+ → Suggest updating docs/ if applicable
1162
+ → Suggest creating git tag: git tag v1.x.x
1163
+ ```
1164
+
1165
+ ---
134
1166
 
135
1167
  ## Adaptive Skills Discovery 🧠
136
1168
 
137
- When agent encounters unknown task:
138
- 1. DETECT gap 2. `npx skills find "{keyword}"` → 3. REVIEW SKILL.md → 4. ASK user → 5. INSTALL → 6. USE → 7. LOG to `.cm-skills-log.json`
1169
+ > **The bootstrap doesn't just set up a project — it LEARNS what the project needs.**
1170
+ > **Like a framework that finds its own missing pieces.**
139
1171
 
140
- Safety: always show user before installing, prefer known repos, install project-level, log every install.
1172
+ ### Philosophy
141
1173
 
142
- ## Output Checklist ✅
1174
+ ```
1175
+ DON'T just fail when you hit something you've never done.
1176
+ DO search for a skill that can help.
1177
+ DON'T install blindly — review what the skill does first.
1178
+ DO remember what was useful for next time.
1179
+ ```
1180
+
1181
+ ### How It Works: The Discovery Loop
1182
+
1183
+ When the agent encounters a task it doesn't have a skill for:
1184
+
1185
+ ```
1186
+ 1. DETECT → "I need to do X but don't have a matching skill"
1187
+ 2. SEARCH → npx skills find {keyword} — search skills.sh registry
1188
+ 3. REVIEW → Read the SKILL.md of the found skill — is it safe & relevant?
1189
+ 4. ASK → "Found skill '{name}': {description}. Install it?"
1190
+ 5. INSTALL → npx skills add {source} --skill {name} -a antigravity -y
1191
+ 6. USE → Apply the newly installed skill to the current task
1192
+ 7. LOG → Record what was installed + why in .cm-skills-log.json
1193
+ ```
1194
+
1195
+ ### Step 1: Search for Skills
1196
+
1197
+ Use `npx skills find` to search the community registry at [skills.sh](https://skills.sh):
1198
+
1199
+ ```bash
1200
+ # Interactive search (fuzzy finder)
1201
+ npx skills find
1202
+
1203
+ # Search by keyword
1204
+ npx skills find "nextjs"
1205
+ npx skills find "supabase"
1206
+ npx skills find "testing"
1207
+ npx skills find "deployment"
1208
+
1209
+ # Browse a known skills repository
1210
+ npx skills add vercel-labs/agent-skills --list
1211
+ ```
1212
+
1213
+ ### Step 2: Install Safely
1214
+
1215
+ ```bash
1216
+ # Install to Antigravity agent (project-level)
1217
+ npx skills add vercel-labs/agent-skills --skill {skill-name} -a antigravity
1218
+
1219
+ # Install globally (available to all projects)
1220
+ npx skills add vercel-labs/agent-skills --skill {skill-name} -a antigravity -g
1221
+
1222
+ # From any GitHub repo
1223
+ npx skills add https://github.com/{owner}/{repo} --skill {skill-name} -a antigravity
1224
+ ```
1225
+
1226
+ ### Step 3: Log What Was Installed
1227
+
1228
+ Maintain `.cm-skills-log.json` at project root to track what was discovered:
1229
+
1230
+ ```json
1231
+ {
1232
+ "discoveredSkills": [
1233
+ {
1234
+ "name": "supabase-rls",
1235
+ "source": "vercel-labs/agent-skills",
1236
+ "installedAt": "2026-03-17",
1237
+ "reason": "User needed Row Level Security setup",
1238
+ "scope": "project"
1239
+ }
1240
+ ]
1241
+ }
1242
+ ```
143
1243
 
144
- After bootstrap, project MUST have: `.project-identity.json`, `AGENTS.md`, `.gitignore` (hardened), `.gitleaks.toml`, pre-commit hook, `.dev.vars.example`, `package.json` (with deploy/test scripts), design tokens/shadcn, i18n files, SEO meta tags, test files, main + production branches, `.cm/CONTINUITY.md`.
1244
+ ### When to Trigger Discovery
145
1245
 
146
- ## Template Files (load on-demand with view_file)
1246
+ | Situation | Search Keywords |
1247
+ |-----------|----------------|
1248
+ | User asks for something you've never done | Search by the technology/concept name |
1249
+ | A framework you're unfamiliar with | `npx skills find "{framework}"` |
1250
+ | Complex DevOps / CI/CD setup | `npx skills find "deployment"`, `"ci"`, `"docker"` |
1251
+ | Database patterns | `npx skills find "prisma"`, `"supabase"`, `"drizzle"` |
1252
+ | Testing frameworks | `npx skills find "playwright"`, `"cypress"`, `"vitest"` |
1253
+ | UI component libraries | `npx skills find "shadcn"`, `"radix"`, `"design-system"` |
1254
+ | Auth / payment / external | `npx skills find "auth"`, `"stripe"`, `"clerk"` |
147
1255
 
148
- | Template | Use When |
149
- |----------|----------|
150
- | `templates/vitest.config.js` | Phase 7: Setting up test infrastructure |
151
- | `templates/frontend-safety.test.js` | Phase 7: Creating frontend safety tests |
152
- | `templates/i18n-sync.test.js` | Phase 7: Creating i18n sync tests |
153
- | `templates/project-identity.json` | Phase 0: Creating .project-identity.json |
154
- | `templates/AGENTS.md` | Phase 6: Creating AGENTS.md |
155
- | `templates/pr-template.md` | Phase 6: Creating PR template |
1256
+ ### Safety Rules
1257
+
1258
+ ```
1259
+ DO:
1260
+ - Always show the user what skill you found before installing
1261
+ - Prefer skills from known repos (vercel-labs/agent-skills, etc.)
1262
+ - Install project-level by default, global only if user agrees
1263
+ - Log every installed skill with reason
1264
+ - Check `npx skills list` to avoid duplicates
1265
+
1266
+ ❌ DON'T:
1267
+ - Install skills without user confirmation
1268
+ - Install from untrusted/unknown sources without review
1269
+ - Override existing cm-* skills with external ones
1270
+ - Install more than needed — minimal is better
1271
+ ```
1272
+
1273
+ ### Self-Improvement Loop
1274
+
1275
+ After completing a project, the bootstrap gets smarter:
1276
+
1277
+ ```
1278
+ 1. Review .cm-skills-log.json — what new skills were needed?
1279
+ 2. If a skill was useful → suggest making it a permanent cm-* skill
1280
+ 3. If the same type of skill is needed across 3+ projects →
1281
+ auto-suggest: "This skill seems essential. Make it part of your default toolkit?"
1282
+ 4. Update ~/.cm-identity-history.json with commonly needed skill patterns
1283
+ ```
1284
+
1285
+ ---
1286
+
1287
+ ## Phase 9.5: Working Memory Init 🧠
1288
+
1289
+ > **MANDATORY. Every project gets a CONTINUITY.md.**
1290
+ > **This is what makes AI remember context across sessions.**
1291
+
1292
+ ### Step 1: Create `.cm/` directory
1293
+
1294
+ ```bash
1295
+ mkdir -p .cm
1296
+ ```
1297
+
1298
+ ### Step 2: Create CONTINUITY.md
1299
+
1300
+ Write `.cm/CONTINUITY.md` using the template from `cm-continuity` skill:
1301
+ - Set `Project:` to the project name from `.project-identity.json`
1302
+ - Set `Current Phase:` to `bootstrapping`
1303
+ - Set `Active Goal:` to the user's stated project purpose
1304
+ - Leave `Mistakes & Learnings` empty (will be populated during development)
1305
+
1306
+ ### Step 3: Add to .gitignore
1307
+
1308
+ `.cm/CONTINUITY.md` is **LOCAL working memory** — do NOT commit:
1309
+
1310
+ ```gitignore
1311
+ # Working memory (local only)
1312
+ .cm/
1313
+ ```
1314
+
1315
+ ### Step 4: Add to AGENTS.md
1316
+
1317
+ Add this line to the AGENTS.md "Important Rules" section:
1318
+
1319
+ ```markdown
1320
+ - Read `.cm/CONTINUITY.md` at the start of every session for context
1321
+ ```
1322
+
1323
+ ### Why This Saves Tokens
1324
+
1325
+ Next session, AI reads ~200 tokens from CONTINUITY.md instead of
1326
+ re-scanning 50+ files (~15,000 tokens). **Savings: ~97% on context loading.**
1327
+
1328
+ ---
156
1329
 
157
1330
  ## Anti-Patterns ❌
158
1331
 
159
- | Anti-Pattern | Prevention |
160
- |-------------|------------|
161
- | Skip identity lock | Phase 0 is MANDATORY |
162
- | No staging branch | Always 2 branches |
163
- | i18n "later" | Phase 4 from day 1 |
164
- | Raw hex colors | Design tokens only |
165
- | No AGENTS.md | Phase 6 creates it |
166
- | deploy = production | deploy = staging default |
167
- | 600 i18n strings at once | MAX 30 per batch |
1332
+ | # | Anti-Pattern | Consequence | Prevention |
1333
+ |---|-------------|-------------|------------|
1334
+ | 1 | Skip identity lock | Deploy to wrong Cloudflare account | Phase 0 is MANDATORY |
1335
+ | 2 | No staging branch | Bugs hit production directly | Always 2 branches |
1336
+ | 3 | i18n "later" | Weeks of refactoring | Phase 4 from day 1 |
1337
+ | 4 | Raw hex colors | Inconsistent UI, broken dark mode | Design tokens only |
1338
+ | 5 | No AGENTS.md | AI agents make wrong assumptions | Phase 6 creates it |
1339
+ | 6 | deploy = production | Users see bugs | deploy = staging default |
1340
+ | 7 | Code before plan | Technical debt from start | cm-writing-plans first |
1341
+ | 8 | Skip test:gate | "Tests pass" but app broken | 8-gate pipeline |
1342
+ | 9 | 600 i18n strings at once | App crash | MAX 30 per batch |
1343
+ | 10 | No design tokens | Every component has different colors | Phase 3 foundation |
1344
+ | 11 | Force push to main | Lost commits, broken deploys | Never. Period. |
1345
+ | 12 | No PR template | Unverified code reaches production | Phase 6 creates it |
1346
+
1347
+ ---
1348
+
1349
+ ## Output Checklist ✅
1350
+
1351
+ After bootstrap, the project MUST have:
1352
+
1353
+ ```
1354
+ ✅ .project-identity.json — Identity locked
1355
+ ✅ ~/.cm-identity-history.json — Identity saved for future suggestions
1356
+ ✅ ~/.cm-design-profiles/{org}.json — Brand design system saved
1357
+ ✅ .gitleaks.toml — Secret scanning config (Phase 0.5)
1358
+ ✅ .git/hooks/pre-commit — Secret Shield pre-commit hook (Phase 0.5)
1359
+ ✅ .dev.vars.example — Secret template (Phase 0.5)
1360
+ ✅ AGENTS.md — AI collaboration manifest
1361
+ ✅ .github/pull_request_template.md — PR template
1362
+ ✅ .gitignore — Hardened ignores (secrets, keys, env files)
1363
+ ✅ package.json — With deploy:staging, deploy:production, test:gate, security:scan
1364
+ ✅ shadcn/ui initialized — (SPA/Fullstack) or design-tokens.css (Static)
1365
+ ✅ globals.css / style.css — Brand tokens + mobile-first base styles
1366
+ ✅ i18n/vi.json — Primary language file
1367
+ ✅ i18n/[lang].json — Target language files (empty structure)
1368
+ ✅ index.html — With SEO meta tags, semantic HTML
1369
+ ✅ tests/frontend-safety — Safety checks
1370
+ ✅ tests/i18n-sync — Key parity tests
1371
+ ✅ vitest.config.js — Test configuration
1372
+ ✅ main branch — Staging deploys
1373
+ ✅ production branch — Production deploys
1374
+ ✅ First commit — "chore: bootstrap with cm-project-bootstrap v2.0"
1375
+ ✅ .cm/CONTINUITY.md — Working memory for AI context persistence
1376
+ ```