create-ailk 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +112 -10
  2. package/component-catalog.json +798 -49
  3. package/component-catalog.md +9 -6
  4. package/dist/add-module.d.ts +20 -0
  5. package/dist/add-module.js +43 -7
  6. package/dist/add-route.d.ts +56 -0
  7. package/dist/add-route.js +286 -0
  8. package/dist/apply-design-md.d.ts +7 -0
  9. package/dist/apply-design-md.js +50 -0
  10. package/dist/apply-design.d.ts +64 -0
  11. package/dist/apply-design.js +273 -0
  12. package/dist/claude-md.d.ts +111 -0
  13. package/dist/claude-md.js +334 -0
  14. package/dist/cli.js +114 -28
  15. package/dist/derive-architecture.js +41 -36
  16. package/dist/design-compile.d.ts +71 -0
  17. package/dist/design-compile.js +98 -0
  18. package/dist/design-package.d.ts +83 -0
  19. package/dist/design-package.js +468 -0
  20. package/dist/design-presets.d.ts +86 -0
  21. package/dist/design-presets.js +642 -0
  22. package/dist/design-scaffold.d.ts +76 -0
  23. package/dist/design-scaffold.js +220 -0
  24. package/dist/index.d.ts +2 -1
  25. package/dist/index.js +4 -1
  26. package/dist/legacy-nav-renderers.d.ts +45 -0
  27. package/dist/legacy-nav-renderers.js +545 -0
  28. package/dist/lib/auth-secret-file.d.ts +19 -0
  29. package/dist/lib/auth-secret-file.js +112 -0
  30. package/dist/lib/design-checks.d.ts +78 -0
  31. package/dist/lib/design-checks.js +174 -0
  32. package/dist/lib/extract-module-bundle.js +5 -1
  33. package/dist/lib/license-key-files.d.ts +9 -0
  34. package/dist/lib/license-key-files.js +2 -2
  35. package/dist/lib/module-license-gate.d.ts +89 -0
  36. package/dist/lib/module-license-gate.js +171 -12
  37. package/dist/lib/module-tier.d.ts +45 -16
  38. package/dist/lib/module-tier.js +76 -0
  39. package/dist/lib/pro-callout.js +10 -2
  40. package/dist/lib/render-verdict.d.ts +52 -0
  41. package/dist/lib/render-verdict.js +77 -0
  42. package/dist/lib/scaffold-render-sweep.d.ts +105 -0
  43. package/dist/lib/scaffold-render-sweep.js +236 -0
  44. package/dist/module-architecture.d.ts +19 -16
  45. package/dist/module-architecture.js +64 -21
  46. package/dist/parse-args.d.ts +88 -10
  47. package/dist/parse-args.js +272 -21
  48. package/dist/programmatic.d.ts +66 -12
  49. package/dist/programmatic.js +361 -34
  50. package/dist/site-chrome.d.ts +19 -9
  51. package/dist/site-chrome.js +23 -13
  52. package/dist/site-manifest.d.ts +25 -0
  53. package/dist/site-manifest.js +254 -0
  54. package/dist/site-roster.d.ts +41 -0
  55. package/dist/site-roster.js +149 -11
  56. package/dist/starter-grid.d.ts +232 -0
  57. package/dist/starter-grid.js +545 -0
  58. package/dist/surfaces.d.ts +41 -9
  59. package/dist/surfaces.js +268 -92
  60. package/dist/template-manifest.d.ts +65 -29
  61. package/dist/template-manifest.js +161 -382
  62. package/dist/template-names.d.ts +14 -12
  63. package/dist/template-names.js +13 -17
  64. package/package.json +5 -4
  65. package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
  66. package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
  67. package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
  68. package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
  69. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +0 -1
  70. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +0 -1
  71. package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
  72. package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
  73. package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
  74. package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
  75. package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
  76. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +15 -0
  77. package/site-templates/_base/content/en/UseCase/persona-1.mdx +70 -0
  78. package/site-templates/_base/content/en/UseCase/persona-2.mdx +70 -0
  79. package/site-templates/_base/content/en/UseCase/persona-3.mdx +70 -0
  80. package/site-templates/{minimalism-site/TEMPLATE-MANIFEST.json → aliases/minimalism-site.TEMPLATE-MANIFEST.json} +72 -40
  81. package/site-templates/designs/minimalism/DESIGN.md +98 -6
  82. package/site-templates/designs/minimalism/sample/README.md +48 -0
  83. package/site-templates/designs/standard/DESIGN.md +103 -6
  84. package/site-templates/marketing-site/DESIGN.md +103 -6
  85. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +144 -47
  86. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +82 -41
  87. package/site-templates/marketing-site-free/DESIGN.md +103 -6
  88. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +150 -48
  89. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +114 -67
  90. package/site-templates/marketing-site-free/ailk-template.json +1 -1
  91. package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
  92. package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
  93. package/site-templates/saas-product/DESIGN.md +103 -6
  94. package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
  95. package/site-templates/{simple-service → shapes/local-business-service}/TEMPLATE-MANIFEST.json +210 -81
  96. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +356 -0
  97. package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
  98. package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
  99. package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
  100. package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  101. package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
  102. package/site-templates/{minimalism-site → shapes/local-business-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +7 -8
  103. package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
  104. package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
  105. package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
  106. package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
  107. package/site-templates/shapes/local-business-service/provenance.json +4 -0
  108. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +471 -0
  109. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +354 -0
  110. package/site-templates/shapes/organization-service/ailk-template.json +10 -0
  111. package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
  112. package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
  113. package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  114. package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
  115. package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  116. package/site-templates/{minimalism-site → shapes/organization-service}/content/en/ServicesList/services.mdx +3 -4
  117. package/site-templates/shapes/organization-service/provenance.json +4 -0
  118. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +478 -0
  119. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +353 -0
  120. package/site-templates/shapes/person-service/ailk-template.json +10 -0
  121. package/site-templates/shapes/person-service/content/_site.mdx +85 -0
  122. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
  123. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
  124. package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  125. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +171 -0
  126. package/site-templates/{simple-service → shapes/person-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +10 -11
  127. package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
  128. package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
  129. package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
  130. package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
  131. package/site-templates/shapes/person-service/provenance.json +4 -0
  132. package/templates/.claude/rules/architecture.md +7 -0
  133. package/templates/.claude/skills/README.md +5 -3
  134. package/templates/.claude/skills/add-auth/references/env-vars.md +22 -15
  135. package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +3 -2
  136. package/templates/.claude/skills/add-page/SKILL.md +241 -238
  137. package/templates/.claude/skills/add-page/references/page-types.md +85 -72
  138. package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
  139. package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
  140. package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
  141. package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
  142. package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
  143. package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
  144. package/templates/.claude/skills/check-site/SKILL.md +23 -0
  145. package/templates/.claude/skills/fill-page/SKILL.md +26 -7
  146. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
  147. package/templates/.claude/skills/setup-database/SKILL.md +156 -0
  148. package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
  149. package/templates/.claude/skills/setup-deploy/SKILL.md +64 -32
  150. package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +44 -36
  151. package/templates/.claude/skills/setup-deploy/references/runbook-template.md +58 -102
  152. package/templates/.claude/skills/update-page/SKILL.md +117 -0
  153. package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
  154. package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
  155. package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
  156. package/templates/.github/workflows/ci.yml +4 -0
  157. package/templates/.prettierignore +1 -0
  158. package/templates/CLAUDE.md +146 -103
  159. package/templates/DESIGN.md +103 -6
  160. package/templates/README.md +63 -43
  161. package/templates/apps/api/.env.example +2 -1
  162. package/templates/apps/api/CLAUDE.md +3 -2
  163. package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
  164. package/templates/apps/api/src/__tests__/server.test.ts +116 -0
  165. package/templates/apps/api/src/config/__tests__/index.test.ts +115 -14
  166. package/templates/apps/api/src/config/index.ts +35 -16
  167. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
  168. package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
  169. package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
  170. package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
  171. package/templates/apps/api/src/lib/stripe.ts +9 -0
  172. package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
  173. package/templates/apps/api/src/middleware/auth.ts +54 -0
  174. package/templates/apps/api/src/openapi/spec.ts +63 -12
  175. package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
  176. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
  177. package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
  178. package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
  179. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
  180. package/templates/apps/api/src/routes/leads/index.ts +46 -1
  181. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
  182. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
  183. package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
  184. package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
  185. package/templates/apps/api/src/server.ts +35 -0
  186. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
  187. package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
  188. package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
  189. package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
  190. package/templates/apps/api/src/services/lead-routing.ts +140 -30
  191. package/templates/apps/api/src/services/leads-inbox.ts +48 -11
  192. package/templates/apps/api/src/services/revalidation.ts +60 -15
  193. package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
  194. package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
  195. package/templates/apps/mcp/src/tools/create_project.ts +21 -6
  196. package/templates/apps/mcp/src/tools/purchase.ts +4 -2
  197. package/templates/apps/web/.env.example +13 -0
  198. package/templates/apps/web/CLAUDE.md +22 -28
  199. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
  200. package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
  201. package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
  202. package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
  203. package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
  204. package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
  205. package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
  206. package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
  207. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +14 -6
  208. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +10 -9
  209. package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
  210. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
  211. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +227 -84
  212. package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
  213. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
  214. package/templates/apps/web/app/[locale]/contact/page.tsx +105 -15
  215. package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
  216. package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
  217. package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
  218. package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +21 -5
  219. package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
  220. package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
  221. package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
  222. package/templates/apps/web/app/[locale]/layout.tsx +65 -17
  223. package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
  224. package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
  225. package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
  226. package/templates/apps/web/app/[locale]/newsletter/page.tsx +106 -14
  227. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
  228. package/templates/apps/web/app/[locale]/{book-a-call → portfolio}/page.tsx +12 -13
  229. package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
  230. package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
  231. package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
  232. package/templates/apps/web/app/api/revalidate/route.ts +78 -36
  233. package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
  234. package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
  235. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
  236. package/templates/apps/web/lib/locale-guard.ts +18 -0
  237. package/templates/apps/web/lib/meet-placeholder.ts +5 -0
  238. package/templates/apps/web/lib/nav-config.ts +50 -37
  239. package/templates/apps/web/lib/site-brand.tsx +13 -9
  240. package/templates/apps/web/lib/site-identity.ts +14 -0
  241. package/templates/apps/web/lib/site-logo.tsx +36 -0
  242. package/templates/apps/web/lib/site-theme.ts +46 -26
  243. package/templates/apps/web/messages/en.json +45 -5
  244. package/templates/apps/web/middleware.ts +28 -4
  245. package/templates/content/_site.mdx +4 -2
  246. package/templates/content/en/BlogList/blog.mdx +37 -16
  247. package/templates/content/en/BookCall/book-a-call.mdx +80 -0
  248. package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
  249. package/templates/content/en/BookCall/onsite-service.mdx +56 -0
  250. package/templates/content/en/BookCall/start-project.mdx +56 -0
  251. package/templates/content/en/ContactPage/contact.mdx +43 -34
  252. package/templates/content/en/HomePage/home.mdx +10 -22
  253. package/templates/content/en/LandingPage/meet.mdx +59 -0
  254. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -1
  255. package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
  256. package/templates/database/CHANGELOG.md +14 -0
  257. package/templates/database/package.json +1 -1
  258. package/templates/package.json +2 -1
  259. package/templates/tools/check-claude-md.ts +128 -0
  260. package/versions.json +33 -33
  261. package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -53
  262. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +0 -23
  263. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +0 -23
  264. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +0 -23
  265. package/site-templates/minimalism-site/DESIGN.md +0 -162
  266. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -470
  267. package/site-templates/minimalism-site/ailk-template.json +0 -23
  268. package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
  269. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -53
  270. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
  271. package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
  272. package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
  273. package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
  274. package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
  275. package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
  276. package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
  277. package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
  278. package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
  279. package/site-templates/minimalism-site/provenance.json +0 -4
  280. package/site-templates/simple-service/DESIGN.md +0 -162
  281. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -333
  282. package/site-templates/simple-service/ailk-template.json +0 -11
  283. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +0 -53
  284. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -32
  285. package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
  286. package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
  287. package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
  288. package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
  289. package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
  290. package/site-templates/simple-service/provenance.json +0 -4
  291. package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
  292. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -211
  293. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +0 -96
  294. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
  295. package/templates/content/en/SoftwareProduct/product.mdx +0 -175
  296. /package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +0 -0
  297. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
  298. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
  299. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
  300. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
  301. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
  302. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
  303. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
  304. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
  305. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
  306. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
  307. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
  308. /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/first-engagement.mdx +0 -0
  309. /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/second-engagement.mdx +0 -0
  310. /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/third-engagement.mdx +0 -0
@@ -4,6 +4,7 @@
4
4
  "categories": [
5
5
  "accounting",
6
6
  "legal",
7
+ "consulting",
7
8
  "hvac",
8
9
  "roofing",
9
10
  "plumbing",
@@ -16,7 +17,7 @@
16
17
  ],
17
18
  "shape": "organization-product",
18
19
  "design": "standard",
19
- "generatedHash": "cdad46661249780a6423cfa3e259f579d919bfeee48b9138aed13812f7c685d6",
20
+ "generatedHash": "bc9ceb909dc92d2f442fd5cadddc073363a7be19e780f36e26b703d99c6e680a",
20
21
  "layout": {
21
22
  "nav": "full",
22
23
  "footer": "columns",
@@ -132,27 +133,47 @@
132
133
  ]
133
134
  },
134
135
  {
135
- "route": "/software",
136
- "kind": "route",
137
- "pageType": null,
138
- "schema": null,
136
+ "route": "/features",
137
+ "kind": "page",
138
+ "pageType": "FeaturesList",
139
+ "schema": "FeaturesList",
139
140
  "shell": "MarketingShell",
140
141
  "chrome": "on",
141
- "sections": []
142
+ "sections": [
143
+ {
144
+ "type": "hero",
145
+ "component": "Hero"
146
+ },
147
+ {
148
+ "type": "items",
149
+ "component": "Items",
150
+ "options": {
151
+ "columns": 3
152
+ }
153
+ },
154
+ {
155
+ "type": "cta",
156
+ "component": "CTA"
157
+ }
158
+ ]
142
159
  },
143
160
  {
144
- "route": "/software/[slug]",
161
+ "route": "/features/[slug]",
145
162
  "kind": "page",
146
- "contentDir": "content/en/SoftwareProduct",
147
- "seeds": ["content/en/SoftwareProduct/product.mdx"],
148
- "pageType": "SoftwareProduct",
149
- "schema": "SoftwareProduct",
163
+ "contentDir": "content/en/Feature",
164
+ "seeds": [
165
+ "content/en/Feature/feature-1.mdx",
166
+ "content/en/Feature/feature-2.mdx",
167
+ "content/en/Feature/feature-3.mdx"
168
+ ],
169
+ "pageType": "Feature",
170
+ "schema": "Feature",
150
171
  "shell": "MarketingShell",
151
172
  "chrome": "on",
152
173
  "sections": []
153
174
  },
154
175
  {
155
- "route": "/use-cases",
176
+ "route": "/for",
156
177
  "kind": "page",
157
178
  "pageType": "UseCasesList",
158
179
  "schema": "UseCasesList",
@@ -192,13 +213,13 @@
192
213
  ]
193
214
  },
