create-ailk 0.6.1 → 0.7.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 (232) hide show
  1. package/README.md +43 -4
  2. package/component-catalog.json +146 -21
  3. package/component-catalog.md +9 -6
  4. package/dist/add-module-core.d.ts +22 -0
  5. package/dist/add-module-core.js +50 -0
  6. package/dist/add-module.d.ts +89 -0
  7. package/dist/add-module.js +334 -0
  8. package/dist/category-profile.d.ts +126 -0
  9. package/dist/category-profile.js +262 -0
  10. package/dist/cli.js +73 -11
  11. package/dist/index.d.ts +4 -2
  12. package/dist/index.js +6 -1
  13. package/dist/lib/extract-module-bundle.d.ts +56 -1
  14. package/dist/lib/extract-module-bundle.js +165 -13
  15. package/dist/lib/license-key-files.d.ts +15 -0
  16. package/dist/lib/license-key-files.js +102 -0
  17. package/dist/lib/pro-callout.d.ts +16 -10
  18. package/dist/lib/pro-callout.js +26 -3
  19. package/dist/license-set.d.ts +34 -0
  20. package/dist/license-set.js +194 -0
  21. package/dist/module-architecture.d.ts +20 -0
  22. package/dist/module-architecture.js +77 -19
  23. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  24. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  25. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  26. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  27. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  28. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  29. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  30. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  31. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  32. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  33. package/dist/parse-args.d.ts +7 -0
  34. package/dist/parse-args.js +23 -1
  35. package/dist/programmatic.d.ts +46 -0
  36. package/dist/programmatic.js +130 -9
  37. package/dist/site-chrome.d.ts +18 -7
  38. package/dist/site-chrome.js +32 -14
  39. package/dist/site-roster.d.ts +127 -0
  40. package/dist/site-roster.js +494 -0
  41. package/dist/surfaces.d.ts +20 -7
  42. package/dist/surfaces.js +149 -28
  43. package/dist/sync-routes.d.ts +9 -0
  44. package/dist/sync-routes.js +2 -2
  45. package/dist/template-manifest.d.ts +58 -2
  46. package/dist/template-manifest.js +196 -69
  47. package/package.json +6 -4
  48. package/site-templates/_base/content/en/BookCall/book-call.mdx +53 -0
  49. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +66 -0
  50. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +68 -0
  51. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  52. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +2 -3
  53. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  54. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +23 -0
  55. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +23 -0
  56. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +23 -0
  57. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  58. package/site-templates/designs/standard/DESIGN.md +162 -0
  59. package/site-templates/marketing-site/DESIGN.md +55 -41
  60. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +312 -57
  61. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +209 -90
  62. package/site-templates/marketing-site/ailk-template.json +1 -0
  63. package/site-templates/marketing-site-free/DESIGN.md +55 -41
  64. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +260 -66
  65. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +294 -114
  66. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  67. package/site-templates/minimalism-site/DESIGN.md +54 -40
  68. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  69. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +185 -51
  70. package/site-templates/minimalism-site/ailk-template.json +3 -2
  71. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +53 -0
  72. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  73. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  74. package/site-templates/saas-product/DESIGN.md +55 -41
  75. package/site-templates/simple-service/DESIGN.md +55 -41
  76. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +135 -26
  77. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +114 -59
  78. package/site-templates/simple-service/ailk-template.json +4 -3
  79. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +53 -0
  80. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +1 -36
  81. package/site-templates/simple-service/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  82. package/templates/.claude/settings.json +15 -0
  83. package/templates/.claude/skills/README.md +8 -8
  84. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  85. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  86. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  87. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  88. package/templates/.claude/skills/add-page/references/page-types.md +111 -0
  89. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  90. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  91. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  92. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  93. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  94. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  95. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  96. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  97. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  98. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +8 -8
  99. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +2 -2
  100. package/templates/.claude/skills/{provision-config → setup-deploy}/references/runbook-template.md +8 -8
  101. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  102. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  103. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  104. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  105. package/templates/.github/workflows/ci.yml +5 -0
  106. package/templates/CLAUDE.md +8 -2
  107. package/templates/DESIGN.md +52 -45
  108. package/templates/README.md +108 -46
  109. package/templates/apps/api/.env.example +2 -1
  110. package/templates/apps/api/package.json +1 -1
  111. package/templates/apps/api/src/config/__tests__/index.test.ts +37 -2
  112. package/templates/apps/api/src/config/index.ts +19 -6
  113. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  114. package/templates/apps/api/src/lib/site.ts +5 -3
  115. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  116. package/templates/apps/api/src/middleware/auth.ts +9 -0
  117. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  118. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  119. package/templates/apps/api/src/server.ts +6 -0
  120. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  121. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  122. package/templates/apps/mcp/package.json +2 -1
  123. package/templates/apps/mcp/src/index.ts +7 -0
  124. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  125. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  126. package/templates/apps/web/__tests__/setup.ts +18 -0
  127. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  128. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  129. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  130. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  131. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  132. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  133. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  134. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  135. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  136. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  137. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  138. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  139. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +94 -33
  140. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +53 -23
  141. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +96 -0
  142. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +84 -2
  143. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +5 -6
  144. package/templates/apps/web/app/[locale]/contact/page.tsx +25 -7
  145. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  146. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  147. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  148. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  149. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  150. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  151. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  152. package/templates/apps/web/app/[locale]/layout.tsx +113 -51
  153. package/templates/apps/web/app/[locale]/newsletter/page.tsx +50 -0
  154. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  155. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  156. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  157. package/templates/apps/web/app/[locale]/{shipping → purchase-policy}/page.tsx +15 -10
  158. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  159. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  160. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  161. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  162. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  163. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  164. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  165. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  166. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +48 -0
  167. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  168. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  169. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  170. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  171. package/templates/apps/web/app/error-fallback.tsx +17 -45
  172. package/templates/apps/web/app/not-found.tsx +14 -38
  173. package/templates/apps/web/app/og/route.tsx +6 -0
  174. package/templates/apps/web/eslint.config.mjs +3 -0
  175. package/templates/apps/web/instrumentation.ts +14 -0
  176. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  177. package/templates/apps/web/lib/license-key-store.ts +52 -0
  178. package/templates/apps/web/lib/nav-config.ts +64 -12
  179. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  180. package/templates/apps/web/lib/site-brand.tsx +1 -1
  181. package/templates/apps/web/lib/site-chrome.ts +3 -3
  182. package/templates/apps/web/lib/site-identity.ts +134 -0
  183. package/templates/apps/web/lib/site-theme.ts +11 -0
  184. package/templates/apps/web/messages/en.json +52 -37
  185. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  186. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  187. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  188. package/templates/apps/web/public/favicon-16x16.png +0 -0
  189. package/templates/apps/web/public/favicon-32x32.png +0 -0
  190. package/templates/apps/web/public/favicon.ico +0 -0
  191. package/templates/apps/web/public/favicon.svg +3 -3
  192. package/templates/apps/web/public/logomark.svg +6 -3
  193. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  194. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  195. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  196. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  197. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  198. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  199. package/templates/apps/web/public/site.webmanifest +4 -4
  200. package/templates/apps/web/public/wordmark-light.svg +4 -0
  201. package/templates/apps/web/public/wordmark.svg +3 -3
  202. package/templates/apps/web/security-headers.config.ts +5 -1
  203. package/templates/content/_site.mdx +23 -0
  204. package/templates/content/en/AboutPage/about.mdx +150 -144
  205. package/templates/content/en/BlogList/blog.mdx +105 -0
  206. package/templates/content/en/ContactPage/contact.mdx +44 -85
  207. package/templates/content/en/FAQPage/faq.mdx +86 -57
  208. package/templates/content/en/HomePage/home.mdx +276 -217
  209. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +182 -0
  210. package/templates/content/en/SoftwareProduct/product.mdx +175 -0
  211. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  212. package/templates/database/CHANGELOG.md +7 -0
  213. package/templates/database/package.json +1 -1
  214. package/templates/package.json +3 -1
  215. package/templates/tools/lint-architecture.ts +315 -0
  216. package/templates/tools/tsconfig.json +14 -0
  217. package/versions.json +33 -33
  218. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  219. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  220. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  221. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  222. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  223. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  224. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  225. package/templates/apps/web/app/[locale]/cancellation/page.tsx +0 -44
  226. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  227. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  228. package/templates/content/en/LandingPage/blog.mdx +0 -83
  229. package/templates/content/en/LandingPage/features.mdx +0 -103
  230. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  231. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  232. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -3,7 +3,8 @@
