create-ailk 0.6.1 → 0.8.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 (324) hide show
  1. package/README.md +87 -14
  2. package/component-catalog.json +735 -95
  3. package/component-catalog.md +13 -7
  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 +89 -29
  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 +170 -14
  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/module-license-gate.d.ts +79 -0
  18. package/dist/lib/module-license-gate.js +160 -12
  19. package/dist/lib/module-tier.d.ts +45 -16
  20. package/dist/lib/module-tier.js +76 -0
  21. package/dist/lib/pro-callout.d.ts +16 -10
  22. package/dist/lib/pro-callout.js +34 -3
  23. package/dist/license-set.d.ts +34 -0
  24. package/dist/license-set.js +194 -0
  25. package/dist/module-architecture.d.ts +20 -0
  26. package/dist/module-architecture.js +77 -19
  27. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  28. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  29. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  30. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  31. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  32. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  33. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  34. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  35. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  36. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  37. package/dist/parse-args.d.ts +85 -10
  38. package/dist/parse-args.js +227 -15
  39. package/dist/programmatic.d.ts +81 -5
  40. package/dist/programmatic.js +291 -32
  41. package/dist/site-chrome.d.ts +18 -7
  42. package/dist/site-chrome.js +32 -14
  43. package/dist/site-roster.d.ts +127 -0
  44. package/dist/site-roster.js +499 -0
  45. package/dist/starter-grid.d.ts +216 -0
  46. package/dist/starter-grid.js +449 -0
  47. package/dist/surfaces.d.ts +20 -7
  48. package/dist/surfaces.js +204 -24
  49. package/dist/sync-routes.d.ts +9 -0
  50. package/dist/sync-routes.js +2 -2
  51. package/dist/template-manifest.d.ts +94 -19
  52. package/dist/template-manifest.js +170 -289
  53. package/dist/template-names.d.ts +14 -12
  54. package/dist/template-names.js +13 -17
  55. package/package.json +6 -4
  56. package/site-templates/_base/content/en/BookCall/book-call.mdx +52 -0
  57. package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
  58. package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
  59. package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
  60. package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
  61. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +65 -0
  62. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +67 -0
  63. package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
  64. package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
  65. package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
  66. package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
  67. package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
  68. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  69. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +17 -3
  70. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  71. package/site-templates/_base/content/en/UseCase/persona-1.mdx +69 -0
  72. package/site-templates/_base/content/en/UseCase/persona-2.mdx +69 -0
  73. package/site-templates/_base/content/en/UseCase/persona-3.mdx +69 -0
  74. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  75. package/site-templates/designs/standard/DESIGN.md +167 -0
  76. package/site-templates/marketing-site/DESIGN.md +59 -40
  77. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +376 -57
  78. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +230 -90
  79. package/site-templates/marketing-site/ailk-template.json +1 -0
  80. package/site-templates/marketing-site-free/DESIGN.md +59 -40
  81. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +323 -63
  82. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +323 -113
  83. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  84. package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
  85. package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
  86. package/site-templates/minimalism-site/DESIGN.md +54 -40
  87. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  88. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +173 -51
  89. package/site-templates/minimalism-site/ailk-template.json +3 -2
  90. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +52 -0
  91. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  92. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  93. package/site-templates/saas-product/DESIGN.md +59 -40
  94. package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
  95. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +369 -0
  96. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +302 -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/shapes/local-business-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  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 +362 -0
  109. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +300 -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/shapes/organization-service/content/en/Service/first-engagement.mdx +38 -0
  117. package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +38 -0
  118. package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +38 -0
  119. package/site-templates/shapes/organization-service/content/en/ServicesList/services.mdx +72 -0
  120. package/site-templates/shapes/organization-service/provenance.json +4 -0
  121. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +369 -0
  122. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +299 -0
  123. package/site-templates/shapes/person-service/ailk-template.json +10 -0
  124. package/site-templates/shapes/person-service/content/_site.mdx +85 -0
  125. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
  126. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
  127. package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  128. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +169 -0
  129. package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  130. package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
  131. package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
  132. package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
  133. package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
  134. package/site-templates/shapes/person-service/provenance.json +4 -0
  135. package/templates/.claude/settings.json +15 -0
  136. package/templates/.claude/skills/README.md +10 -9
  137. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  138. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  139. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  140. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  141. package/templates/.claude/skills/add-page/references/page-types.md +115 -0
  142. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  143. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  144. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  145. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  146. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  147. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  148. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  149. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  150. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  151. package/templates/.claude/skills/setup-database/SKILL.md +156 -0
  152. package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
  153. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +73 -41
  154. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +21 -30
  155. package/templates/.claude/skills/setup-deploy/references/runbook-template.md +204 -0
  156. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  157. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  158. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  159. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  160. package/templates/.github/workflows/ci.yml +5 -0
  161. package/templates/CLAUDE.md +8 -2
  162. package/templates/DESIGN.md +56 -44
  163. package/templates/README.md +116 -46
  164. package/templates/apps/api/.env.example +2 -1
  165. package/templates/apps/api/CLAUDE.md +3 -2
  166. package/templates/apps/api/package.json +1 -1
  167. package/templates/apps/api/src/config/__tests__/index.test.ts +146 -10
  168. package/templates/apps/api/src/config/index.ts +46 -14
  169. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
  170. package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
  171. package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
  172. package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
  173. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  174. package/templates/apps/api/src/lib/site.ts +5 -3
  175. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  176. package/templates/apps/api/src/middleware/auth.ts +9 -0
  177. package/templates/apps/api/src/openapi/spec.ts +63 -12
  178. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  179. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  180. package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
  181. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
  182. package/templates/apps/api/src/routes/leads/index.ts +46 -1
  183. package/templates/apps/api/src/server.ts +13 -0
  184. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
  185. package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
  186. package/templates/apps/api/src/services/lead-routing.ts +140 -30
  187. package/templates/apps/api/src/services/leads-inbox.ts +48 -11
  188. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  189. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  190. package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
  191. package/templates/apps/mcp/package.json +2 -1
  192. package/templates/apps/mcp/src/index.ts +7 -0
  193. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  194. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  195. package/templates/apps/mcp/src/tools/create_project.ts +21 -6
  196. package/templates/apps/web/__tests__/setup.ts +18 -0
  197. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  198. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  199. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  200. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  201. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  202. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  203. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  204. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  205. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  206. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  207. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  208. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  209. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +67 -29
  210. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +94 -11
  211. package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
  212. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
  213. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +228 -86
  214. package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
  215. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
  216. package/templates/apps/web/app/[locale]/contact/page.tsx +115 -7
  217. package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
  218. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  219. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  220. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  221. package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
  222. package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
  223. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  224. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  225. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  226. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  227. package/templates/apps/web/app/[locale]/layout.tsx +146 -52
  228. package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
  229. package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
  230. package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
  231. package/templates/apps/web/app/[locale]/newsletter/page.tsx +142 -0
  232. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  233. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
  234. package/templates/apps/web/app/[locale]/portfolio/page.tsx +49 -0
  235. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  236. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  237. package/templates/apps/web/app/[locale]/{cancellation → purchase-policy}/page.tsx +15 -10
  238. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  239. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  240. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  241. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  242. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  243. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  244. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  245. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  246. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +63 -0
  247. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  248. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  249. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  250. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  251. package/templates/apps/web/app/error-fallback.tsx +17 -45
  252. package/templates/apps/web/app/not-found.tsx +14 -38
  253. package/templates/apps/web/app/og/route.tsx +6 -0
  254. package/templates/apps/web/eslint.config.mjs +3 -0
  255. package/templates/apps/web/instrumentation.ts +14 -0
  256. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  257. package/templates/apps/web/lib/license-key-store.ts +52 -0
  258. package/templates/apps/web/lib/nav-config.ts +82 -18
  259. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  260. package/templates/apps/web/lib/site-brand.tsx +1 -1
  261. package/templates/apps/web/lib/site-chrome.ts +3 -3
  262. package/templates/apps/web/lib/site-identity.ts +148 -0
  263. package/templates/apps/web/lib/site-theme.ts +11 -0
  264. package/templates/apps/web/messages/en.json +78 -37
  265. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  266. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  267. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  268. package/templates/apps/web/public/favicon-16x16.png +0 -0
  269. package/templates/apps/web/public/favicon-32x32.png +0 -0
  270. package/templates/apps/web/public/favicon.ico +0 -0
  271. package/templates/apps/web/public/favicon.svg +3 -3
  272. package/templates/apps/web/public/logomark.svg +6 -3
  273. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  274. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  275. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  276. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  277. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  278. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  279. package/templates/apps/web/public/site.webmanifest +4 -4
  280. package/templates/apps/web/public/wordmark-light.svg +4 -0
  281. package/templates/apps/web/public/wordmark.svg +3 -3
  282. package/templates/apps/web/security-headers.config.ts +5 -1
  283. package/templates/content/_site.mdx +25 -0
  284. package/templates/content/en/AboutPage/about.mdx +150 -144
  285. package/templates/content/en/BlogList/blog.mdx +126 -0
  286. package/templates/content/en/ContactPage/contact.mdx +21 -92
  287. package/templates/content/en/FAQPage/faq.mdx +86 -57
  288. package/templates/content/en/HomePage/home.mdx +268 -217
  289. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +181 -0
  290. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  291. package/templates/database/CHANGELOG.md +14 -0
  292. package/templates/database/package.json +1 -1
  293. package/templates/package.json +3 -1
  294. package/templates/tools/lint-architecture.ts +315 -0
  295. package/templates/tools/tsconfig.json +14 -0
  296. package/versions.json +33 -33
  297. package/site-templates/simple-service/DESIGN.md +0 -148
  298. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +0 -240
  299. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -278
  300. package/site-templates/simple-service/ailk-template.json +0 -10
  301. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -67
  302. package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
  303. package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
  304. package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
  305. package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
  306. package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
  307. package/site-templates/simple-service/provenance.json +0 -4
  308. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  309. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  310. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  311. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  312. package/templates/.claude/skills/provision-config/references/runbook-template.md +0 -248
  313. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  314. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  315. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  316. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -150
  317. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  318. package/templates/apps/web/app/[locale]/shipping/page.tsx +0 -44
  319. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  320. package/templates/content/en/LandingPage/blog.mdx +0 -83
  321. package/templates/content/en/LandingPage/features.mdx +0 -103
  322. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  323. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  324. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -0,0 +1,123 @@