194
215
  {
195
- "route": "/use-cases/[slug]",
216
+ "route": "/for/[slug]",
196
217
  "kind": "page",
197
218
  "contentDir": "content/en/UseCase",
198
219
  "seeds": [
199
- "content/en/UseCase/first-use-case.mdx",
200
- "content/en/UseCase/second-use-case.mdx",
201
- "content/en/UseCase/third-use-case.mdx"
220
+ "content/en/UseCase/persona-1.mdx",
221
+ "content/en/UseCase/persona-2.mdx",
222
+ "content/en/UseCase/persona-3.mdx"
202
223
  ],
203
224
  "pageType": "UseCase",
204
225
  "schema": "UseCase",
@@ -316,15 +337,11 @@
316
337
  "component": "Hero"
317
338
  },
318
339
  {
319
- "type": "logoCloud",
320
- "component": "LogoCloud",
340
+ "type": "items",
341
+ "component": "Items",
321
342
  "options": {
322
- "layout": "inline"
343
+ "columns": 2
323
344
  }
324
- },
325
- {
326
- "type": "testimonials",
327
- "component": "Testimonials"
328
345
  }
329
346
  ]
330
347
  },
@@ -368,27 +385,6 @@
368
385
  }
369
386
  ]
370
387
  },
371
- {
372
- "route": "/book-a-call",
373
- "kind": "page",
374
- "pageType": "BookCall",
375
- "schema": "BookCall",
376
- "shell": "MarketingShell",
377
- "chrome": "on",
378
- "sections": [
379
- {
380
- "type": "hero",
381
- "component": "Hero"
382
- },
383
- {
384
- "type": "items",
385
- "component": "Items",
386
- "options": {
387
- "columns": 3
388
- }
389
- }
390
- ]
391
- },
392
388
  {
393
389
  "route": "/sign-in",
394
390
  "kind": "route",
@@ -512,6 +508,100 @@
512
508
  "chrome": "on",
513
509
  "sections": []
514
510
  },
