create-ailk 0.8.0 → 0.10.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 (238) hide show
  1. package/README.md +71 -3
  2. package/component-catalog.json +279 -45
  3. package/dist/add-module.d.ts +20 -0
  4. package/dist/add-module.js +43 -7
  5. package/dist/add-route.d.ts +56 -0
  6. package/dist/add-route.js +286 -0
  7. package/dist/apply-design-md.d.ts +7 -0
  8. package/dist/apply-design-md.js +50 -0
  9. package/dist/apply-design.d.ts +64 -0
  10. package/dist/apply-design.js +273 -0
  11. package/dist/claude-md.d.ts +111 -0
  12. package/dist/claude-md.js +334 -0
  13. package/dist/cli.js +104 -5
  14. package/dist/derive-architecture.js +41 -36
  15. package/dist/design-compile.d.ts +71 -0
  16. package/dist/design-compile.js +98 -0
  17. package/dist/design-package.d.ts +83 -0
  18. package/dist/design-package.js +468 -0
  19. package/dist/design-presets.d.ts +86 -0
  20. package/dist/design-presets.js +642 -0
  21. package/dist/design-scaffold.d.ts +76 -0
  22. package/dist/design-scaffold.js +220 -0
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.js +4 -1
  25. package/dist/legacy-nav-renderers.d.ts +45 -0
  26. package/dist/legacy-nav-renderers.js +545 -0
  27. package/dist/lib/auth-secret-file.d.ts +19 -0
  28. package/dist/lib/auth-secret-file.js +112 -0
  29. package/dist/lib/design-checks.d.ts +78 -0
  30. package/dist/lib/design-checks.js +174 -0
  31. package/dist/lib/license-key-files.d.ts +9 -0
  32. package/dist/lib/license-key-files.js +2 -2
  33. package/dist/lib/module-license-gate.d.ts +48 -32
  34. package/dist/lib/module-license-gate.js +117 -8
  35. package/dist/lib/render-verdict.d.ts +52 -0
  36. package/dist/lib/render-verdict.js +77 -0
  37. package/dist/lib/scaffold-render-sweep.d.ts +105 -0
  38. package/dist/lib/scaffold-render-sweep.js +236 -0
  39. package/dist/module-architecture.d.ts +19 -16
  40. package/dist/module-architecture.js +67 -23
  41. package/dist/parse-args.d.ts +12 -2
  42. package/dist/parse-args.js +74 -13
  43. package/dist/programmatic.d.ts +30 -6
  44. package/dist/programmatic.js +216 -19
  45. package/dist/site-chrome.d.ts +19 -9
  46. package/dist/site-chrome.js +23 -13
  47. package/dist/site-manifest.d.ts +25 -0
  48. package/dist/site-manifest.js +254 -0
  49. package/dist/site-roster.d.ts +41 -0
  50. package/dist/site-roster.js +141 -8
  51. package/dist/starter-grid.d.ts +16 -63
  52. package/dist/starter-grid.js +102 -84
  53. package/dist/surfaces.d.ts +41 -9
  54. package/dist/surfaces.js +200 -83
  55. package/dist/template-manifest.d.ts +30 -13
  56. package/dist/template-manifest.js +53 -28
  57. package/package.json +6 -3
  58. package/release-scope.json +25 -0
  59. package/site-templates/_base/content/en/UseCase/persona-1.mdx +7 -6
  60. package/site-templates/_base/content/en/UseCase/persona-2.mdx +7 -6
  61. package/site-templates/_base/content/en/UseCase/persona-3.mdx +7 -6
  62. package/site-templates/designs/minimalism/DESIGN.md +98 -6
  63. package/site-templates/designs/minimalism/sample/README.md +48 -0
  64. package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +1 -1
  65. package/site-templates/designs/standard/DESIGN.md +98 -6
  66. package/site-templates/marketing-site/DESIGN.md +98 -6
  67. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +60 -27
  68. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +50 -30
  69. package/site-templates/marketing-site-free/DESIGN.md +98 -6
  70. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +60 -24
  71. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +44 -27
  72. package/site-templates/marketing-site-free/ailk-template.json +1 -1
  73. package/site-templates/saas-product/DESIGN.md +98 -6
  74. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +127 -18
  75. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +74 -20
  76. package/site-templates/shapes/local-business-service/ailk-template.json +1 -1
  77. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +127 -18
  78. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +74 -20
  79. package/site-templates/shapes/organization-service/ailk-template.json +1 -1
  80. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +127 -18
  81. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +75 -21
  82. package/site-templates/shapes/person-service/ailk-template.json +1 -1
  83. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +1 -1
  84. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +2 -2
  85. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +4 -2
  86. package/site-templates/shapes/person-service/content/en/ServicesList/services.mdx +1 -1
  87. package/templates/.claude/agents/web.md +10 -8
  88. package/templates/.claude/rules/architecture.md +17 -7
  89. package/templates/.claude/skills/README.md +3 -2
  90. package/templates/.claude/skills/add-auth/SKILL.md +142 -90
  91. package/templates/.claude/skills/add-auth/references/env-vars.md +32 -17
  92. package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +17 -8
  93. package/templates/.claude/skills/add-page/SKILL.md +241 -238
  94. package/templates/.claude/skills/add-page/references/page-types.md +94 -86
  95. package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
  96. package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
  97. package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
  98. package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
  99. package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
  100. package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
  101. package/templates/.claude/skills/check-site/SKILL.md +51 -18
  102. package/templates/.claude/skills/check-site/references/common-errors.md +12 -9
  103. package/templates/.claude/skills/check-site/references/findings-glossary.md +4 -4
  104. package/templates/.claude/skills/check-site/references/severity-levels.md +3 -3
  105. package/templates/.claude/skills/fill-page/SKILL.md +26 -7
  106. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
  107. package/templates/.claude/skills/setup-deploy/SKILL.md +75 -38
  108. package/templates/.claude/skills/update-page/SKILL.md +117 -0
  109. package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
  110. package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
  111. package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
  112. package/templates/.env.example +23 -2
  113. package/templates/.github/workflows/ci.yml +4 -0
  114. package/templates/.prettierignore +1 -0
  115. package/templates/CLAUDE.md +146 -103
  116. package/templates/DESIGN.md +98 -6
  117. package/templates/README.md +50 -38
  118. package/templates/apps/api/.env.example +2 -1
  119. package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
  120. package/templates/apps/api/src/__tests__/server.test.ts +116 -0
  121. package/templates/apps/api/src/lib/stripe.ts +9 -0
  122. package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
  123. package/templates/apps/api/src/middleware/auth.ts +54 -0
  124. package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
  125. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
  126. package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
  127. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
  128. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
  129. package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
  130. package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
  131. package/templates/apps/api/src/server.ts +28 -0
  132. package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
  133. package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
  134. package/templates/apps/api/src/services/revalidation.ts +60 -15
  135. package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
  136. package/templates/apps/mcp/src/tools/purchase.ts +4 -2
  137. package/templates/apps/web/.env.example +13 -0
  138. package/templates/apps/web/CLAUDE.md +22 -28
  139. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
  140. package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
  141. package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
  142. package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
  143. package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
  144. package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
  145. package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
  146. package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
  147. package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +4 -3
  148. package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
  149. package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
  150. package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
  151. package/templates/apps/web/app/[locale]/layout.tsx +35 -19
  152. package/templates/apps/web/app/[locale]/newsletter/page.tsx +1 -1
  153. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +1 -1
  154. package/templates/apps/web/app/[locale]/portfolio/page.tsx +1 -1
  155. package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
  156. package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
  157. package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
  158. package/templates/apps/web/app/api/revalidate/route.ts +78 -36
  159. package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
  160. package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
  161. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
  162. package/templates/apps/web/lib/locale-guard.ts +18 -0
  163. package/templates/apps/web/lib/meet-placeholder.ts +5 -0
  164. package/templates/apps/web/lib/nav-config.ts +14 -13
  165. package/templates/apps/web/lib/site-brand.tsx +13 -9
  166. package/templates/apps/web/lib/site-logo.tsx +36 -0
  167. package/templates/apps/web/lib/site-theme.ts +46 -26
  168. package/templates/apps/web/messages/en.json +23 -9
  169. package/templates/apps/web/middleware.ts +28 -4
  170. package/templates/content/en/BookCall/book-a-call.mdx +80 -0
  171. package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
  172. package/templates/content/en/BookCall/onsite-service.mdx +56 -0
  173. package/templates/content/en/BookCall/start-project.mdx +56 -0
  174. package/templates/content/en/ContactPage/contact.mdx +40 -1
  175. package/templates/content/en/HomePage/home.mdx +2 -6
  176. package/templates/content/en/LandingPage/meet.mdx +59 -0
  177. package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
  178. package/templates/database/CHANGELOG.md +7 -0
  179. package/templates/database/package.json +1 -1
  180. package/templates/package.json +4 -1
  181. package/templates/tools/check-claude-md.ts +128 -0
  182. package/versions.json +33 -33
  183. package/dist/modules/commerce/0.6.0.tar.gz +0 -0
  184. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  185. package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
  186. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  187. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  188. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  189. package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
  190. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  191. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  192. package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
  193. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  194. package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
  195. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  196. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  197. package/dist/modules/workspace/0.6.0.tar.gz +0 -0
  198. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  199. package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -52
  200. package/site-templates/minimalism-site/DESIGN.md +0 -162
  201. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +0 -506
  202. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -458
  203. package/site-templates/minimalism-site/ailk-template.json +0 -23
  204. package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
  205. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -52
  206. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
  207. package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
  208. package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
  209. package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
  210. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -123
  211. package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
  212. package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
  213. package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
  214. package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
  215. package/site-templates/minimalism-site/content/en/Service/first-engagement.mdx +0 -38
  216. package/site-templates/minimalism-site/content/en/Service/second-engagement.mdx +0 -38
  217. package/site-templates/minimalism-site/content/en/Service/third-engagement.mdx +0 -38
  218. package/site-templates/minimalism-site/content/en/ServicesList/services.mdx +0 -73
  219. package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
  220. package/site-templates/minimalism-site/provenance.json +0 -4
  221. package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
  222. package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +0 -175
  223. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-31.552Z-fallback-1789916251590-037e9005.json +0 -8
  224. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.840Z-fallback-1789916253842-b52659e9.json +0 -12
  225. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.844Z-fallback-1789916253845-6b266f8c.json +0 -12
  226. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +0 -50
  227. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
  228. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
  229. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
  230. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
  231. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
  232. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
  233. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
  234. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
  235. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
  236. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
  237. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
  238. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