3
3
  "requires": ["marketing"],
4
4
  "extends": "_base",
5
5
  "installMap": {
6
- "provenance.json": ".ailk-template.json"
6
+ "provenance.json": ".ailk-template.json",
7
+ "TEMPLATE-MANIFEST.json": ".ailk-site-manifest.json"
7
8
  },
8
- "postInstall": "Template marketing-site-free installed. Its /pricing, /privacy and /terms seed copy came with the base layer it extends (content/en/) - replace the placeholder copy before you launch."
9
+ "postInstall": "Template marketing-site-free installed. Its /pricing, /privacy, /terms, /glossary, /newsletter, /book-a-call and three /use-cases/<slug> seed pages came with the base layer it extends (content/en/) - replace the placeholder copy before you launch."
9
10
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: Minimalism site (Pro) — minimalism-site
3
- description: A reports-first site whose home is a nine-slide scroll-snap deck, with a mark-only navigation and a centred footer.
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.
4
4
  colors:
5
5
  bg: "#ffffff"
6
6
  fg: "#000000"
@@ -18,20 +18,21 @@ colors:
18
18
  typography:
19
19
  display:
20
20
  fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
21
- fontSize: "6rem"
22
- fontWeight: 400
23
- lineHeight: 1
24
- letterSpacing: "-0.05em"
21
+ fontSize: "3.5rem"
22
+ fontWeight: 700
23
+ lineHeight: 1.1
24
+ letterSpacing: "normal"
25
25
  heading-section:
26
26
  fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
27
- fontSize: "2.25rem"
28
- fontWeight: 400
29
- lineHeight: 1.25
30
- letterSpacing: "-0.05em"
27
+ fontSize: "3rem"
28
+ fontWeight: 700
29
+ lineHeight: 1.1
30
+ letterSpacing: "normal"
31
31
  heading-item:
32
- fontSize: "1.25rem"
33
- fontWeight: 600
32
+ fontSize: "2rem"
33
+ fontWeight: 700
34
34
  lineHeight: 1.375
35
+ letterSpacing: "normal"
35
36
  body:
36
37
  fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, sans-serif"
37
38
  fontSize: "1.125rem"
@@ -43,32 +44,43 @@ typography:
43
44
  lineHeight: 1.4
44
45
  letterSpacing: "0.05em"
45
46
  rounded:
46
- button: "0.25rem"
47
+ button: "0.5rem"
47
48
  card: "0.75rem"
48
49
  spacing:
49
- section: "4rem"
50
+ section: "7rem"
51
+ section-mobile: "4rem"
50
52
  card: "1.5rem"
51
53
  grid: "1.5rem"
52
54
  container: "1280px"
55
+ measure: "36rem"
53
56
  ---
54
57
 
55
58
  <!--
56
59
  Source template: minimalism-site
60
+ Design: minimalism
57
61
  Version: create-ailk {{CREATE_AILK_VERSION}}
58
- Extends: _base — installing this template replaces the base scaffold's
59
- DESIGN.md with this file. Its tokens are the base foundation's, unchanged:
60
- this template carries no theme of its own.
62
+
63
+ This is the `minimalism` design's DESIGN.md. Its one authored source is
64
+ create-ailk's site-templates/designs/minimalism/DESIGN.md; every template on
65
+ this design ships a copy of it that differs only in the "Source template"
66
+ line above, and a template installed with `--template <name>` replaces the
67
+ base scaffold's DESIGN.md with its own. The impeccable design skill reads
68
+ it at the start of every design session, so an agent building a new page
69
+ stays on-system.
70
+ Edit the canonical file, never a copy — a test holds every copy to it.
61
71
 
62
72
  The tokens above describe what the site RENDERS today. Colours come from
63
73
  content/_site.mdx (`theme.colors`); type, radius and spacing are platform
64
74
  defaults a site cannot override yet — see "Where this is heading" below.
65
75
  -->
66
76
 
67
- # Minimalism site (Pro)
77
+ # Minimalism
68
78
 