1
+ ---
2
+ type: "PurchasePolicyPage"
3
+ slug: "purchase-policy"
4
+ title: "Purchase Policy"
5
+ description: "How cancellations, reschedules and refunds work for jobs booked through this site. Placeholder policy — replace every section before you launch."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "purchase-policy-document",
10
+ "type": "document-chassis",
11
+ "data":
12
+ {
13
+ "headline": "Purchase Policy",
14
+ "layout": "article",
15
+ "updated": "Last updated {Month Day, Year}",
16
+ "navGroupLabel": "Contents",
17
+ "sections":
18
+ [
19
+ {
20
+ "id": "cancellation",
21
+ "heading": "Cancellation",
22
+ "blocks":
23
+ [
24
+ {
25
+ "kind": "paragraph",
26
+ "text": "This page is starter content that shipped with your site. It is not a purchase policy, it makes no commitment on behalf of Your Company, and it is not legal advice. Replace every section with the policy you actually operate, and have someone qualified read it before you publish.",
27
+ },
28
+ {
29
+ "kind": "paragraph",
30
+ "text": "This section explains how cancellations and reschedules work for a job booked through this site. The headings are the ones a customer and an agent both look for, so keep them and fill in your own terms.",
31
+ },
32
+ ],
33
+ "subsections":
34
+ [
35
+ {
36
+ "id": "notice",
37
+ "heading": "How much notice is required",
38
+ "blocks":
39
+ [
40
+ {
41
+ "kind": "paragraph",
42
+ "text": "State the notice period in hours before the appointment, and say how it is measured. A customer reading at midnight should be able to work out, without arithmetic you have not shown them, whether they are still inside it.",
43
+ },
44
+ ],
45
+ },
46
+ {
47
+ "id": "how-to-cancel",
48
+ "heading": "How to cancel or reschedule",
49
+ "blocks":
50
+ [
51
+ {
52
+ "kind": "paragraph",
53
+ "text": "Give one route to cancel and one to reschedule, and say whether a reschedule inside the notice period counts as a cancellation.",
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ "id": "fees",
59
+ "heading": "Late cancellations and no-shows",
60
+ "blocks":
61
+ [
62
+ {
63
+ "kind": "paragraph",
64
+ "text": "Say what a late cancellation costs and what a no-show costs, as a figure or a share of the job price, and when each is charged. If you hold a deposit, say what happens to it in each case.",
65
+ },
66
+ ],
67
+ },
68
+ {
69
+ "id": "our-cancellations",
70
+ "heading": "If we cancel",
71
+ "blocks":
72
+ [
73
+ {
74
+ "kind": "paragraph",
75
+ "text": "Set out what a customer gets if you cancel or move an appointment — a full refund, a rebooking, or both — and how quickly you tell them. A policy that only binds one side reads as one.",
76
+ },
77
+ ],
78
+ },
79
+ {
80
+ "id": "exceptions",
81
+ "heading": "Exceptions",
82
+ "blocks":
83
+ [
84
+ {
85
+ "kind": "paragraph",
86
+ "text": "Name the circumstances in which you waive a fee — illness, severe weather — and say what you need from the customer to apply the waiver. Vague discretion is worse for you than a short written list.",
87
+ },
88
+ ],
89
+ },
90
+ ],
91
+ },
92
+ {
93
+ "id": "refunds",
94
+ "heading": "Refunds",
95
+ "blocks":
96
+ [
97
+ {
98
+ "kind": "paragraph",
99
+ "text": "Say what a customer gets back after a cancellation — the job price, the deposit, or both, and how long the refund takes to reach the payment method it came from.",
100
+ },
101
+ ],
102
+ "subsections":
103
+ [
104
+ {
105
+ "id": "questions",
106
+ "heading": "Questions about a refund",
107
+ "blocks":
108
+ [
109
+ {
110
+ "kind": "paragraph",
111
+ "text": "Point to the one place a customer should write, and say roughly how quickly you answer. A policy nobody can ask a question about is a policy that generates disputes.",
112
+ },
113
+ ],
114
+ },
115
+ ],
116
+ },
117
+ ],
118
+ },
119
+ },
120
+ ]
121
+ ---
122
+
123
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Service shape (#6646): cancellation and refunds — this tree's override of the `_base` product-shape seed. */}
@@ -0,0 +1,39 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "first-job"
4
+ title: "{First job}"
5
+ description: "{One line on what this job is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{First job}"
8
+ areaServed: "{Your service area}"
9
+ provider:
10
+ "@type": Organization
11
+ name: "Your Company"
12
+ ---
13
+
14
+ # {First job}
15
+
16
+ {Open with the situation a reader is in when they come looking for this. Two or
17
+ three sentences, no more — the detail belongs under the headings below.}
18
+
19
+ ## What it covers
20
+
21
+ - {The first thing you actually do}
22
+ - {The second thing you actually do}
23
+ - {The third thing you actually do}
24
+
25
+ ## How it runs
26
+
27
+ {One paragraph on the shape of the visit: how it is scheduled, how long it
28
+ takes, who turns up, and what you need from the customer beforehand.}
29
+
30
+ ## What you end up with
31
+
32
+ {One paragraph on the result. Be concrete — describe the property when the
33
+ crew drives away.}
34
+
35
+ ## What it costs
36
+
37
+ {One line on the pricing shape — flat rate, hourly, or by the job — and what it
38
+ excludes. Replace with your real numbers, or delete this section and let a
39
+ call do it.}
@@ -0,0 +1,39 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "second-job"
4
+ title: "{Second job}"
5
+ description: "{One line on what this job is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{Second job}"
8
+ areaServed: "{Your service area}"
9
+ provider:
10
+ "@type": Organization
11
+ name: "Your Company"
12
+ ---
13
+
14
+ # {Second job}
15
+
16
+ {Open with the situation a reader is in when they come looking for this. Two or
17
+ three sentences, no more — the detail belongs under the headings below.}
18
+
19
+ ## What it covers
20
+
21
+ - {The first thing you actually do}
22
+ - {The second thing you actually do}
23
+ - {The third thing you actually do}
24
+
25
+ ## How it runs
26
+
27
+ {One paragraph on the shape of the visit: how it is scheduled, how long it
28
+ takes, who turns up, and what you need from the customer beforehand.}
29
+
30
+ ## What you end up with
31
+
32
+ {One paragraph on the result. Be concrete — describe the property when the
33
+ crew drives away.}
34
+
35
+ ## What it costs
36
+
37
+ {One line on the pricing shape — flat rate, hourly, or by the job — and what it
38
+ excludes. Replace with your real numbers, or delete this section and let a
39
+ call do it.}
@@ -0,0 +1,39 @@
1
+ ---
2
+ type: "Service"
3
+ slug: "third-job"
4
+ title: "{Third job}"
5
+ description: "{One line on what this job is and who it suits. Replace before you launch.}"
6
+ schema:
7
+ serviceType: "{Third job}"
8
+ areaServed: "{Your service area}"
9
+ provider:
10
+ "@type": Organization
11
+ name: "Your Company"
12
+ ---
13
+
14
+ # {Third job}
15
+
16
+ {Open with the situation a reader is in when they come looking for this. Two or
17
+ three sentences, no more — the detail belongs under the headings below.}
18
+
19
+ ## What it covers
20
+
21
+ - {The first thing you actually do}
22
+ - {The second thing you actually do}
23
+ - {The third thing you actually do}
24
+
25
+ ## How it runs
26
+
27
+ {One paragraph on the shape of the visit: how it is scheduled, how long it
28
+ takes, who turns up, and what you need from the customer beforehand.}
29
+
30
+ ## What you end up with
31
+
32
+ {One paragraph on the result. Be concrete — describe the property when the
33
+ crew drives away.}
34
+
35
+ ## What it costs
36
+
37
+ {One line on the pricing shape — flat rate, hourly, or by the job — and what it
38
+ excludes. Replace with your real numbers, or delete this section and let a
39
+ call do it.}
@@ -0,0 +1,61 @@
1
+ ---
2
+ type: "ServicesList"
3
+ slug: "services"
4
+ title: "Services"
5
+ description: "The three jobs {your company} does, in {Your service area}. Placeholder copy — replace before you launch."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "variant": "centered",
14
+ "eyebrow": "Services",
15
+ "headline": "Three jobs, one crew",
16
+ "subheadline": "{One line on how to choose between them. Name the question a reader is actually asking.}",
17
+ },
18
+ },
19
+ {
20
+ "id": "jobs",
21
+ "type": "items",
22
+ "data":
23
+ {
24
+ "headline": "What we do",
25
+ "columns": 3,
26
+ "items":
27
+ [
28
+ {
29
+ "title": "{First job}",
30
+ "description": "{One line on what this job is and who it suits.}",
31
+ "link": { "label": "Read more", "href": "/services/first-job" },
32
+ },
33
+ {
34
+ "title": "{Second job}",
35
+ "description": "{One line on what this job is and who it suits.}",
36
+ "link":
37
+ { "label": "Read more", "href": "/services/second-job" },
38
+ },
39
+ {
40
+ "title": "{Third job}",
41
+ "description": "{One line on what this job is and who it suits.}",
42
+ "link": { "label": "Read more", "href": "/services/third-job" },
43
+ },
44
+ ],
45
+ },
46
+ },
47
+ {
48
+ "id": "closing",
49
+ "type": "cta",
50
+ "data":
51
+ {
52
+ "variant": "minimal",
53
+ "headline": "Not sure which one?",
54
+ "description": "{One line inviting the reader to ask instead of guessing.}",
55
+ "primaryCta": { "label": "Get in touch", "href": "/contact" },
56
+ },
57
+ },
58
+ ]
59
+ ---
60
+
61
+ Placeholder copy. The three detail pages under `content/en/Service/` carry the long form; this page is the chooser.
@@ -0,0 +1,4 @@
1
+ {
2
+ "template": "local-business-service",
3
+ "requires": ["marketing"]
4
+ }
@@ -0,0 +1,362 @@
1
+ {
2
+ "template": "organization-service",
3
+ "requires": ["marketing"],
4
+ "categories": ["accounting", "legal", "real-estate"],
5
+ "shape": "organization-service",
6
+ "design": "standard",
7
+ "generatedHash": "ecd6d84a7b4b19b1fa2f36060060bfebad83ad79da8f0328db1846545c0136a7",
8
+ "layout": {
9
+ "nav": "full",
10
+ "footer": "columns",
11
+ "announcementBanner": false,
12
+ "home": "default"
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
+ },
44
+ "rows": [
45
+ {
46
+ "route": "/",
47
+ "kind": "page",
48
+ "pageType": "HomePage",
49
+ "schema": "HomePage",
50
+ "shell": "MarketingShell",
51
+ "chrome": "on",
52
+ "sections": [
53
+ {
54
+ "type": "hero",
55
+ "component": "Hero"
56
+ },
57
+ {
58
+ "type": "items",
59
+ "component": "Items",
60
+ "options": {
61
+ "columns": 3
62
+ }
63
+ },
64
+ {
65
+ "type": "cta",
66
+ "component": "CTA"
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "route": "/about",
72
+ "kind": "page",
73
+ "pageType": "AboutPage",
74
+ "schema": "AboutPage",
75
+ "shell": "MarketingShell",
76
+ "chrome": "on",
77
+ "sections": [
78
+ {
79
+ "type": "content-block",
80
+ "component": "ContentBlock"
81
+ },
82
+ {
83
+ "type": "cta",
84
+ "component": "CTA"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "route": "/services",
90
+ "kind": "page",
91
+ "pageType": "ServicesList",
92
+ "schema": "ServicesList",
93
+ "shell": "MarketingShell",
94
+ "chrome": "on",
95
+ "sections": [
96
+ {
97
+ "type": "hero",
98
+ "component": "Hero"
99
+ },
100
+ {
101
+ "type": "items",
102
+ "component": "Items",
103
+ "options": {
104
+ "columns": 3
105
+ }
106
+ },
107
+ {
108
+ "type": "cta",
109
+ "component": "CTA"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "route": "/services/[slug]",
115
+ "kind": "page",
116
+ "contentDir": "content/en/Service",
117
+ "seeds": [
118
+ "content/en/Service/first-engagement.mdx",
119
+ "content/en/Service/second-engagement.mdx",
120
+ "content/en/Service/third-engagement.mdx"
121
+ ],
122
+ "pageType": "Service",
123
+ "schema": "Service",
124
+ "shell": "MarketingShell",
125
+ "chrome": "on",
126
+ "sections": []
127
+ },
128
+ {
129
+ "route": "/contact",
130
+ "kind": "page",
131
+ "pageType": "ContactPage",
132
+ "schema": "ContactPage",
133
+ "shell": "MarketingShell",
134
+ "chrome": "on",
135
+ "sections": [
136
+ {
137
+ "type": "hero",
138
+ "component": "Hero"
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "route": "/faq",
144
+ "kind": "page",
145
+ "pageType": "FAQPage",
146
+ "schema": "FAQPage",
147
+ "shell": "MarketingShell",
148
+ "chrome": "on",
149
+ "sections": [
150
+ {
151
+ "type": "hero",
152
+ "component": "Hero",
153
+ "options": {
154
+ "gapBelow": "tight"
155
+ }
156
+ },
157
+ {
158
+ "type": "faq",
159
+ "component": "FAQ"
160
+ },
161
+ {
162
+ "type": "faq",
163
+ "component": "FAQ"
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "route": "/glossary",
169
+ "kind": "page",
170
+ "pageType": "GlossaryList",
171
+ "schema": "GlossaryList",
172
+ "shell": "MarketingShell",
173
+ "chrome": "on",
174
+ "sections": [
175
+ {
176
+ "type": "hero",
177
+ "component": "Hero"
178
+ },
179
+ {
180
+ "type": "glossary-index",
181
+ "component": "GlossaryIndex"
182
+ }
183
+ ]
184
+ },
185
+ {
186
+ "route": "/newsletter",
187
+ "kind": "page",
188
+ "pageType": "NewsletterSignup",
189
+ "schema": "NewsletterSignup",
190
+ "shell": "MarketingShell",
191
+ "chrome": "on",
192
+ "sections": [
193
+ {
194
+ "type": "hero",
195
+ "component": "Hero"
196
+ },
197
+ {
198
+ "type": "faq",
199
+ "component": "FAQ"
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "route": "/book-a-call",
205
+ "kind": "page",
206
+ "pageType": "BookCall",
207
+ "schema": "BookCall",
208
+ "shell": "MarketingShell",
209
+ "chrome": "on",
210
+ "sections": [
211
+ {
212
+ "type": "hero",
213
+ "component": "Hero"
214
+ },
215
+ {
216
+ "type": "items",
217
+ "component": "Items",
218
+ "options": {
219
+ "columns": 3
220
+ }
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ "route": "/privacy",
226
+ "kind": "page",
227
+ "pageType": "PrivacyPage",
228
+ "schema": "PrivacyPage",
229
+ "shell": "MarketingShell",
230
+ "chrome": "on",
231
+ "sections": [
232
+ {
233
+ "type": "document-chassis",
234
+ "component": "DocumentChassis",
235
+ "options": {
236
+ "layout": "article"
237
+ }
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "route": "/terms",
243
+ "kind": "page",
244
+ "pageType": "TermsPage",
245
+ "schema": "TermsPage",
246
+ "shell": "MarketingShell",
247
+ "chrome": "on",
248
+ "sections": [
249
+ {
250
+ "type": "document-chassis",
251
+ "component": "DocumentChassis",
252
+ "options": {
253
+ "layout": "article"
254
+ }
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "route": "/purchase-policy",
260
+ "kind": "page",
261
+ "pageType": "PurchasePolicyPage",
262
+ "schema": "PurchasePolicyPage",
263
+ "shell": "MarketingShell",
264
+ "chrome": "on",
265
+ "sections": [
266
+ {
267
+ "type": "document-chassis",
268
+ "component": "DocumentChassis",
269
+ "options": {
270
+ "layout": "article"
271
+ }
272
+ }
273
+ ]
274
+ },
275
+ {
276
+ "route": "/blog",
277
+ "kind": "page",
278
+ "pageType": "BlogList",
279
+ "schema": "BlogList",
280
+ "shell": "MarketingShell",
281
+ "chrome": "on",
282
+ "sections": [
283
+ {
284
+ "type": "hero",
285
+ "component": "Hero",
286
+ "options": {
287
+ "gapBelow": "tight"
288
+ }
289
+ },
290
+ {
291
+ "type": "blog-list",
292
+ "component": "BlogList"
293
+ },
294
+ {
295
+ "type": "logoCloud",
296
+ "component": "LogoCloud",
297
+ "options": {
298
+ "layout": "inline"
299
+ }
300
+ },
301
+ {
302
+ "type": "testimonials",
303
+ "component": "Testimonials"
304
+ }
305
+ ]
306
+ },
307
+ {
308
+ "route": "/portfolio",
309
+ "kind": "page",
310
+ "pageType": "PortfolioList",
311
+ "schema": "PortfolioList",
312
+ "shell": "MarketingShell",
313
+ "chrome": "on",
314
+ "sections": [
315
+ {
316
+ "type": "hero",
317
+ "component": "Hero",
318
+ "options": {
319
+ "gapBelow": "tight",
320
+ "size": "display",
321
+ "surface": "wash-secondary"
322
+ }
323
+ },
324
+ {
325
+ "type": "items",
326
+ "component": "Items",
327
+ "options": {
328
+ "surface": "none",
329
+ "columns": 2
330
+ }
331
+ },
332
+ {
333
+ "type": "cta",
334
+ "component": "CTA"
335
+ },
336
+ {
337
+ "type": "faq",
338
+ "component": "FAQ",
339
+ "options": {
340
+ "surface": "gray-100"
341
+ }
342
+ }
343
+ ]
344
+ },
345
+ {
346
+ "route": "/portfolio/[slug]",
347
+ "kind": "page",
348
+ "contentDir": "content/en/PortfolioItem",
349
+ "seeds": [
350
+ "content/en/PortfolioItem/sample-four.mdx",
351
+ "content/en/PortfolioItem/sample-one.mdx",
352
+ "content/en/PortfolioItem/sample-three.mdx",
353
+ "content/en/PortfolioItem/sample-two.mdx"
354
+ ],
355
+ "pageType": "PortfolioItem",
356
+ "schema": "PortfolioItem",
357
+ "shell": "MarketingShell",
358
+ "chrome": "on",
359
+ "sections": []
360
+ }
361
+ ]
362
+ }