howone 0.1.29 → 0.1.31

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 (243) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/hallmark/SKILL.md +48 -42
  3. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +12 -6
  4. package/templates/vite/.howone/skills/hallmark/references/assets.md +7 -0
  5. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +19 -10
  6. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +1 -1
  7. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +1 -1
  8. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +1 -1
  9. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +1 -1
  10. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +1 -1
  11. package/templates/vite/.howone/skills/hallmark/references/components/n11-mega-menu.md +40 -0
  12. package/templates/vite/.howone/skills/hallmark/references/components/n12-banner-retract.md +34 -0
  13. package/templates/vite/.howone/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
  14. package/templates/vite/.howone/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
  15. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +1 -1
  16. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +2 -2
  17. package/templates/vite/.howone/skills/hallmark/references/copy.md +8 -8
  18. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +2 -2
  19. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +50 -12
  20. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +1 -1
  21. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +11 -7
  22. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +6 -4
  23. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +10 -6
  24. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +15 -10
  25. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +13 -12
  26. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +2 -1
  27. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +4 -3
  28. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +3 -1
  29. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +1 -1
  30. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +1 -1
  31. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +1 -3
  32. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +12 -12
  33. package/templates/vite/.howone/skills/hallmark/references/responsive.md +8 -8
  34. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +72 -85
  35. package/templates/vite/.howone/skills/hallmark/references/structure.md +9 -13
  36. package/templates/vite/.howone/skills/hallmark/references/study.md +40 -17
  37. package/templates/vite/.howone/skills/hallmark/references/themes/carnival.md +301 -0
  38. package/templates/vite/.howone/skills/hallmark/references/themes/cobalt.md +146 -0
  39. package/templates/vite/.howone/skills/hallmark/references/themes/hum.md +403 -0
  40. package/templates/vite/.howone/skills/hallmark/references/themes/lumen.md +478 -0
  41. package/templates/vite/.howone/skills/hallmark/references/typography.md +3 -3
  42. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +1 -1
  43. package/templates/vite/.howone/skills/howone/01-architect/01-app-generation.md +132 -176
  44. package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/01-schema-design.md +3 -1
  45. package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/01-ai-capability-architecture.md +6 -5
  46. package/templates/vite/.howone/skills/howone/{04-ai/04-service-capability-catalog.md → 03-ai-capabilities/03-service-capability-catalog.md} +15 -11
  47. package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/01-client-setup.md +6 -4
  48. package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/07-ai-action-calls.md +3 -3
  49. package/templates/vite/.howone/skills/howone/{04-ai/03-ai-sdk-handoff.md → 04-app-sdk/08-ai-manifest-handoff.md} +2 -2
  50. package/templates/vite/.howone/skills/howone/SKILL.md +98 -131
  51. package/templates/vite/.howone/skills/howone/agents/openai.yaml +3 -3
  52. package/templates/vite/AGENTS.md +2 -2
  53. package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
  54. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  55. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  56. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  57. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  58. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  59. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  60. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  61. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  62. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  63. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  64. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  65. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  66. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  67. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  68. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  136. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  137. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  138. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  139. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  140. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  141. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  142. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  143. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  144. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  145. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  146. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  147. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  148. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  149. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  150. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  151. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  152. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  153. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  154. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  155. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  156. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  157. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  158. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  159. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  160. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  161. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  162. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  163. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  164. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  165. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  166. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  167. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  168. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  169. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  170. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  171. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  172. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  173. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  174. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  175. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  176. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  177. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  178. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  179. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  180. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  181. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  182. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  183. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  184. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  185. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  186. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  187. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  188. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  189. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  190. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  191. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  192. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  193. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  194. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  195. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  196. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  197. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  198. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  199. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  200. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  201. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  202. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  203. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  204. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  205. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  206. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  207. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  208. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  209. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  210. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  211. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  212. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  213. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  216. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  217. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  218. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  219. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  220. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  221. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  222. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  223. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  224. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  225. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  226. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  227. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  228. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  229. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
  230. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/02-schema-operations.md +0 -0
  231. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/03-data-access-patterns.md +0 -0
  232. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/04-query-dsl-and-responses.md +0 -0
  233. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/05-ai-persistence-patterns.md +0 -0
  234. /package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/02-workflow-contract-rules.md +0 -0
  235. /package/templates/vite/.howone/skills/howone/{04-ai/05-workflow-operations.md → 03-ai-capabilities/04-workflow-operations.md} +0 -0
  236. /package/templates/vite/.howone/skills/howone/{04-ai/06-ai-feature-playbooks.md → 03-ai-capabilities/05-ai-feature-playbooks.md} +0 -0
  237. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/02-entity-operations.md +0 -0
  238. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/03-auth.md +0 -0
  239. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/04-react-integration.md +0 -0
  240. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/05-file-upload.md +0 -0
  241. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/06-raw-http.md +0 -0
  242. /package/templates/vite/.howone/skills/howone/{03-sdk/08-extension-boundaries.md → 04-app-sdk/09-extension-boundaries.md} +0 -0
  243. /package/templates/vite/.howone/skills/howone/{03-sdk/09-workflow-execute-sse.md → 04-app-sdk/10-workflow-execute-sse.md} +0 -0