69
79
  ## Overview
70
80
 
71
- A reports-first template. The home page is a nine-slide deck that snaps one slide per scroll, so the site reads like a presentation before it reads like a website. The rest of the site — reports, services, booking, referral — is quiet and document-like. It runs on the base foundation's colours and type; its character comes from structure, not a palette.
81
+ The minimalism design is the standard foundation — the same black-on-white wireframe, the same type and the same components — presented as a deck. The home page is a nine-slide deck that snaps one slide per scroll, so the site reads like a presentation before it reads like a website; the rest of the site is quiet and document-like. Its character comes from structure, not a palette: it carries no theme of its own.
82
+
83
+ Every page is composed from the AI Launch Kit component library (`@working-theory/ui`). Nothing is hand-built: a page is a list of registered sections, each with a bounded set of variants.
72
84
 
73
85
  ## Colors
74
86
 
@@ -92,31 +104,31 @@ System sans throughout; no web font.
92
104
 
93
105
  ### Hierarchy
94
106
 
95
- | Role | Size | Weight | Notes |
96
- | --------------- | -------- | ------ | --------------------------------------------------------------------------- |
97
- | Hero headline | 6rem | 400 | Tracking -0.05em, line-height 1 |
98
- | Section heading | 2.25rem | 400 | Tracking -0.05em — light and tight, not bold |
99
- | Item heading | 1.25rem | 600 | Card, feature and step titles |
100
- | Body | 1.125rem | 400 | `#333333`, line-height 1.5 |
101
- | Section label | 0.875rem | 600 | Uppercase, +0.05em tracking today — the small label above a section heading |
107
+ | Role | Size | Weight | Notes |
108
+ | --------------- | -------- | ------ | ------------------------------------------------------------------------------------- |
109
+ | Hero headline | 3.5rem | 700 | Normal tracking, line-height 1.1; 2.5rem below 1024px |
110
+ | Section heading | 3rem | 700 | Normal tracking, line-height 1.1; 2.25rem below 1024px, always under the hero |
111
+ | Item heading | 2rem | 700 | Card, feature and step titles; 1.5rem below 1024px |
112
+ | Body | 1.125rem | 400 | `#333333`, line-height 1.5; section copy capped at 36rem (about 70 characters a line) |
113
+ | Section label | 0.875rem | 600 | Uppercase, +0.05em tracking today — the small label above a section heading |
102
114
 
103
- Measured from the rendered scaffold (1440px wide), not transcribed from tokens.
115
+ Measured from the rendered scaffold (1440px and 390px wide), not transcribed from tokens. Bold headings at normal tracking follow the foundation's pinned direction (#6493).
104
116
 
105
117
  The small label above a section heading is **kept** as part of this foundation's voice (operator-disposed 2026-09-22) and is headed toward the treatment below.
106
118
 
107
119
  ## Layout
108
120
 
109
- 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. Placeholder illustrations ship in `assets/`. Every page and its sections are listed in `TEMPLATE-MANIFEST.md` in this directory. Shared foundation: a 1280px container, sections at 4rem, card grids at 1.5rem, breakpoints 320 / 768 / 1024 / 1440.
121
+ 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.
110
122
 
111
123
  ## Shapes
112
124
 
113
- Two radii today: buttons at 0.25rem, cards and outlined boxes at 0.75rem. Headed toward square corners — see below.
125
+ 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.
114
126
 
115
127
  ## Components
116
128
 
117
129
  ### Buttons
118
130
 
119
- Primary: black fill, white label, 0.25rem corners. Secondary: transparent with a black 1px outline and black label. Both are the library `Button`.
131
+ Primary: black fill, white label, 0.5rem corners. Secondary: transparent with a black 1px outline and black label. Both are the library `Button`.
120
132
 
121
133
  ### Cards / Containers
122
134
 
@@ -128,16 +140,18 @@ Mark-only: the logomark alone, top left. No link row and no buttons in the heade
128
140
 
129
141
  ## Where this is heading
130
142
 
