howone 0.1.20 → 0.1.23

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 (298) hide show
  1. package/package.json +1 -1
  2. package/templates/nextjs/lib/sdk.ts +3 -0
  3. package/templates/vite/.howone/skills/hallmark/LICENSE +21 -0
  4. package/templates/vite/.howone/skills/hallmark/README.md +147 -0
  5. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +201 -0
  6. package/templates/vite/.howone/skills/hallmark/SKILL.md +551 -0
  7. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +186 -0
  8. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  9. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  10. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  11. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  12. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  13. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  14. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  15. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  16. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +176 -0
  17. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +364 -0
  18. package/templates/vite/.howone/skills/hallmark/package.json +36 -0
  19. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +412 -0
  20. package/templates/vite/.howone/skills/hallmark/references/assets.md +399 -0
  21. package/templates/vite/.howone/skills/hallmark/references/color.md +95 -0
  22. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +256 -0
  23. package/templates/vite/.howone/skills/hallmark/references/components/c1-outlined-chip.md +12 -0
  24. package/templates/vite/.howone/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -0
  25. package/templates/vite/.howone/skills/hallmark/references/components/c3-typographic-link.md +8 -0
  26. package/templates/vite/.howone/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -0
  27. package/templates/vite/.howone/skills/hallmark/references/components/f1-bento-grid.md +20 -0
  28. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -0
  29. package/templates/vite/.howone/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -0
  30. package/templates/vite/.howone/skills/hallmark/references/components/f4-step-sequence.md +11 -0
  31. package/templates/vite/.howone/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -0
  32. package/templates/vite/.howone/skills/hallmark/references/components/f6-product-card-grid.md +41 -0
  33. package/templates/vite/.howone/skills/hallmark/references/components/ft1-mast-headed.md +13 -0
  34. package/templates/vite/.howone/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -0
  35. package/templates/vite/.howone/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -0
  36. package/templates/vite/.howone/skills/hallmark/references/components/ft4-dense-typographic.md +10 -0
  37. package/templates/vite/.howone/skills/hallmark/references/components/ft5-statement.md +21 -0
  38. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +19 -0
  39. package/templates/vite/.howone/skills/hallmark/references/components/ft7-newsletter-first.md +27 -0
  40. package/templates/vite/.howone/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -0
  41. package/templates/vite/.howone/skills/hallmark/references/components/h1-marquee.md +15 -0
  42. package/templates/vite/.howone/skills/hallmark/references/components/h2-split-diptych.md +15 -0
  43. package/templates/vite/.howone/skills/hallmark/references/components/h3-quote-led.md +11 -0
  44. package/templates/vite/.howone/skills/hallmark/references/components/h4-stat-led.md +14 -0
  45. package/templates/vite/.howone/skills/hallmark/references/components/h5-letter-hero.md +11 -0
  46. package/templates/vite/.howone/skills/hallmark/references/components/h6-photographic-fold.md +16 -0
  47. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -0
  48. package/templates/vite/.howone/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -0
  49. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -0
  50. package/templates/vite/.howone/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -0
  51. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -0
  52. package/templates/vite/.howone/skills/hallmark/references/components/n2-floating-chip.md +14 -0
  53. package/templates/vite/.howone/skills/hallmark/references/components/n3-side-rail.md +14 -0
  54. package/templates/vite/.howone/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -0
  55. package/templates/vite/.howone/skills/hallmark/references/components/n5-floating-pill.md +28 -0
  56. package/templates/vite/.howone/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -0
  57. package/templates/vite/.howone/skills/hallmark/references/components/n7-brutal-slab.md +22 -0
  58. package/templates/vite/.howone/skills/hallmark/references/components/n8-terminal-command.md +21 -0
  59. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -0
  60. package/templates/vite/.howone/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -0
  61. package/templates/vite/.howone/skills/hallmark/references/components/s2-hanging.md +13 -0
  62. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +19 -0
  63. package/templates/vite/.howone/skills/hallmark/references/components/s4-inline-no-break.md +11 -0
  64. package/templates/vite/.howone/skills/hallmark/references/components/s5-bottom-anchored.md +13 -0
  65. package/templates/vite/.howone/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -0
  66. package/templates/vite/.howone/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -0
  67. package/templates/vite/.howone/skills/hallmark/references/components/t3-single-huge-quote.md +11 -0
  68. package/templates/vite/.howone/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -0
  69. package/templates/vite/.howone/skills/hallmark/references/contract.md +24 -0
  70. package/templates/vite/.howone/skills/hallmark/references/copy.md +182 -0
  71. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +626 -0
  72. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +329 -0
  73. package/templates/vite/.howone/skills/hallmark/references/design-md.md +116 -0
  74. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +328 -0
  75. package/templates/vite/.howone/skills/hallmark/references/floating-nav.md +89 -0
  76. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +65 -0
  77. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +70 -0
  78. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +67 -0
  79. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +65 -0
  80. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +474 -0
  81. package/templates/vite/.howone/skills/hallmark/references/imagery-kit.md +170 -0
  82. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +207 -0
  83. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +111 -0
  84. package/templates/vite/.howone/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -0
  85. package/templates/vite/.howone/skills/hallmark/references/macrostructures/02-long-document.md +34 -0
  86. package/templates/vite/.howone/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -0
  87. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +32 -0
  88. package/templates/vite/.howone/skills/hallmark/references/macrostructures/05-workbench.md +32 -0
  89. package/templates/vite/.howone/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -0
  90. package/templates/vite/.howone/skills/hallmark/references/macrostructures/07-manifesto.md +32 -0
  91. package/templates/vite/.howone/skills/hallmark/references/macrostructures/08-photographic.md +34 -0
  92. package/templates/vite/.howone/skills/hallmark/references/macrostructures/09-quote-led.md +32 -0
  93. package/templates/vite/.howone/skills/hallmark/references/macrostructures/10-specimen.md +32 -0
  94. package/templates/vite/.howone/skills/hallmark/references/macrostructures/11-catalogue.md +23 -0
  95. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +23 -0
  96. package/templates/vite/.howone/skills/hallmark/references/macrostructures/13-index-first.md +23 -0
  97. package/templates/vite/.howone/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -0
  98. package/templates/vite/.howone/skills/hallmark/references/macrostructures/15-split-studio.md +23 -0
  99. package/templates/vite/.howone/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
  100. package/templates/vite/.howone/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -0
  101. package/templates/vite/.howone/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -0
  102. package/templates/vite/.howone/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -0
  103. package/templates/vite/.howone/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -0
  104. package/templates/vite/.howone/skills/hallmark/references/macrostructures/21-component-playground.md +23 -0
  105. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +89 -0
  106. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +260 -0
  107. package/templates/vite/.howone/skills/hallmark/references/motion.md +109 -0
  108. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +49 -0
  109. package/templates/vite/.howone/skills/hallmark/references/responsive.md +138 -0
  110. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +205 -0
  111. package/templates/vite/.howone/skills/hallmark/references/structure.md +164 -0
  112. package/templates/vite/.howone/skills/hallmark/references/study.md +486 -0
  113. package/templates/vite/.howone/skills/hallmark/references/typography.md +243 -0
  114. package/templates/vite/.howone/skills/hallmark/references/verbs/audit.md +25 -0
  115. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +269 -0
  116. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +71 -0
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +64 -0
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +240 -0
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +65 -0
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +105 -0
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +250 -0
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +64 -0
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +131 -0
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +240 -0
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +67 -0
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +86 -0
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +262 -0
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +63 -0
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +167 -0
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +457 -0
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +65 -0
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +159 -0
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +288 -0
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +64 -0
  136. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +146 -0
  137. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +484 -0
  138. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +64 -0
  139. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +116 -0
  140. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +354 -0
  141. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +638 -0
  142. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +515 -0
  143. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +515 -0
  144. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +608 -0
  145. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +587 -0
  146. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +157 -0
  147. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  148. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  149. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  150. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  151. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  152. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  153. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  154. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  155. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  156. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  157. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  158. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  159. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  160. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  161. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  162. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  163. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  164. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  165. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  166. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  167. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  168. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  169. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  170. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +77 -0
  171. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +238 -0
  172. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +110 -0
  173. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +326 -0
  174. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +134 -0
  175. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +262 -0
  176. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +30 -0
  177. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +17 -0
  178. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +56 -0
  179. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +160 -0
  180. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +29 -0
  181. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +63 -0
  182. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +72 -0
  183. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +374 -0
  184. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +52 -0
  185. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +29 -0
  186. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +61 -0
  187. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +193 -0
  188. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +66 -0
  189. package/templates/vite/.howone/skills/hallmark/site/css/base.css +194 -0
  190. package/templates/vite/.howone/skills/hallmark/site/css/components.css +4886 -0
  191. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +2072 -0
  192. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +1129 -0
  193. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +475 -0
  194. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +1584 -0
  195. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +96 -0
  196. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +344 -0
  197. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +103 -0
  198. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +1103 -0
  199. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +83 -0
  200. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +368 -0
  201. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +133 -0
  202. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +1062 -0
  203. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +97 -0
  204. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +84 -0
  205. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +446 -0
  206. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +1087 -0
  207. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +101 -0
  208. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +359 -0
  209. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +1168 -0
  210. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +81 -0
  211. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +5 -0
  212. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +5 -0
  213. package/templates/vite/.howone/skills/hallmark/site/index.html +1043 -0
  214. package/templates/vite/.howone/skills/hallmark/site/js/main.js +1175 -0
  215. package/templates/vite/.howone/skills/hallmark/vercel.json +6 -0
  216. package/templates/vite/.howone/skills/howone-sdk/01-architect/01-app-generation.md +126 -0
  217. package/templates/vite/.howone/skills/howone-sdk/{references/08-manifest-codegen.md → 01-architect/02-manifest-codegen.md} +31 -19
  218. package/templates/vite/.howone/skills/howone-sdk/02-database/01-schema-design.md +147 -0
  219. package/templates/vite/.howone/skills/howone-sdk/02-database/02-schema-operations.md +96 -0
  220. package/templates/vite/.howone/skills/howone-sdk/02-database/03-data-access-patterns.md +172 -0
  221. package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/01-client-setup.md +3 -3
  222. package/templates/vite/.howone/skills/howone-sdk/{references/04-auth.md → 03-sdk/03-auth.md} +120 -3
  223. package/templates/vite/.howone/skills/howone-sdk/{references/06-react-integration.md → 03-sdk/04-react-integration.md} +2 -4
  224. package/templates/vite/.howone/skills/howone-sdk/{references/03-ai-actions.md → 03-sdk/07-ai-action-calls.md} +31 -34
  225. package/templates/vite/.howone/skills/howone-sdk/04-ai/.gitkeep +1 -0
  226. package/templates/vite/.howone/skills/howone-sdk/04-ai/01-ai-capability-architecture.md +142 -0
  227. package/templates/vite/.howone/skills/howone-sdk/04-ai/02-workflow-contract-rules.md +169 -0
  228. package/templates/vite/.howone/skills/howone-sdk/04-ai/03-ai-sdk-handoff.md +80 -0
  229. package/templates/vite/.howone/skills/howone-sdk/SKILL.md +118 -93
  230. package/templates/vite/.howone/skills/howone-sdk/agents/openai.yaml +3 -3
  231. package/templates/vite/.howone/skills/impeccable/SKILL.md +168 -0
  232. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
  233. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +190 -0
  234. package/templates/vite/.howone/skills/impeccable/reference/animate.md +175 -0
  235. package/templates/vite/.howone/skills/impeccable/reference/audit.md +133 -0
  236. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +113 -0
  237. package/templates/vite/.howone/skills/impeccable/reference/brand.md +118 -0
  238. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +174 -0
  239. package/templates/vite/.howone/skills/impeccable/reference/codex.md +105 -0
  240. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +106 -0
  241. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +105 -0
  242. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +154 -0
  243. package/templates/vite/.howone/skills/impeccable/reference/craft.md +123 -0
  244. package/templates/vite/.howone/skills/impeccable/reference/critique.md +273 -0
  245. package/templates/vite/.howone/skills/impeccable/reference/delight.md +302 -0
  246. package/templates/vite/.howone/skills/impeccable/reference/distill.md +111 -0
  247. package/templates/vite/.howone/skills/impeccable/reference/document.md +427 -0
  248. package/templates/vite/.howone/skills/impeccable/reference/extract.md +69 -0
  249. package/templates/vite/.howone/skills/impeccable/reference/harden.md +347 -0
  250. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +234 -0
  251. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +195 -0
  252. package/templates/vite/.howone/skills/impeccable/reference/layout.md +141 -0
  253. package/templates/vite/.howone/skills/impeccable/reference/live.md +622 -0
  254. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +109 -0
  255. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +234 -0
  256. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +258 -0
  257. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +130 -0
  258. package/templates/vite/.howone/skills/impeccable/reference/personas.md +179 -0
  259. package/templates/vite/.howone/skills/impeccable/reference/polish.md +242 -0
  260. package/templates/vite/.howone/skills/impeccable/reference/product.md +62 -0
  261. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +99 -0
  262. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +114 -0
  263. package/templates/vite/.howone/skills/impeccable/reference/shape.md +165 -0
  264. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +100 -0
  265. package/templates/vite/.howone/skills/impeccable/reference/teach.md +156 -0
  266. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +124 -0
  267. package/templates/vite/.howone/skills/impeccable/reference/typography.md +159 -0
  268. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +107 -0
  269. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
  270. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +94 -0
  271. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +242 -0
  272. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +820 -0
  273. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +198 -0
  274. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +21 -0
  275. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
  276. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +69 -0
  277. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +595 -0
  278. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +123 -0
  279. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +4860 -0
  280. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +75 -0
  281. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +18 -0
  282. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +446 -0
  283. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +200 -0
  284. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +48 -0
  285. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +838 -0
  286. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +254 -0
  287. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +47 -0
  288. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +632 -0
  289. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +247 -0
  290. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +141 -0
  291. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  292. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +214 -0
  293. package/templates/vite/AGENTS.md +2 -12
  294. package/templates/vite/package.json +1 -1
  295. package/templates/vite/src/lib/sdk.ts +3 -0
  296. /package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/02-entity-operations.md +0 -0
  297. /package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/05-file-upload.md +0 -0
  298. /package/templates/vite/.howone/skills/howone-sdk/{references/07-raw-http.md → 03-sdk/06-raw-http.md} +0 -0