511
+ {
512
+ "route": "/reports",
513
+ "kind": "page",
514
+ "pageType": "ReportsList",
515
+ "schema": "ReportsList",
516
+ "shell": "MarketingShell",
517
+ "chrome": "on",
518
+ "sections": [
519
+ {
520
+ "type": "hero",
521
+ "component": "Hero"
522
+ },
523
+ {
524
+ "type": "cta",
525
+ "component": "CTA"
526
+ }
527
+ ]
528
+ },
529
+ {
530
+ "route": "/referral",
531
+ "kind": "page",
532
+ "pageType": "LandingPage",
533
+ "schema": "WebPage",
534
+ "shell": "MarketingShell",
535
+ "chrome": "on",
536
+ "sections": [
537
+ {
538
+ "type": "hero",
539
+ "component": "Hero"
540
+ },
541
+ {
542
+ "type": "stair-steps",
543
+ "component": "StairSteps"
544
+ },
545
+ {
546
+ "type": "cta",
547
+ "component": "CTA"
548
+ }
549
+ ]
550
+ },
551
+ {
552
+ "route": "/portfolio",
553
+ "kind": "page",
554
+ "pageType": "PortfolioList",
555
+ "schema": "PortfolioList",
556
+ "shell": "MarketingShell",
557
+ "chrome": "on",
558
+ "sections": [
559
+ {
560
+ "type": "hero",
561
+ "component": "Hero",
562
+ "options": {
563
+ "gapBelow": "tight",
564
+ "size": "display",
565
+ "surface": "wash-secondary"
566
+ }
567
+ },
568
+ {
569
+ "type": "items",
570
+ "component": "Items",
571
+ "options": {
572
+ "surface": "none",
573
+ "columns": 2
574
+ }
575
+ },
576
+ {
577
+ "type": "cta",
578
+ "component": "CTA"
579
+ },
580
+ {
581
+ "type": "faq",
582
+ "component": "FAQ",
583
+ "options": {
584
+ "surface": "gray-100"
585
+ }
586
+ }
587
+ ]
588
+ },
589
+ {
590
+ "route": "/portfolio/[slug]",
591
+ "kind": "page",
592
+ "contentDir": "content/en/PortfolioItem",
593
+ "seeds": [
594
+ "content/en/PortfolioItem/sample-four.mdx",
595
+ "content/en/PortfolioItem/sample-one.mdx",
596
+ "content/en/PortfolioItem/sample-three.mdx",
597
+ "content/en/PortfolioItem/sample-two.mdx"
598
+ ],
599
+ "pageType": "PortfolioItem",
600
+ "schema": "PortfolioItem",
601
+ "shell": "MarketingShell",
602
+ "chrome": "on",
603
+ "sections": []
604
+ },
515
605
  {
516
606
  "route": "/blog",
517
607
  "kind": "page",
@@ -595,9 +685,16 @@
595
685
  },