131
- The foundation's pinned direction is the pacing of a classic wireframe marketing kit — `standardissue.webflow.io` is the reference for rhythm, type scale, spacing density and section pacing only; no image, copy or code is taken from it. Six parts of that direction cannot be expressed through a site's theme today, so they wait on a platform change rather than being hand-coded. Until they land, this file describes the rendered site above, not these targets.
132
-
133
- | Target | Reference value | Blocked by |
134
- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
135
- | Square corners on buttons, cards and inputs | radius 0 | A site's `theme:` block accepts colours only — no radius |
136
- | Bold, tighter headings | hero ~3.6rem and section headings ~2.9rem, both at weight 700 with tracking about -0.02em (today 6rem and 2.25rem at weight 400) | No per-site type-role override |
137
- | Generous section pacing | about 10rem between sections, not 4rem | No per-site section-spacing override; `spacious` (6rem) is not author-selectable |
138
- | Section label in sentence case, bold, no tracking | "Core Features", not "CORE FEATURES" | The eyebrow role bakes in uppercase and tracking |
139
- | Whitespace between sections, not rules | no rule between bands | Section dividers share the one `border` colour with card outlines, so black outlines make black dividers |
140
- | Outlined steps in "how it works" | three plain outlined columns | The steps section renders dark filled cards; no outlined variant |
143
+ The foundation's pinned direction is the pacing of a classic wireframe marketing kit — `standardissue.webflow.io` is the reference for rhythm, type scale, spacing density and section pacing only; no image, copy or code is taken from it. The four traits this section used to list as blocked now ship as settings, so the rendered site matches the reference:
144
+
145
+ | Trait | How it is set |
146
+ | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------- |
147
+ | Square corners on buttons, cards and inputs | `theme.corners: square` in `_site.mdx` |
148
+ | Section label in sentence case, bold, no tracking | `theme.eyebrowCase: sentence` |
149
+ | Solid grey image placeholders, no outline | `theme.placeholders: fill` |
150
+ | Bare check and cross marks, no circle badge | `theme.checkmarks: plain` |
151
+ | Plain, uncarded feature and step items | per section: `itemStyle: plain`, and `variant: steps` for an image beside a numbered list |
152
+ | A left hero whose headline wraps at half the container | `measure: narrow` on the hero (pricing); `gapBelow: tight` where a list follows the hero directly |
153
+ | A three-up post grid on the blog index | `blog-list` `variant: grid` (cover · date · read time · title · excerpt · Read more) |
154
+ | A plans section that leads its page | drop the hero; the pricing section owns the `<h1>` (`ownsPageTitle`) |
141
155
 
142
156
  ## Do's and Don'ts
143
157
 
@@ -2,16 +2,49 @@
2
2
  "template": "minimalism-site",
3
3
  "requires": ["marketing", "scheduling", "signal-collectors"],
4
4
  "categories": ["real-estate", "technology", "legal"],
5
- "generatedHash": "639c3fc8cf1783e33b55908c875defc80ad638979f04ed09eed5ee608e9c09cb",
5
+ "shape": "organization-service",
6
+ "design": "minimalism",
7
+ "generatedHash": "011c11830102c7b75698209d145df2a08aaa50b91782f379407abc11bc45ef9d",
6
8
  "layout": {
7
9
  "nav": "mark-only",
8
10
  "footer": "centered",
9
11
  "announcementBanner": false,
10
12
  "home": "deck"
11
13
  },
