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
@@ -0,0 +1,232 @@
1
+ /**
2
+ * The starter grid's data (#6753): the shape rosters and the alias table
3
+ * every `--template` name resolves through. A starter is one shape rendered
4
+ * in one design with a module list (starter-template contract § The three
5
+ * axes); an alias names those coordinates plus how its own rows differ from
6
+ * the shape's standard roster.
7
+ *
8
+ * DATA ONLY, AND IMPORT-FREE AT RUNTIME. Every import below is `import type`,
9
+ * erased at emit. `template-names.ts` derives `RECOGNIZED_TEMPLATES` from
10
+ * `ALIASES` and `parse-args.ts` imports that at runtime, so a runtime import
11
+ * here could reach `lib/module-tier.ts` and re-open the `RECOGNIZED_MODULES`
12
+ * temporal-dead-zone cycle `template-names.ts`'s header records (spec 6753
13
+ * D1). The composition itself — shape roster, minus `drop`, plus `add` —
14
+ * lives in `template-manifest.ts`, whose `resolveTemplate` is the one reader
15
+ * that yields a template's roster. Nothing but those two files imports this one.
16
+ */
17
+ import type { CategorySlug } from "@working-theory/schema/categories";
18
+ import type { ModuleName } from "./parse-args.js";
19
+ import type { TemplateLayout } from "./site-chrome.js";
20
+ import type { StarterDesign, StarterShape, TemplateRosterRow } from "./template-manifest.js";
21
+ /** The shapes a starter can be built from — every StarterShape but the reserved one. */
22
+ export type BuildableShape = Exclude<StarterShape, "local-business-product">;
23
+ /** How an alias's own rows differ from its shape's standard roster. */
24
+ export interface AliasDifferences {
25
+ /** Shape-roster routes this alias does not carry. */
26
+ readonly drop?: readonly string[];
27
+ /** Rows this alias carries that its shape roster does not. */
28
+ readonly add?: readonly TemplateRosterRow[];
29
+ /** The retained shape route `add` is inserted before; absent → appended. */
30
+ readonly before?: string;
31
+ /**
32
+ * Further positioned groups (#6757 D7): each group's rows go before its
33
+ * own `before` route, applied group by group in array order, AFTER `add`
34
+ * is placed. The one alias that needs more than one anchor
35
+ * (`minimalism-site`, which interleaves rows at two separate points in the
36
+ * shape's row order) uses this; every other alias leaves it unset.
37
+ */
38
+ readonly insert?: readonly {
39
+ readonly before: string;
40
+ readonly rows: readonly TemplateRosterRow[];
41
+ }[];
42
+ }
43
+ /**
44
+ * One `--template` name: the grid coordinates it stands for.
45
+ *
46
+ * No `tier`, `level`, `price` or optional-module member, for the reason
47
+ * `TemplateManifest` carries none (parent § D4, D12): the level is derived
48
+ * from `modules`, never declared, and the type is what makes declaring one a
49
+ * compile error.
50
+ */
51
+ export interface TemplateAlias {
52
+ readonly shape: BuildableShape;
53
+ readonly design: StarterDesign;
54
+ /** Becomes the manifest's `requires`. */
55
+ readonly modules: readonly ModuleName[];
56
+ readonly categories: readonly CategorySlug[];
57
+ readonly layout?: TemplateLayout;
58
+ readonly differences?: AliasDifferences;
59
+ /**
60
+ * Whether this alias ships its own `site-templates/<name>/` tree (spec 6892
61
+ * D1). Absent means `true` — every alias but `minimalism-site` keeps its
62
+ * own directory. `false` declares that the alias resolves purely from the
63
+ * grid: its seed layer is its shape's tree (`templateTreeDir`), and its
64
+ * generated roster record lives under `site-templates/aliases/` rather
65
+ * than a directory of its own (`shippedManifestPath`).
66
+ */
67
+ readonly ownTree?: boolean;
68
+ }
69
+ /**
70
+ * Each buildable shape's standard roster (#6753 D3) — the rows an alias starts
71
+ * from before its `differences` apply.
72
+ *
73
+ * `organization-product` is today's base roster, the `/blog` teaser and the
74
+ * portfolio pair. `organization-service`, `local-business-service` (#6757)
75
+ * and `person-service` (#6758, roadmap § 6 Phase 2) are each their own rows,
76
+ * the `/blog` teaser and the portfolio pair. Every shape's own rows carry
77
+ * `/sign-in` and `/sign-up` (#6797): the locale layout's header links both on
78
+ * every shape, so the roster of record lists them as code routes.
79
+ */
80
+ export declare const SHAPE_ROSTERS: Readonly<Record<BuildableShape, readonly TemplateRosterRow[]>>;
81
+ /**
82
+ * The `--template` names and the grid coordinates each stands for (#6753) —
83
+ * the one table `TEMPLATE_MANIFESTS` and `RECOGNIZED_TEMPLATES` derive from,
84
+ * in the declaration order both keep. The plain name is the Pro one: it is
85
+ * the flagship and the demo (Sam, 2026-09-14, parent § D12).
86
+ *
87
+ * `workspace` appears in no module list. It is a Pro module, but an authed app
88
+ * surface contributing no PUBLIC page to a marketing site, and `modules` names
89
+ * what the roster uses (parent § D15). A Pro key unlocks it regardless of any
90
+ * template.
91
+ *
92
+ * `commerce` is a per-site add-on available at any level, so no alias exists
93
+ * FOR it (parent § D13); it still contributes rows to whichever alias takes
94
+ * it, through `mergeRoster`.
95
+ *
96
+ * Frozen (#5507): the registry composed from this table is also the issuer's
97
+ * authorization allowlist (spec 5480 § C7). A test needing a different table
98
+ * passes its own to `resolveTemplate(name, aliases)` rather than mutating
99
+ * this one.
100
+ */
101
+ export declare const ALIASES: Readonly<{
102
+ /**
103
+ * The Free template, and the mechanism's own proof (parent § D11): it
104
+ * requires only `marketing`, so the keyless merge path is exercised by a
105
+ * template we ship anyway rather than by a throwaway fixture. The bare
106
+ * `organization-product` shape — no differences at all.
107
+ */
108
+ readonly "marketing-site-free": {
109
+ readonly shape: "organization-product";
110
+ readonly design: "standard";
111
+ readonly modules: readonly ["marketing"];
112
+ readonly categories: readonly ["accounting", "legal", "technology"];
113
+ readonly layout: {
114
+ readonly announcementBanner: true;
115
+ };
116
+ };
117
+ /**
118
+ * The Pro flagship. Its module list is OFFERINGS § 4 offering 3's tiers line
119
+ * — "docs, scheduling and flows modules" — where "flows" is
120
+ * `signal-collectors` (`MODULE_SURFACES` maps it to `["flows"]`). It drops
121
+ * the shape's `/blog` teaser because docs-blog contributes the real `/blog`,
122
+ * and adds the signal-collectors sample rows ahead of the portfolio pair.
123
+ */
124
+ readonly "marketing-site": {
125
+ readonly shape: "organization-product";
126
+ readonly design: "standard";
127
+ readonly modules: readonly ["marketing", "docs-blog", "scheduling", "signal-collectors"];
128
+ readonly categories: readonly ["accounting", "legal", "consulting", "hvac", "roofing", "plumbing", "electrical", "landscaping", "auto-repair", "real-estate", "technology", "medical-specialty"];
129
+ readonly differences: {
130
+ readonly drop: readonly ["/blog", "/meet", "/meet/[slug]"];
131
+ readonly add: readonly import("./module-architecture.js").PageRosterRow[];
132
+ readonly before: "/portfolio";
133
+ };
134
+ };
135
+ /**
136
+ * Pro Plus — the Pro list plus `multi-tenant`, which is correctly in the
137
+ * list because it DOES contribute pages (the org and workspace surfaces).
138
+ * Its `pageContributions` is nonetheless unset today, deferred to its own
139
+ * instance, so this template's merged roster carries the same contributed
140
+ * rows as `marketing-site`'s and no more. That is a module which has
141
+ * declared no rows yet — visible in the diff — not a merge that dropped
142
+ * declared rows.
143
+ */
144
+ readonly "saas-product": {
145
+ readonly shape: "organization-product";
146
+ readonly design: "standard";
147
+ readonly modules: readonly ["marketing", "docs-blog", "scheduling", "signal-collectors", "multi-tenant"];
148
+ readonly categories: readonly ["technology", "medical-specialty"];
149
+ readonly differences: {
150
+ readonly drop: readonly ["/blog", "/meet", "/meet/[slug]"];
151
+ readonly add: readonly import("./module-architecture.js").PageRosterRow[];
152
+ readonly before: "/portfolio";
153
+ };
154
+ };
155
+ /**
156
+ * The second Pro template (#5589) — the reports-first, scroll-snap deck
157
+ * site. NOT `marketing-site` plus a module: its `modules` omit `docs-blog`,
158
+ * so the two Pro templates are siblings under `_base` (#5618 D2), never a
159
+ * lineage. Level still derives from `modules`: `scheduling` and
160
+ * `signal-collectors` are paid, so `templateDelivery` returns `"paid"`
161
+ * exactly as it does for `marketing-site`.
162
+ *
163
+ * It composes the `organization-service` shape roster (#6757) rather than
164
+ * the organization-product one: the deck home replaces the document-scroll
165
+ * home, and `/how-it-works`, the product page, `/pricing` and `/sign-in`
166
+ * are not pages this site has. The roster is what the
167
+ * template IS, so an unrostered page has neither a route directory
168
+ * (`rosterSurfaces`) nor its `_base`/overlay seed (#6646 D1).
169
+ *
170
+ * It declares NO `layout` block (#6638): the deck home, mark-only nav and
171
+ * centered footer are the `minimalism` design's own `layout` (its
172
+ * `DESIGN.md`, resolved by `resolveDesign` off `design:` — #6813 D4) — the
173
+ * look any shape can wear. This alias ships no tree of its own (`ownTree:
174
+ * false`, spec 6892 D1); its GENERATED roster record (no narrative `.md`,
175
+ * D5) lives at `site-templates/aliases/minimalism-site.TEMPLATE-MANIFEST.json`.
176
+ *
177
+ * `/reports` (a `ReportsList` hub over `ReportPage`) and `/referral` (a
178
+ * flow landing page) are signal-collectors module samples (spec 6892 D3);
179
+ * neither carries a `GATEABLE_SURFACES` entry: `/referral` is a
180
+ * single-segment `LandingPage` slug served by the generic `[slug]` route
181
+ * (#5469 D2), the same mechanism Free's `/how-it-works` uses, and `/reports`
182
+ * is its own routes-map row. `/reports/[slug]` (the reader) is the
183
+ * signal-collectors module's own contributed row.
184
+ *
185
+ * `/services/[slug]` declares its seed DIRECTORY as `contentDir`
186
+ * (`content/en/Service`, as `routes-map.ts` records it). The three
187
+ * samples ride the template tree unmapped, landing at that directory.
188
+ *
189
+ * Since #6757, `organization-service` carries a real standard roster
190
+ * (D1), so this alias's `differences` is additions and drops only: it
191
+ * drops the `/blog` teaser (a Pro alias does not upsell its own level,
192
+ * D8), the portfolio pair (the reports are the proof, not a
193
+ * portfolio) and the two auth code routes the shape rosters (#6797 —
194
+ * this site has no `/sign-in`, above), adds the signal-collectors
195
+ * samples, and INSERTS its two own
196
+ * rows — `/reports` before `/about`, `/referral` before `/faq` (D7) — to
197
+ * reproduce its pre-#6757 row order (§ 1.2) exactly.
198
+ */
199
+ readonly "minimalism-site": {
200
+ readonly shape: "organization-service";
201
+ readonly design: "minimalism";
202
+ readonly modules: readonly ["marketing", "scheduling", "signal-collectors"];
203
+ readonly categories: readonly ["real-estate", "technology", "legal"];
204
+ readonly ownTree: false;
205
+ readonly differences: {
206
+ readonly drop: readonly ["/sign-in", "/sign-up", "/blog", "/meet", "/meet/[slug]", "/portfolio", "/portfolio/[slug]"];
207
+ readonly add: readonly import("./module-architecture.js").PageRosterRow[];
208
+ readonly insert: readonly [{
209
+ readonly before: "/about";
210
+ readonly rows: readonly [import("./module-architecture.js").PageRosterRow];
211
+ }, {
212
+ readonly before: "/faq";
213
+ readonly rows: readonly [import("./module-architecture.js").PageRosterRow];
214
+ }];
215
+ };
216
+ };
217
+ }>;
218
+ /**
219
+ * The coordinates a keyless `--shape S` builds (#6757 D5) — the composed
220
+ * FREE manifest per shape, for a shape with no `--template` alias of its
221
+ * own. Frozen and `Partial`; `organization-product` needs none — its
222
+ * keyless tree is `marketing-site-free`'s (#6754 AC-2).
223
+ *
224
+ * No `differences` (a bare shape is its standard roster, D1) and no
225
+ * `layout`. Every category is a leaf of `packages/schema/src/categories.ts`,
226
+ * as `TemplateManifest.categories` requires. `person-service`'s single
227
+ * `consulting` category is the operator's disposition (2026-09-26,
228
+ * ai-launch-kit-internal#6758): the leaf did not exist when #6758's spec was
229
+ * written, and adding it replaced that spec's `["accounting", "legal",
230
+ * "technology"]` author-pick stand-in.
231
+ */
232
+ export declare const SHAPE_STARTER_ALIASES: Readonly<Partial<Record<BuildableShape, TemplateAlias>>>;