596
686
  {
597
687
  "route": "/reports/[slug]",
598
- "kind": "route",
599
- "pageType": null,
600
- "schema": null,
688
+ "kind": "page",
689
+ "contentDir": "content/en/ReportPage",
690
+ "seeds": [
691
+ "content/en/ReportPage/annual-letter-2024.mdx",
692
+ "content/en/ReportPage/field-notes-2023.mdx",
693
+ "content/en/ReportPage/platform-shift-2025.mdx",
694
+ "content/en/ReportPage/state-of-the-market-2026.mdx"
695
+ ],
696
+ "pageType": "ReportPage",
697
+ "schema": "ReportPage",
601
698
  "shell": "MarketingShell",
602
699
  "chrome": "on",
603
700
  "sections": []
@@ -92,40 +92,45 @@ The base rows come first, exactly as the base layer and the always-copied overla
92
92
 
93
93
  <!-- generated:end -->
94
94
 
95
- `/use-cases` (a UseCasesList page composing sections — operator ruling 2026-09-23; a list of the three use cases since #6658 D4):
95
+ `/for` (a UseCasesList page composing sections — operator ruling 2026-09-23; a list of the three use cases since #6658 D4):
96
96
 
97
- <!-- generated:begin page=/use-cases -->
97
+ <!-- generated:begin page=/for -->
98
98
 
99
99
  | # | Section | Component | Copy (first line) |
100
100
  | --- | -------------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
101
- | 1 | `hero` (eyebrow "Use cases" · 2 CTAs) | `Hero` | {Use cases: who your product is for} |
102
- | 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product to do} |
101
+ | 1 | `hero` (eyebrow "Customers" · 2 CTAs) | `Hero` | {Customers: who your product or service is for} |
102
+ | 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product or service to do} |
103
103
  | 3 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
104
104
  | 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
105
- | 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product in time amount or less} |
105
+ | 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product or service in time amount or less} |
106
106
  | 6 | `faq` (accordion · items ×5 · 1 CTA · initialOpen first) | `FAQ` | FAQs |
