howone 0.1.19 → 0.1.22

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 (293) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/hallmark/LICENSE +21 -0
  3. package/templates/vite/.howone/skills/hallmark/README.md +147 -0
  4. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +201 -0
  5. package/templates/vite/.howone/skills/hallmark/SKILL.md +551 -0
  6. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +186 -0
  7. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  8. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  9. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  10. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  11. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  12. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  13. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  14. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  15. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +176 -0
  16. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +364 -0
  17. package/templates/vite/.howone/skills/hallmark/package.json +36 -0
  18. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +412 -0
  19. package/templates/vite/.howone/skills/hallmark/references/assets.md +399 -0
  20. package/templates/vite/.howone/skills/hallmark/references/color.md +95 -0
  21. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +256 -0
  22. package/templates/vite/.howone/skills/hallmark/references/components/c1-outlined-chip.md +12 -0
  23. package/templates/vite/.howone/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -0
  24. package/templates/vite/.howone/skills/hallmark/references/components/c3-typographic-link.md +8 -0
  25. package/templates/vite/.howone/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -0
  26. package/templates/vite/.howone/skills/hallmark/references/components/f1-bento-grid.md +20 -0
  27. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -0
  28. package/templates/vite/.howone/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -0
  29. package/templates/vite/.howone/skills/hallmark/references/components/f4-step-sequence.md +11 -0
  30. package/templates/vite/.howone/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -0
  31. package/templates/vite/.howone/skills/hallmark/references/components/f6-product-card-grid.md +41 -0
  32. package/templates/vite/.howone/skills/hallmark/references/components/ft1-mast-headed.md +13 -0
  33. package/templates/vite/.howone/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -0
  34. package/templates/vite/.howone/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -0
  35. package/templates/vite/.howone/skills/hallmark/references/components/ft4-dense-typographic.md +10 -0
  36. package/templates/vite/.howone/skills/hallmark/references/components/ft5-statement.md +21 -0
  37. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +19 -0
  38. package/templates/vite/.howone/skills/hallmark/references/components/ft7-newsletter-first.md +27 -0
  39. package/templates/vite/.howone/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -0
  40. package/templates/vite/.howone/skills/hallmark/references/components/h1-marquee.md +15 -0
  41. package/templates/vite/.howone/skills/hallmark/references/components/h2-split-diptych.md +15 -0
  42. package/templates/vite/.howone/skills/hallmark/references/components/h3-quote-led.md +11 -0
  43. package/templates/vite/.howone/skills/hallmark/references/components/h4-stat-led.md +14 -0
  44. package/templates/vite/.howone/skills/hallmark/references/components/h5-letter-hero.md +11 -0
  45. package/templates/vite/.howone/skills/hallmark/references/components/h6-photographic-fold.md +16 -0
  46. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -0
  47. package/templates/vite/.howone/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -0
  48. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -0
  49. package/templates/vite/.howone/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -0
  50. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -0
  51. package/templates/vite/.howone/skills/hallmark/references/components/n2-floating-chip.md +14 -0
  52. package/templates/vite/.howone/skills/hallmark/references/components/n3-side-rail.md +14 -0
  53. package/templates/vite/.howone/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -0
  54. package/templates/vite/.howone/skills/hallmark/references/components/n5-floating-pill.md +28 -0
  55. package/templates/vite/.howone/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -0
  56. package/templates/vite/.howone/skills/hallmark/references/components/n7-brutal-slab.md +22 -0
  57. package/templates/vite/.howone/skills/hallmark/references/components/n8-terminal-command.md +21 -0
  58. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -0
  59. package/templates/vite/.howone/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -0
  60. package/templates/vite/.howone/skills/hallmark/references/components/s2-hanging.md +13 -0
  61. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +19 -0
  62. package/templates/vite/.howone/skills/hallmark/references/components/s4-inline-no-break.md +11 -0
  63. package/templates/vite/.howone/skills/hallmark/references/components/s5-bottom-anchored.md +13 -0
  64. package/templates/vite/.howone/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -0
  65. package/templates/vite/.howone/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -0
  66. package/templates/vite/.howone/skills/hallmark/references/components/t3-single-huge-quote.md +11 -0
  67. package/templates/vite/.howone/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -0
  68. package/templates/vite/.howone/skills/hallmark/references/contract.md +24 -0
  69. package/templates/vite/.howone/skills/hallmark/references/copy.md +182 -0
  70. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +626 -0
  71. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +329 -0
  72. package/templates/vite/.howone/skills/hallmark/references/design-md.md +116 -0
  73. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +328 -0
  74. package/templates/vite/.howone/skills/hallmark/references/floating-nav.md +89 -0
  75. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +65 -0
  76. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +70 -0
  77. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +67 -0
  78. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +65 -0
  79. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +474 -0
  80. package/templates/vite/.howone/skills/hallmark/references/imagery-kit.md +170 -0
  81. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +207 -0
  82. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +111 -0
  83. package/templates/vite/.howone/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -0
  84. package/templates/vite/.howone/skills/hallmark/references/macrostructures/02-long-document.md +34 -0
  85. package/templates/vite/.howone/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -0
  86. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +32 -0
  87. package/templates/vite/.howone/skills/hallmark/references/macrostructures/05-workbench.md +32 -0
  88. package/templates/vite/.howone/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -0
  89. package/templates/vite/.howone/skills/hallmark/references/macrostructures/07-manifesto.md +32 -0
  90. package/templates/vite/.howone/skills/hallmark/references/macrostructures/08-photographic.md +34 -0
  91. package/templates/vite/.howone/skills/hallmark/references/macrostructures/09-quote-led.md +32 -0
  92. package/templates/vite/.howone/skills/hallmark/references/macrostructures/10-specimen.md +32 -0
  93. package/templates/vite/.howone/skills/hallmark/references/macrostructures/11-catalogue.md +23 -0
  94. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +23 -0
  95. package/templates/vite/.howone/skills/hallmark/references/macrostructures/13-index-first.md +23 -0
  96. package/templates/vite/.howone/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -0
  97. package/templates/vite/.howone/skills/hallmark/references/macrostructures/15-split-studio.md +23 -0
  98. package/templates/vite/.howone/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
  99. package/templates/vite/.howone/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -0
  100. package/templates/vite/.howone/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -0
  101. package/templates/vite/.howone/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -0
  102. package/templates/vite/.howone/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -0
  103. package/templates/vite/.howone/skills/hallmark/references/macrostructures/21-component-playground.md +23 -0
  104. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +89 -0
  105. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +260 -0
  106. package/templates/vite/.howone/skills/hallmark/references/motion.md +109 -0
  107. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +49 -0
  108. package/templates/vite/.howone/skills/hallmark/references/responsive.md +138 -0
  109. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +205 -0
  110. package/templates/vite/.howone/skills/hallmark/references/structure.md +164 -0
  111. package/templates/vite/.howone/skills/hallmark/references/study.md +486 -0
  112. package/templates/vite/.howone/skills/hallmark/references/typography.md +243 -0
  113. package/templates/vite/.howone/skills/hallmark/references/verbs/audit.md +25 -0
  114. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +269 -0
  115. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +71 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +64 -0
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +240 -0
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +65 -0
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +105 -0
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +250 -0
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +64 -0
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +131 -0
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +240 -0
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +67 -0
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +86 -0
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +262 -0
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +63 -0
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +167 -0
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +457 -0
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +65 -0
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +159 -0
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +288 -0
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +64 -0
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +146 -0
  136. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +484 -0
  137. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +64 -0
  138. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +116 -0
  139. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +354 -0
  140. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +638 -0
  141. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +515 -0
  142. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +515 -0
  143. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +608 -0
  144. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +587 -0
  145. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +157 -0
  146. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  147. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  148. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  149. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  150. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  151. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  152. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  153. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  154. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  155. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  156. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  157. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  158. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  159. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  160. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  161. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  162. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  163. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  164. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  165. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  166. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  167. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  168. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  169. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +77 -0
  170. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +238 -0
  171. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +110 -0
  172. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +326 -0
  173. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +134 -0
  174. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +262 -0
  175. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +30 -0
  176. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +17 -0
  177. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +56 -0
  178. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +160 -0
  179. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +29 -0
  180. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +63 -0
  181. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +72 -0
  182. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +374 -0
  183. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +52 -0
  184. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +29 -0
  185. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +61 -0
  186. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +193 -0
  187. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +66 -0
  188. package/templates/vite/.howone/skills/hallmark/site/css/base.css +194 -0
  189. package/templates/vite/.howone/skills/hallmark/site/css/components.css +4886 -0
  190. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +2072 -0
  191. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +1129 -0
  192. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +475 -0
  193. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +1584 -0
  194. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +96 -0
  195. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +344 -0
  196. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +103 -0
  197. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +1103 -0
  198. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +83 -0
  199. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +368 -0
  200. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +133 -0
  201. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +1062 -0
  202. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +97 -0
  203. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +84 -0
  204. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +446 -0
  205. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +1087 -0
  206. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +101 -0
  207. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +359 -0
  208. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +1168 -0
  209. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +81 -0
  210. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +5 -0
  211. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +5 -0
  212. package/templates/vite/.howone/skills/hallmark/site/index.html +1043 -0
  213. package/templates/vite/.howone/skills/hallmark/site/js/main.js +1175 -0
  214. package/templates/vite/.howone/skills/hallmark/vercel.json +6 -0
  215. package/templates/vite/.howone/skills/howone-sdk/01-architect/01-app-generation.md +101 -0
  216. package/templates/vite/.howone/skills/howone-sdk/02-database/01-schema-design.md +147 -0
  217. package/templates/vite/.howone/skills/howone-sdk/02-database/02-schema-operations.md +96 -0
  218. package/templates/vite/.howone/skills/howone-sdk/02-database/03-data-access-patterns.md +172 -0
  219. package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/01-client-setup.md +3 -3
  220. package/templates/vite/.howone/skills/howone-sdk/{references/04-auth.md → 03-sdk/03-auth.md} +120 -3
  221. package/templates/vite/.howone/skills/howone-sdk/04-ai/.gitkeep +1 -0
  222. package/templates/vite/.howone/skills/howone-sdk/SKILL.md +67 -93
  223. package/templates/vite/.howone/skills/howone-sdk/agents/openai.yaml +3 -3
  224. package/templates/vite/.howone/skills/impeccable/SKILL.md +168 -0
  225. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
  226. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +190 -0
  227. package/templates/vite/.howone/skills/impeccable/reference/animate.md +175 -0
  228. package/templates/vite/.howone/skills/impeccable/reference/audit.md +133 -0
  229. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +113 -0
  230. package/templates/vite/.howone/skills/impeccable/reference/brand.md +118 -0
  231. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +174 -0
  232. package/templates/vite/.howone/skills/impeccable/reference/codex.md +105 -0
  233. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +106 -0
  234. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +105 -0
  235. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +154 -0
  236. package/templates/vite/.howone/skills/impeccable/reference/craft.md +123 -0
  237. package/templates/vite/.howone/skills/impeccable/reference/critique.md +273 -0
  238. package/templates/vite/.howone/skills/impeccable/reference/delight.md +302 -0
  239. package/templates/vite/.howone/skills/impeccable/reference/distill.md +111 -0
  240. package/templates/vite/.howone/skills/impeccable/reference/document.md +427 -0
  241. package/templates/vite/.howone/skills/impeccable/reference/extract.md +69 -0
  242. package/templates/vite/.howone/skills/impeccable/reference/harden.md +347 -0
  243. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +234 -0
  244. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +195 -0
  245. package/templates/vite/.howone/skills/impeccable/reference/layout.md +141 -0
  246. package/templates/vite/.howone/skills/impeccable/reference/live.md +622 -0
  247. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +109 -0
  248. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +234 -0
  249. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +258 -0
  250. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +130 -0
  251. package/templates/vite/.howone/skills/impeccable/reference/personas.md +179 -0
  252. package/templates/vite/.howone/skills/impeccable/reference/polish.md +242 -0
  253. package/templates/vite/.howone/skills/impeccable/reference/product.md +62 -0
  254. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +99 -0
  255. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +114 -0
  256. package/templates/vite/.howone/skills/impeccable/reference/shape.md +165 -0
  257. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +100 -0
  258. package/templates/vite/.howone/skills/impeccable/reference/teach.md +156 -0
  259. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +124 -0
  260. package/templates/vite/.howone/skills/impeccable/reference/typography.md +159 -0
  261. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +107 -0
  262. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
  263. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +94 -0
  264. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +242 -0
  265. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +820 -0
  266. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +198 -0
  267. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +21 -0
  268. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
  269. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +69 -0
  270. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +595 -0
  271. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +123 -0
  272. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +4860 -0
  273. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +75 -0
  274. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +18 -0
  275. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +446 -0
  276. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +200 -0
  277. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +48 -0
  278. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +838 -0
  279. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +254 -0
  280. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +47 -0
  281. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +632 -0
  282. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +247 -0
  283. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +141 -0
  284. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  285. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +214 -0
  286. package/templates/vite/AGENTS.md +2 -3
  287. package/templates/vite/package.json +1 -1
  288. /package/templates/vite/.howone/skills/howone-sdk/{references/08-manifest-codegen.md → 01-architect/02-manifest-codegen.md} +0 -0
  289. /package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/02-entity-operations.md +0 -0
  290. /package/templates/vite/.howone/skills/howone-sdk/{references/06-react-integration.md → 03-sdk/04-react-integration.md} +0 -0
  291. /package/templates/vite/.howone/skills/howone-sdk/{references → 03-sdk}/05-file-upload.md +0 -0
  292. /package/templates/vite/.howone/skills/howone-sdk/{references/07-raw-http.md → 03-sdk/06-raw-http.md} +0 -0
  293. /package/templates/vite/.howone/skills/howone-sdk/{references/03-ai-actions.md → 03-sdk/07-ai-action-calls.md} +0 -0