14
+ "theme": {
15
+ "corners": "square",
16
+ "eyebrowCase": "sentence",
17
+ "placeholders": "fill",
18
+ "checkmarks": "plain",
19
+ "colors": {
20
+ "light": {
21
+ "bg": "#ffffff",
22
+ "bgMuted": "#ffffff",
23
+ "surface": "#ffffff",
24
+ "border": "#000000",
25
+ "text": "#000000",
26
+ "textMuted": "#333333",
27
+ "primary": "#000000",
28
+ "primaryFg": "#ffffff",
29
+ "accent": "#000000"
30
+ },
31
+ "dark": {
32
+ "bg": "#000000",
33
+ "bgMuted": "#000000",
34
+ "surface": "#000000",
35
+ "border": "#ffffff",
36
+ "text": "#ffffff",
37
+ "textMuted": "#cccccc",
38
+ "primary": "#ffffff",
39
+ "primaryFg": "#000000",
40
+ "accent": "#ffffff"
41
+ }
42
+ }
43
+ },
12
44
  "rows": [
13
45
  {
14
46
  "route": "/",
47
+ "kind": "page",
15
48
  "pageType": "HomePage",
16
49
  "schema": "HomePage",
17
50
  "shell": "MarketingShell",
@@ -19,31 +52,58 @@
19
52
  "sections": [
20
53
  {
21
54
  "type": "hero",
22
- "component": "Hero"
55
+ "component": "Hero",
56
+ "options": {
57
+ "surface": "gradient-brand",
58
+ "fill": "viewport"
59
+ }
23
60
  },
24
61
  {
25
62
  "type": "content-block",
26
- "component": "ContentBlock"
63
+ "component": "ContentBlock",
64
+ "options": {
65
+ "align": "center",
66
+ "fill": "viewport"
67
+ }
27
68
  },
28
69
  {
29
70
  "type": "logoCloud",
30
- "component": "LogoCloud"
71
+ "component": "LogoCloud",
72
+ "options": {
73
+ "layout": "grid"
74
+ }
31
75
  },
32
76
  {
33
77
  "type": "content-block",
34
- "component": "ContentBlock"
78
+ "component": "ContentBlock",
79
+ "options": {
80
+ "align": "center",
81
+ "fill": "viewport"
82
+ }
35
83
  },
36
84
  {
37
85
  "type": "reports-list",
38
- "component": "ReportsList"
86
+ "component": "ReportsList",
87
+ "options": {
88
+ "surface": "gradient-dark",
89
+ "tone": "on-dark"
90
+ }
39
91
  },
40
92
  {
41
93
  "type": "reports-list",
42
- "component": "ReportsList"
94
+ "component": "ReportsList",
95
+ "options": {
96
+ "surface": "gradient-dark",
97
+ "tone": "on-dark"
98
+ }
43
99
  },
44
100
  {
45
101
  "type": "content-block",
46
- "component": "ContentBlock"
102
+ "component": "ContentBlock",
103
+ "options": {
104
+ "align": "center",
105
+ "fill": "viewport"
106
+ }
47
107
  },
48
108
  {
49
109
  "type": "team",
@@ -57,6 +117,7 @@
57
117
  },
58
118
  {
59
119
  "route": "/reports",
120
+ "kind": "page",
60
121
  "pageType": "LandingPage",
61
122
  "schema": "WebPage",
62
123
  "shell": "MarketingShell",
@@ -78,6 +139,7 @@
78
139
  },
79
140
  {
80
141
  "route": "/about",
142
+ "kind": "page",
81
143
  "pageType": "AboutPage",
82
144
  "schema": "AboutPage",
83
145
  "shell": "MarketingShell",
@@ -99,6 +161,7 @@
99
161
  },
100
162
  {
101
163
  "route": "/services",
164
+ "kind": "page",
102
165
  "pageType": "ServicesList",
103
166
  "schema": "ServicesList",
104
167
  "shell": "MarketingShell",
@@ -110,7 +173,10 @@
110
173
  },
111
174
  {
112
175
  "type": "items",
113
- "component": "Items"
176
+ "component": "Items",
177
+ "options": {
178
+ "columns": 3
179
+ }
114
180
  },
115
181
  {
116
182
  "type": "cta",
@@ -120,14 +186,22 @@
120
186
  },
121
187
  {
122
188
  "route": "/services/[slug]",
123
- "pageType": null,
124
- "schema": null,
189
+ "kind": "page",
190
+ "contentDir": "content/en/Service",
191
+ "seeds": [
192
+ "content/en/Service/first-engagement.mdx",
193
+ "content/en/Service/second-engagement.mdx",
194
+ "content/en/Service/third-engagement.mdx"
195
+ ],
196
+ "pageType": "Service",
197
+ "schema": "Service",
125
198
  "shell": "MarketingShell",
126
199
  "chrome": "on",
127
200
  "sections": []
128
201
  },
129
202
  {
130
203
  "route": "/contact",
204
+ "kind": "page",
131
205
  "pageType": "ContactPage",
132
206
  "schema": "ContactPage",
133
207
  "shell": "MarketingShell",
@@ -137,10 +211,6 @@
137
211
  "type": "hero",
138
212
  "component": "Hero"
139
213
  },
140
- {
141
- "type": "contact-form",
142
- "component": "ContactForm"
143
- },
144
214
  {
145
215
  "type": "cta",
146
216
  "component": "CTA"
@@ -149,6 +219,7 @@
149
219
  },
150
220
  {
151
221
  "route": "/referral",
222
+ "kind": "page",
152
223
  "pageType": "LandingPage",
153
224
  "schema": "WebPage",
154
225
  "shell": "MarketingShell",
@@ -170,6 +241,7 @@
170
241
  },
171
242
  {
172
243
  "route": "/faq",
244
+ "kind": "page",
173
245
  "pageType": "FAQPage",
174
246
  "schema": "FAQPage",
175
247
  "shell": "MarketingShell",
@@ -185,8 +257,70 @@
185
257
  }
186
258
  ]
187
259
  },
260
+ {
261
+ "route": "/glossary",
262
+ "kind": "page",
263
+ "pageType": "GlossaryList",
264
+ "schema": "GlossaryList",
265
+ "shell": "MarketingShell",
266
+ "chrome": "on",
267
+ "sections": [
268
+ {
269
+ "type": "hero",
270
+ "component": "Hero"
271
+ },
272
+ {
273
+ "type": "glossary-index",
274
+ "component": "GlossaryIndex"
275
+ }
276
+ ]
277
+ },
278
+ {
279
+ "route": "/newsletter",
280
+ "kind": "page",
281
+ "pageType": "NewsletterSignup",
282
+ "schema": "NewsletterSignup",
283
+ "shell": "MarketingShell",
284
+ "chrome": "on",
285
+ "sections": [
286
+ {
287
+ "type": "hero",
288
+ "component": "Hero"
289
+ },
290
+ {
291
+ "type": "newsletter",
292
+ "component": "Newsletter"
293
+ },
294
+ {
295
+ "type": "faq",
296
+ "component": "FAQ"
297
+ }
298
+ ]
299
+ },
300
+ {
301
+ "route": "/book-a-call",
302
+ "kind": "page",
303
+ "pageType": "BookCall",
304
+ "schema": "BookCall",
305
+ "shell": "MarketingShell",
306
+ "chrome": "on",
307
+ "sections": [
308
+ {
309
+ "type": "hero",
310
+ "component": "Hero"
311
+ },
312
+ {
313
+ "type": "items",
314
+ "component": "Items",
315
+ "options": {
316
+ "columns": 3
317
+ }
318
+ }
319
+ ]
320
+ },
188
321
  {
189
322
  "route": "/privacy",
323
+ "kind": "page",
190
324
  "pageType": "PrivacyPage",
191
325
  "schema": "PrivacyPage",
192
326
  "shell": "MarketingShell",
@@ -194,12 +328,16 @@
194
328
  "sections": [
195
329
  {
196
330
  "type": "document-chassis",
197
- "component": "DocumentChassis"
331
+ "component": "DocumentChassis",
332
+ "options": {
333
+ "layout": "article"
334
+ }
198
335
  }
199
336
  ]
200
337
  },
201
338
  {
202
339
  "route": "/terms",
340
+ "kind": "page",
203
341
  "pageType": "TermsPage",
204
342
  "schema": "TermsPage",
205
343
  "shell": "MarketingShell",
@@ -207,12 +345,87 @@
207
345
  "sections": [
208
346
  {
209
347
  "type": "document-chassis",
210
- "component": "DocumentChassis"
348
+ "component": "DocumentChassis",
349
+ "options": {
350
+ "layout": "article"
351
+ }
211
352
  }
212
353
  ]
213
354
  },
355
+ {
356
+ "route": "/purchase-policy",
357
+ "kind": "page",
358
+ "pageType": "PurchasePolicyPage",
359
+ "schema": "PurchasePolicyPage",
360
+ "shell": "MarketingShell",
361
+ "chrome": "on",
362
+ "sections": [
363
+ {
364
+ "type": "document-chassis",
365
+ "component": "DocumentChassis",
366
+ "options": {
367
+ "layout": "article"
368
+ }
369
+ }
370
+ ]
371
+ },
372
+ {
373
+ "route": "/projects",
374
+ "kind": "page",
375
+ "pageType": "ProjectsList",
376
+ "schema": "ProjectsList",
377
+ "shell": "MarketingShell",
378
+ "chrome": "on",
379
+ "sections": [
380
+ {
381
+ "type": "hero",
382
+ "component": "Hero"
383
+ },
384
+ {
385
+ "type": "items",
386
+ "component": "Items",
387
+ "options": {
388
+ "columns": 2
389
+ }
390
+ },
391
+ {
392
+ "type": "cta",
393
+ "component": "CTA"
394
+ }
395
+ ]
396
+ },
397
+ {
398
+ "route": "/projects/[slug]",
399
+ "kind": "page",
400
+ "contentDir": "content/en/Project",
401
+ "seeds": [
402
+ "content/en/Project/fit-check-funnel.mdx",
403
+ "content/en/Project/launch-site-in-fourteen-days.mdx"
404
+ ],
405
+ "pageType": "Project",
406
+ "schema": "Project",
407
+ "shell": "MarketingShell",
408
+ "chrome": "on",
409
+ "sections": []
410
+ },
411
+ {
412
+ "route": "/thanks/[slug]",
413
+ "kind": "page",
414
+ "contentDir": "content/en/ThankYouPage",
415
+ "seeds": [
416
+ "content/en/ThankYouPage/apply.mdx",
417
+ "content/en/ThankYouPage/contact.mdx",
418
+ "content/en/ThankYouPage/newsletter.mdx"
419
+ ],
420
+ "pageType": "ThankYouPage",
421
+ "schema": "ThankYouPage",
422
+ "shell": "MarketingShell",
423
+ "chrome": "on",
424
+ "sections": []
425
+ },
214
426
  {
215
427
  "route": "/meet",
428
+ "kind": "route",
216
429
  "pageType": null,
217
430
  "schema": null,
218
431
  "shell": "MarketingShell",
@@ -221,6 +434,7 @@
221
434
  },
222
435
  {
223
436
  "route": "/meet/[slug]",
437
+ "kind": "route",
224
438
  "pageType": null,
225
439
  "schema": null,
226
440
  "shell": "MarketingShell",
@@ -229,6 +443,7 @@
229
443
  },
230
444
  {
231
445
  "route": "/meet/confirmed",
446
+ "kind": "route",
232
447
  "pageType": null,
233
448
  "schema": null,
234
449
  "shell": "MarketingShell",
@@ -237,6 +452,7 @@
237
452
  },
238
453
  {
239
454
  "route": "/appointments",
455
+ "kind": "route",
240
456
  "pageType": null,
241
457
  "schema": null,
242
458
  "shell": "MarketingShell",
@@ -245,6 +461,7 @@
245
461
  },
246
462
  {
247
463
  "route": "/flows/[slug]",
464
+ "kind": "route",
248
465
  "pageType": null,
249
466
  "schema": null,
250
467
  "shell": "MarketingShell",
@@ -253,6 +470,7 @@
253
470
  },
254
471
  {
255
472
  "route": "/flows/[slug]/start",
473
+ "kind": "route",
256
474
  "pageType": null,
257
475
  "schema": null,
258
476
  "shell": "MarketingShell",
@@ -261,6 +479,7 @@
261
479
  },
262
480
  {
263
481
  "route": "/flows/[slug]/results/[payload]",
482
+ "kind": "route",
264
483
  "pageType": null,
265
484
  "schema": null,
266
485
  "shell": "MarketingShell",
@@ -269,8 +488,16 @@
269
488
  },
270
489
  {
271
490
  "route": "/reports/[slug]",
272
- "pageType": null,
273
- "schema": null,
491
+ "kind": "page",
492
+ "contentDir": "content/en/ReportPage",
493
+ "seeds": [
494
+ "content/en/ReportPage/annual-letter-2024.mdx",
495
+ "content/en/ReportPage/field-notes-2023.mdx",
496
+ "content/en/ReportPage/platform-shift-2025.mdx",
497
+ "content/en/ReportPage/state-of-the-market-2026.mdx"
498
+ ],
499
+ "pageType": "ReportPage",
500
+ "schema": "ReportPage",
274
501
  "shell": "MarketingShell",
275
502
  "chrome": "on",
276
503
  "sections": []