107
107
 
108
108
  <!-- generated:end -->
109
109
 
110
- `/use-cases/[slug]` (#6658 D4):
110
+ `/for/[slug]` (#6658 D4):
111
111
 
112
- <!-- generated:begin page=/use-cases/[slug] -->
112
+ <!-- generated:begin page=/for/[slug] -->
113
113
 
114
- _Detail route over `content/en/UseCase/` — 3 seed pages: `first-use-case.mdx`, `second-use-case.mdx`, `third-use-case.mdx`._
114
+ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `persona-2.mdx`, `persona-3.mdx`._
115
115
  <!-- generated:end -->
116
116
 
117
117
  `/software` (code route — the product listing, core since #6658):
118
118
 
119
- <!-- generated:begin page=/software -->
119
+ <!-- generated:begin page=/features -->
120
+
121
+ | # | Section | Component | Copy (first line) |
122
+ | --- | ------------------------------------------------- | --------- | ----------------------------------------------- |
123
+ | 1 | `hero` (eyebrow "Features" · 2 CTAs) | `Hero` | {Features: what your product does} |
124
+ | 2 | `items` (columns=3 · items ×3) | `Items` | {Everything your product does for the customer} |
125
+ | 3 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product in time amount or less} |
120
126
 
121
- _Code route — no content, no sections._
122
127
  <!-- generated:end -->
123
128
 
124
- `/software/[slug]` (the product's own page, `/software/product` — #6658 D3):
129
+ `/features/[slug]` (one page per feature — #6721, reversing #6658 D3's single product page):
125
130
 
126
- <!-- generated:begin page=/software/[slug] -->
131
+ <!-- generated:begin page=/features/[slug] -->
127
132
 
128
- _Detail route over `content/en/SoftwareProduct/` — 1 seed page: `product.mdx`._
133
+ _Detail route over `content/en/Feature/` — 3 seed pages: `feature-1.mdx`, `feature-2.mdx`, `feature-3.mdx`._
129
134
  <!-- generated:end -->
130
135
 
131
136
  `/pricing`:
@@ -172,15 +177,14 @@ _Detail route over `content/en/SoftwareProduct/` — 1 seed page: `product.mdx`.
172
177
 
173
178
  <!-- generated:begin page=/contact -->
174
179
 
175
- | # | Section | Component | Copy (first line) |
176
- | --- | ----------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
177
- | 1 | `hero` (split · eyebrow "Book a Demo" · checklist ×3) | `Hero` | {Ready to achieve a valuable outcome?} |
178
- | 2 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
179
- | 3 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
180
+ | # | Section | Component | Copy (first line) |
181
+ | --- | --------------------------------------------------------- | --------- | ----------------------------------------- |
182
+ | 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free |
183
+ | 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
180
184
 
181
185
  <!-- generated:end -->
182
186
 
183
- `/glossary`, `/newsletter`, `/book-a-call` (#6658 D5 — every starter carries them):
187
+ `/glossary`, `/newsletter` (#6658 D5 — every starter carries them). `/book-a-call` is retired (#6897 D10); this template's `scheduling` module serves its own live `/meet` and `/meet/[slug]` pages instead.
184
188
 
185
189
  <!-- generated:begin page=/glossary -->
186
190
 
@@ -201,15 +205,6 @@ _Detail route over `content/en/SoftwareProduct/` — 1 seed page: `product.mdx`.
201
205
 
202
206
  <!-- generated:end -->
203
207
 
204
- <!-- generated:begin page=/book-a-call -->
205
-
206
- | # | Section | Component | Copy (first line) |
207
- | --- | -------------------------------------- | --------- | ------------------------------------------ |
208
- | 1 | `hero` (eyebrow "Book a call" · 1 CTA) | `Hero` | {Book a call: what a visitor gets from it} |
209
- | 2 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
210
-
211
- <!-- generated:end -->
212
-
213
208
  `/sign-in`:
214
209
 
215
210
  <!-- generated:begin page=/sign-in -->
@@ -377,7 +372,7 @@ _Code route — no content, no sections._
377
372
 
378
373
  <!-- generated:begin page=/reports/[slug] -->
379
374
 
380
- _Code route — no content, no sections._
375
+ _Detail route over `content/en/ReportPage/` — 4 seed pages: `annual-letter-2024.mdx`, `field-notes-2023.mdx`, `platform-shift-2025.mdx`, `state-of-the-market-2026.mdx`._
381
376
  <!-- generated:end -->
382
377
 
383
378
  ### `/projects`, `/projects/<slug>`, `/projects/apply` — CollectionPage / WebPage · schema `ProjectsList` / `Project` · signal-collectors
@@ -412,6 +407,49 @@ Authored per form (#3960): `contact` (if the Pro contact form redirects), `newsl
412
407
  _Detail route over `content/en/ThankYouPage/` — 3 seed pages: `apply.mdx`, `contact.mdx`, `newsletter.mdx`._
413
408
  <!-- generated:end -->
414
409
 
410
+ ### `/reports` — ReportsList hub · schema `CollectionPage` · signal-collectors
411
+
412
+ Spec 6892 D2/D3 — a signal-collectors module sample, self-seeded alongside its four `ReportPage` spokes at `/reports/<slug>` (below). Its seed carries `hero` and `cta`; the card grid is a generated `reports-list` section the route appends from the module's own seeds (never hand-authored).
413
+
414
+ <!-- generated:begin page=/reports -->
415
+
416
+ | # | Section | Component | Copy (first line) |
417
+ | --- | ------------------------------------- | --------- | ------------------------------------------- |
418
+ | 1 | `hero` (centered · eyebrow "Reports") | `Hero` | Research on {your field}, published in full |
419
+ | 2 | `cta` (minimal · 1 CTA) | `CTA` | Want the next one as it lands? |
420
+
421
+ <!-- generated:end -->
422
+
423
+ ### `/referral` — flow landing page · schema `LandingPage` · signal-collectors
424
+
425
+ Spec 6892 D3 — a signal-collectors module sample: the referral magnet, whose CTA opens the `referral` flow at `/flows/referral/start`.
426
+
427
+ <!-- generated:begin page=/referral -->
428
+
429
+ | # | Section | Component | Copy (first line) |
430
+ | --- | -------------------------------------------------------------- | ------------ | ---------------------------------------- |
431
+ | 1 | `hero` (centered · eyebrow "Referrals" · checklist ×3 · 1 CTA) | `Hero` | Know someone who should be on this list? |
432
+ | 2 | `stair-steps` (tiles ×3) | `StairSteps` | Three steps, about a minute |
433
+ | 3 | `cta` (minimal · 1 CTA) | `CTA` | Make an introduction |
434
+
435
+ <!-- generated:end -->
436
+
437
+ <!-- generated:begin page=/portfolio -->
438
+
439
+ | # | Section | Component | Copy (first line) |
440
+ | --- | ---------------------------------------------------------------------------------------------------------- | --------- | --------------------------------------- |
441
+ | 1 | `hero` (default · gapBelow=tight · size=display · surface=wash-secondary · eyebrow "{Portfolio}" · 2 CTAs) | `Hero` | {The work, before and after.} |
442
+ | 2 | `items` (tile · surface=none · columns=2 · items ×4) | `Items` | |
443
+ | 3 | `cta` (beam · chips ×3 · 2 CTAs) | `CTA` | {Is your site the before or the after?} |
444
+ | 4 | `faq` (centered · surface=gray-100 · accordion · items ×3 · initialOpen first) | `FAQ` | Frequently Asked Questions |
445
+
446
+ <!-- generated:end -->
447
+
448
+ <!-- generated:begin page=/portfolio/[slug] -->
449
+
450
+ _Detail route over `content/en/PortfolioItem/` — 4 seed pages: `sample-four.mdx`, `sample-one.mdx`, `sample-three.mdx`, `sample-two.mdx`._
451
+ <!-- generated:end -->
452
+
415
453
  ## 2a. State and persistence — Pro delta
416
454
 
417
455
  Everything in the Free manifest § 2a applies. Pro adds:
@@ -436,22 +474,21 @@ Everything in the Free manifest § 2a applies. Pro adds:
436
474
  ```
437
475
  marketing-site:
438
476
  requires: [marketing, docs-blog, scheduling, signal-collectors]
439
- categories: [accounting, legal, hvac, roofing, plumbing, electrical, landscaping, auto-repair, real-estate, technology, medical-specialty]
477
+ categories: [accounting, legal, consulting, hvac, roofing, plumbing, electrical, landscaping, auto-repair, real-estate, technology, medical-specialty]
440
478
  shape: organization-product
441
479
  design: standard
442
480
  roster:
443
481
  - { route: "/", kind: page, content: ["content/en/HomePage/home.mdx"] }
444
- - { route: "/software", kind: route }
445
- - { route: "/software/[slug]", kind: page, contentDir: "content/en/SoftwareProduct" }
446
- - { route: "/use-cases", kind: page, content: ["content/en/UseCasesList/use-cases.mdx"] }
447
- - { route: "/use-cases/[slug]", kind: page, contentDir: "content/en/UseCase" }
482
+ - { route: "/features", kind: page, content: ["content/en/FeaturesList/features.mdx"] }
483
+ - { route: "/features/[slug]", kind: page, contentDir: "content/en/Feature" }
484
+ - { route: "/for", kind: page, content: ["content/en/UseCasesList/for.mdx"] }
485
+ - { route: "/for/[slug]", kind: page, contentDir: "content/en/UseCase" }
448
486
  - { route: "/pricing", kind: page, content: ["content/en/Pricing/pricing.mdx"] }
449
487
  - { route: "/about", kind: page, content: ["content/en/AboutPage/about.mdx"] }
450
488
  - { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
451
489
  - { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
452
490
  - { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
453
491
  - { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
454
- - { route: "/book-a-call", kind: page, content: ["content/en/BookCall/book-call.mdx"] }
455
492
  - { route: "/sign-in", kind: route }
456
493
  - { route: "/sign-up", kind: route }
457
494
  - { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
@@ -460,6 +497,10 @@ marketing-site:
460
497
  - { route: "/projects", kind: page, content: ["content/en/ProjectsList/projects.mdx"] }
461
498
  - { route: "/projects/[slug]", kind: page, contentDir: "content/en/Project" }
462
499
  - { route: "/thanks/[slug]", kind: page, contentDir: "content/en/ThankYouPage" }
500
+ - { route: "/reports", kind: page, content: ["content/en/ReportsList/reports.mdx"] }
501
+ - { route: "/referral", kind: page, content: ["content/en/LandingPage/referral.mdx"] }
502
+ - { route: "/portfolio", kind: page, content: ["content/en/PortfolioList/portfolio.mdx"] }
503
+ - { route: "/portfolio/[slug]", kind: page, contentDir: "content/en/PortfolioItem" }
463
504
  - { route: "/blog", kind: page, content: ["apps/web/content/en/blog/index.mdx", "apps/web/content/en/blog/01-8-things-that-prove-coding-skills-are-directly-linked-to-successfully-assembling-ikea-furniture.mdx", "apps/web/content/en/blog/02-5-ways-to-guarantee-your-startup-goes-nowhere-fast.mdx", "apps/web/content/en/blog/03-10-ideas-that-will-guarantee-1000x-growth.mdx", "apps/web/content/en/blog/04-7-keys-to-saas-success-the-elite-doesnt-want-you-to-know.mdx", "apps/web/content/en/blog/launching-ailk.mdx"] }
464
505
  - { route: "/docs", kind: page, content: ["apps/web/content/en/docs/getting-started.mdx", "apps/web/content/en/docs/configure.mdx", "apps/web/content/en/docs/deploy.mdx"] }
465
506
  - { route: "/meet", kind: route }
@@ -469,7 +510,7 @@ marketing-site:
469
510
  - { route: "/flows/[slug]", kind: route }
470
511
  - { route: "/flows/[slug]/start", kind: route }
471
512
  - { route: "/flows/[slug]/results/[payload]", kind: route }
472
- - { route: "/reports/[slug]", kind: route }
513
+ - { route: "/reports/[slug]", kind: page, contentDir: "content/en/ReportPage" }
473
514
  ```
474
515
 
475
516
  <!-- generated:end -->
@@ -491,11 +532,11 @@ Every component the roster rows' seed content composes today (generated):
491
532
 
492
533
  <!-- generated:begin inventory -->
493
534
 
494
- | Tier | Used by this template |
495
- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
496
- | Shell | `MarketingShell` |
497
- | Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
498
- | Sections | `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Newsletter`, `Pricing`, `Team`, `Testimonials` |
535
+ | Tier | Used by this template |
536
+ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
537
+ | Shell | `MarketingShell` |
538
+ | Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
539
+ | Sections | `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Newsletter`, `Pricing`, `StairSteps`, `Team`, `Testimonials` |
499
540
 
500
541
  <!-- generated:end -->
501
542
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Standard
3
- description: The standard design — the black-on-white foundation any shape wears by default: full navigation, a multi-column footer, the document-scroll home.
3
+ description: "The standard design — the black-on-white foundation any shape wears by default: full navigation, a multi-column footer, the document-scroll home."
4
4
  colors:
5
5
  bg: "#ffffff"
6
6
  fg: "#000000"
@@ -15,6 +15,19 @@ colors:
15
15
  fg-dark: "#ffffff"
16
16
  border-dark: "#ffffff"
17
17
  brand-dark: "#ffffff"
18
+ text-muted-dark: "#cccccc"
19
+ treatments:
20
+ corners: square
21
+ eyebrowCase: sentence
22
+ placeholders: fill
23
+ checkmarks: plain
24
+ layout:
25
+ nav: full
26
+ footer: columns
27
+ announcementBanner: false
28
+ home: default
29
+ copy:
30
+ density: standard
18
31
  typography:
19
32
  display:
20
33
  fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
@@ -69,9 +82,12 @@ spacing:
69
82
  stays on-system.
70
83
  Edit the canonical file, never a copy — a test holds every copy to it.
71
84
 
72
- The tokens above describe what the site RENDERS today. Colours come from
73
- content/_site.mdx (`theme.colors`); type, radius and spacing are platform
74
- defaults a site cannot override yet — see "Where this is heading" below.
85
+ The tokens above describe what the site RENDERS today. The design's own
86
+ colours and shape knobs live in content/_site.mdx `theme:`, which
87
+ `create-ailk apply-design` replaces wholesale; the owner's brand colours and
88
+ fonts live beside it in `brand.colors` and `brand.fonts`, which applying a
89
+ design never rewrites. Radius and spacing are platform defaults a site
90
+ cannot override yet — see "Where this is heading" below.
75
91
  -->
76
92
 
77
93
  # Standard
@@ -84,6 +100,27 @@ Every page is composed from the AI Launch Kit component library (`@working-theor
84
100
 
85
101
  ## Colors
86
102
 
103
+ <!-- generated:begin colors -->
104
+
105
+ | Key | Value | Compiles to |
106
+ | ------------------- | --------- | -------------------------------------------------------------------------------------------------------------- |
107
+ | `bg` | `#ffffff` | `light.bg` |
108
+ | `fg` | `#000000` | `light.text` |
109
+ | `surface` | `#ffffff` | `light.surface` |
110
+ | `surface-secondary` | `#ffffff` | `light.bgMuted` |
111
+ | `border` | `#000000` | `light.border` |
112
+ | `text-muted` | `#333333` | `light.textMuted` |
113
+ | `brand` | `#000000` | `light.primary` |
114
+ | `fg-on-brand` | `#ffffff` | `light.primaryFg` |
115
+ | `accent` | `#000000` | `light.accent` |
116
+ | `bg-dark` | `#000000` | `dark.bg`, `dark.bgMuted` (fallback of L1), `dark.surface` (fallback of L2), `dark.primaryFg` (fallback of L4) |
117
+ | `fg-dark` | `#ffffff` | `dark.text` |
118
+ | `border-dark` | `#ffffff` | `dark.border` |
119
+ | `brand-dark` | `#ffffff` | `dark.primary`, `dark.accent` (fallback of L5) |
120
+ | `text-muted-dark` | `#cccccc` | `dark.textMuted` |
121
+
122
+ <!-- generated:end -->
123
+
87
124
  ### Primary
88
125
 
89
126
  **Black** (`brand` `#000000`) fills the primary button; its label is white. The secondary button is white with a black hairline and black label.
@@ -100,6 +137,18 @@ Dark mode inverts: black ground, white ink, white rules, white primary button wi
100
137
 
101
138
  ## Typography
102
139
 
140
+ <!-- generated:begin typography -->
141
+
142
+ | Role | Family | Size | Weight | Line height | Tracking |
143
+ | ----------------- | ------------------------------------------------------------------------ | ---------- | ------ | ----------- | -------- |
144
+ | `display` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3.5rem` | 700 | 1.1 | `normal` |
145
+ | `heading-section` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `3rem` | 700 | 1.1 | `normal` |
146
+ | `heading-item` | — | `2rem` | 700 | 1.375 | `normal` |
147
+ | `body` | `system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif` | `1.125rem` | 400 | 1.5 | — |
148
+ | `eyebrow` | — | `0.875rem` | 600 | 1.4 | `0.05em` |
149
+
150
+ <!-- generated:end -->
151
+
103
152
  System sans throughout; no web font.
104
153
 
105
154
  ### Hierarchy
@@ -118,10 +167,53 @@ The small label above a section heading is **kept** as part of this foundation's
118
167
 
119
168
  ## Layout
120
169
 
170
+ <!-- generated:begin layout -->
171
+
172
+ | Knob | Value |
173
+ | -------------------- | --------- |
174
+ | `nav` | `full` |
175
+ | `footer` | `columns` |
176
+ | `announcementBanner` | `false` |
177
+ | `home` | `default` |
178
+
179
+ | Spacing | Value |
180
+ | ---------------- | -------- |
181
+ | `section` | `7rem` |
182
+ | `section-mobile` | `4rem` |
183
+ | `card` | `1.5rem` |
184
+ | `grid` | `1.5rem` |
185
+ | `container` | `1280px` |
186
+ | `measure` | `36rem` |
187
+
188
+ <!-- generated:end -->
189
+
121
190
  Full navigation; a multi-column footer; the default home. The home-only announcement banner is off by default (`layout.announcementBanner`). Every page this site carries is listed in its roster of record, `.ailk-site-manifest.json` at the site root. Shared foundation: a 1280px container, sections at 7rem (4rem below 1024px), card grids at 1.5rem, breakpoints 320 / 768 / 1024 / 1440.
122
191
 
192
+ ## Copy
193
+
194
+ <!-- generated:begin copy -->
195
+
196
+ Copy density: standard — pages carry the ordinary amount of body copy for their section.
197
+ <!-- generated:end -->
198
+
123
199
  ## Shapes
124
200
 
201
+ <!-- generated:begin shapes -->
202
+
203
+ | Rounded | Value |
204
+ | -------- | --------- |
205
+ | `button` | `0.5rem` |
206
+ | `card` | `0.75rem` |
207
+
208
+ | Treatment | Value |
209
+ | ------------------------- | ---------- |
210
+ | `treatments.corners` | `square` |
211
+ | `treatments.eyebrowCase` | `sentence` |
212
+ | `treatments.placeholders` | `fill` |
213
+ | `treatments.checkmarks` | `plain` |
214
+
215
+ <!-- generated:end -->
216
+
125
217
  Square corners everywhere (`theme.corners: square`) — buttons, cards, the auth card, image placeholders; the tokens above are the base foundation's defaults a site overrides.
126
218
 
127
219
  ## Components
@@ -156,7 +248,12 @@ The foundation's pinned direction is the pacing of a classic wireframe marketing
156
248
  ## Do's and Don'ts
157
249
 
158
250
  - **Do** keep every page built from registered sections. If a section you need does not exist, request it rather than writing one-off markup.
159
- - **Do** change colours in `content/_site.mdx` `theme.colors`; they reach every section.
160
- - **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through the theme.
251
+ - **Do** set your brand colours (`primary`, `primaryFg`, `accent`, per mode) in `content/_site.mdx` `brand.colors` and your fonts (`display`, `body`) in `brand.fonts`; they reach every section and survive applying another design, which replaces `theme:`.
252
+ - **Don't** add a colour accent. The foundation's one idea is black on white; a brand pass adds colour deliberately, through `brand.colors`.
161
253
  - **Don't** replace a black rule with a shadow or a grey fill.
162
254
  - **Don't** hard-code the "heading toward" values above into a page. They arrive through the platform, or not at all.
255
+
256
+ ## Revisions
257
+
258
+ - **2026-09-24 — tile hover is outline-only (operator ruling, /build-starter live pass, #6687).** A comparison tile (`items` in `variant: tile`) hovers by shifting its border to the accent only — no lift, no glow — matching the Positionary `/alternatives` ruling of 2026-08-29. Expressed as the bounded `tileHover: "outline"` option (Card `wash-outline`); the library default `lift` is unchanged for every other site.
259
+ - **2026-09-25 — the before-after section's rulings (operator, /build-starter live pass, #6687).** One layout, not two variants: a panel body is an image or rows of content under the same label bar. The label bar is the tone's fill (brand → black bar, white text) at the heading-4 role; a `neutral` panel keeps a white bar. The view selector is underline tabs with the underline under the current tab only (no full-width baseline), active black, inactive muted, black on hover. The pager is a ghost "‹ Previous" at the left edge and "Next ›" at the right edge. The catalyst column carries no icon tile — it starts at the arrow, or at an image when one is set. No back-to-all link and no tag chips on the seed pages.