@@ -0,0 +1,328 @@
1
+ # Export formats
2
+
3
+ Loaded by [`SKILL.md`](../SKILL.md) Step 6 when emitting the design system as portable tokens. Defines the four canonical formats Hallmark always writes:
4
+
5
+ 1. **`tokens.css`** — the source of truth. Always emitted alongside the page CSS.
6
+ 2. **Tailwind v4 `@theme`** — for projects on Tailwind. Emitted into `design.md`'s Exports section on multi-page projects.
7
+ 3. **DTCG `tokens.json`** — for projects using a token pipeline (Style Dictionary, Token Studio, Cobalt). Emitted into `design.md`.
8
+ 4. **shadcn/ui CSS variables** — for projects using shadcn/ui's component library. Emitted into `design.md`.
9
+
10
+ The output rule: `tokens.css` is always written. The other three live inline in `design.md` so the user copies whichever they need into a new project. **No new verb.** This is a side effect of every build.
11
+
12
+ ---
13
+
14
+ ## Token taxonomy — Hallmark's source of truth
15
+
16
+ Every Hallmark output writes these tokens (or a subset, if the page doesn't use one). The names are the source; every other format is a translation.
17
+
18
+ | Hallmark token | Type | Example value |
19
+ | --- | --- | --- |
20
+ | `--color-paper` | colour | `oklch(96% 0.018 80)` |
21
+ | `--color-paper-2` | colour | `oklch(94% 0.020 80)` |
22
+ | `--color-paper-3` | colour | `oklch(91% 0.022 80)` |
23
+ | `--color-ink` | colour | `oklch(15% 0.012 80)` |
24
+ | `--color-ink-2` | colour | `oklch(28% 0.014 80)` |
25
+ | `--color-rule` | colour | `oklch(86% 0.018 80)` |
26
+ | `--color-rule-2` | colour | `oklch(72% 0.020 80)` |
27
+ | `--color-muted` | colour | `oklch(50% 0.014 80)` |
28
+ | `--color-neutral` | colour | `oklch(38% 0.012 80)` |
29
+ | `--color-accent` | colour | `oklch(58% 0.16 70)` |
30
+ | `--color-accent-ink` | colour | (text on accent fill, ≥ APCA 7:1) |
31
+ | `--color-focus` | colour | (often = accent at higher chroma) |
32
+ | `--font-display` | font | `"Fraunces", ui-serif, Georgia, serif` |
33
+ | `--font-body` | font | `"Geist", ui-sans-serif, system-ui, sans-serif` |
34
+ | `--font-outlier` | font | `"Geist Mono", ui-monospace, monospace` |
35
+ | `--space-3xs` … `--space-5xl` | length | 4-pt scale: `0.25rem` … `8rem` |
36
+ | `--text-xs` … `--text-display` | length | 1.25 (major-third) ratio scale |
37
+ | `--ease-out` / `--ease-in` / `--ease-in-out` | easing | `cubic-bezier(0.16, 1, 0.3, 1)` etc. |
38
+ | `--dur-micro` / `--dur-short` / `--dur-long` | time | `120ms` / `220ms` / `420ms` |
39
+ | `--rule-hair` / `--rule-fine` | length | `1px` / `2px` |
40
+ | `--radius-card` / `--radius-pill` / `--radius-input` | length | varies per theme |
41
+ | `--shadow-card` | shadow | varies per theme |
42
+
43
+ If the page introduces *additional* tokens, name them by role and add to `tokens.css`. Don't make up token names downstream that aren't in `tokens.css` — the source of truth is the source of truth.
44
+
45
+ ---
46
+
47
+ ## Format 1 — `tokens.css`
48
+
49
+ The source. Plain CSS custom properties at `:root`. Every Hallmark page CSS imports this file at the top:
50
+
51
+ ```css
52
+ @import "tokens.css";
53
+ /* page CSS continues — uses var(--color-paper), never raw values */
54
+ ```
55
+
56
+ Or, if the project uses a CSS bundler / framework that doesn't honour bare `@import`, the project's existing entry-point includes `tokens.css` first. The page CSS still references tokens by name, never by raw value.
57
+
58
+ **Worked example — editorial theme (Specimen-like):**
59
+
60
+ ```css
61
+ :root {
62
+ --color-paper: oklch(96% 0.018 80);
63
+ --color-paper-2: oklch(94% 0.020 80);
64
+ --color-paper-3: oklch(91% 0.022 80);
65
+ --color-rule: oklch(86% 0.020 78);
66
+ --color-rule-2: oklch(72% 0.022 78);
67
+ --color-muted: oklch(50% 0.018 78);
68
+ --color-neutral: oklch(38% 0.014 76);
69
+ --color-ink-2: oklch(28% 0.012 75);
70
+ --color-ink: oklch(15% 0.010 75);
71
+ --color-accent: oklch(58% 0.16 60);
72
+ --color-accent-ink: oklch(98% 0.012 75);
73
+ --color-focus: oklch(58% 0.16 60);
74
+
75
+ --font-display: "Fraunces", "Cardo", ui-serif, Georgia, serif;
76
+ --font-body: "Geist", "Söhne", ui-sans-serif, system-ui, sans-serif;
77
+ --font-outlier: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
78
+
79
+ --display-weight: 400;
80
+ --display-style: italic;
81
+ --tracking-display: -0.02em;
82
+ --tracking-label: 0.10em;
83
+
84
+ --text-xs: 0.75rem;
85
+ --text-sm: 0.875rem;
86
+ --text-md: 1.125rem;
87
+ --text-lg: 1.375rem;
88
+ --text-xl: 1.75rem;
89
+ --text-2xl: 2.25rem;
90
+ --text-display: clamp(3rem, 6vw + 1rem, 6.5rem);
91
+
92
+ --space-3xs: 0.25rem;
93
+ --space-2xs: 0.5rem;
94
+ --space-xs: 0.75rem;
95
+ --space-sm: 1rem;
96
+ --space-md: 1.5rem;
97
+ --space-lg: 2rem;
98
+ --space-xl: 3rem;
99
+ --space-2xl: 4.5rem;
100
+ --space-3xl: 7rem;
101
+ --space-4xl: 11rem;
102
+
103
+ --rule-hair: 0.5px;
104
+ --rule-fine: 1px;
105
+ --radius-card: 0;
106
+ --radius-pill: 0;
107
+ --radius-input: 0;
108
+
109
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
110
+ --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
111
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
112
+
113
+ --dur-micro: 120ms;
114
+ --dur-short: 220ms;
115
+ --dur-long: 420ms;
116
+ }
117
+ ```
118
+
119
+ **Worked example — modern-minimal theme (Quiet-like):**
120
+
121
+ ```css
122
+ :root {
123
+ --color-paper: oklch(100% 0 0);
124
+ --color-paper-2: oklch(98.5% 0 0);
125
+ --color-paper-3: oklch(96% 0 0);
126
+ --color-rule: oklch(91% 0 0);
127
+ --color-rule-2: oklch(82% 0 0);
128
+ --color-muted: oklch(55% 0 0);
129
+ --color-neutral: oklch(40% 0 0);
130
+ --color-ink-2: oklch(28% 0 0);
131
+ --color-ink: oklch(15% 0 0);
132
+ --color-accent: oklch(15% 0 0);
133
+ --color-accent-ink: oklch(100% 0 0);
134
+ --color-focus: oklch(60% 0.10 240);
135
+
136
+ --font-display: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
137
+ --font-body: "Geist", "Inter", ui-sans-serif, system-ui, sans-serif;
138
+ --font-outlier: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
139
+
140
+ --display-weight: 600;
141
+ --display-style: normal;
142
+ --tracking-display: -0.025em;
143
+
144
+ --radius-card: 8px;
145
+ --radius-pill: 999px;
146
+ --radius-input: 8px;
147
+ }
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Format 2 — Tailwind v4 `@theme`
153
+
154
+ Tailwind v4 reads CSS variables inside `@theme` and generates utilities (`bg-paper`, `text-ink`, etc.) automatically. The translation from Hallmark tokens is direct — same variable names, same OKLCH values:
155
+
156
+ ```css
157
+ @theme {
158
+ /* Colours */
159
+ --color-paper: oklch(96% 0.018 80);
160
+ --color-paper-2: oklch(94% 0.020 80);
161
+ --color-paper-3: oklch(91% 0.022 80);
162
+ --color-rule: oklch(86% 0.020 78);
163
+ --color-rule-2: oklch(72% 0.022 78);
164
+ --color-muted: oklch(50% 0.018 78);
165
+ --color-neutral: oklch(38% 0.014 76);
166
+ --color-ink-2: oklch(28% 0.012 75);
167
+ --color-ink: oklch(15% 0.010 75);
168
+ --color-accent: oklch(58% 0.16 60);
169
+ --color-focus: oklch(58% 0.16 60);
170
+
171
+ /* Fonts */
172
+ --font-display: "Fraunces", "Cardo", ui-serif, Georgia, serif;
173
+ --font-body: "Geist", ui-sans-serif, system-ui, sans-serif;
174
+ --font-outlier: "Geist Mono", ui-monospace, monospace;
175
+
176
+ /* Spacing — Tailwind reads --spacing-* by default; we keep Hallmark's --space-* names alongside */
177
+ --spacing-3xs: 0.25rem;
178
+ --spacing-2xs: 0.5rem;
179
+ --spacing-xs: 0.75rem;
180
+ --spacing-sm: 1rem;
181
+ --spacing-md: 1.5rem;
182
+ --spacing-lg: 2rem;
183
+ --spacing-xl: 3rem;
184
+ --spacing-2xl: 4.5rem;
185
+
186
+ /* Type scale — Tailwind reads --text-* */
187
+ --text-xs: 0.75rem;
188
+ --text-sm: 0.875rem;
189
+ --text-md: 1.125rem;
190
+ --text-lg: 1.375rem;
191
+ --text-xl: 1.75rem;
192
+ --text-2xl: 2.25rem;
193
+
194
+ /* Radius */
195
+ --radius-card: 0;
196
+ --radius-pill: 0;
197
+ --radius-input: 0;
198
+
199
+ /* Easings — Tailwind reads --ease-* */
200
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
201
+ --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
202
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
203
+ }
204
+ ```
205
+
206
+ Notes:
207
+ - Tailwind v4 expects `--spacing-*` (with `ing`) for the spacing utilities. We mirror Hallmark's `--space-*` to `--spacing-*` so both names work.
208
+ - `--text-*` works as-is (Tailwind v4 picks them up for `text-md` etc.).
209
+ - `--font-*` becomes `font-display` / `font-body` / `font-outlier` utilities.
210
+ - The user's `tailwind.config.{ts,js}` may need `@source` directives but no `theme.extend` — v4 reads `@theme` directly.
211
+
212
+ ---
213
+
214
+ ## Format 3 — DTCG `tokens.json`
215
+
216
+ W3C Design Tokens Community Group format. For projects using Style Dictionary, Cobalt, or Token Studio. Path-based; OKLCH stays as a string value; `$type` is required.
217
+
218
+ ```json
219
+ {
220
+ "$schema": "https://design-tokens.github.io/community-group/format/",
221
+ "color": {
222
+ "paper": { "$value": "oklch(96% 0.018 80)", "$type": "color" },
223
+ "paper-2": { "$value": "oklch(94% 0.020 80)", "$type": "color" },
224
+ "paper-3": { "$value": "oklch(91% 0.022 80)", "$type": "color" },
225
+ "rule": { "$value": "oklch(86% 0.020 78)", "$type": "color" },
226
+ "rule-2": { "$value": "oklch(72% 0.022 78)", "$type": "color" },
227
+ "muted": { "$value": "oklch(50% 0.018 78)", "$type": "color" },
228
+ "neutral": { "$value": "oklch(38% 0.014 76)", "$type": "color" },
229
+ "ink-2": { "$value": "oklch(28% 0.012 75)", "$type": "color" },
230
+ "ink": { "$value": "oklch(15% 0.010 75)", "$type": "color" },
231
+ "accent": { "$value": "oklch(58% 0.16 60)", "$type": "color" },
232
+ "focus": { "$value": "oklch(58% 0.16 60)", "$type": "color" }
233
+ },
234
+ "font": {
235
+ "display": { "$value": "Fraunces, Cardo, ui-serif, Georgia, serif", "$type": "fontFamily" },
236
+ "body": { "$value": "Geist, ui-sans-serif, system-ui, sans-serif", "$type": "fontFamily" },
237
+ "outlier": { "$value": "Geist Mono, ui-monospace, monospace", "$type": "fontFamily" }
238
+ },
239
+ "size": {
240
+ "text-xs": { "$value": "0.75rem", "$type": "dimension" },
241
+ "text-sm": { "$value": "0.875rem", "$type": "dimension" },
242
+ "text-md": { "$value": "1.125rem", "$type": "dimension" },
243
+ "text-lg": { "$value": "1.375rem", "$type": "dimension" },
244
+ "text-xl": { "$value": "1.75rem", "$type": "dimension" },
245
+ "text-2xl": { "$value": "2.25rem", "$type": "dimension" },
246
+ "text-display": { "$value": "6rem", "$type": "dimension" }
247
+ },
248
+ "space": {
249
+ "3xs": { "$value": "0.25rem", "$type": "dimension" },
250
+ "2xs": { "$value": "0.5rem", "$type": "dimension" },
251
+ "xs": { "$value": "0.75rem", "$type": "dimension" },
252
+ "sm": { "$value": "1rem", "$type": "dimension" },
253
+ "md": { "$value": "1.5rem", "$type": "dimension" },
254
+ "lg": { "$value": "2rem", "$type": "dimension" },
255
+ "xl": { "$value": "3rem", "$type": "dimension" },
256
+ "2xl": { "$value": "4.5rem", "$type": "dimension" },
257
+ "3xl": { "$value": "7rem", "$type": "dimension" },
258
+ "4xl": { "$value": "11rem", "$type": "dimension" }
259
+ },
260
+ "duration": {
261
+ "micro": { "$value": "120ms", "$type": "duration" },
262
+ "short": { "$value": "220ms", "$type": "duration" },
263
+ "long": { "$value": "420ms", "$type": "duration" }
264
+ }
265
+ }
266
+ ```
267
+
268
+ Notes:
269
+ - DTCG accepts `oklch(...)` strings on modern tooling. If the user's pipeline doesn't, convert to hex (lossy — flag this) or to `color(oklch ...)` (CSS Color 4).
270
+ - The `text-display` value uses a fixed `6rem` for portability — the responsive `clamp(...)` belongs in CSS, not in token JSON.
271
+
272
+ ---
273
+
274
+ ## Format 4 — shadcn/ui CSS variables
275
+
276
+ shadcn/ui's component library reads CSS custom properties with specific names, in a specific shape. The values are **space-separated** triples (no `oklch()` wrapper, no commas) so shadcn can compose them with `oklch(<value> / <alpha>)`.
277
+
278
+ The translation from Hallmark tokens:
279
+
280
+ ```css
281
+ :root {
282
+ --background: 96% 0.018 80; /* paper */
283
+ --foreground: 15% 0.010 75; /* ink */
284
+
285
+ --card: 94% 0.020 80; /* paper-2 */
286
+ --card-foreground: 15% 0.010 75; /* ink */
287
+
288
+ --popover: 94% 0.020 80; /* paper-2 */
289
+ --popover-foreground: 15% 0.010 75; /* ink */
290
+
291
+ --primary: 58% 0.16 60; /* accent */
292
+ --primary-foreground: 98% 0.012 75; /* accent-ink */
293
+
294
+ --secondary: 91% 0.022 80; /* paper-3 */
295
+ --secondary-foreground: 28% 0.012 75; /* ink-2 */
296
+
297
+ --muted: 86% 0.020 78; /* rule */
298
+ --muted-foreground: 50% 0.018 78; /* muted */
299
+
300
+ --accent: 58% 0.16 60; /* accent (same as primary in Hallmark) */
301
+ --accent-foreground: 98% 0.012 75;
302
+
303
+ --destructive: 58% 0.20 25; /* warm red, fixed */
304
+ --destructive-foreground: 98% 0.012 75;
305
+
306
+ --border: 86% 0.020 78; /* rule */
307
+ --input: 86% 0.020 78; /* rule */
308
+ --ring: 58% 0.16 60; /* focus */
309
+
310
+ --radius: 0; /* radius-card; shadcn uses one value */
311
+ }
312
+ ```
313
+
314
+ Then the user's `tailwind.config.ts` (or v4 `@theme`) reads them with `oklch(var(--background))`. Hallmark's accent → shadcn's primary is the canonical mapping; secondary → paper-3.
315
+
316
+ If the user wants a dark variant, mirror with the dark theme tokens under a `.dark` selector (Hallmark's Midnight / Bloom / Terminal supply the values).
317
+
318
+ ---
319
+
320
+ ## Output rule
321
+
322
+ When SKILL.md Step 6 emits exports:
323
+
324
+ 1. **Always** write `tokens.css` next to the page CSS (or in the project root for multi-file projects). Format 1.
325
+ 2. **On `design.md`-managed projects** (multi-page), embed all four formats inline in `design.md`'s Exports section. The user copies whichever they need.
326
+ 3. **On Tailwind projects** (detected at pre-flight), additionally surface the Tailwind `@theme` block in the build output so the user knows where to paste it (typically into `app/globals.css` or the equivalent).
327
+
328
+ Don't blanket-emit tokens.json or shadcn variables on single-page projects — the user can copy them out of `design.md` if they upgrade to a multi-page system.
@@ -0,0 +1,89 @@
1
+ # Floating nav on scroll — the cross-fade morph
2
+
3
+ The recipe for **N10 · Floating-on-scroll morph** (see [`component-cookbook.md` § Navigation](component-cookbook.md)). One DOM, two visual modes, single class toggle, one timing curve. AI defaults botch every one of the four laws below — which is why N10 is the most demanding nav in the cookbook.
4
+
5
+ ## The structure
6
+
7
+ One `<header>` with an inner wrapper. The outer owns the **default bar** visuals; the inner owns the **floating pill** visuals. As `.is-floating` toggles past a scroll threshold, each layer cross-fades its own visuals out while the other fades in.
8
+
9
+ ```html
10
+ <header class="nav">
11
+ <div class="nav__inner">
12
+ <a class="wordmark">Hallmark</a>
13
+ <ul class="nav__links">…</ul>
14
+ <a class="cta">Install</a>
15
+ </div>
16
+ </header>
17
+ ```
18
+
19
+ ## The four laws — non-negotiable
20
+
21
+ **1. Total nav height stays constant.** If outer height changes when state flips, every pixel below shifts vertically. Users perceive this as "the page jumped" mid-scroll. Compensate the inner's shrink with the outer's `padding-block` so the math sums to the same total in both states.
22
+
23
+ **2. Visible offset uses `transform: translateY()`, never `padding`/`margin`.** The pill should sit detached from the viewport top with breathing room. The naïve add-padding-to-outer fix breaks Law 1. `transform` doesn't affect layout — pill drops visually, box stays put.
24
+
25
+ **3. Cross-fade ownership of every shared visual.** For every property the outer carries in default (background, border, backdrop-filter, box-shadow), explicitly neutralise it in `.is-floating` *and* put it in the transition list. Forgetting one — say a stale `backdrop-filter: blur(14px)` on the outer in floating mode — yields an invisible blurred strip dragging across the viewport behind nothing.
26
+
27
+ **4. Single timing curve across every property.** Eight properties on eight curves reads as eight animations. Same eight on `var(--dur-mid)` + `var(--ease-out)` reads as one motion. Use `cubic-bezier(0.16, 1, 0.3, 1)` (exponential ease-out) and ~520 ms.
28
+
29
+ ## The property morph (10 properties, one curve)
30
+
31
+ | Element | Property | Default | Floating |
32
+ |---|---|---|---|
33
+ | `.nav` | `padding-block` | `0` | `var(--space-2xs)` |
34
+ | `.nav` | `background-color` | dark/0.62 | `transparent` |
35
+ | `.nav` | `border-block-end-color` | rule | `transparent` |
36
+ | `.nav` | `backdrop-filter` | `saturate(1.4) blur(14px)` | `blur(0)` |
37
+ | `.nav__inner` | `max-width` | `var(--page-max)` | `~58rem` |
38
+ | `.nav__inner` | `min-height` | `60px` | `52px` |
39
+ | `.nav__inner` | `padding-block` | `12px` | `4px` |
40
+ | `.nav__inner` | `border-radius` | `0` | `var(--radius-pill, 999px)` |
41
+ | `.nav__inner` | `background-color` | `transparent` | dark/0.82 |
42
+ | `.nav__inner` | `backdrop-filter` | `blur(0)` | `blur(18px)` |
43
+ | `.nav__inner` | `box-shadow` | `none` | drop + tinted glow + inset hairline |
44
+ | `.nav__inner` | `transform` | `translateY(0)` | `translateY(12px)` |
45
+
46
+ Use `blur(0)` not `none` — `none` snaps, `blur(0)` transitions. `backdrop-filter` transitions are 2024+ baseline (Chrome 107+, Safari 14+, Firefox 103+).
47
+
48
+ ## The scroll handler
49
+
50
+ ```js
51
+ (() => {
52
+ const nav = document.querySelector(".nav");
53
+ if (!nav) return;
54
+ const THRESHOLD = 80; // ≥ 60 px to avoid micro-scroll twitches
55
+ let floating = false;
56
+ let ticking = false;
57
+ const update = () => {
58
+ const next = window.scrollY > THRESHOLD;
59
+ if (next !== floating) { // boolean-flip guard — toggle once per state change
60
+ floating = next;
61
+ nav.classList.toggle("is-floating", floating);
62
+ }
63
+ };
64
+ window.addEventListener("scroll", () => {
65
+ if (ticking) return;
66
+ ticking = true;
67
+ requestAnimationFrame(() => { update(); ticking = false; });
68
+ }, { passive: true }); // mobile scroll-perf — keep main thread free
69
+ update();
70
+ })();
71
+ ```
72
+
73
+ Three discipline points:
74
+ - **`passive: true`** — listener won't `preventDefault`, browser keeps main thread free for scrolling.
75
+ - **`requestAnimationFrame` throttle** — caps to 60 calls/s, aligns with paint.
76
+ - **Boolean-flip guard** — class operation runs once per state change, not once per scroll event.
77
+
78
+ ## Anti-patterns Hallmark refuses
79
+
80
+ 1. Two separate `<header>` elements that swap via opacity. Doubles DOM, fights focus order, can desync content.
81
+ 2. Animating `top` / `margin-top` to add the floating offset. Triggers layout. `transform` is the only correct lever.
82
+ 3. Using `backdrop-filter: none` in the floating state. Snaps. Use `blur(0)` so it transitions.
83
+ 4. Letting nav height change between states. Causes content jitter — the single most damaging mistake in this pattern.
84
+ 5. Different transition durations per property ("speed up the radius", "delay the shadow"). Reads as broken even though everything moves. One curve.
85
+ 6. `scroll` event without `{ passive: true }` or without rAF throttling. Both kill mobile scroll perf.
86
+ 7. Threshold = 0 (morph fires at the slightest scroll). Too jumpy. Use ≥ 60 px.
87
+ 8. Forgetting the boolean-flip guard — toggling the class on every scroll event causes layout thrash.
88
+
89
+ The pattern works because it's restrained — one orchestrated morph, no embellishment. Pour the polish into the timing curve, the shadow stack, and the height-constant math; not into "more."
@@ -0,0 +1,65 @@
1
+ # Genre — atmospheric
2
+
3
+ For the AI-creative product page. Dark canvas with warm radial blooms, confident sans display, expressive but plain-English copy, single warm accent. The aesthetic of a tool you'd actually want to use after dark — generative music, video, image, voice.
4
+
5
+ ## When to pick it
6
+
7
+ Brief mentions any of: *AI tool, generative, music, video, image, voice, late-night, atmospheric, dark mode, expressive, creative tool, model playground, vibe-coded, dreamlike, nocturnal*. Also pick when the user names a *mood* that requires darkness (e.g. "moody", "cinematic", "after hours").
8
+
9
+ ## Themes that belong
10
+
11
+ `Bloom` (canonical), `Midnight`, `Terminal`. Three dark-paper themes; the rotation walks them when atmospheric is active.
12
+
13
+ ## Voice
14
+
15
+ - **Display** — Geist Sans 600 or similar weighty sans, plain English, no ornament. Letter-spacing tight (`-0.03em` or tighter).
16
+ - **Body** — same family, 400. Light grey on dark (`oklch(86% 0.008 40)`).
17
+ - **Accent** — single warm hue (orange / amber / red / pink). Used in radial-gradient blooms on the canvas, on focus rings, on small tags. Never on display text (that's gate 5 universal — gradient text stays banned).
18
+ - **Layout** — centred or near-centred heroes. The canvas itself is the design; the type sits on top of an atmospheric ground.
19
+ - **Motion** — fade-in only. No slide, no bounce. The atmosphere does the work.
20
+ - **Copy tone** — direct, slightly poetic, specific. *"Make a house song about quitting your job."* is the calibration.
21
+
22
+ ## What this genre allows
23
+
24
+ - **Radial-gradient bloom** on the body background — up to two blooms, each ~20–30 % footprint, fixed-attached, no animation. Gate 31 universal is loosened here.
25
+ - **Centred heroes** — gate 7 universal is loosened. The canvas frames the type.
26
+ - **Pill-rounded CTAs** with accent fill — confident, not pastel.
27
+ - **Glow shadows** on hover (cards lift toward the user with a soft warm shadow).
28
+ - **Larger expressive type** — display can hit 6 rem (`clamp(3rem, 6vw + 1rem, 6rem)`).
29
+
30
+ ## What this genre disallows
31
+
32
+ - **Light-paper aesthetics** — the canvas is dark. Don't sneak white sections in.
33
+ - **Italic serif body** — atmospheric stays sans top-to-bottom.
34
+ - **Hairlines** — atmospheric uses elevated cards (`paper-2`, `paper-3`) instead of hairline-on-paper.
35
+ - **Multiple accent hues** — one warm bloom + one secondary (pink/red) is the maximum. No teal-and-amber juggling.
36
+ - **Glassmorphism** — banned. Atmospheric is *atmospheric*, not glass.
37
+ - **Gradient text** — gate 5 universal. Stays banned.
38
+
39
+ ## Voice fixtures
40
+
41
+ - *"Built for the dark."*
42
+ - *"The page should feel like a place you could sit in."*
43
+ - *"A canvas, then a tool."*
44
+ - *"Generate, refine, ship — between Tuesday and Wednesday."*
45
+ - *"The instrument is dark. The output is yours."*
46
+
47
+ ## Nav and footer voice
48
+
49
+ - **Default nav:** N5 Floating pill — the blur backdrop sells the atmospheric mood. The pill sits over the dark canvas and the bloom shows through the blur.
50
+ - **Acceptable also:** N9 Edge-aligned minimal (when the canvas is loud enough that nav should disappear into it); N4 ⌘K-only (when the audience is technical).
51
+ - **Default footer:** Ft5 Statement — closes the page with a sentence. Atmospheric pages argue something; the footer states it.
52
+ - **Acceptable also:** Ft1 Mast-headed; Ft2 Inline single line.
53
+ - **Banned for atmospheric:** N6 Newspaper masthead (editorial vocabulary); N7 Brutal slab (fights the calm); Ft8 Marquee scroll (kinetic, breaks the dark canvas); Ft3 Index columns (AI-footer fingerprint).
54
+
55
+ See [`component-cookbook.md`](../component-cookbook.md) § Navigation and § Footers for the full archetypes + code.
56
+
57
+ ## Stamp signature
58
+
59
+ ```css
60
+ /* Hallmark · genre: atmospheric · macrostructure: <name> · theme: <name> · enrichment: <tier> · nav: <N#> · footer: <Ft#> */
61
+ ```
62
+
63
+ ## Reference register
64
+
65
+ The aesthetic to match: dark canvas with two warm blooms behind the content, plain-English heroic display, single warm accent on small surfaces. Hand-built, not stock-AI.
@@ -0,0 +1,70 @@
1
+ # Genre — editorial (default)
2
+
3
+ The canonical Hallmark voice. Pages built for content-led briefs: portfolios, manifestos, type specimens, agency sites, magazine pieces, indie podcasts, bakery / brand stories, considered B2C marketing.
4
+
5
+ This is what Hallmark looks like when no other genre signal fires. It is the silent default.
6
+
7
+ ## When to pick it
8
+
9
+ Default. Pick editorial when the brief does not name a specialised aesthetic — when the user said "a landing page for X" without telling you whether X is enterprise, atmospheric, or playful. Most briefs land here.
10
+
11
+ ## Themes that belong
12
+
13
+ `Specimen`, `Newsprint`, `Atelier`, `Garden`, `Salon`, `Linen`, `Almanac`, `Studio`, `Riso`, `Sport`, `Brutal`, `Manifesto`. Twelve themes — plenty of variety inside the genre.
14
+
15
+ ## Voice
16
+
17
+ - **Display** — italic serif, condensed sans, or display-heavy. Not Inter. Not Geist. The weight commits to an extreme (300 or 700+).
18
+ - **Body** — workhorse serif (Newsreader, Cormorant) or a plain non-default sans (The Future, Söhne). Readable at 45–75 ch.
19
+ - **Accent** — single warm or cool hue, used at < 5 % of any viewport.
20
+ - **Layout** — asymmetric. Hairlines, not card borders. Generous whitespace.
21
+ - **Motion** — quiet. One orchestrated entrance. No bounces.
22
+ - **Copy tone** — specific, hand-set, slightly literary. Verbs over adjectives.
23
+
24
+ ## What this genre allows
25
+
26
+ - Hairline rules, fleurons, drop caps, double rules.
27
+ - Italic body in long-form content.
28
+ - Asymmetric column counts (2:5, 3:7) on prose pages.
29
+ - Hand-built SVG illustrations, pure-CSS art (Tier A enrichment).
30
+ - Numbered display labels, edge-aligned headlines.
31
+ - Single-accent-colour highlighting (`<mark>` band at x-height).
32
+
33
+ ## What this genre disallows
34
+
35
+ The universal slop-test gates apply, plus these editorial-specific bans:
36
+
37
+ - **Pill-rounded buttons** with gradient fill — pill is fine, gradient on a pill is not.
38
+ - **Centred-everything heroes** (gate 7 universal). Editorial heroes are left-biased or asymmetric.
39
+ - **Card-in-card** layouts (gate 4 universal).
40
+ - **Three-column equal-icon-tile feature grid** (gate 3 universal).
41
+ - **Glassmorphism** — never; the medium is paper, not glass.
42
+ - **Pure black or pure white** as paper or ink (gate 8). Tint everything toward the anchor.
43
+
44
+ ## Voice fixtures
45
+
46
+ Each macrostructure under editorial picks from these opening-line patterns. Imitate the *shape*, not the wording.
47
+
48
+ - *"Type, set with care."*
49
+ - *"Print discipline, on screen."*
50
+ - *"A small skill that argues against the average."*
51
+ - *"We compose the page like a broadsheet — hairlines, columns, restraint."*
52
+ - *"Restraint, repeated, becomes a signature."*
53
+
54
+ ## Nav and footer voice
55
+
56
+ - **Default nav:** N6 Newspaper masthead — full-width, large centred wordmark, thin issue/date row in serif small caps, double-rule below. Reads as broadsheet.
57
+ - **Acceptable also:** N1 Wordmark + 2 links (when destinations are minimal); N9 Edge-aligned minimal (when the page is letter-shaped or atelier-quiet).
58
+ - **Default footer:** Ft1 Mast-headed (wordmark anchors a single horizontal band, tagline + small links beside).
59
+ - **Acceptable also:** Ft2 Inline single line; Ft4 Dense colophon (newsprint / almanac voices); Ft6 Letter close (atelier / garden / personal); Ft7 Newsletter-first (when the brand legitimately publishes).
60
+ - **Banned for editorial:** N5 Floating pill (modern-minimal vocabulary), N7 Brutal slab (fights the restraint), Ft8 Marquee scroll (kinetic; wrong genre).
61
+
62
+ See [`component-cookbook.md`](../component-cookbook.md) § Navigation and § Footers for the full archetypes + code.
63
+
64
+ ## Stamp signature
65
+
66
+ Output's CSS comment header reads:
67
+
68
+ ```css
69
+ /* Hallmark · genre: editorial · macrostructure: <name> · theme: <name> · enrichment: <tier> · nav: <N#> · footer: <Ft#> */
70
+ ```
@@ -0,0 +1,67 @@
1
+ # Genre — modern-minimal
2
+
3
+ For the polished enterprise / dev-tool / API page. Stripe / Linear / ElevenLabs school: Geist sans, large confident displays, generous whitespace, pill CTAs, monochrome with optional accent. Minimalism with conviction, not the absence of choice.
4
+
5
+ ## When to pick it
6
+
7
+ Brief mentions any of: *SaaS, enterprise, API, platform, developer tool, infra, B2B, dashboard, billing, Stripe-like, Linear-like, ElevenLabs-like, dev experience, ship fast*. Also pick when the user names a brand colour but the rest of the brief is restrained.
8
+
9
+ ## Themes that belong
10
+
11
+ `Quiet` (canonical). Future themes can be added to this genre — anything monochrome or near-monochrome with Geist / Inter-class sans display and pill CTAs.
12
+
13
+ ## Voice
14
+
15
+ - **Display** — Geist Sans 500–700, Inter Tight Display 600+, or similar. Letter-spacing tight (`-0.02em` to `-0.035em`).
16
+ - **Body** — Geist Sans 400, Inter 400. Same family as display (single-family discipline).
17
+ - **Accent** — monochrome (accent IS ink) or a single restrained hue used only on focus rings. No chromatic floods.
18
+ - **Layout** — two-column heroes (title left, lede right), generous whitespace, refined card surfaces with subtle borders.
19
+ - **Motion** — minimal. Reveals are off; the page is composed.
20
+ - **Copy tone** — declarative, specific, technical. "Built for X" is not banned but must name the X concretely.
21
+
22
+ ## What this genre allows
23
+
24
+ - **Pill-rounded CTAs** — both filled and outlined. Black-filled primary + white-outlined secondary is the canonical pair.
25
+ - **Pure white paper** (`#fff` / `oklch(100% 0 0)`) — gate 8 is loosened here.
26
+ - **Zero-chroma neutrals** — gate 24 is loosened here. The Stripe / ElevenLabs school is monochrome by design.
27
+ - **Two-column hero with title-left + paragraph-right** — explicitly canonical for this genre.
28
+ - **Refined card surface** with very subtle border (`oklch(91% 0 0)`) and 8 px radius.
29
+ - **Large, tight-set displays** (`clamp(2.5rem, 5vw + 0.5rem, 4.75rem)`).
30
+
31
+ ## What this genre disallows
32
+
33
+ - **Italic serif body** — modern-minimal stays sans top-to-bottom.
34
+ - **Hairline-everything** — borders are thin but visible, not the editorial 0.5 px hairline aesthetic.
35
+ - **Asymmetric prose columns** — modern-minimal aligns left, justified to a regular grid.
36
+ - **Drop caps, fleurons, ornament** — none of it.
37
+ - **Bouncy / overshoot easings** — gate 13 universal applies strictly here.
38
+ - **Gradient text** — gate 5 universal. Stays banned.
39
+ - **Glassmorphism** — banned.
40
+
41
+ ## Voice fixtures
42
+
43
+ - *"Built to ship."*
44
+ - *"The platform that scales with you."*
45
+ - *"From idea to production in an afternoon."*
46
+ - *"Thirty thousand teams build with X."*
47
+ - *"One API. Every channel."*
48
+
49
+ ## Nav and footer voice
50
+
51
+ - **Default nav:** N5 Floating pill — content-sized, detached from edges, blur backdrop, soft shadow. Vercel / Linear / Framer / Raycast vocabulary.
52
+ - **Acceptable also:** N1 Wordmark + 2 links (when destinations are genuinely minimal); N9 Edge-aligned minimal (when the brand earns the silence).
53
+ - **Default footer:** Ft2 Inline single line — wordmark + tagline + tiny credit, hairline rule above. Restrained.
54
+ - **Acceptable also:** Ft1 Mast-headed; Ft5 Statement (when the page wants a closing line).
55
+ - **Banned for modern-minimal:** N6 Newspaper masthead (editorial vocabulary); N7 Brutal slab (fights the restraint); Ft8 Marquee scroll (kinetic, wrong voice); Ft3 Index columns at full saturation (the AI-footer fingerprint — gate 52).
56
+
57
+ See [`component-cookbook.md`](../component-cookbook.md) § Navigation and § Footers for the full archetypes + code.
58
+
59
+ ## Stamp signature
60
+
61
+ ```css
62
+ /* Hallmark · genre: modern-minimal · macrostructure: <name> · theme: <name> · enrichment: <tier> · nav: <N#> · footer: <Ft#> */
63
+ ```
64
+
65
+ ## Reference register (for the LLM, not credited to anyone)
66
+
67
+ The aesthetic to match: confident sans display, clean white canvas, two-column hero, pill CTAs, mono accent. The user knows what this looks like when they see it. Do not name external sites in the output.