@@ -1,484 +0,0 @@
1
- /* Hallmark · macrostructure: Bento Grid · F1 bento knobs: tiles=6, spans=irregular, accent=corner-only
2
- * theme: Newsprint · accent: warm-deep-red ~3% · enrichment: tier-A CSS logo grid (8 mono wordmarks)
3
- * studied: no · context: explicit · v0.6.0
4
- */
5
-
6
- :root {
7
- --color-paper: oklch(95% 0.014 80);
8
- --color-paper-2: oklch(92% 0.016 80);
9
- --color-rule: oklch(78% 0.018 70);
10
- --color-ink: oklch(20% 0.014 50);
11
- --color-ink-soft: oklch(40% 0.014 50);
12
- --color-ink-muted: oklch(58% 0.014 50);
13
- --color-accent: oklch(48% 0.16 28);
14
- --color-accent-dim: oklch(60% 0.12 28);
15
-
16
- --font-display: "Source Serif 4", "Iowan Old Style", Georgia, serif;
17
- --font-body: "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
18
- --font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;
19
-
20
- --space-3xs: 0.25rem;
21
- --space-2xs: 0.5rem;
22
- --space-xs: 0.75rem;
23
- --space-sm: 1rem;
24
- --space-md: 1.5rem;
25
- --space-lg: 2rem;
26
- --space-xl: 3rem;
27
- --space-2xl: 4.5rem;
28
- --space-3xl: 6.5rem;
29
-
30
- --radius-tile: 4px;
31
- --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
32
- --dur-micro: 120ms;
33
- --dur-short: 240ms;
34
- }
35
-
36
- * { box-sizing: border-box; }
37
- html, body { overflow-x: clip; }
38
-
39
- body {
40
- margin: 0;
41
- background: var(--color-paper);
42
- color: var(--color-ink);
43
- font-family: var(--font-body);
44
- font-size: 0.9375rem;
45
- line-height: 1.55;
46
- -webkit-font-smoothing: antialiased;
47
- }
48
-
49
- .page { max-width: 80rem; margin: 0 auto; padding: 0 var(--space-lg); }
50
-
51
- /* Masthead — newspaper banner */
52
- .masthead {
53
- display: grid;
54
- grid-template-columns: 1fr auto 1fr;
55
- align-items: center;
56
- padding: var(--space-md) 0;
57
- border-block-end: 3px double var(--color-ink);
58
- font-family: var(--font-mono);
59
- font-size: 0.75rem;
60
- letter-spacing: 0.06em;
61
- text-transform: uppercase;
62
- color: var(--color-ink-soft);
63
- }
64
-
65
- .masthead__brand {
66
- font-family: var(--font-display);
67
- font-size: 1.25rem;
68
- font-weight: 600;
69
- letter-spacing: -0.005em;
70
- color: var(--color-ink);
71
- text-transform: none;
72
- }
73
- .masthead__brand .dot { color: var(--color-accent); }
74
-
75
- .masthead__nav {
76
- display: flex;
77
- gap: var(--space-md);
78
- justify-content: end;
79
- }
80
-
81
- .masthead__nav a {
82
- color: var(--color-ink-soft);
83
- text-decoration: none;
84
- transition: color var(--dur-micro) var(--ease-out);
85
- }
86
-
87
- .masthead__nav a:hover, .masthead__nav a:focus-visible { color: var(--color-accent); }
88
- .masthead__nav a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
89
-
90
- /* Hero */
91
- .hero {
92
- display: grid;
93
- grid-template-columns: 1.4fr 1fr;
94
- gap: var(--space-2xl);
95
- align-items: end;
96
- padding: var(--space-3xl) 0 var(--space-2xl);
97
- border-block-end: 1px solid var(--color-rule);
98
- }
99
-
100
- .hero__copy { max-width: 36rem; }
101
-
102
- .hero__eyebrow {
103
- font-family: var(--font-mono);
104
- font-size: 0.75rem;
105
- letter-spacing: 0.12em;
106
- text-transform: uppercase;
107
- color: var(--color-accent);
108
- margin: 0 0 var(--space-md);
109
- }
110
-
111
- .hero__head {
112
- font-family: var(--font-display);
113
- font-size: clamp(2.5rem, 6vw, 4.5rem);
114
- font-weight: 600;
115
- line-height: 1.02;
116
- letter-spacing: -0.02em;
117
- margin: 0 0 var(--space-md);
118
- color: var(--color-ink);
119
- }
120
-
121
- .hero__head em { font-style: italic; color: var(--color-accent); }
122
-
123
- .hero__sub {
124
- font-family: var(--font-body);
125
- font-size: 1.0625rem;
126
- line-height: 1.6;
127
- color: var(--color-ink-soft);
128
- margin: 0 0 var(--space-lg);
129
- max-width: 56ch;
130
- }
131
-
132
- .hero__cta { display: flex; gap: var(--space-sm); flex-wrap: wrap; }
133
-
134
- .btn {
135
- display: inline-flex;
136
- align-items: center;
137
- gap: 0.5ch;
138
- padding: var(--space-sm) var(--space-md);
139
- font-family: var(--font-body);
140
- font-size: 0.9375rem;
141
- font-weight: 500;
142
- text-decoration: none;
143
- border: 1px solid var(--color-rule);
144
- background: transparent;
145
- color: var(--color-ink);
146
- cursor: pointer;
147
- line-height: 1;
148
- border-radius: 2px;
149
- transition: background var(--dur-micro) var(--ease-out),
150
- border-color var(--dur-micro) var(--ease-out),
151
- color var(--dur-micro) var(--ease-out);
152
- }
153
-
154
- .btn--primary { background: var(--color-accent); color: var(--color-paper); border-color: var(--color-accent); }
155
- .btn--primary:hover, .btn--primary:focus-visible { background: var(--color-ink); border-color: var(--color-ink); }
156
- .btn:hover, .btn:focus-visible { border-color: var(--color-accent); color: var(--color-accent); }
157
- .btn--primary:hover, .btn--primary:focus-visible { color: var(--color-paper); }
158
- .btn:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
159
-
160
- /* Hero pull-quote panel */
161
- .hero__pull {
162
- background: var(--color-paper-2);
163
- border-inline-start: 3px solid var(--color-accent);
164
- padding: var(--space-md);
165
- font-family: var(--font-display);
166
- }
167
-
168
- .hero__pull-quote {
169
- font-style: italic;
170
- font-size: 1.125rem;
171
- line-height: 1.45;
172
- color: var(--color-ink);
173
- margin: 0 0 var(--space-sm);
174
- }
175
-
176
- .hero__pull-attr {
177
- font-family: var(--font-mono);
178
- font-size: 0.75rem;
179
- letter-spacing: 0.06em;
180
- color: var(--color-ink-soft);
181
- font-style: normal;
182
- }
183
-
184
- /* Bento grid */
185
- .bento {
186
- padding: var(--space-2xl) 0;
187
- display: grid;
188
- grid-template-columns: repeat(6, 1fr);
189
- gap: var(--space-md);
190
- border-block-end: 1px solid var(--color-rule);
191
- }
192
-
193
- .tile {
194
- background: var(--color-paper-2);
195
- border: 1px solid var(--color-rule);
196
- border-radius: var(--radius-tile);
197
- padding: var(--space-lg);
198
- display: flex;
199
- flex-direction: column;
200
- gap: var(--space-sm);
201
- position: relative;
202
- }
203
-
204
- .tile__corner {
205
- position: absolute;
206
- inset-block-start: 0;
207
- inset-inline-end: 0;
208
- width: 1.5rem;
209
- height: 1.5rem;
210
- background: var(--color-accent);
211
- clip-path: polygon(100% 0, 0 0, 100% 100%);
212
- }
213
-
214
- .tile__label {
215
- font-family: var(--font-mono);
216
- font-size: 0.75rem;
217
- letter-spacing: 0.12em;
218
- text-transform: uppercase;
219
- color: var(--color-ink-soft);
220
- }
221
-
222
- .tile__head {
223
- font-family: var(--font-display);
224
- font-size: 1.5rem;
225
- font-weight: 600;
226
- line-height: 1.1;
227
- letter-spacing: -0.015em;
228
- color: var(--color-ink);
229
- margin: 0;
230
- }
231
-
232
- .tile__body {
233
- font-size: 0.9375rem;
234
- line-height: 1.55;
235
- color: var(--color-ink-soft);
236
- }
237
-
238
- .tile--stat { grid-column: span 3; grid-row: span 2; display: grid; grid-template-rows: auto 1fr auto; }
239
- .tile--logos { grid-column: span 3; }
240
- .tile--pricing { grid-column: span 3; }
241
- .tile--testimonial { grid-column: span 3; }
242
- .tile--features { grid-column: span 3; }
243
- .tile--faq { grid-column: span 3; }
244
-
245
- /* Big stat tile */
246
- .tile__stat {
247
- font-family: var(--font-display);
248
- font-size: clamp(5rem, 14vw, 11rem);
249
- font-weight: 600;
250
- line-height: 0.9;
251
- letter-spacing: -0.03em;
252
- color: var(--color-ink);
253
- margin: var(--space-lg) 0;
254
- }
255
-
256
- .tile__stat-dot { color: var(--color-accent); }
257
-
258
- .tile__stat-cap {
259
- font-family: var(--font-display);
260
- font-size: 1.125rem;
261
- font-style: italic;
262
- color: var(--color-ink-soft);
263
- margin: 0;
264
- line-height: 1.4;
265
- }
266
-
267
- /* Logo grid */
268
- .logos {
269
- display: grid;
270
- grid-template-columns: repeat(4, 1fr);
271
- gap: var(--space-sm);
272
- margin-block-start: var(--space-sm);
273
- }
274
-
275
- .logos__item {
276
- border: 1px solid var(--color-rule);
277
- border-radius: 2px;
278
- padding: var(--space-md) var(--space-sm);
279
- text-align: center;
280
- font-family: var(--font-display);
281
- font-size: 0.875rem;
282
- font-weight: 600;
283
- letter-spacing: 0.04em;
284
- color: var(--color-ink);
285
- background: var(--color-paper);
286
- }
287
-
288
- .logos__item .dot { color: var(--color-accent); }
289
-
290
- /* Pricing tile */
291
- .tiers {
292
- display: grid;
293
- grid-template-columns: repeat(3, 1fr);
294
- gap: var(--space-sm);
295
- margin-block-start: var(--space-sm);
296
- }
297
-
298
- .tier-card {
299
- border: 1px solid var(--color-rule);
300
- border-radius: 2px;
301
- padding: var(--space-sm);
302
- background: var(--color-paper);
303
- }
304
-
305
- .tier-card--feature {
306
- border-color: var(--color-accent);
307
- border-width: 2px;
308
- position: relative;
309
- }
310
-
311
- .tier-card--feature::before {
312
- content: "popular";
313
- position: absolute;
314
- inset-inline-end: -1px;
315
- inset-block-start: -10px;
316
- background: var(--color-accent);
317
- color: var(--color-paper);
318
- font-family: var(--font-mono);
319
- font-size: 0.625rem;
320
- letter-spacing: 0.08em;
321
- text-transform: uppercase;
322
- padding: 2px 6px;
323
- border-radius: 2px;
324
- }
325
-
326
- .tier-card__name {
327
- font-family: var(--font-mono);
328
- font-size: 0.6875rem;
329
- letter-spacing: 0.1em;
330
- text-transform: uppercase;
331
- color: var(--color-ink-soft);
332
- margin: 0 0 var(--space-3xs);
333
- }
334
-
335
- .tier-card__price {
336
- font-family: var(--font-display);
337
- font-size: 1.25rem;
338
- font-weight: 600;
339
- color: var(--color-ink);
340
- margin: 0;
341
- }
342
-
343
- .tier-card__per {
344
- font-family: var(--font-body);
345
- font-size: 0.75rem;
346
- color: var(--color-ink-soft);
347
- font-weight: 400;
348
- }
349
-
350
- /* Testimonial tile */
351
- .tile__quote {
352
- font-family: var(--font-display);
353
- font-style: italic;
354
- font-size: 1.125rem;
355
- line-height: 1.4;
356
- margin: 0;
357
- color: var(--color-ink);
358
- }
359
-
360
- .tile__attr {
361
- font-family: var(--font-mono);
362
- font-size: 0.75rem;
363
- letter-spacing: 0.04em;
364
- color: var(--color-ink-soft);
365
- margin: var(--space-sm) 0 0;
366
- }
367
-
368
- .tile__attr strong { color: var(--color-ink); font-weight: 500; }
369
-
370
- /* Features tile (compact list) */
371
- .feat-list {
372
- list-style: none;
373
- padding: 0;
374
- margin: 0;
375
- display: grid;
376
- gap: var(--space-2xs);
377
- }
378
-
379
- .feat-list li {
380
- display: grid;
381
- grid-template-columns: 4ch 1fr;
382
- gap: var(--space-2xs);
383
- font-size: 0.875rem;
384
- color: var(--color-ink);
385
- }
386
-
387
- .feat-list .num {
388
- font-family: var(--font-mono);
389
- color: var(--color-accent);
390
- font-size: 0.8125rem;
391
- }
392
-
393
- /* FAQ tile */
394
- .faq-list {
395
- list-style: none;
396
- padding: 0;
397
- margin: 0;
398
- display: grid;
399
- gap: var(--space-2xs);
400
- }
401
-
402
- .faq-list li {
403
- font-family: var(--font-display);
404
- font-size: 1rem;
405
- font-weight: 500;
406
- color: var(--color-ink);
407
- border-block-end: 1px solid var(--color-rule);
408
- padding-block-end: var(--space-2xs);
409
- }
410
-
411
- .faq-list li:last-child { border-block-end: none; }
412
-
413
- .faq-list a {
414
- color: inherit;
415
- text-decoration: none;
416
- display: flex;
417
- justify-content: space-between;
418
- align-items: baseline;
419
- gap: var(--space-sm);
420
- transition: color var(--dur-micro) var(--ease-out);
421
- }
422
-
423
- .faq-list a::after { content: "↗"; color: var(--color-accent); font-family: var(--font-body); }
424
-
425
- .faq-list a:hover, .faq-list a:focus-visible { color: var(--color-accent); }
426
- .faq-list a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
427
-
428
- /* Final CTA strip */
429
- .cta-strip {
430
- padding: var(--space-2xl) 0;
431
- display: grid;
432
- grid-template-columns: 1fr auto;
433
- gap: var(--space-lg);
434
- align-items: center;
435
- border-block-end: 1px solid var(--color-rule);
436
- }
437
-
438
- .cta-strip__head {
439
- font-family: var(--font-display);
440
- font-size: clamp(1.75rem, 3.5vw, 2.5rem);
441
- font-weight: 600;
442
- letter-spacing: -0.015em;
443
- line-height: 1.1;
444
- margin: 0;
445
- color: var(--color-ink);
446
- }
447
-
448
- .cta-strip__head em { font-style: italic; color: var(--color-accent); }
449
-
450
- .cta-strip__cta { display: flex; gap: var(--space-sm); }
451
-
452
- /* Colophon */
453
- .colophon {
454
- padding: var(--space-md) 0;
455
- display: flex;
456
- justify-content: space-between;
457
- flex-wrap: wrap;
458
- gap: var(--space-sm);
459
- font-family: var(--font-mono);
460
- font-size: 0.75rem;
461
- letter-spacing: 0.06em;
462
- text-transform: uppercase;
463
- color: var(--color-ink-soft);
464
- }
465
-
466
- .colophon a { color: var(--color-ink-soft); text-decoration: none; transition: color var(--dur-micro) var(--ease-out); }
467
- .colophon a:hover, .colophon a:focus-visible { color: var(--color-accent); }
468
- .colophon a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 3px; }
469
-
470
- @media (max-width: 64rem) {
471
- .bento { grid-template-columns: 1fr 1fr; }
472
- .tile--stat, .tile--logos, .tile--pricing, .tile--testimonial, .tile--features, .tile--faq { grid-column: span 2; grid-row: auto; }
473
- }
474
-
475
- @media (max-width: 48rem) {
476
- .hero { grid-template-columns: 1fr; }
477
- .bento { grid-template-columns: 1fr; }
478
- .tile--stat, .tile--logos, .tile--pricing, .tile--testimonial, .tile--features, .tile--faq { grid-column: span 1; }
479
- .logos { grid-template-columns: repeat(2, 1fr); }
480
- .tiers { grid-template-columns: 1fr; }
481
- .cta-strip { grid-template-columns: 1fr; }
482
- .masthead { grid-template-columns: 1fr; gap: var(--space-2xs); text-align: center; }
483
- .masthead__nav { justify-content: center; }
484
- }
@@ -1,64 +0,0 @@
1
- # Test 08 v2 — Cohort (cohort-based courses platform)
2
-
3
- ## The prompt (verbatim, same as v1)
4
-
5
- > "Build a landing page for Cohort — the platform for cohort-based courses. Run live courses with 30 to 500 students. Built for educators, not LMS sales teams. Audience: course operators + indie creators. Tone: warm, salon-room, editorial."
6
-
7
- ## Step 0 · Pre-flight
8
-
9
- > *"No pre-flight signals — proceeding with full Hallmark stack."*
10
-
11
- ## Step 1 · Design-context gate — fully answered
12
-
13
- Audience, use, tone all explicit.
14
-
15
- ## Step 2.5 · Project memory rotation
16
-
17
- > *"Previous run on this brief picked Marquee Hero + Salon + Tier-A continuous marquee. Picking from {Stat-Led, Long Document, Workbench} for the macro this time — Stat-Led wins because the brief itself leads with a number range ('30 to 500 students'); a stat hero answers the brief literally."*
18
- >
19
- > *"Theme rotation: Salon (light · mono-display · warm-amber) → Linen (light · geometric-sans · warm-amber). Differs on display style. Accent stays warm-amber. One axis differs — passes (the rule requires at least one)."*
20
-
21
- ## Step 3 · Visual ruleset loaded
22
-
23
- `macrostructures.md` (Stat-Led), `component-cookbook.md` (H8 huge-stat hero, three-stat supporting row, testimonial-card), `typography.md` (Linen pairing — Inter Tight display + Inter Tight body), `color.md` (Linen palette — warm beige, warm-amber accent), `microinteractions.md` (default-on for marketing — counter on hero stat, no marquee), `anti-patterns.md`.
24
-
25
- ## Step 4 · Hero enrichment
26
-
27
- > *"Enrichment: none (typography only). The brief's range '30–500' is itself the visual — set it at 22 rem and the page can carry the rest typographically. No marquee (v1 had it; the rotation rule pushes us off it). No mockup (the page isn't selling a screen)."*
28
-
29
- ## Step 5 · Preview
30
-
31
- ```markdown
32
- **Hallmark · v0.6.0**
33
-
34
- - **Macrostructure** · Stat-Led
35
- - **Theme** · Linen (warm beige paper · Inter Tight geometric-sans · warm-amber accent ~3%)
36
- - **Enrichment** · none (typography only — the range "30–500" is the visual)
37
- - **Sections** · Masthead · Hero stat · Three supporting stats · Two operator testimonials · Two-tier pricing · CTA · Colophon
38
- - **Motion** · counter on hero stat (1 primitive)
39
- - **Slop test** · 38 / 38 ✓
40
- - **Diversification** · differs from v1 (Marquee Hero/Salon) on macrostructure + display style
41
- ```
42
-
43
- ## Step 6 · Macrostructure stamp
44
-
45
- ```
46
- /* Hallmark · macrostructure: Stat-Led · H8 hero knobs: stat=range, size=22rem, weight=display-light
47
- * theme: Linen · accent: warm-amber ~3% · enrichment: none (typography only — the range is the visual)
48
- * studied: no · context: explicit · v0.6.0
49
- */
50
- ```
51
-
52
- ## What changed vs v1
53
-
54
- - **Macro:** Marquee Hero → Stat-Led. v1 led with a continuous-scroll marquee of course titles + instructor names; v2 leads with the brief's own range "30–500" sized at 22 rem. The rest of the page carries supporting stats and operator testimonials.
55
- - **Theme:** Salon → Linen. Both warm, both light. Salon was IBM Plex Mono display + Cormorant body (mono-display); Linen is Inter Tight throughout (geometric-sans). Display style differs.
56
- - **Enrichment:** v1's continuous marquee → v2's typography-only hero. Stat-Led can carry the page without a moving element.
57
- - **Voice:** v1 opened with "Cohort runs live courses the way your favourite teacher would — with a date, a roster, and a room"; v2 opens with the range first, voice in the supporting copy.
58
-
59
- ## What stayed the same
60
-
61
- - Brand: Cohort, course platform, educator audience.
62
- - Two-tier pricing (Run your first cohort / Scale).
63
- - Slop test: 38 / 38 ✓.
64
- - Warm paper band.
@@ -1,116 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Cohort — live courses for educators</title>
7
- <meta name="description" content="The platform for cohort-based courses. Run live courses with 30 to 500 students. Built for educators, not LMS sales teams." />
8
- <link rel="preconnect" href="https://fonts.googleapis.com" />
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
- <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter+Tight:ital,wght@0,300;0,400;0,500;0,600;1,400&family=JetBrains+Mono:wght@400;500&display=swap" />
11
- <link rel="stylesheet" href="style.css" />
12
- </head>
13
- <body>
14
- <main class="page">
15
- <header class="masthead">
16
- <span class="masthead__brand">Cohort<span class="dot">.</span></span>
17
- <nav class="masthead__nav">
18
- <a href="#proof">Proof</a>
19
- <a href="#pricing">Pricing</a>
20
- <a href="#">Docs</a>
21
- <a href="#">Sign in</a>
22
- </nav>
23
- </header>
24
-
25
- <section class="hero">
26
- <p class="hero__eyebrow">Built for educators · not LMS sales teams</p>
27
- <p class="hero__stat">30 <span class="hero__stat-em">—</span> 500</p>
28
- <h1 class="hero__head">Live courses, sized for the <em>class</em> you actually have.</h1>
29
- <p class="hero__sub">
30
- Cohort runs courses with thirty to five hundred students at once — the size of a real
31
- classroom, the size of a real lecture, and a few sizes between. With a date, a roster, and
32
- a room.
33
- </p>
34
- <div class="hero__cta">
35
- <a class="btn btn--primary" href="#">Run your first cohort →</a>
36
- <a class="btn" href="#">90-second tour</a>
37
- </div>
38
- </section>
39
-
40
- <section class="support-stats" id="proof">
41
- <div class="s-stat">
42
- <p class="s-stat__num">186<em>.</em></p>
43
- <p class="s-stat__cap">cohorts run in 2025</p>
44
- <p class="s-stat__sub">across writing, design, engineering, healthcare and the humanities</p>
45
- </div>
46
- <div class="s-stat">
47
- <p class="s-stat__num">93<em>%</em></p>
48
- <p class="s-stat__cap">finish-rate, median</p>
49
- <p class="s-stat__sub">vs. 4–8 % on async-only platforms (industry studies, 2024)</p>
50
- </div>
51
- <div class="s-stat">
52
- <p class="s-stat__num">4.7<em>/5</em></p>
53
- <p class="s-stat__cap">operator NPS</p>
54
- <p class="s-stat__sub">among educators running their second-or-later cohort with us</p>
55
- </div>
56
- </section>
57
-
58
- <section class="tm">
59
- <article class="tm__card">
60
- <p class="tm__quote">
61
- "I was running courses on Notion + Zoom + a clipboard. Cohort folded the three of them
62
- into a single Tuesday-morning view. My ops time dropped sixty per cent the first month."
63
- </p>
64
- <p class="tm__attr">— <strong>D. Perell</strong>, writing instructor · 320 students this term</p>
65
- </article>
66
- <article class="tm__card">
67
- <p class="tm__quote">
68
- "We needed a roster, an attendance log, and a place to grade weekly assignments. Cohort
69
- gave us all three without a single Zapier. The students didn't even notice it existed."
70
- </p>
71
- <p class="tm__attr">— <strong>M. Poulin</strong>, course operator · two cohorts in parallel</p>
72
- </article>
73
- </section>
74
-
75
- <section class="pricing" id="pricing">
76
- <h2 class="pricing__head">Two plans, <em>both honest.</em></h2>
77
- <article class="tier">
78
- <p class="tier__name">First cohort</p>
79
- <p class="tier__price">$0 <span class="per">first run</span></p>
80
- <ul class="tier__list">
81
- <li>Up to 50 students</li>
82
- <li>One cohort, one term</li>
83
- <li>Live + recording, attendance, gradebook</li>
84
- <li>Stripe payouts (3 % platform fee)</li>
85
- </ul>
86
- <a class="btn" href="#">Start free</a>
87
- </article>
88
- <article class="tier tier--feature">
89
- <p class="tier__name">Operator</p>
90
- <p class="tier__price">$199 <span class="per">/ month</span></p>
91
- <ul class="tier__list">
92
- <li>Up to 500 students per cohort</li>
93
- <li>Unlimited cohorts</li>
94
- <li>Multi-instructor, TA roles, office hours</li>
95
- <li>Stripe payouts (1 % platform fee)</li>
96
- <li>Course library + alumni rooms</li>
97
- </ul>
98
- <a class="btn btn--primary" href="#">14-day trial</a>
99
- </article>
100
- </section>
101
-
102
- <section class="cta-strip">
103
- <h2 class="cta-strip__head">Pick a date. Open the roster. <em>Teach Tuesday.</em></h2>
104
- <div class="cta-strip__cta">
105
- <a class="btn btn--primary" href="#">Run your first cohort →</a>
106
- <a class="btn" href="#">Talk to us</a>
107
- </div>
108
- </section>
109
-
110
- <footer class="colophon">
111
- <span>Cohort · Lisbon &amp; Brooklyn · est. 2024</span>
112
- <span><a href="#">docs</a> · <a href="#">changelog</a> · <a href="#">support</a> · <a href="#">community</a></span>
113
- </footer>
114
- </main>
115
- </body>
116
- </html>