@@ -0,0 +1,25 @@
1
+ {
2
+ "templates": {
3
+ "marketing-site-free": "released",
4
+ "marketing-site": "released",
5
+ "saas-product": "gated"
6
+ },
7
+ "shapes": {
8
+ "organization-product": "released",
9
+ "organization-service": "released",
10
+ "local-business-service": "released",
11
+ "person-service": "released",
12
+ "local-business-product": "deferred"
13
+ },
14
+ "designs": { "standard": "released", "minimalism": "gated" },
15
+ "modules": {
16
+ "marketing": "released",
17
+ "docs-blog": "released",
18
+ "scheduling": "released",
19
+ "signal-collectors": "released",
20
+ "workspace": "gated",
21
+ "multi-tenant": "gated",
22
+ "commerce": "gated"
23
+ },
24
+ "levels": { "free": "released", "pro": "released", "pro-plus": "gated" }
25
+ }
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  type: "UseCase"
3
3
  slug: "persona-1"
4
- title: "{Use case 1: the job this customer hires your product to do}"
4
+ placeholder: true
5
+ title: "{Use case 1: the job this customer hires your product or service to do}"
5
6
  description: "{Two sentences on who this customer is and the result they get}"
6
7
  sections:
7
8
  [
@@ -10,14 +11,14 @@ sections:
10
11
  "type": "hero",
11
12
  "data":
12
13
  {
13
- "eyebrow": "Use cases",
14
- "headline": "{Use case 1: the job this customer hires your product to do}",
14
+ "eyebrow": "Customers",
15
+ "headline": "{Use case 1: the job this customer hires your product or service to do}",
15
16
  "subheadline": "{Two sentences on who this customer is and the result they get}",
16
17
  "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
17
18
  "secondaryCta":
18
19
  {
19
20
  "label": "{Secondary CTA}",
20
- "href": "/pricing",
21
+ "href": "/about",
21
22
  "variant": "outline",
22
23
  },
23
24
  },
@@ -27,7 +28,7 @@ sections:
27
28
  "type": "feature",
28
29
  "data":
29
30
  {
30
- "headline": "{How this customer uses your product}",
31
+ "headline": "{How this customer uses your product or service}",
31
32
  "description": "{Two or three sentences on how it works and what changes for the reader}",
32
33
  "features":
33
34
  [
@@ -58,7 +59,7 @@ sections:
58
59
  "secondaryCta":
59
60
  {
60
61
  "label": "{Secondary CTA}",
61
- "href": "/pricing",
62
+ "href": "/about",
62
63
  "variant": "outline",
63
64
  },
64
65
  },
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  type: "UseCase"
3
3
  slug: "persona-2"
4
- title: "{Use case 2: the job this customer hires your product to do}"
4
+ placeholder: true
5
+ title: "{Use case 2: the job this customer hires your product or service to do}"
5
6
  description: "{Two sentences on who this customer is and the result they get}"
6
7
  sections:
7
8
  [
@@ -10,14 +11,14 @@ sections:
10
11
  "type": "hero",
11
12
  "data":
12
13
  {
13
- "eyebrow": "Use cases",
14
- "headline": "{Use case 2: the job this customer hires your product to do}",
14
+ "eyebrow": "Customers",
15
+ "headline": "{Use case 2: the job this customer hires your product or service to do}",
15
16
  "subheadline": "{Two sentences on who this customer is and the result they get}",
16
17
  "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
17
18
  "secondaryCta":
18
19
  {
19
20
  "label": "{Secondary CTA}",
20
- "href": "/pricing",
21
+ "href": "/about",
21
22
  "variant": "outline",
22
23
  },
23
24
  },
@@ -27,7 +28,7 @@ sections:
27
28
  "type": "feature",
28
29
  "data":
29
30
  {
30
- "headline": "{How this customer uses your product}",
31
+ "headline": "{How this customer uses your product or service}",
31
32
  "description": "{Two or three sentences on how it works and what changes for the reader}",
32
33
  "features":
33
34
  [
@@ -58,7 +59,7 @@ sections:
58
59
  "secondaryCta":
59
60
  {
60
61
  "label": "{Secondary CTA}",
61
- "href": "/pricing",
62
+ "href": "/about",
62
63
  "variant": "outline",
63
64
  },
64
65
  },
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  type: "UseCase"
3
3
  slug: "persona-3"
4
- title: "{Use case 3: the job this customer hires your product to do}"
4
+ placeholder: true
5
+ title: "{Use case 3: the job this customer hires your product or service to do}"
5
6
  description: "{Two sentences on who this customer is and the result they get}"
6
7
  sections:
7
8
  [
@@ -10,14 +11,14 @@ sections:
10
11
  "type": "hero",
11
12
  "data":
12
13
  {
13
- "eyebrow": "Use cases",
14
- "headline": "{Use case 3: the job this customer hires your product to do}",
14
+ "eyebrow": "Customers",
15
+ "headline": "{Use case 3: the job this customer hires your product or service to do}",
15
16
  "subheadline": "{Two sentences on who this customer is and the result they get}",
16
17
  "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
17
18
  "secondaryCta":
18
19
  {
19
20
  "label": "{Secondary CTA}",
20
- "href": "/pricing",
21
+ "href": "/about",
21
22
  "variant": "outline",
22
23
  },
23
24
  },
@@ -27,7 +28,7 @@ sections:
27
28
  "type": "feature",
28
29
  "data":
29
30
  {
30
- "headline": "{How this customer uses your product}",
31
+ "headline": "{How this customer uses your product or service}",
31
32
  "description": "{Two or three sentences on how it works and what changes for the reader}",
32
33
  "features":
33
34
  [
@@ -58,7 +59,7 @@ sections:
58
59
  "secondaryCta":
59
60
  {
60
61
  "label": "{Secondary CTA}",
61
- "href": "/pricing",
62
+ "href": "/about",
62
63
  "variant": "outline",
63
64
  },
64
65
  },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Minimalism
3
- description: The minimalism design — the same black-on-white foundation, presented as a nine-slide scroll-snap deck home with a mark-only navigation and a centred footer.
3
+ description: "The minimalism design — the same black-on-white foundation, presented as a nine-slide scroll-snap deck home with a mark-only navigation and a centred footer."
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: mark-only
26
+ footer: centered
27
+ announcementBanner: false
28
+ home: deck
29
+ copy:
30
+ density: sparse
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
  # Minimalism
@@ -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` | `mark-only` |
175
+ | `footer` | `centered` |
176
+ | `announcementBanner` | `false` |
177
+ | `home` | `deck` |
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
  Home is the `deck` layout: nine full-viewport slides with scroll-snap. The navigation is `mark-only`, the footer is `centered`, and there is no announcement banner (`layout.home: deck`, `layout.nav: mark-only`, `layout.footer: centered` — the design's own knobs, which any template on this design gets without declaring a `layout`). 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: sparse — minimalism pages carry far fewer words than a standard site; keep every block to its headline and one sentence.
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,7 @@ 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.
@@ -0,0 +1,48 @@
1
+ # The `minimalism` design's home-deck sample
2
+
3
+ > Narrative moved here from the retired minimalism template's `TEMPLATE-MANIFEST.md` when
4
+ > that tree retired (spec 6892 D4/D5) — `minimalism` is a design, not a template, so it
5
+ > carries no generated manifest of its own. This file is NOT installed onto a scaffold
6
+ > (`installDesignSample` copies only `content/**` and `public/**`); it documents the sample for
7
+ > maintainers of this design.
8
+
9
+ The second Pro template (#5589) that first wore this design was a reports-first site whose home
10
+ is a **nine-slide scroll-snap deck**, shaped after the reference captured in
11
+ `docs/research/bondcap-capture/`. Structure and design are the reference; **the copy is not** —
12
+ every line in `content/en/HomePage/home.mdx` is placeholder English of the same shape and length.
13
+
14
+ `layout.home: "deck"` (the `minimalism` design's own layout knob) makes every direct section
15
+ child of `home.mdx` one full-viewport snap target, in order. The mark is hidden on slide 1 (the
16
+ deck-hero landing state) and revealed from slide 2 on.
17
+
18
+ | # | Slide | Section | Ground | Action |
19
+ | --- | ----------------- | -------------------------------------------------------------- | ------------------------ | ---------------------------------------------------------- |
20
+ | 1 | Landing | `hero` (`backdrop`) | gradient band + backdrop | `{Primary CTA} →` → `/reports`, centered; 44px scroll cue. |
21
+ | 2 | Tagline | `content-block` (`align: center`, `fill: viewport`) | light | — |
22
+ | 3 | Our community | `logoCloud` (`actions`) | light | `Refer someone →` → `/referral`, bottom-centered at 44px |
23
+ | 4 | Reports headline | `content-block` (`align: center`, `fill: viewport`) | light | — |
24
+ | 5 | Special reports | `reports-list` (`list`, `tone: on-dark`) | dark (`gradient-dark`) | four dated titles → `/reports/<slug>` |
25
+ | 6 | Favorites | `reports-list` (`list`, `tone: on-dark`) | dark (`gradient-dark`) | year-only titles → `/reports/<slug>` |
26
+ | 7 | Services headline | `content-block` (`align: center`, `fill: viewport`) | light | `Hire me →` → `/meet` |
27
+ | 8 | Partners | `team` (`with-large-images`, `hoverReveal`, `phoneColumns: 2`) | light | `About us →` → `/about`, bottom-centered at 44px |
28
+ | 9 | Closing | `cta` (`minimal`) | light | `Contact me →` → `/contact`, centered |
29
+
30
+ ## The site principle
31
+
32
+ Every slide's action sits at the bottom, centered, at 44px or larger; grids are 2-up on a phone.
33
+ This is held by bounded section props on the sections above, never by a `className` override or
34
+ hand-rolled markup (`.claude/rules/frontend.md` § Chrome Composes Blocks).
35
+
36
+ ## The 11 SVGs
37
+
38
+ `public/hero-backdrop.svg`, `public/wordmark-placeholder.svg`, three `public/logo-placeholder-*.svg`
39
+ and six `public/avatar-placeholder-*.svg` — all placeholders, referenced only from this sample's
40
+ `home.mdx` (the avatars are also referenced by the retired bespoke `AboutPage` seed, which did not
41
+ move with this design — its team slide is the only remaining consumer). They ride with the design
42
+ because the deck uses all 11; a shape/design pair that does not install this sample never ships
43
+ them (D4).
44
+
45
+ ## Copy density
46
+
47
+ This design declares `copy: { density: "sparse" }` in its `DESIGN.md` — its pages, this deck
48
+ included, carry far fewer words than a standard site.
@@ -2,7 +2,7 @@
2
2
  type: "HomePage"
3
3
  slug: "home"
4
4
  title: "Your Company"
5
- description: "Placeholder home for the minimalism-site template — a nine-slide scroll-snap deck. Replace every line before you launch."
5
+ description: "Placeholder home for the minimalism design — a nine-slide scroll-snap deck. Replace every line before you launch."
6
6
  sections:
7
7
  [
8
8
  {
@@ -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,8 +248,8 @@ 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.
163
255