@@ -0,0 +1,399 @@
1
+ # Assets — sourcing canon for icons, logos, illustrations, photography, video
2
+
3
+ This file is loaded when an enrichment archetype actually needs an external asset (load-on-demand). It catalogues the *3–5 canonical sources per category*, the licence terms, the import patterns, the rules for using them, and the sources to avoid.
4
+
5
+ **The reflex.** Before reaching here, ask two questions in order: (1) Does the brief actually need imagery at all? See [`hero-enrichment.md` § Image-need detection](hero-enrichment.md). (2) If yes, can it be hand-built? See [`custom-craft.md`](custom-craft.md). The assets in this file are for the moments when both answers send you here.
6
+
7
+ ---
8
+
9
+ ## Placeholder strategy
10
+
11
+ When imagery is needed *and* the user hasn't supplied real assets, pick from this canon — in order. Skipping tiers is the slop move.
12
+
13
+ | # | Source | When |
14
+ | --- | --- | --- |
15
+ | 1 | **Hallmark imagery kit** ([`imagery-kit.md`](imagery-kit.md)) | Brief allows non-photographic imagery: SaaS landings, manifestos, agency / studio splash, type-led portfolio, editorial-led marketing. **Always preferred** when the kit's register fits. |
16
+ | 2 | **Hand-built SVG composition** (Tier B from custom-craft.md) | Editorial-typographic brief where "imagery" can be a stamp / wordmark / colour-blocked composition. Use when the kit doesn't carry the register. |
17
+ | 3 | **Picsum** — `https://picsum.photos/seed/<seed>/<w>/<h>` | Generic photo slot, keyword anchoring not critical. Use a deterministic seed (brand-name + slot-name) so the same render produces the same image. |
18
+ | 4 | **Unsplash Source** — `https://source.unsplash.com/<w>x<h>/?<keywords>` | Keyword-anchored photo slot — food, travel, portrait, real product. Pass 1–2 specific keywords, never zero. |
19
+ | 5 | **Local `public/placeholder-<type>.{jpg,svg}`** | Self-contained projects with no third-party deps. Single neutral grey-block SVG checked into the repo. |
20
+
21
+ **Swappability — non-negotiable:**
22
+
23
+ - Every placeholder image carries an HTML comment immediately above it: `<!-- TODO: Replace with real <thing>, target size: <WxH> -->`.
24
+ - All placeholder URLs reference a single constant — a `--placeholder-base` CSS variable or `PLACEHOLDER_BASE` config constant. User edits one place to swap the entire site.
25
+ - Alt text describes the **intended** subject ("Hand-thrown ceramic mug, top-down on linen") not the placeholder ("Picsum image"). When the user swaps in the real photo, alt is already correct.
26
+
27
+ **Anti-patterns:**
28
+
29
+ - Never inline base64 placeholder images (bloats CSS).
30
+ - Never call random Unsplash without keywords (returns un-curated stock-photo-ish results).
31
+ - Never use kittens / lorempixel / "tiger.jpg" / cute-default services. The placeholder must read as an obvious slot, not as content.
32
+ - Never ship a kit image where the brief actually calls for a real product photo (e.g. abstract bottle for an actual coffee-shop hero). The kit is for atmosphere; photos are for subject.
33
+
34
+ ---
35
+
36
+ ## Icons
37
+
38
+ ### Canon
39
+
40
+ | Library | URL | Count | Best for |
41
+ | --- | --- | --- | --- |
42
+ | **[Lucide](https://lucide.dev)** | `lucide.dev` | 1,600+ | Modern SaaS / dev-tool default. The 2026 baseline. Active maintenance. |
43
+ | **[Phosphor Icons](https://phosphoricons.com)** | `phosphoricons.com` | 9,000+ across 6 weights (thin / light / regular / bold / fill / duotone) | Tonal variants without mixing sets. The right pick when you need different *weights* of the same icon for emphasis. |
44
+ | **[Heroicons](https://heroicons.com)** | `heroicons.com` | ~300 | Tailwind / shadcn projects. Tightly curated, opinionated. |
45
+ | **[Tabler Icons](https://tabler-icons.io)** | `tabler-icons.io` | 5,900+ on a 24×24 grid | Breadth — when neither Lucide nor Heroicons covers the symbol you need. |
46
+ | **[Iconoir](https://iconoir.com)** | `iconoir.com` | ~1,500 | Hand-drawn character with a generous free tier. |
47
+
48
+ ### The rules
49
+
50
+ 1. **Pick one library per project.** Mixing Material + Heroicons + Lucide on the same page is the icon-set tell. The skill's audit verb catches this.
51
+ 2. **Sizes 16 / 20 / 24 / 32 only.** Snap to grid. 18-px icons don't exist in this canon.
52
+ 3. **Stroke 2 px default** (most libraries' regular weight). Switch to bold (2.5 px) only for icons under 20 px or as emphasis.
53
+ 4. **Monochrome with `currentColor`.** Icons inherit text colour. Brand-coloured icons only on the singular primary CTA — not as decoration.
54
+ 5. **No emoji-as-icon.** Emoji break alignment, accessibility, and brand consistency. Use a real icon library.
55
+
56
+ ### Import patterns
57
+
58
+ ```jsx
59
+ // Lucide — React (most common)
60
+ import { ArrowRight, Check, X } from "lucide-react";
61
+ <ArrowRight size={20} strokeWidth={2} />
62
+
63
+ // Phosphor — React, with weight prop
64
+ import { ArrowRight } from "@phosphor-icons/react";
65
+ <ArrowRight size={20} weight="regular" />
66
+
67
+ // Heroicons — React or static HTML
68
+ import { ArrowRightIcon } from "@heroicons/react/24/outline";
69
+
70
+ // Tabler — vanilla HTML via CDN
71
+ <svg width="20" height="20"><use href="https://cdn.jsdelivr.net/npm/@tabler/icons@latest/icons/arrow-right.svg" /></svg>
72
+ ```
73
+
74
+ ### Avoid
75
+
76
+ - **Font Awesome free** — bloated, dated. The 2018-SaaS look; 600+ generic glyphs that all read as "I picked the icons before designing the page".
77
+ - **Material Icons in a non-Material project** — gives a Google look that doesn't match anything else.
78
+ - **Icon packs with inconsistent stroke widths** — pick a library whose icons share weight; eclectic mixes read as random.
79
+ - **Emoji as semantic icons** — colour, size, weight, alignment all uncontrolled.
80
+
81
+ ---
82
+
83
+ ## Brand / company logos
84
+
85
+ ### Canon
86
+
87
+ | Source | URL | Count | Best for |
88
+ | --- | --- | --- | --- |
89
+ | **[Simple Icons](https://simpleicons.org)** | `simpleicons.org` | 3,400+ | The industry standard. Monochrome SVG + official hex per brand. MIT licensed. The default for logo walls. |
90
+ | **[SVGL](https://svgl.app)** | `svgl.app` | 600+ | Curated, hand-picked, no spam. Higher quality bar than Simple Icons. |
91
+ | **[theSVG](https://thesvg.org)** | `thesvg.org` | 4,000+ with dark/light/mono/wordmark variants | npm + MCP server for AI. Superset over Simple Icons if your stack supports it. |
92
+ | **[Brandfetch](https://brandfetch.com)** | `brandfetch.com` | 22M+ brands | Paid API. Logo + colours + fonts + guardrails. Useful when building a CMS / form that asks "what's your domain?" and back-fills the brand. |
93
+ | **Official brand asset pages** | Per company | — | Always check first if accuracy matters. Most brands ship a media-kit page (e.g., `vercel.com/design`). |
94
+
95
+ ### The rules
96
+
97
+ 1. **Logo walls: monochrome only.** Use Simple Icons' default colour or the official monochrome variant. Mixed full-colour logos read as 2018-SaaS.
98
+ 2. **Height-aligned, not width-aligned.** Pick a baseline (typically 32–48 px height) and let the width float. Brand proportions matter; stretching is a tell.
99
+ 3. **2–3× height as gutter.** Logos need breathing room. A wall with 32-px logos wants 64–96-px gutters.
100
+ 4. **No hairline borders, no glow halos.** Just the marks on the page.
101
+
102
+ ### Import patterns
103
+
104
+ ```html
105
+ <!-- Simple Icons via CDN — easiest -->
106
+ <img src="https://cdn.simpleicons.org/github" alt="GitHub" height="32">
107
+ <img src="https://cdn.simpleicons.org/figma/aaaaaa" alt="Figma" height="32"> <!-- monochrome override -->
108
+
109
+ <!-- npm -->
110
+ <!-- npm install simple-icons -->
111
+ import { siGithub } from 'simple-icons/icons';
112
+ <svg viewBox="0 0 24 24"><path d={siGithub.path} fill="currentColor" /></svg>
113
+
114
+ <!-- SVGL via API -->
115
+ <img src="https://api.svgl.app/?slug=vercel" alt="Vercel">
116
+ ```
117
+
118
+ ### Avoid
119
+
120
+ - **Full-colour logo grids.** Visual chaos; reads as 2018.
121
+ - **Stretched / squished marks.** Always preserve aspect ratio.
122
+ - **Placeholder customer logos from template kits** ("ACME", "Initech", "Hooli"). Use real customer logos, or skip the wall entirely — fake social proof is worse than no social proof.
123
+ - **Mixing wordmarks with marks.** Pick a treatment (all-monogram or all-wordmark) for any single wall.
124
+
125
+ ---
126
+
127
+ ## Generated illustration (Tier C in the enrichment hierarchy)
128
+
129
+ When characters or specific scenes can't be hand-built economically. **Always post-process.** See [`custom-craft.md`](custom-craft.md) Tier E for full discipline.
130
+
131
+ ### Canon
132
+
133
+ | Model | URL | Cost | Best for | Output |
134
+ | --- | --- | --- | --- | --- |
135
+ | **[Nanobanana 2 / Gemini 2.5 Flash Image](https://ai.google.dev/gemini-api/docs/image-generation)** | Google AI | $0.039 / image | Character consistency across panels, fast iteration, brand-style adherence via reference images, infographics with text | PNG (transparent supported) |
136
+ | **[Recraft V4](https://www.recraft.ai/)** | recraft.ai | ~$0.04 / image | **The only model with production-grade SVG output.** Logos, icons, illustrations that need to scale. | SVG + PNG |
137
+ | **[Midjourney v8](https://www.midjourney.com)** | midjourney.com | ~$0.14 / image | Aesthetic beauty, atmospheric stills, artistic direction | PNG |
138
+ | **[Flux 2](https://blackforestlabs.ai/)** | blackforestlabs.ai | ~$0.03 / image | Photorealism — skin, fabric, product detail, hands | PNG |
139
+
140
+ ### The rules
141
+
142
+ 1. **Always post-process.** Add grain, asymmetric crop, hand-drawn overlays, colour grading. Raw model output reads as AI 100 % of the time.
143
+ 2. **Use reference images** for brand consistency. Nanobanana 2's character-consistency feature is its differentiator vs. Midjourney; feed it your brand assets so generations stay on-style.
144
+ 3. **Stamp the model in the macrostructure comment** (`generated: nanobanana-2 · post-processed`). Provenance matters.
145
+ 4. **Verify SynthID watermark** is present on Google-generated images.
146
+ 5. **No animation.** None of these models output multi-frame; assemble via custom-craft if motion is needed.
147
+
148
+ ### Avoid
149
+
150
+ - **Symmetrical compositions** — algorithmic; the AI tell. Always crop asymmetrically.
151
+ - **Smooth-mesh-blob faces** — the 2024 generic AI character look.
152
+ - **Default lighting + blue-tinted backgrounds** — the generic AI aesthetic. Specify brand-anchored colour and unusual lighting in the prompt.
153
+ - **Six fingers / doubled furniture / impossible rooms** — less common in 2026 but still lurking. Inspect.
154
+ - **Shipping unmodified output** — see rule 1.
155
+
156
+ ### Prompting recipe (Nanobanana 2)
157
+
158
+ ```
159
+ Subject: <one specific concrete subject> in <one specific concrete pose>.
160
+ Style: <named style — "risograph print", "1960s editorial illustration",
161
+ "ink-on-paper line drawing", NOT "modern flat" or "clean illustration">.
162
+ Composition: asymmetric, <off-centre subject>, <unusual crop>.
163
+ Lighting: <named lighting — "side-lit, late afternoon", "overcast diffuse">.
164
+ Reference: <attach brand asset / mood board for character consistency>.
165
+ Constraints: no smooth mesh-gradient, no aurora background, no symmetric layout,
166
+ no smiling people-on-laptops poses.
167
+ ```
168
+
169
+ A specific prompt produces a specific image. A generic prompt produces the AI tell.
170
+
171
+ ---
172
+
173
+ ## Library illustrations (Tier D — not first choice)
174
+
175
+ When budget and timeline force a shortcut and even Tier C is overkill.
176
+
177
+ ### Canon
178
+
179
+ | Source | URL | Licence | Best for |
180
+ | --- | --- | --- | --- |
181
+ | **[Storyset](https://storyset.com)** | storyset.com (Freepik) | Free with attribution; paid removes | Animated SVG illustrations with toggleable element animation and on-site colour customisation. Onboarding flows, feature explanations. |
182
+ | **[Humaaans](https://www.humaaans.com)** | humaaans.com (Pablo Stanley) | CC0 | Mix-and-match characters with diverse poses / outfits / skin tones. Hero sections that need humans without stock-photo territory. |
183
+ | **[unDraw](https://undraw.co)** | undraw.co | MIT | Open SVG illustrations with on-export colour swap. Still respected if customised — saturated and instantly recognisable if not. |
184
+ | **[IRA Design](https://www.iradesign.io)** | iradesign.io (Creative Tim) | Free / paid | Moody, sophisticated, isometric scenes for B2B / enterprise. |
185
+ | **[Open Peeps](https://www.openpeeps.com)** | openpeeps.com | CC0 | Hand-drawn character library, naive style. Sits between photography and illustration. |
186
+
187
+ ### The rules
188
+
189
+ 1. **Always customise colour to your brand anchor hue.** The library default colour is the library look. Swap it.
190
+ 2. **Crop or recompose** if you can. The unmodified illustration is on a hundred competitor sites; even a crop change differentiates.
191
+ 3. **One library per project.** Mixing Storyset + Humaaans + unDraw = visual chaos. Pick one, stick to it.
192
+ 4. **Avoid the giveaway poses** — guy on laptop with floating speech bubble, woman in headset on cloud, character holding giant phone. Whatever you saw on Dribbble in 2021, audiences saw too.
193
+ 5. **Commission custom for >3 uses.** If the illustration appears in the hero, a feature block, AND promotional material, the per-piece commission cost ($200–$600 freelancer, $399–$999/month subscription for unlimited) wins on brand consistency over libraries.
194
+
195
+ ### Avoid
196
+
197
+ - **Open Doodles** — dated. The 2019 hand-drawn aesthetic that's been displaced by 2026's tactile rebellion.
198
+ - **"Modern flat" generic poses** — that whole aesthetic is the AI training-distribution default.
199
+ - **AI-generated illustrations** put through library filters — the worst of both worlds.
200
+ - **Stock photography with character cutouts pasted on top** — fights physics, looks haunted.
201
+
202
+ ---
203
+
204
+ ## App mockups / device frames
205
+
206
+ ### Canon
207
+
208
+ | Source | URL | Best for |
209
+ | --- | --- | --- |
210
+ | **[Browserframe](https://browserframe.com)** | browserframe.com | Browser + mobile device frames with annotation. Built for SaaS demo screenshots. |
211
+ | **[Ray.so](https://ray.so)** | ray.so | Code snippets in macOS window frames. Perfect for developer-tool landing pages. |
212
+ | **[Cleanmock](https://cleanmock.com)** | cleanmock.com | Mobile device frames; minimalist; good for app-store-listing-style heroes. |
213
+ | **[Mockup.style](https://mockup.style)** | mockup.style | Versatile device + browser builder, Figma-friendly export. |
214
+ | **[Device Shots](https://deviceshots.com)** | deviceshots.com | Free device generator with multiple frame styles, fast turnaround. |
215
+
216
+ ### The rules
217
+
218
+ 1. **Browser frame for SaaS / web apps.** Communicates "this is real, on the web". Use Browserframe or hand-build (a 1-px hairline + three macOS dots is enough).
219
+ 2. **Floating-no-frame for clean splits.** When the screenshot is beautiful enough to stand naked. Demands a high-quality screenshot.
220
+ 3. **Device frame (iPhone / iPad) sparingly.** One hero mockup max — beyond that it reads as generic template work.
221
+ 4. **Tilt 1–3°.** Adds life. 0° reads as flat; 5°+ reads as drunk.
222
+ 5. **Numbered-pin annotations only.** Numbered circles (1, 2, 3) with a corresponding callout legend below. No arrow-and-label callouts (dated 2018 UX). Label only the *novel* features, not the obvious.
223
+
224
+ ### Avoid
225
+
226
+ - **Glossy plastic device bezels** — looks 2015. Use minimalist frames or no frame.
227
+ - **Annotation chaos** — more pins than pixels. Three numbered pins is a lot; five is too many.
228
+ - **Stretched aspect ratios** — never resize a mockup beyond its natural ratio.
229
+ - **Visible Figma prototyping artifacts** in the screenshot (ghost-out frames, "hover" indicators). Clean the export.
230
+
231
+ ---
232
+
233
+ ## Hero / demo video
234
+
235
+ ### Canon (when you don't have your own footage)
236
+
237
+ | Source | URL | Licence | Best for |
238
+ | --- | --- | --- | --- |
239
+ | **[Mixkit](https://mixkit.co)** | mixkit.co (Envato) | No registration, no attribution required, 1080p+ HD | The quality-to-effort sweet spot. |
240
+ | **[Coverr](https://coverr.co)** | coverr.co | Free commercial use | Optimised for hero-section backgrounds and ambient loops. |
241
+ | **[Pexels Videos](https://www.pexels.com/videos/)** | pexels.com/videos | CC0 | Largest free library; 4K available. Volume play. |
242
+ | **[Videvo](https://www.videvo.net)** | videvo.net | Tiered (free + pro) | Community footage + motion graphics. |
243
+
244
+ ### The rules
245
+
246
+ 1. **Codec chain in the `<source>` order: AV1 → WebM VP9 → MP4 H.264.** Browsers pick the first they support. AV1 is 30–50 % smaller than H.264 at equivalent quality; H.264 is the universal fallback.
247
+ 2. **Always autoplay-muted-loop-playsinline.**
248
+ ```html
249
+ <video autoplay muted loop playsinline preload="metadata"
250
+ poster="/hero-poster.webp" fetchpriority="high">
251
+ <source src="/hero.av1.mp4" type='video/mp4; codecs="av01.0.05M.08"'>
252
+ <source src="/hero.vp9.webm" type="video/webm">
253
+ <source src="/hero.h264.mp4" type="video/mp4">
254
+ </video>
255
+ ```
256
+ 3. **Always include a `poster=""`** — prevents layout shift, gives reduced-motion users a static fallback.
257
+ 4. **`fetchpriority="high"` on the LCP element.** **Never `loading="lazy"`** on the hero — that kills LCP.
258
+ 5. **VTT captions for accessibility.** Even on muted demo loops; people may unmute.
259
+ 6. **No sound on autoplay.** Browsers block it anyway, but the principle is firm.
260
+
261
+ ### Compression
262
+
263
+ - **[ffmpeg](https://ffmpeg.org)** for control:
264
+ - VP9: `ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -c:a libopus -b:a 128k output.webm`
265
+ - AV1: `ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -c:a aac output.mp4`
266
+ - H.264: `ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 23 -c:a aac output.mp4`
267
+ - **[HandBrake](https://handbrake.fr)** for GUI / batch: start with the "Vimeo YouTube HQ 1080p" preset, drop bitrate to 3–4 Mbps for web.
268
+
269
+ ### Avoid
270
+
271
+ - **Watermarked stock** — visible "Pexels.com" stamps in the corner.
272
+ - **30 fps labelled as 60 fps** — reveals itself on modern displays.
273
+ - **Music-heavy demos without a mute toggle** — alienates accessibility users and noisy environments.
274
+ - **`loading="lazy"` on hero video** — kills LCP, tanks Core Web Vitals.
275
+
276
+ ---
277
+
278
+ ## Photography
279
+
280
+ ### Canon
281
+
282
+ | Source | URL | Licence | Best for |
283
+ | --- | --- | --- | --- |
284
+ | **[Unsplash](https://unsplash.com)** | unsplash.com | CC0 | Largest free collection, moody / cinematic, weekly community uploads. The starting point. |
285
+ | **[Pexels](https://www.pexels.com)** | pexels.com | CC0 | 3.5M+ free photos, diverse photographers. |
286
+ | **[Nappy.co](https://www.nappy.co)** | nappy.co | Free + paid | Curated for diversity and representation. Premium visual direction. |
287
+ | **[Shotstash](https://www.shotstash.com)** | shotstash.com | Free | Lifestyle / minimal aesthetic. Smaller but carefully curated. |
288
+ | **[Open Peeps](https://www.openpeeps.com)** | openpeeps.com | CC0 | Illustrated character library when you want diversity without the photo-stock look. |
289
+
290
+ ### The rules
291
+
292
+ 1. **Always tweak the source.** Gradient overlay, crop, desaturation, blur, or brand-colour wash. The unmodified Unsplash photo is on a hundred competitor sites; even a crop change differentiates.
293
+ 2. **Match tone to brief.** Enterprise / B2B: neutral palettes, natural lighting, real workspaces. Consumer / lifestyle: warm lighting, human emotion. Tech / startup: minimal backgrounds, hands-on interaction.
294
+ 3. **Diverse representation.** Nappy.co is the best free source for intentional curation; Unsplash and Pexels carry diversity but require search effort.
295
+ 4. **Aspect ratios that fit.** Hero photography typically wants 16/9 desktop, 4/3 or 9/16 mobile.
296
+
297
+ ### Avoid
298
+
299
+ - **Photos with visible logos / trademarks** — copyright risk.
300
+ - **Over-processed HDR** — looks dated, unrealistic.
301
+ - **Staged "team photo" shots** — generic, reads as stock.
302
+ - **Unmodified Unsplash** — a hundred competitor sites used the same photo this week.
303
+
304
+ ---
305
+
306
+ ## Abstract backgrounds
307
+
308
+ ### Canon
309
+
310
+ | Source | URL | Output | Best for |
311
+ | --- | --- | --- | --- |
312
+ | **CSS gradients (native)** | n/a — write them | Zero bytes, GPU-composited | The default. Linear or radial; 2–3 colour stops max. |
313
+ | **[Mesh Gradient Generator](https://www.learnui.design/tools/mesh-gradient-generator.html)** | learnui.design tools | Figma / SVG export | Apple-style mesh gradients; export carries organic noise. |
314
+ | **[fffuel.co](https://www.fffuel.co/)** | fffuel.co | SVG | `gggrain` for grain noise; `ffflux` for fluid gradients; `uuunion` for wavy meshes. Composable. |
315
+ | **[CSS Gradient](https://cssgradient.io)** | cssgradient.io | CSS strings | Quick gradient picker; copy-paste ready. |
316
+
317
+ ### The rules
318
+
319
+ 1. **CSS gradients first.** Zero bytes; scale infinitely; animate smoothly with `@property`. If a CSS gradient does the job, never reach for SVG or images.
320
+ 2. **Two to three colour stops.** More than three reads as generated. Pick stops that share hue and step in lightness.
321
+ 3. **Grain via SVG `<feTurbulence>`** at < 0.1 opacity, `mix-blend-mode: multiply`. Cheap, no asset, looks like paper.
322
+ 4. **Hero or accent card only — never page-wide.** A 100-vh gradient is a tell; a 40-vh hero gradient with the rest of the page on flat paper is intentional.
323
+ 5. **No animation on whole-page gradients.** A subtle 30-s drift on a hero accent is allowed; a slowly-rotating mesh-gradient on the entire page is the new aurora-blob anti-pattern.
324
+
325
+ ### Recipe (CSS gradient + SVG grain)
326
+
327
+ ```css
328
+ .hero {
329
+ background:
330
+ linear-gradient(135deg,
331
+ color-mix(in oklch, var(--color-paper) 100%, var(--color-accent) 4%),
332
+ color-mix(in oklch, var(--color-paper) 100%, var(--color-paper-2) 50%));
333
+ position: relative;
334
+ }
335
+
336
+ .hero::after {
337
+ content: "";
338
+ position: absolute; inset: 0;
339
+ background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
340
+ opacity: 0.06;
341
+ mix-blend-mode: multiply;
342
+ pointer-events: none;
343
+ }
344
+ ```
345
+
346
+ ### Avoid
347
+
348
+ - **Aurora blobs** — the 2022 Dribbble look. Critical anti-pattern.
349
+ - **Purple-to-cyan mesh** — the 2023 default. Critical anti-pattern.
350
+ - **Floating orbs / spheres** — generic 3D ambient. Critical anti-pattern.
351
+ - **Particle / starfield** — 2010s nostalgia, distracting.
352
+ - **Animated mesh-gradient on the whole page** — modern equivalent of the rotating gradient banner.
353
+
354
+ ---
355
+
356
+ ## Lottie / Rive (Tier F — last resort)
357
+
358
+ ### Canon
359
+
360
+ | Source | URL | Best for |
361
+ | --- | --- | --- |
362
+ | **[LottieFiles](https://lottiefiles.com)** | lottiefiles.com | The Lottie ecosystem. Free + pro tiers; npm + CDN; Figma plugin; AI creator. |
363
+ | **[Rive](https://rive.app)** | rive.app | Interactive real-time animations with state machines. Native runtime; better for app UI micro-interactions than Lottie. |
364
+
365
+ ### The rules
366
+
367
+ 1. **Lottie is last resort.** Reach for it only when complex character motion can't be hand-built. See [`custom-craft.md`](custom-craft.md) Tier F.
368
+ 2. **Custom-commissioned over library pulls.** A LottieFiles community animation that fits your brand exists; one that fits *and* doesn't look like every other LottieFiles community animation is rare. Commission ($100–$300 on Upwork; $1,000+ from a studio) for hero work.
369
+ 3. **< 2 MB file size.** Anything heavier loses to its own loading state.
370
+ 4. **Pause / resume support.** Required for accessibility (motion-sensitive users need control).
371
+ 5. **Reduced-motion fallback** to a static keyframe. Required.
372
+ 6. **Don't use Lottie for what CSS can do.** Spinning logos, checkmark draws, loading spinners, hover micro-interactions — all CSS territory. The skill catches the "Lottie shortcut" anti-pattern in its slop test.
373
+
374
+ ### Avoid
375
+
376
+ - **2019-era over-smooth animations.** Looks dated, lacks character.
377
+ - **Animations heavier than the page itself** — 5 MB Lottie files for a 200 KB page.
378
+ - **Animations without pause / resume** — accessibility fail.
379
+ - **LottieFiles community pulls used unmodified** — reads as "I picked this from a library".
380
+
381
+ ---
382
+
383
+ ## Quick-reference: which source for which job
384
+
385
+ | Need | First reach | Second reach |
386
+ | --- | --- | --- |
387
+ | UI icon (chevron, check, X) | Lucide | Phosphor / Heroicons |
388
+ | Brand logo for a wall | Simple Icons | SVGL / theSVG |
389
+ | A hero illustration the brand owns | Hand-build (Tier A or B) | Commission custom |
390
+ | A hero illustration that's character-driven | Nanobanana 2 (Tier C) | Commission, then library |
391
+ | An SVG-format illustration that needs to scale | Recraft V4 | Hand-build in Figma → SVG |
392
+ | A photograph with diversity | Nappy.co | Unsplash with manual tone-tweak |
393
+ | A demo video of your product | Custom screen recording | (skip; no stock fits) |
394
+ | A textured background | CSS gradient + SVG grain | Mesh Gradient Generator |
395
+ | A character animation | Custom Lottie commission | LottieFiles community + customise |
396
+ | A loading spinner | CSS conic-gradient | (don't reach for Lottie) |
397
+ | A checkmark draw on confirm | SVG `stroke-dasharray` | (don't reach for Lottie) |
398
+
399
+ When in doubt: build it. The path of least resistance and the path of least-AI-tell are the same path in 2026.
@@ -0,0 +1,95 @@
1
+ # Colour
2
+
3
+ Most AI-generated UI fails on colour. It picks blue. It uses pure black. It draws a gradient from purple to cyan. It leaves accents on 30% of the page. Fix all of this.
4
+
5
+ ## Principles
6
+
7
+ - **OKLCH only.** Perceptually uniform; predictable lightness; consistent hue across tints. `hsl()` and `rgb()` lie about brightness.
8
+ - **One accent.** Maximum two. Everything else is neutral. The accent should occupy **3% or less** of any given viewport.
9
+ - **No pure extremes.** No `#000`, no `#fff`. Always tint with a trace of chroma toward the palette's anchor hue.
10
+ - **Tint the greys.** If your anchor hue is orange, your neutrals lean warm. If it's blue, they lean cool. A page with a warm accent and cool grey body copy looks wrong and most people can't name why.
11
+
12
+ ## Palette construction
13
+
14
+ A complete Hallmark palette has four layers.
15
+
16
+ 1. **Paper** — the base surface. `oklch(96–98% 0.005–0.015 <anchor hue>)` for light mode, `oklch(12–16% 0.008–0.015 <anchor hue>)` for dark.
17
+ 2. **Ink** — the primary text. `oklch(16–22% 0.005–0.015 <anchor hue>)` for light mode, `oklch(92–96% 0.005–0.01 <anchor hue>)` for dark.
18
+ 3. **Neutrals** — 5 to 9 steps between Paper and Ink, each with the anchor's chroma tint at low values (0.005–0.015).
19
+ 4. **Accent** — one saturated colour with meaningful chroma (0.12–0.22). Used for links, active states, highlights, focus rings. Never as a background fill that covers more than a few percent of the surface.
20
+
21
+ Example (warm-oat anchor, hue 80):
22
+
23
+ ```css
24
+ :root {
25
+ --color-paper: oklch(96% 0.012 80);
26
+ --color-paper-2: oklch(93% 0.014 80);
27
+ --color-rule: oklch(82% 0.010 80);
28
+ --color-neutral: oklch(56% 0.008 80);
29
+ --color-muted: oklch(40% 0.008 70);
30
+ --color-ink: oklch(18% 0.010 60);
31
+ --color-accent: #FC4C02; /* signal orange */
32
+ --color-focus: oklch(55% 0.19 55);
33
+ }
34
+ ```
35
+
36
+ Example (midnight anchor, hue 40):
37
+
38
+ ```css
39
+ :root {
40
+ --color-paper: oklch(14% 0.008 40);
41
+ --color-paper-2: oklch(18% 0.010 40);
42
+ --color-rule: oklch(30% 0.008 40);
43
+ --color-neutral: oklch(58% 0.008 40);
44
+ --color-muted: oklch(72% 0.006 40);
45
+ --color-ink: oklch(94% 0.006 80);
46
+ --color-accent: #FC4C02;
47
+ --color-focus: oklch(70% 0.19 55);
48
+ }
49
+ ```
50
+
51
+ ## Contrast
52
+
53
+ Use the APCA contrast check when you can; otherwise WCAG 2.1 ratios.
54
+
55
+ | Content | Minimum | Target |
56
+ | --- | --- | --- |
57
+ | Body text | 4.5:1 | 7:1 |
58
+ | Large text (≥ 18.66px bold or 24px) | 3:1 | 4.5:1 |
59
+ | UI component boundaries | 3:1 | 4.5:1 |
60
+ | Placeholder / helper text | 4.5:1 | 4.5:1 |
61
+
62
+ Verify with the browser devtools vision-deficiency emulator before shipping.
63
+
64
+ ## Dark mode recipe
65
+
66
+ - Paper: lightness 12–18% (not `#000`).
67
+ - Ink: lightness 92–96% (not `#fff`).
68
+ - Body font-weight: reduce by 50 units (400 → 350) to compensate for the optical weight of light text on dark.
69
+ - Accent: reduce chroma by 0.02–0.04; increase lightness by 5–10%.
70
+ - Elevation: higher surfaces are *lighter*, not darker. Add ~3% lightness per level.
71
+ - Never switch the hue between modes. Keep the anchor. Only lightness and chroma move.
72
+
73
+ ## Bans
74
+
75
+ - **Pure `#000000`** anywhere. Use `oklch(16% 0.01 <hue>)` or similar.
76
+ - **Pure `#ffffff`** as a base surface. Use a tinted paper.
77
+ - **Flat grey** (`oklch(L 0 H)` with zero chroma). Add at least 0.005.
78
+ - **Purple-to-cyan gradients, purple-to-blue gradients, orange-to-pink gradients.** Every LLM picks these. Don't.
79
+ - **Accent as background fill** covering more than ~5% of any view.
80
+ - **Grey text on coloured background.** Always reads washed out.
81
+ - **Red–green pairing as the only signal.** Add an icon or pattern.
82
+ - **Alpha transparency as the definition of a colour.** If it's a named token, it's opaque. Transparency is a *modifier* for overlays and shadows, not a palette.
83
+ - **Three-colour gradients.** Two-stop gradients only. The third stop is vanity.
84
+
85
+ ## Use of the accent
86
+
87
+ The accent is a highlighter, not a colour block. Reach for it to:
88
+
89
+ - Mark an active nav item.
90
+ - Draw a focus ring.
91
+ - Underline a link on hover.
92
+ - Indicate a primary CTA's border or text.
93
+ - Place a small square beside a heading as a visual anchor.
94
+
95
+ Do not fill giant buttons with it. Do not set whole sections on it. Do not use it for decorative gradients. If you feel the urge to use more, that's the slop defaulting. Use less.