create-ailk 0.1.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 (533) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +39 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +80 -0
  5. package/dist/copy.d.ts +8 -0
  6. package/dist/copy.js +109 -0
  7. package/dist/index.d.ts +10 -0
  8. package/dist/index.js +10 -0
  9. package/dist/lib/pro-callout.d.ts +12 -0
  10. package/dist/lib/pro-callout.js +20 -0
  11. package/dist/parse-args.d.ts +13 -0
  12. package/dist/parse-args.js +81 -0
  13. package/dist/programmatic.d.ts +49 -0
  14. package/dist/programmatic.js +89 -0
  15. package/dist/substitute.d.ts +31 -0
  16. package/dist/substitute.js +45 -0
  17. package/dist/validate.d.ts +8 -0
  18. package/dist/validate.js +70 -0
  19. package/package.json +47 -0
  20. package/templates/.claude/.gitkeep +0 -0
  21. package/templates/.claude/agents/web.md +80 -0
  22. package/templates/.claude/rules/architecture.md +62 -0
  23. package/templates/.claude/rules/preserve-existing-style.md +51 -0
  24. package/templates/.claude/skills/README.md +43 -0
  25. package/templates/.claude/skills/add-schema/SKILL.md +270 -0
  26. package/templates/.claude/skills/add-schema/references/conflict-handling.md +200 -0
  27. package/templates/.claude/skills/add-schema/references/file-finding.md +123 -0
  28. package/templates/.claude/skills/add-schema/references/schema-types.md +131 -0
  29. package/templates/.claude/skills/audit-site/SKILL.md +213 -0
  30. package/templates/.claude/skills/audit-site/references/common-errors.md +113 -0
  31. package/templates/.claude/skills/audit-site/references/findings-glossary.md +138 -0
  32. package/templates/.claude/skills/audit-site/references/severity-levels.md +114 -0
  33. package/templates/.claude/skills/provision-config/SKILL.md +243 -0
  34. package/templates/.claude/skills/provision-config/references/env-vars-template.md +184 -0
  35. package/templates/.claude/skills/provision-config/references/runbook-template.md +248 -0
  36. package/templates/.claude/skills/provision-config/references/vercel-json-template.md +98 -0
  37. package/templates/.claude/skills/scaffold-auth/SKILL.md +261 -0
  38. package/templates/.claude/skills/scaffold-auth/references/env-vars.md +91 -0
  39. package/templates/.claude/skills/scaffold-auth/references/oauth-app-setup.md +171 -0
  40. package/templates/.claude/skills/scaffold-commerce/SKILL.md +310 -0
  41. package/templates/.claude/skills/scaffold-commerce/references/lookup-keys-template.md +71 -0
  42. package/templates/.claude/skills/scaffold-commerce/references/marketplace-brand-pages.md +83 -0
  43. package/templates/.claude/skills/scaffold-commerce/templates/marketplace-cta-route.tsx.tmpl +72 -0
  44. package/templates/.claude/skills/scaffold-page/SKILL.md +243 -0
  45. package/templates/.claude/skills/scaffold-page/references/page-types.md +169 -0
  46. package/templates/.claude/skills/scaffold-page/templates/content.mdx.tmpl +28 -0
  47. package/templates/.claude/skills/scaffold-page/templates/route.tsx.tmpl +28 -0
  48. package/templates/.claude/skills/suggest-site-pages/SKILL.md +242 -0
  49. package/templates/.claude/skills/suggest-site-pages/references/categories.md +287 -0
  50. package/templates/.env.example +205 -0
  51. package/templates/.gitkeep +2 -0
  52. package/templates/CLAUDE.md +142 -0
  53. package/templates/CONVENTIONS.md +222 -0
  54. package/templates/README.md +110 -0
  55. package/templates/apps/api/.env.example +40 -0
  56. package/templates/apps/api/CLAUDE.md +63 -0
  57. package/templates/apps/api/api/index.ts +144 -0
  58. package/templates/apps/api/jest.config.cjs +74 -0
  59. package/templates/apps/api/package.json +54 -0
  60. package/templates/apps/api/src/__tests__/factories/content-fixture.ts +138 -0
  61. package/templates/apps/api/src/__tests__/factories/index.ts +70 -0
  62. package/templates/apps/api/src/__tests__/factories/lead-fixture.ts +82 -0
  63. package/templates/apps/api/src/__tests__/index.test.ts +118 -0
  64. package/templates/apps/api/src/__tests__/server.test.ts +207 -0
  65. package/templates/apps/api/src/__tests__/services/enrichment-shim.test.ts +126 -0
  66. package/templates/apps/api/src/__tests__/setup.ts +24 -0
  67. package/templates/apps/api/src/cli.ts +30 -0
  68. package/templates/apps/api/src/config/__tests__/index.test.ts +97 -0
  69. package/templates/apps/api/src/config/index.ts +56 -0
  70. package/templates/apps/api/src/index.ts +32 -0
  71. package/templates/apps/api/src/lib/__mocks__/prisma-client.js +15 -0
  72. package/templates/apps/api/src/lib/__mocks__/prisma.ts +45 -0
  73. package/templates/apps/api/src/lib/__tests__/content-adapter.test.ts +178 -0
  74. package/templates/apps/api/src/lib/__tests__/error-serializer.test.ts +100 -0
  75. package/templates/apps/api/src/lib/__tests__/errors.test.ts +94 -0
  76. package/templates/apps/api/src/lib/__tests__/file-fallback.test.ts +144 -0
  77. package/templates/apps/api/src/lib/__tests__/fixtures/HomePage/home.mdx +8 -0
  78. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +227 -0
  79. package/templates/apps/api/src/lib/__tests__/outbound-http.test.ts +125 -0
  80. package/templates/apps/api/src/lib/__tests__/prisma.test.ts +165 -0
  81. package/templates/apps/api/src/lib/__tests__/require-paid-tier.test.ts +129 -0
  82. package/templates/apps/api/src/lib/__tests__/stripe.test.ts +74 -0
  83. package/templates/apps/api/src/lib/content-adapter.ts +86 -0
  84. package/templates/apps/api/src/lib/error-serializer.ts +77 -0
  85. package/templates/apps/api/src/lib/errors.ts +95 -0
  86. package/templates/apps/api/src/lib/file-fallback.ts +87 -0
  87. package/templates/apps/api/src/lib/lead-capture-store.ts +110 -0
  88. package/templates/apps/api/src/lib/locales.ts +201 -0
  89. package/templates/apps/api/src/lib/outbound-http.ts +122 -0
  90. package/templates/apps/api/src/lib/prisma.ts +21 -0
  91. package/templates/apps/api/src/lib/require-paid-tier.ts +53 -0
  92. package/templates/apps/api/src/lib/stripe.ts +30 -0
  93. package/templates/apps/api/src/lib/webhook-idempotency.ts +92 -0
  94. package/templates/apps/api/src/middleware/__tests__/adversarial/bearer-token-format.test.ts +111 -0
  95. package/templates/apps/api/src/middleware/__tests__/adversarial/cookie-or-bearer-precedence.test.ts +172 -0
  96. package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-bearer-skip.test.ts +119 -0
  97. package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-cookie-path.test.ts +138 -0
  98. package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +149 -0
  99. package/templates/apps/api/src/middleware/__tests__/adversarial/session-timeout.test.ts +139 -0
  100. package/templates/apps/api/src/middleware/__tests__/auth.bearer-path.test.ts +175 -0
  101. package/templates/apps/api/src/middleware/__tests__/auth.both-present-precedence.test.ts +76 -0
  102. package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +153 -0
  103. package/templates/apps/api/src/middleware/__tests__/auth.neither-present.test.ts +72 -0
  104. package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +292 -0
  105. package/templates/apps/api/src/middleware/auth.ts +246 -0
  106. package/templates/apps/api/src/middleware/rate-limit.ts +132 -0
  107. package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +129 -0
  108. package/templates/apps/api/src/openapi/index.ts +12 -0
  109. package/templates/apps/api/src/openapi/spec.ts +408 -0
  110. package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +193 -0
  111. package/templates/apps/api/src/routes/auth/__tests__/auth-user.functional.test.ts +201 -0
  112. package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +294 -0
  113. package/templates/apps/api/src/routes/auth/__tests__/user.test.ts +486 -0
  114. package/templates/apps/api/src/routes/auth/tokens.ts +199 -0
  115. package/templates/apps/api/src/routes/auth/user.ts +244 -0
  116. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +588 -0
  117. package/templates/apps/api/src/routes/checkout/index.ts +13 -0
  118. package/templates/apps/api/src/routes/checkout/sessions.ts +185 -0
  119. package/templates/apps/api/src/routes/content/__tests__/create.test.ts +239 -0
  120. package/templates/apps/api/src/routes/content/__tests__/delete.test.ts +201 -0
  121. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +141 -0
  122. package/templates/apps/api/src/routes/content/__tests__/list-pages.test.ts +122 -0
  123. package/templates/apps/api/src/routes/content/__tests__/list-types.test.ts +44 -0
  124. package/templates/apps/api/src/routes/content/__tests__/locale.test.ts +118 -0
  125. package/templates/apps/api/src/routes/content/__tests__/rate-limit.test.ts +51 -0
  126. package/templates/apps/api/src/routes/content/__tests__/update.test.ts +252 -0
  127. package/templates/apps/api/src/routes/content/create.ts +114 -0
  128. package/templates/apps/api/src/routes/content/delete.ts +81 -0
  129. package/templates/apps/api/src/routes/content/get-page.ts +98 -0
  130. package/templates/apps/api/src/routes/content/index.ts +32 -0
  131. package/templates/apps/api/src/routes/content/list-pages.ts +83 -0
  132. package/templates/apps/api/src/routes/content/list-types.ts +19 -0
  133. package/templates/apps/api/src/routes/content/rate-limit.ts +13 -0
  134. package/templates/apps/api/src/routes/content/slug.ts +9 -0
  135. package/templates/apps/api/src/routes/content/update.ts +111 -0
  136. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +415 -0
  137. package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +165 -0
  138. package/templates/apps/api/src/routes/leads/index.ts +130 -0
  139. package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +296 -0
  140. package/templates/apps/api/src/routes/test/auth/session.ts +141 -0
  141. package/templates/apps/api/src/routes/webhooks/README.md +57 -0
  142. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-idempotency.test.ts +247 -0
  143. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-rate-limit.test.ts +198 -0
  144. package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +633 -0
  145. package/templates/apps/api/src/routes/webhooks/index.ts +41 -0
  146. package/templates/apps/api/src/routes/webhooks/stripe.ts +253 -0
  147. package/templates/apps/api/src/server.ts +157 -0
  148. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +395 -0
  149. package/templates/apps/api/src/services/enrichment-shim.ts +53 -0
  150. package/templates/apps/api/src/services/lead-routing.ts +338 -0
  151. package/templates/apps/api/tsconfig.json +34 -0
  152. package/templates/apps/api/vercel.json +17 -0
  153. package/templates/apps/mcp/.env.example +52 -0
  154. package/templates/apps/mcp/CLAUDE.md +84 -0
  155. package/templates/apps/mcp/__tests__/abuse/daily-cap.test.ts +52 -0
  156. package/templates/apps/mcp/__tests__/abuse/email-validator.test.ts +46 -0
  157. package/templates/apps/mcp/__tests__/abuse/honeypot.test.ts +36 -0
  158. package/templates/apps/mcp/__tests__/abuse/user-agent-deny.test.ts +54 -0
  159. package/templates/apps/mcp/__tests__/aeo-cli-parity.test.ts +110 -0
  160. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +213 -0
  161. package/templates/apps/mcp/__tests__/audit.test.ts +217 -0
  162. package/templates/apps/mcp/__tests__/catalog-drift.test.ts +52 -0
  163. package/templates/apps/mcp/__tests__/create_page.test.ts +201 -0
  164. package/templates/apps/mcp/__tests__/delete_page.test.ts +176 -0
  165. package/templates/apps/mcp/__tests__/get_business_hours.test.ts +82 -0
  166. package/templates/apps/mcp/__tests__/get_faq.test.ts +80 -0
  167. package/templates/apps/mcp/__tests__/get_locations.test.ts +65 -0
  168. package/templates/apps/mcp/__tests__/get_offerings.test.ts +90 -0
  169. package/templates/apps/mcp/__tests__/get_pricing.test.ts +80 -0
  170. package/templates/apps/mcp/__tests__/get_site_info.test.ts +81 -0
  171. package/templates/apps/mcp/__tests__/http-transport.test.ts +323 -0
  172. package/templates/apps/mcp/__tests__/lib/errors.test.ts +75 -0
  173. package/templates/apps/mcp/__tests__/lib/require-paid-tier.test.ts +75 -0
  174. package/templates/apps/mcp/__tests__/list_pages.test.ts +112 -0
  175. package/templates/apps/mcp/__tests__/locale.test.ts +135 -0
  176. package/templates/apps/mcp/__tests__/parity.test.ts +205 -0
  177. package/templates/apps/mcp/__tests__/purchase-disabled.test.ts +34 -0
  178. package/templates/apps/mcp/__tests__/read_content.test.ts +153 -0
  179. package/templates/apps/mcp/__tests__/request_callback.test.ts +163 -0
  180. package/templates/apps/mcp/__tests__/search_content.test.ts +153 -0
  181. package/templates/apps/mcp/__tests__/server.test.ts +115 -0
  182. package/templates/apps/mcp/__tests__/submit_lead.test.ts +165 -0
  183. package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +161 -0
  184. package/templates/apps/mcp/__tests__/tools/purchase.test.ts +227 -0
  185. package/templates/apps/mcp/__tests__/tools/scaffold.test.ts +237 -0
  186. package/templates/apps/mcp/__tests__/update_page.test.ts +195 -0
  187. package/templates/apps/mcp/jest.config.cjs +82 -0
  188. package/templates/apps/mcp/package.json +37 -0
  189. package/templates/apps/mcp/src/abuse/daily-cap.ts +47 -0
  190. package/templates/apps/mcp/src/abuse/email-validator.ts +25 -0
  191. package/templates/apps/mcp/src/abuse/honeypot.ts +21 -0
  192. package/templates/apps/mcp/src/abuse/index.ts +111 -0
  193. package/templates/apps/mcp/src/abuse/user-agent-deny.ts +58 -0
  194. package/templates/apps/mcp/src/http-transport.ts +303 -0
  195. package/templates/apps/mcp/src/index.ts +67 -0
  196. package/templates/apps/mcp/src/lib/audit-single-page.ts +194 -0
  197. package/templates/apps/mcp/src/lib/errors.ts +61 -0
  198. package/templates/apps/mcp/src/lib/locales.ts +171 -0
  199. package/templates/apps/mcp/src/lib/require-paid-tier.ts +44 -0
  200. package/templates/apps/mcp/src/lib/resolve-locale.ts +30 -0
  201. package/templates/apps/mcp/src/server.ts +139 -0
  202. package/templates/apps/mcp/src/tools/audit.ts +103 -0
  203. package/templates/apps/mcp/src/tools/capture_lead.ts +52 -0
  204. package/templates/apps/mcp/src/tools/create_page.ts +95 -0
  205. package/templates/apps/mcp/src/tools/delete_page.ts +73 -0
  206. package/templates/apps/mcp/src/tools/get_business_hours.ts +66 -0
  207. package/templates/apps/mcp/src/tools/get_faq.ts +69 -0
  208. package/templates/apps/mcp/src/tools/get_locations.ts +85 -0
  209. package/templates/apps/mcp/src/tools/get_offerings.ts +66 -0
  210. package/templates/apps/mcp/src/tools/get_pricing.ts +74 -0
  211. package/templates/apps/mcp/src/tools/get_site_info.ts +84 -0
  212. package/templates/apps/mcp/src/tools/index.ts +125 -0
  213. package/templates/apps/mcp/src/tools/list_pages.ts +72 -0
  214. package/templates/apps/mcp/src/tools/purchase.ts +89 -0
  215. package/templates/apps/mcp/src/tools/read_content.ts +61 -0
  216. package/templates/apps/mcp/src/tools/request_callback.ts +51 -0
  217. package/templates/apps/mcp/src/tools/scaffold.ts +119 -0
  218. package/templates/apps/mcp/src/tools/search_content.ts +59 -0
  219. package/templates/apps/mcp/src/tools/subscribe_newsletter.ts +47 -0
  220. package/templates/apps/mcp/src/tools/update_page.ts +91 -0
  221. package/templates/apps/mcp/tsconfig.json +19 -0
  222. package/templates/apps/web/.env.example +47 -0
  223. package/templates/apps/web/CLAUDE.md +81 -0
  224. package/templates/apps/web/__tests__/auth/adversarial/cookie-attributes.test.ts +94 -0
  225. package/templates/apps/web/__tests__/auth/adversarial/oauth-state-parameter.test.ts +75 -0
  226. package/templates/apps/web/__tests__/auth/adversarial/redirect-uri-allowlist.test.ts +82 -0
  227. package/templates/apps/web/__tests__/auth/env-helpers.test.ts +168 -0
  228. package/templates/apps/web/__tests__/authority-list-routes.test.tsx +208 -0
  229. package/templates/apps/web/__tests__/better-stack.test.ts +66 -0
  230. package/templates/apps/web/__tests__/blog-dir-resolution.test.ts +87 -0
  231. package/templates/apps/web/__tests__/blog-source-populated.test.ts +130 -0
  232. package/templates/apps/web/__tests__/data-testid-coverage.test.tsx +60 -0
  233. package/templates/apps/web/__tests__/google-analytics.test.tsx +104 -0
  234. package/templates/apps/web/__tests__/i18n/middleware.test.ts +119 -0
  235. package/templates/apps/web/__tests__/i18n/routing.test.ts +114 -0
  236. package/templates/apps/web/__tests__/i18n/translations.test.ts +191 -0
  237. package/templates/apps/web/__tests__/json-ld.test.ts +98 -0
  238. package/templates/apps/web/__tests__/knowledge-events-routes.test.tsx +580 -0
  239. package/templates/apps/web/__tests__/layout-stealth.test.ts +39 -0
  240. package/templates/apps/web/__tests__/lighthouse-fixtures/improvement-image-shrink.tsx +103 -0
  241. package/templates/apps/web/__tests__/lighthouse-fixtures/override-fixture.md +114 -0
  242. package/templates/apps/web/__tests__/lighthouse-fixtures/regression-bloat.tsx +94 -0
  243. package/templates/apps/web/__tests__/page.test.tsx +230 -0
  244. package/templates/apps/web/__tests__/products-services-phase1.test.tsx +321 -0
  245. package/templates/apps/web/__tests__/projects-routes.test.tsx +392 -0
  246. package/templates/apps/web/__tests__/resources-downloads-integrations-phase2.test.tsx +475 -0
  247. package/templates/apps/web/__tests__/routes/ai-plugin-json.test.ts +53 -0
  248. package/templates/apps/web/__tests__/routes/blog-route.test.tsx +191 -0
  249. package/templates/apps/web/__tests__/routes/llms-txt.test.ts +123 -0
  250. package/templates/apps/web/__tests__/routes/robots-txt.test.ts +52 -0
  251. package/templates/apps/web/__tests__/routes/sitemap-xml.test.ts +78 -0
  252. package/templates/apps/web/__tests__/routes/well-known-mcp.test.ts +203 -0
  253. package/templates/apps/web/__tests__/section-routes.test.tsx +693 -0
  254. package/templates/apps/web/__tests__/security-headers.test.ts +201 -0
  255. package/templates/apps/web/__tests__/sentry-config.test.ts +116 -0
  256. package/templates/apps/web/__tests__/setup.ts +82 -0
  257. package/templates/apps/web/__tests__/sitemap-locales.test.ts +415 -0
  258. package/templates/apps/web/__tests__/standalone-informational-routes.test.tsx +844 -0
  259. package/templates/apps/web/app/.well-known/ai-plugin.json/route.ts +81 -0
  260. package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +110 -0
  261. package/templates/apps/web/app/.well-known/mcp.json/route.ts +58 -0
  262. package/templates/apps/web/app/[locale]/__tests__/layout.test.tsx +120 -0
  263. package/templates/apps/web/app/[locale]/__tests__/page-renderer-migration.test.tsx +202 -0
  264. package/templates/apps/web/app/[locale]/about/page.tsx +31 -0
  265. package/templates/apps/web/app/[locale]/blog/[[...slug]]/page.tsx +173 -0
  266. package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +45 -0
  267. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +117 -0
  268. package/templates/apps/web/app/[locale]/careers/page.tsx +25 -0
  269. package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +44 -0
  270. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +113 -0
  271. package/templates/apps/web/app/[locale]/case-studies/page.tsx +25 -0
  272. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +63 -0
  273. package/templates/apps/web/app/[locale]/clients/page.tsx +27 -0
  274. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +130 -0
  275. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +152 -0
  276. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +92 -0
  277. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +79 -0
  278. package/templates/apps/web/app/[locale]/contact/error.tsx +24 -0
  279. package/templates/apps/web/app/[locale]/contact/page.tsx +38 -0
  280. package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +34 -0
  281. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +119 -0
  282. package/templates/apps/web/app/[locale]/courses/page.tsx +25 -0
  283. package/templates/apps/web/app/[locale]/dev/purchase/__tests__/actions.test.ts +160 -0
  284. package/templates/apps/web/app/[locale]/dev/purchase/error.tsx +25 -0
  285. package/templates/apps/web/app/[locale]/dev/purchase/page.tsx +117 -0
  286. package/templates/apps/web/app/[locale]/dev/purchase/purchase.actions.ts +58 -0
  287. package/templates/apps/web/app/[locale]/docs/[[...slug]]/page.tsx +118 -0
  288. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +72 -0
  289. package/templates/apps/web/app/[locale]/downloads/page.tsx +25 -0
  290. package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +47 -0
  291. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +130 -0
  292. package/templates/apps/web/app/[locale]/events/page.tsx +25 -0
  293. package/templates/apps/web/app/[locale]/faq/page.tsx +36 -0
  294. package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +34 -0
  295. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +78 -0
  296. package/templates/apps/web/app/[locale]/how-to/page.tsx +40 -0
  297. package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +43 -0
  298. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +129 -0
  299. package/templates/apps/web/app/[locale]/integrations/page.tsx +25 -0
  300. package/templates/apps/web/app/[locale]/launch-service/page.tsx +31 -0
  301. package/templates/apps/web/app/[locale]/layout.tsx +241 -0
  302. package/templates/apps/web/app/[locale]/page.tsx +41 -0
  303. package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +44 -0
  304. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +113 -0
  305. package/templates/apps/web/app/[locale]/partners/page.tsx +25 -0
  306. package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +43 -0
  307. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +129 -0
  308. package/templates/apps/web/app/[locale]/products/page.tsx +25 -0
  309. package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +39 -0
  310. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +138 -0
  311. package/templates/apps/web/app/[locale]/projects/page.tsx +30 -0
  312. package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +51 -0
  313. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +117 -0
  314. package/templates/apps/web/app/[locale]/resources/page.tsx +27 -0
  315. package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +43 -0
  316. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +129 -0
  317. package/templates/apps/web/app/[locale]/services/page.tsx +25 -0
  318. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +34 -0
  319. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +81 -0
  320. package/templates/apps/web/app/[locale]/software/page.tsx +39 -0
  321. package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +34 -0
  322. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +82 -0
  323. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +39 -0
  324. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +63 -0
  325. package/templates/apps/web/app/[locale]/testimonials/page.tsx +27 -0
  326. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +63 -0
  327. package/templates/apps/web/app/[locale]/use-cases/page.tsx +27 -0
  328. package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +34 -0
  329. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +82 -0
  330. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +39 -0
  331. package/templates/apps/web/app/__tests__/error-boundaries.test.tsx +152 -0
  332. package/templates/apps/web/app/api/auth/[...all]/route.ts +16 -0
  333. package/templates/apps/web/app/error-fallback.tsx +75 -0
  334. package/templates/apps/web/app/error.tsx +23 -0
  335. package/templates/apps/web/app/layout.tsx +18 -0
  336. package/templates/apps/web/app/llms.txt/route.ts +101 -0
  337. package/templates/apps/web/app/not-found.tsx +48 -0
  338. package/templates/apps/web/app/og/__tests__/route.test.ts +164 -0
  339. package/templates/apps/web/app/og/route.tsx +135 -0
  340. package/templates/apps/web/app/robots.txt/route.ts +36 -0
  341. package/templates/apps/web/app/sitemap.xml/route.ts +146 -0
  342. package/templates/apps/web/auth.ts +141 -0
  343. package/templates/apps/web/components/ThemeToggle.tsx +60 -0
  344. package/templates/apps/web/components/google-analytics.tsx +34 -0
  345. package/templates/apps/web/content/en/blog/index.mdx +15 -0
  346. package/templates/apps/web/content/en/blog/launching-ailk.mdx +20 -0
  347. package/templates/apps/web/content/en/docs/getting-started.mdx +30 -0
  348. package/templates/apps/web/i18n/request.ts +36 -0
  349. package/templates/apps/web/jest.config.cjs +100 -0
  350. package/templates/apps/web/lib/__mocks__/next-mdx-remote-rsc.js +12 -0
  351. package/templates/apps/web/lib/__mocks__/source-server.js +31 -0
  352. package/templates/apps/web/lib/__tests__/og.test.ts +65 -0
  353. package/templates/apps/web/lib/auth-env.ts +66 -0
  354. package/templates/apps/web/lib/blog-list-data.ts +95 -0
  355. package/templates/apps/web/lib/blog-post-data.ts +79 -0
  356. package/templates/apps/web/lib/nav-config.ts +13 -0
  357. package/templates/apps/web/lib/observability/better-stack.ts +27 -0
  358. package/templates/apps/web/lib/og.ts +23 -0
  359. package/templates/apps/web/lib/prisma-for-auth.ts +34 -0
  360. package/templates/apps/web/lib/source.ts +34 -0
  361. package/templates/apps/web/messages/en.json +131 -0
  362. package/templates/apps/web/middleware.ts +80 -0
  363. package/templates/apps/web/next.config.mjs +167 -0
  364. package/templates/apps/web/package.json +62 -0
  365. package/templates/apps/web/public/.well-known/security.txt +17 -0
  366. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  367. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  368. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  369. package/templates/apps/web/public/favicon-16x16.png +0 -0
  370. package/templates/apps/web/public/favicon-32x32.png +0 -0
  371. package/templates/apps/web/public/favicon.ico +0 -0
  372. package/templates/apps/web/public/favicon.svg +4 -0
  373. package/templates/apps/web/public/logo-dark.svg +21 -0
  374. package/templates/apps/web/public/logo-light.svg +21 -0
  375. package/templates/apps/web/public/logomark-dark.svg +4 -0
  376. package/templates/apps/web/public/logomark-light.svg +4 -0
  377. package/templates/apps/web/public/og-default.png +0 -0
  378. package/templates/apps/web/public/site.webmanifest +19 -0
  379. package/templates/apps/web/scripts/assert-content-bundled.ts +55 -0
  380. package/templates/apps/web/security-headers.config.ts +132 -0
  381. package/templates/apps/web/sentry.client.config.ts +27 -0
  382. package/templates/apps/web/sentry.edge.config.ts +15 -0
  383. package/templates/apps/web/sentry.server.config.ts +20 -0
  384. package/templates/apps/web/source.config.ts +78 -0
  385. package/templates/apps/web/src/components/SiteNav.tsx +21 -0
  386. package/templates/apps/web/src/lib/routes.ts +37 -0
  387. package/templates/apps/web/tsconfig.json +35 -0
  388. package/templates/apps/web/types/messages.d.ts +19 -0
  389. package/templates/content/.gitkeep +0 -0
  390. package/templates/content/CLAUDE.md +85 -0
  391. package/templates/content/_site.mdx +38 -0
  392. package/templates/content/ar/HomePage/home.mdx +123 -0
  393. package/templates/content/ar/_site.mdx +35 -0
  394. package/templates/content/de/_site.mdx +29 -0
  395. package/templates/content/en/.gitkeep +0 -0
  396. package/templates/content/en/AboutPage/about.mdx +19 -0
  397. package/templates/content/en/AboutPage/about.schema.json +82 -0
  398. package/templates/content/en/BookCall/book-call.mdx +19 -0
  399. package/templates/content/en/BookCall/book-call.schema.json +121 -0
  400. package/templates/content/en/BreadcrumbList/site-breadcrumbs.mdx +20 -0
  401. package/templates/content/en/CareersList/careers.mdx +24 -0
  402. package/templates/content/en/CaseStudiesList/case-studies.mdx +22 -0
  403. package/templates/content/en/CaseStudiesList/showcase.mdx +8 -0
  404. package/templates/content/en/CaseStudy/ailk-aeo-rollout.mdx +32 -0
  405. package/templates/content/en/CaseStudy/schema-builder-migration.mdx +41 -0
  406. package/templates/content/en/ClientsList/clients.mdx +38 -0
  407. package/templates/content/en/ContactPage/contact.mdx +19 -0
  408. package/templates/content/en/ContactPage/contact.schema.json +100 -0
  409. package/templates/content/en/ContactPoint/primary.mdx +14 -0
  410. package/templates/content/en/Course/aeo-fundamentals.mdx +37 -0
  411. package/templates/content/en/Course/schema-builder-workshop.mdx +62 -0
  412. package/templates/content/en/CoursesList/courses.mdx +22 -0
  413. package/templates/content/en/DownloadsList/downloads.mdx +22 -0
  414. package/templates/content/en/Event/aeo-office-hours-may-2026.mdx +39 -0
  415. package/templates/content/en/Event/ailk-launch-day-2026.mdx +35 -0
  416. package/templates/content/en/EventsList/events.mdx +26 -0
  417. package/templates/content/en/FAQPage/faq.mdx +420 -0
  418. package/templates/content/en/FAQPage/faq.schema.json +231 -0
  419. package/templates/content/en/GlossaryList/glossary.mdx +19 -0
  420. package/templates/content/en/GlossaryList/glossary.schema.json +300 -0
  421. package/templates/content/en/HomePage/home.mdx +312 -0
  422. package/templates/content/en/HomePage/home.schema.json +88 -0
  423. package/templates/content/en/HomePage/launch-service.mdx +475 -0
  424. package/templates/content/en/HomePage/launch-service.schema.json +138 -0
  425. package/templates/content/en/HowTo/add-mdx-content.mdx +38 -0
  426. package/templates/content/en/HowTo/configure-aeo-scoring.mdx +35 -0
  427. package/templates/content/en/HowTo/set-up-json-ld.mdx +36 -0
  428. package/templates/content/en/Integration/github-actions.mdx +31 -0
  429. package/templates/content/en/Integration/openai-api.mdx +26 -0
  430. package/templates/content/en/Integration/vercel.mdx +32 -0
  431. package/templates/content/en/IntegrationsList/integrations.mdx +22 -0
  432. package/templates/content/en/JobPosting/content-strategist.mdx +46 -0
  433. package/templates/content/en/JobPosting/developer-advocate.mdx +47 -0
  434. package/templates/content/en/JobPosting/senior-fullstack-engineer.mdx +57 -0
  435. package/templates/content/en/LandingPage/aeo-audit.mdx +19 -0
  436. package/templates/content/en/LandingPage/aeo-audit.schema.json +92 -0
  437. package/templates/content/en/LandingPage/agency-waitlist.mdx +340 -0
  438. package/templates/content/en/LandingPage/agency-waitlist.schema.json +152 -0
  439. package/templates/content/en/LandingPage/developers.mdx +19 -0
  440. package/templates/content/en/LandingPage/developers.schema.json +109 -0
  441. package/templates/content/en/LandingPage/for-agencies.mdx +390 -0
  442. package/templates/content/en/LandingPage/for-agencies.schema.json +107 -0
  443. package/templates/content/en/LandingPage/for-ai-search-agencies.mdx +417 -0
  444. package/templates/content/en/LandingPage/for-ai-search-agencies.schema.json +105 -0
  445. package/templates/content/en/LandingPage/for-businesses.mdx +19 -0
  446. package/templates/content/en/LandingPage/for-businesses.schema.json +96 -0
  447. package/templates/content/en/LandingPage/platform.mdx +369 -0
  448. package/templates/content/en/LandingPage/platform.schema.json +166 -0
  449. package/templates/content/en/LandingPage/vs-ai-website-builders.mdx +19 -0
  450. package/templates/content/en/LandingPage/vs-ai-website-builders.schema.json +102 -0
  451. package/templates/content/en/LandingPage/vs-wordpress.mdx +19 -0
  452. package/templates/content/en/LandingPage/vs-wordpress.schema.json +53 -0
  453. package/templates/content/en/NewsletterSignup/newsletter.mdx +236 -0
  454. package/templates/content/en/NewsletterSignup/newsletter.schema.json +91 -0
  455. package/templates/content/en/Organization/site-owner.mdx +16 -0
  456. package/templates/content/en/Partner/prisma.mdx +31 -0
  457. package/templates/content/en/Partner/supabase.mdx +30 -0
  458. package/templates/content/en/Partner/vercel.mdx +28 -0
  459. package/templates/content/en/PartnersList/partners.mdx +22 -0
  460. package/templates/content/en/Person/founder.mdx +18 -0
  461. package/templates/content/en/Pricing/pricing.mdx +538 -0
  462. package/templates/content/en/Pricing/pricing.schema.json +209 -0
  463. package/templates/content/en/PrivacyPage/privacy.mdx +165 -0
  464. package/templates/content/en/PrivacyPage/privacy.schema.json +64 -0
  465. package/templates/content/en/Product/ailk.mdx +19 -0
  466. package/templates/content/en/Product/ailk.schema.json +94 -0
  467. package/templates/content/en/Product/api-launch-kit.mdx +26 -0
  468. package/templates/content/en/Product/launch-kit.mdx +28 -0
  469. package/templates/content/en/ProductsList/products.mdx +26 -0
  470. package/templates/content/en/Project/ailk-phase-2.mdx +54 -0
  471. package/templates/content/en/ProjectsList/projects.mdx +25 -0
  472. package/templates/content/en/ResourceDetail/aeo-scoring-guide.mdx +27 -0
  473. package/templates/content/en/ResourceDetail/content-model-whitepaper.mdx +28 -0
  474. package/templates/content/en/ResourceDetail/schema-org-quick-reference.mdx +39 -0
  475. package/templates/content/en/ResourcesHub/resources.mdx +22 -0
  476. package/templates/content/en/Service/consulting.mdx +22 -0
  477. package/templates/content/en/Service/implementation.mdx +30 -0
  478. package/templates/content/en/Service/launch-service.mdx +232 -0
  479. package/templates/content/en/Service/launch.mdx +228 -0
  480. package/templates/content/en/ServicesList/services.mdx +84 -0
  481. package/templates/content/en/SoftwareProduct/ailk-aeo.mdx +44 -0
  482. package/templates/content/en/SoftwareProduct/ailk-content-adapters.mdx +47 -0
  483. package/templates/content/en/SoftwareProduct/ailk-schema.mdx +49 -0
  484. package/templates/content/en/TeamList/team.mdx +63 -0
  485. package/templates/content/en/TeamMember/founder.mdx +72 -0
  486. package/templates/content/en/TermsPage/terms.mdx +19 -0
  487. package/templates/content/en/TermsPage/terms.schema.json +99 -0
  488. package/templates/content/en/TestimonialsList/testimonials.mdx +44 -0
  489. package/templates/content/en/UseCasesList/use-cases.mdx +30 -0
  490. package/templates/content/en/Whitepaper/ax-first-product-development.mdx +27 -0
  491. package/templates/content/en/Whitepaper/open-core-commercial-strategy.mdx +27 -0
  492. package/templates/content/en/Whitepaper/structured-data-for-answer-engines.mdx +31 -0
  493. package/templates/content/en-XA/AboutPage/about.mdx +8 -0
  494. package/templates/content/en-XA/FAQPage/faq.mdx +8 -0
  495. package/templates/content/en-XA/HomePage/home.mdx +8 -0
  496. package/templates/content/es/_site.mdx +30 -0
  497. package/templates/content/fr/_site.mdx +30 -0
  498. package/templates/content/ja/_site.mdx +30 -0
  499. package/templates/content/pt-BR/AboutPage/about.mdx +8 -0
  500. package/templates/content/pt-BR/FAQPage/faq.mdx +8 -0
  501. package/templates/content/pt-BR/HomePage/home.mdx +23 -0
  502. package/templates/database/CHANGELOG.md +5 -0
  503. package/templates/database/README.md +234 -0
  504. package/templates/database/__tests__/user-cascade.test.ts +125 -0
  505. package/templates/database/auth/.gitkeep +0 -0
  506. package/templates/database/config/.gitkeep +0 -0
  507. package/templates/database/content/.gitkeep +0 -0
  508. package/templates/database/inbox/.gitkeep +0 -0
  509. package/templates/database/inbox/README.md +3 -0
  510. package/templates/database/inbox/__tests__/schema.test.ts +40 -0
  511. package/templates/database/inbox/schema.prisma +52 -0
  512. package/templates/database/jest.config.cjs +29 -0
  513. package/templates/database/migrations/20260508000000_add_inbox_namespace/migration.sql +328 -0
  514. package/templates/database/migrations/20260513000000_better_auth_migration/migration.sql +100 -0
  515. package/templates/database/migrations/20260515000000_add_user_billing_fields/migration.sql +28 -0
  516. package/templates/database/migrations/20260516000000_add_user_tier_care_plan_seat/migration.sql +25 -0
  517. package/templates/database/migrations/20260518000000_add_telemetry_records/migration.sql +42 -0
  518. package/templates/database/migrations/20260525000000_theme_wiring/migration.sql +67 -0
  519. package/templates/database/migrations/20260710000000_retire_commercial_tier/migration.sql +21 -0
  520. package/templates/database/migrations/migration_lock.toml +3 -0
  521. package/templates/database/ops/.gitkeep +0 -0
  522. package/templates/database/package.json +45 -0
  523. package/templates/database/prisma.config.ts +20 -0
  524. package/templates/database/schema.prisma +487 -0
  525. package/templates/database/scripts/db-generate-locked.sh +80 -0
  526. package/templates/database/seed-test.ts +85 -0
  527. package/templates/database/tsconfig.build.json +16 -0
  528. package/templates/database/tsconfig.json +9 -0
  529. package/templates/package.json +125 -0
  530. package/templates/pnpm-workspace.yaml +6 -0
  531. package/templates/project.yaml +59 -0
  532. package/templates/tsconfig.base.json +18 -0
  533. package/templates/tsconfig.json +45 -0
@@ -0,0 +1,369 @@
1
+ ---
2
+ type: "LandingPage"
3
+ slug: "platform"
4
+ title: "13 capabilities. 10 shipped. 3 planned. No blur between them."
5
+ description: "AILK's honest capability roster: 10 Installed capabilities shipping today, 3 Platform Services planned but not yet built — scored, not pitched."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "headline": "13 capabilities. 10 shipped. 3 planned. No blur between them.",
14
+ "subheadline": "Every AILK capability is scored Installed or Platform Service — never folded into one undifferentiated feature list.",
15
+ "body": "This is the roster we hold ourselves to before we sell it to you. We don't invent ship dates for what isn't built. If a capability isn't shipped, this page says so — not your account manager, three months into the engagement.",
16
+ "badge": "Ten Installed. Three Platform Services. Published, not pitched.",
17
+ "primaryCta":
18
+ { "label": "Clone the OSS foundation", "href": "/developers" },
19
+ "secondaryCta":
20
+ {
21
+ "label": "See Enterprise pricing",
22
+ "href": "/pricing",
23
+ "variant": "outline",
24
+ },
25
+ },
26
+ },
27
+ {
28
+ "id": "honesty-principle",
29
+ "type": "content-block",
30
+ "data":
31
+ {
32
+ "headline": "Why we publish what isn't built yet",
33
+ "body": "Hiding the roadmap costs more trust than showing it. A buyer evaluating a pre-launch foundation can't verify a promise — only a label. So every AILK capability carries one of two: Installed, meaning it's in the repo and running in production today, or Platform Service, meaning it's scoped and scheduled but not built.\n\nMost vendors describe unshipped features in the present tense and let the buyer discover the gap later. We built the opposite habit on purpose. The `ailk audit` CLI that scores a site's AEO structure runs today. The Enterprise multi-tenant entitlement that lets a firm manage a portfolio of client sites from one dashboard does not. We say so, on this page, without softening the gap with an invented date.\n\nThe bet: a serious evaluator — an agency standardizing its stack, a developer deciding what to build on — discounts an unlabeled roadmap and rewards a labeled one. If we're wrong about that, the roster stays honest regardless.",
34
+ },
35
+ },
36
+ {
37
+ "id": "capability-counts",
38
+ "type": "stats",
39
+ "data":
40
+ {
41
+ "headline": "What's shipped, what's planned",
42
+ "variant": "tiles",
43
+ "items":
44
+ [
45
+ {
46
+ "value": 10,
47
+ "label": "Installed — shipped, running in production",
48
+ "tone": "success",
49
+ },
50
+ {
51
+ "value": 3,
52
+ "label": "Platform Services — planned, not yet built",
53
+ "tone": "warning",
54
+ },
55
+ {
56
+ "value": 13,
57
+ "label": "Total capabilities tracked publicly, no exceptions",
58
+ "tone": "default",
59
+ },
60
+ ],
61
+ },
62
+ },
63
+ {
64
+ "id": "installed-capabilities",
65
+ "type": "items",
66
+ "data":
67
+ {
68
+ "headline": "What ships today: the Installed capabilities",
69
+ "description": "Ten capabilities, in the repo, running on our own sites right now.",
70
+ "columns": 2,
71
+ "items":
72
+ [
73
+ {
74
+ "title": "Typed schema registry",
75
+ "description": "Sixty page types, each with its own Zod validation and JSON-LD builder generated straight from frontmatter. Ship a page and the schema markup ships with it — no separate plugin, no manual JSON-LD authoring.",
76
+ },
77
+ {
78
+ "title": "FAQ, glossary, and entity markup",
79
+ "description": "Organization, Person, and LocalBusiness identity markup, plus FAQ and glossary schema, are native to the page types. The structure a model needs to attribute a page to a brand is built in before you write a word of content.",
80
+ },
81
+ {
82
+ "title": "Peer-surfaces architecture",
83
+ "description": "Three apps in one repo — `apps/web` for humans, `apps/mcp` for agents, `apps/api` for programmatic callers. CI checks the parity between all three on every commit; a mismatch fails the build instead of shipping quietly.",
84
+ },
85
+ {
86
+ "title": "First-class MCP server",
87
+ "description": "Agents call AILK the same way a human browses it. The MCP server exposes the site's capabilities as typed tools, tested against the same parity suite as the web UI on every commit.",
88
+ },
89
+ {
90
+ "title": "`ailk audit` CLI",
91
+ "description": "Run it pre-launch and again in CI on every pull request. It flags the missing schema, the ambiguous entity, and the page with no JSON-LD while there's still time to fix it — the alternative is hearing about it from a client.",
92
+ },
93
+ {
94
+ "title": "Apache 2.0 license",
95
+ "description": "The entire OSS layer is Apache 2.0. No source-available carve-out, no license that flips once you start making money. Paid tiers add capability on top; what's already in the repo stays there.",
96
+ },
97
+ {
98
+ "title": "`create-ailk` scaffolder",
99
+ "description": "One command generates the three-peer-app skeleton — web, MCP, API — wired and ready to deploy. What used to take a senior developer a setup sprint now takes one terminal command.",
100
+ },
101
+ {
102
+ "title": "The `.claude/` agent-skill bundle",
103
+ "description": "Eight named skills — `extract-design-from-reference`, `suggest-site-pages`, `scaffold-page`, `add-schema`, `audit-site`, `scaffold-auth`, `scaffold-commerce`, `provision-config` — ship with the repo so an agent can carry setup and iteration work end to end.",
104
+ },
105
+ {
106
+ "title": "JSON-LD emission from frontmatter",
107
+ "description": "Structured data compiles straight from the MDX frontmatter you already write. There's no separate config file to keep in sync — the content and the markup describing it live in the same place.",
108
+ },
109
+ {
110
+ "title": "Working Theory integration surface",
111
+ "description": "AILK stands alone for developers and agencies. For customers who also run Working Theory Platform, the two publish into the same substrate with the deepest integration available — better together, never required.",
112
+ },
113
+ ],
114
+ },
115
+ },
116
+ {
117
+ "id": "platform-services",
118
+ "type": "items",
119
+ "data":
120
+ {
121
+ "headline": "What's coming: the Platform Services roster",
122
+ "description": "Three capabilities, scoped and scheduled, not yet in the repo.",
123
+ "columns": 3,
124
+ "items":
125
+ [
126
+ {
127
+ "title": "Multi-tenant entitlement (Enterprise)",
128
+ "description": "White-label branding, per-seat licensing, and cross-site rollup reporting — built for firms running a portfolio of client sites rather than one at a time, gated as a planned Enterprise entitlement rather than a separate tier. It's scoped, not shipped, and we're saying so plainly rather than dressing it up as available.",
129
+ },
130
+ {
131
+ "title": "Fleet management dashboard",
132
+ "description": "One screen showing every client deployment, every AEO score, and every pending update — instead of the twenty separate logins a multi-site agency juggles today. This depends on the Enterprise multi-tenant entitlement's per-seat model existing first, so it ships after that entitlement, not alongside it. Neither has a locked date yet.",
133
+ },
134
+ {
135
+ "title": "Pro lead-routing pipeline",
136
+ "description": "The system that routes a Pro trial signup straight into a sales conversation, without someone triaging the inbox by hand. We'll build it once trial volume justifies automating the handoff. Until then, every signup reaches a person — slower, but it's where the team's attention actually goes, rather than a script standing in for the real thing.",
137
+ },
138
+ ],
139
+ },
140
+ },
141
+ {
142
+ "id": "why-not-shipped",
143
+ "type": "objection",
144
+ "data":
145
+ {
146
+ "headline": "Why isn't the multi-tenant entitlement live yet?",
147
+ "items":
148
+ [
149
+ {
150
+ "objection": "Why isn't the multi-tenant entitlement live yet?",
151
+ "response": "Because building it before agencies told us what they needed would mean guessing at per-seat pricing, white-label scope, and rollup reporting — and shipping a v1 that doesn't match how firms actually run a portfolio of sites. We're gathering that input before it gets built, not after — reach out through the pricing page if fleet management is a requirement for your firm. Everyone else gets it built once, correctly, instead of rebuilt twice.",
152
+ },
153
+ ],
154
+ },
155
+ },
156
+ {
157
+ "id": "dogfooding-proof",
158
+ "type": "content-block",
159
+ "data":
160
+ {
161
+ "headline": "We run on the same roster we're showing you",
162
+ "body": "Sam Henry, Working Theory, and SalesSmyth all publish on AILK today, on the Installed capabilities listed above — not a version with extra features switched on for the team that built it. The schema registry and the peer-surfaces architecture exist in their current shape because we hit the problems those capabilities solve first, on our own sites, before shipping them to anyone else. Call it the origin of the design rather than a testimonial about it. If the `ailk audit` CLI ever produced a false pass, we'd be the first to notice — we run it against our own pages, in our own CI, before anyone outside the team does.",
163
+ },
164
+ },
165
+ {
166
+ "id": "capability-faq",
167
+ "type": "faq",
168
+ "data":
169
+ {
170
+ "headline": "Capability roster — common questions",
171
+ "items":
172
+ [
173
+ {
174
+ "question": "What's the difference between the OSS layer and the paid tiers?",
175
+ "answer": "The OSS layer under Apache 2.0 is structurally complete — schema registry, peer surfaces, the audit CLI, and scaffolding all ship free. Pro and Pro Plus add capability on top of that foundation. Neither tier gates access to what's already in the repo.",
176
+ },
177
+ {
178
+ "question": "Is the `ailk audit` CLI part of the Installed set or a Platform Service?",
179
+ "answer": "Installed. It ships in the OSS layer today, runs pre-launch and in CI on every pull request, and scores a site's AEO structure for free. It's one of the ten capabilities running in production right now.",
180
+ },
181
+ {
182
+ "question": "Will Installed capabilities ever move backward into Platform Services?",
183
+ "answer": "No. Once a capability ships in the OSS layer under Apache 2.0, it stays. Reversing that would break the license promise the whole roster depends on — the same promise that gives the Installed label its meaning.",
184
+ },
185
+ ],
186
+ },
187
+ },
188
+ {
189
+ "id": "final-cta",
190
+ "type": "cta",
191
+ "data":
192
+ {
193
+ "headline": "Start on what's already shipped",
194
+ "description": "Ten capabilities are running in production today — clone the OSS foundation and use them now, or book a Launch Service call and we deploy them for you. Managing a portfolio of client sites instead? See the Enterprise entitlement on the pricing page.",
195
+ "primaryCta":
196
+ { "label": "Clone the OSS foundation", "href": "/developers" },
197
+ "secondaryCta":
198
+ {
199
+ "label": "See Enterprise pricing",
200
+ "href": "/pricing",
201
+ "variant": "outline",
202
+ },
203
+ },
204
+ },
205
+ ]
206
+ status: "Approved"
207
+ pageKey: "LandingPage (/platform)"
208
+ entity: "ailaunchkit"
209
+ urlSlug: "platform"
210
+ lastUpdated: "2026-07-06"
211
+ pageLevelSchemaType: "LandingPage"
212
+ ---
213
+
214
+ import { JsonLd } from "@/components/JsonLd";
215
+
216
+ <JsonLd
217
+ data={{
218
+ "@context": "https://schema.org",
219
+ "@graph": [
220
+ {
221
+ "@type": "Product",
222
+ additionalType: "SoftwareApplication",
223
+ "@id": "https://ailaunchkit.ai/#product",
224
+ name: "AI Launch Kit",
225
+ alternateName: [
226
+ "AI Launch Kit by Working Theory",
227
+ "AILK by Working Theory",
228
+ "AILK",
229
+ "@ailaunchkit",
230
+ "@ailk",
231
+ "@working-theory",
232
+ "ai-launch-kit",
233
+ ],
234
+ url: "https://ailaunchkit.ai",
235
+ description:
236
+ "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.",
237
+ sameAs: [
238
+ "https://github.com/working-theory-labs/ai-launch-kit",
239
+ "https://x.com/ailaunchkit",
240
+ "https://www.npmjs.com/org/ailk",
241
+ "https://youtube.com/@working-theory",
242
+ "https://linkedin.com/company/working-theory",
243
+ ],
244
+ foundingDate: "2026",
245
+ category: "Open-source website foundation",
246
+ applicationCategory: "DeveloperApplication",
247
+ operatingSystem: "Cross-platform (Node.js)",
248
+ license: "https://www.apache.org/licenses/LICENSE-2.0",
249
+ codeRepository: "https://github.com/working-theory-labs/ai-launch-kit",
250
+ manufacturer: { "@id": "https://workingtheory.ai/#organization" },
251
+ brand: { "@id": "https://workingtheory.ai/#organization" },
252
+ creator: { "@id": "https://samhenry.org/#person" },
253
+ offers: [
254
+ {
255
+ "@type": "Offer",
256
+ name: "Free (OSS, Apache 2.0)",
257
+ price: "0",
258
+ priceCurrency: "USD",
259
+ },
260
+ {
261
+ "@type": "Offer",
262
+ name: "Pro",
263
+ price: "249",
264
+ priceCurrency: "USD",
265
+ description: "Per user, per year",
266
+ },
267
+ {
268
+ "@type": "Offer",
269
+ name: "Pro Plus",
270
+ price: "449",
271
+ priceCurrency: "USD",
272
+ description: "Per user, per month",
273
+ },
274
+ {
275
+ "@type": "Offer",
276
+ name: "Launch Service",
277
+ price: "2495",
278
+ priceCurrency: "USD",
279
+ },
280
+ ],
281
+ contributor: [
282
+ {
283
+ "@type": "SoftwareApplication",
284
+ name: "Claudio Planck",
285
+ description:
286
+ "AI engineering agent contributing to architecture, code review, and implementation across the AILK substrate.",
287
+ },
288
+ {
289
+ "@type": "SoftwareApplication",
290
+ name: "Anders Stewart",
291
+ description:
292
+ "AI VP Engineering agent owning implementation strategy across the AILK substrate.",
293
+ },
294
+ ],
295
+ },
296
+ {
297
+ "@type": "WebPage",
298
+ "@id": "https://ailaunchkit.ai/platform#webpage",
299
+ url: "https://ailaunchkit.ai/platform",
300
+ name: "13 capabilities. 10 shipped. 3 planned. No blur between them.",
301
+ description:
302
+ "AILK's honest capability roster: 10 Installed capabilities shipping today, 3 Platform Services planned but not yet built — scored, not pitched.",
303
+ isPartOf: { "@id": "https://ailaunchkit.ai/#product" },
304
+ mainEntity: {
305
+ "@type": "ItemList",
306
+ name: "AILK Capability Roster",
307
+ numberOfItems: 13,
308
+ itemListElement: [
309
+ { "@type": "ListItem", position: 1, name: "Typed schema registry" },
310
+ {
311
+ "@type": "ListItem",
312
+ position: 2,
313
+ name: "FAQ, glossary, and entity markup",
314
+ },
315
+ {
316
+ "@type": "ListItem",
317
+ position: 3,
318
+ name: "Peer-surfaces architecture",
319
+ },
320
+ {
321
+ "@type": "ListItem",
322
+ position: 4,
323
+ name: "First-class MCP server",
324
+ },
325
+ { "@type": "ListItem", position: 5, name: "`ailk audit` CLI" },
326
+ { "@type": "ListItem", position: 6, name: "Apache 2.0 license" },
327
+ {
328
+ "@type": "ListItem",
329
+ position: 7,
330
+ name: "`create-ailk` scaffolder",
331
+ },
332
+ {
333
+ "@type": "ListItem",
334
+ position: 8,
335
+ name: "The `.claude/` agent-skill bundle",
336
+ },
337
+ {
338
+ "@type": "ListItem",
339
+ position: 9,
340
+ name: "JSON-LD emission from frontmatter",
341
+ },
342
+ {
343
+ "@type": "ListItem",
344
+ position: 10,
345
+ name: "Working Theory integration surface",
346
+ },
347
+ {
348
+ "@type": "ListItem",
349
+ position: 11,
350
+ name: "Multi-tenant entitlement — Enterprise (Platform Service — planned)",
351
+ },
352
+ {
353
+ "@type": "ListItem",
354
+ position: 12,
355
+ name: "Fleet management dashboard (Platform Service — planned)",
356
+ },
357
+ {
358
+ "@type": "ListItem",
359
+ position: 13,
360
+ name: "Pro lead-routing pipeline (Platform Service — planned)",
361
+ },
362
+ ],
363
+ },
364
+ },
365
+ ],
366
+ }}
367
+ />
368
+
369
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
@@ -0,0 +1,166 @@
1
+ {
2
+ "@context": "https://schema.org",
3
+ "@graph": [
4
+ {
5
+ "@type": "Product",
6
+ "additionalType": "SoftwareApplication",
7
+ "@id": "https://ailaunchkit.ai/#product",
8
+ "name": "AI Launch Kit",
9
+ "alternateName": [
10
+ "AI Launch Kit by Working Theory",
11
+ "AILK by Working Theory",
12
+ "AILK",
13
+ "@ailaunchkit",
14
+ "@ailk",
15
+ "@working-theory",
16
+ "ai-launch-kit"
17
+ ],
18
+ "url": "https://ailaunchkit.ai",
19
+ "description": "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.",
20
+ "sameAs": [
21
+ "https://github.com/working-theory-labs/ai-launch-kit",
22
+ "https://x.com/ailaunchkit",
23
+ "https://www.npmjs.com/org/ailk",
24
+ "https://youtube.com/@working-theory",
25
+ "https://linkedin.com/company/working-theory"
26
+ ],
27
+ "foundingDate": "2026",
28
+ "category": "Open-source website foundation",
29
+ "applicationCategory": "DeveloperApplication",
30
+ "operatingSystem": "Cross-platform (Node.js)",
31
+ "license": "https://www.apache.org/licenses/LICENSE-2.0",
32
+ "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit",
33
+ "manufacturer": {
34
+ "@id": "https://workingtheory.ai/#organization"
35
+ },
36
+ "brand": {
37
+ "@id": "https://workingtheory.ai/#organization"
38
+ },
39
+ "creator": {
40
+ "@id": "https://samhenry.org/#person"
41
+ },
42
+ "offers": [
43
+ {
44
+ "@type": "Offer",
45
+ "name": "Free (OSS, Apache 2.0)",
46
+ "price": "0",
47
+ "priceCurrency": "USD"
48
+ },
49
+ {
50
+ "@type": "Offer",
51
+ "name": "Pro",
52
+ "price": "249",
53
+ "priceCurrency": "USD",
54
+ "description": "Per user, per year"
55
+ },
56
+ {
57
+ "@type": "Offer",
58
+ "name": "Pro Plus",
59
+ "price": "449",
60
+ "priceCurrency": "USD",
61
+ "description": "Per user, per month"
62
+ },
63
+ {
64
+ "@type": "Offer",
65
+ "name": "Launch Service",
66
+ "price": "2495",
67
+ "priceCurrency": "USD"
68
+ }
69
+ ],
70
+ "contributor": [
71
+ {
72
+ "@type": "SoftwareApplication",
73
+ "name": "Claudio Planck",
74
+ "description": "AI engineering agent contributing to architecture, code review, and implementation across the AILK substrate."
75
+ },
76
+ {
77
+ "@type": "SoftwareApplication",
78
+ "name": "Anders Stewart",
79
+ "description": "AI VP Engineering agent owning implementation strategy across the AILK substrate."
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "@type": "WebPage",
85
+ "@id": "https://ailaunchkit.ai/platform#webpage",
86
+ "url": "https://ailaunchkit.ai/platform",
87
+ "name": "13 capabilities. 10 shipped. 3 planned. No blur between them.",
88
+ "description": "AILK's honest capability roster: 10 Installed capabilities shipping today, 3 Platform Services planned but not yet built — scored, not pitched.",
89
+ "isPartOf": {
90
+ "@id": "https://ailaunchkit.ai/#product"
91
+ },
92
+ "mainEntity": {
93
+ "@type": "ItemList",
94
+ "name": "AILK Capability Roster",
95
+ "numberOfItems": 13,
96
+ "itemListElement": [
97
+ {
98
+ "@type": "ListItem",
99
+ "position": 1,
100
+ "name": "Typed schema registry"
101
+ },
102
+ {
103
+ "@type": "ListItem",
104
+ "position": 2,
105
+ "name": "FAQ, glossary, and entity markup"
106
+ },
107
+ {
108
+ "@type": "ListItem",
109
+ "position": 3,
110
+ "name": "Peer-surfaces architecture"
111
+ },
112
+ {
113
+ "@type": "ListItem",
114
+ "position": 4,
115
+ "name": "First-class MCP server"
116
+ },
117
+ {
118
+ "@type": "ListItem",
119
+ "position": 5,
120
+ "name": "`ailk audit` CLI"
121
+ },
122
+ {
123
+ "@type": "ListItem",
124
+ "position": 6,
125
+ "name": "Apache 2.0 license"
126
+ },
127
+ {
128
+ "@type": "ListItem",
129
+ "position": 7,
130
+ "name": "`create-ailk` scaffolder"
131
+ },
132
+ {
133
+ "@type": "ListItem",
134
+ "position": 8,
135
+ "name": "The `.claude/` agent-skill bundle"
136
+ },
137
+ {
138
+ "@type": "ListItem",
139
+ "position": 9,
140
+ "name": "JSON-LD emission from frontmatter"
141
+ },
142
+ {
143
+ "@type": "ListItem",
144
+ "position": 10,
145
+ "name": "Working Theory integration surface"
146
+ },
147
+ {
148
+ "@type": "ListItem",
149
+ "position": 11,
150
+ "name": "Multi-tenant entitlement — Enterprise (Platform Service — planned)"
151
+ },
152
+ {
153
+ "@type": "ListItem",
154
+ "position": 12,
155
+ "name": "Fleet management dashboard (Platform Service — planned)"
156
+ },
157
+ {
158
+ "@type": "ListItem",
159
+ "position": 13,
160
+ "name": "Pro lead-routing pipeline (Platform Service — planned)"
161
+ }
162
+ ]
163
+ }
164
+ }
165
+ ]
166
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: "LandingPage"
3
+ slug: "vs-ai-website-builders"
4
+ title: "AI-generated isn't AI-ready."
5
+ description: "Wix AI and Durable generate sites. AI Launch Kit builds AI-ready ones — schema, agent-readable surfaces, and pre-launch AEO scoring, Apache 2.0."
6
+ sections: [{"id": "hero", "type": "hero", "data": {"badge": "Sam Henry, Working Theory, and SalesSmyth all publish on this foundation.", "headline": "AI-generated isn't AI-ready.", "subheadline": "Wix AI, Hostinger AI, and Durable generate a site fast. None of them ship the schema, the agent-readable surface, or the pre-launch AEO check. Those are what make a site legible to the systems now doing the recommending.", "body": "AI Launch Kit ships all three as defaults — Apache 2.0, audited before launch, and used to publish this page.", "primaryCta": {"label": "Book Launch Service call", "href": "/launch-service"}, "secondaryCta": {"label": "Read the foundation overview", "href": "/ailk", "variant": "outline"}}}, {"id": "what-is-ai-website-builder", "type": "content-block", "data": {"headline": "What is an AI website builder, and where does it fall short?", "body": "An AI website builder is a tool that generates a complete website from a text prompt — Wix AI, Hostinger AI, Durable, and 10Web all work this way. You describe your business, the tool assembles pages, and a working site is live within minutes.\n\nThat speed is real, and it solves a genuine problem for non-technical owners who need something online today. The tool is good at layout and first-draft copy — capable enough to get a business off a blank page.\n\nWhere it falls short is what happens after the button is clicked. The output is frozen at the moment it's generated — built to be scrolled by a human, not read by a model. Most AI-generated sites carry weak or absent schema markup, with no way for an AI agent to query the business's offerings directly. Nothing measures whether the page is structured well enough to be cited when a buyer asks ChatGPT or Perplexity for a recommendation.\n\nThe distinction matters because the audience for a website has split. Buyers still visit pages, but AI systems now read pages on buyers' behalf before a human ever clicks through. The brand that gets recommended is the brand whose pages the model trusted enough to cite. An AI-generated site optimizes for the moment it's created. It says nothing about whether the result still works for the audience reading it six months later."}}, {"id": "ai-generated-vs-ai-ready", "type": "objection", "data": {"headline": "AI-generated vs. AI-ready: what's the actual difference?", "items": [{"objection": "\"It says AI, so it must already be optimized for AI search.\"", "response": "No — generation and legibility are two different problems, and an AI website builder only solves the first. Being 'AI-generated' means a model wrote the copy and assembled the layout. Being 'AI-ready' means the resulting page can be read, attributed to your business, and trusted enough to quote by the AI systems that now do discovery on a buyer's behalf.\n\nThose are structural properties, not marketing claims. A typed schema registry tells a model exactly what a page is and which business it belongs to, while an agent-readable surface lets a buyer's AI assistant query the business directly instead of scraping and guessing. A pre-launch check scores whether the structure is right before the site goes live — not three months later, when the business notices it's invisible in an AI answer.\n\nWix AI, Hostinger AI, and Durable generate the page. None of them ship the schema layer, the agent surface, or the pre-launch score that make it legible to the systems doing the reading. On AI Launch Kit, all three come standard, not bolted on afterward. The page, not the site, is the unit of citation now — and a page nobody can read correctly doesn't get cited."}]}}, {"id": "wix-ai-vs-ailk", "type": "comparison-table", "data": {"headline": "Wix AI vs. AILK: which should you choose?", "eyebrow": "The foundation, side by side", "description": "If you need a site online in minutes and never plan to touch AI search visibility, an AI website builder gets you there. If AI search recommendations matter to your business, the foundation underneath the site is the difference.", "columns": [{"key": "wixai", "name": "Wix AI / Hostinger AI / Durable"}, {"key": "ailk", "name": "AI Launch Kit", "highlighted": true}], "groups": [{"groupName": "The foundation", "rows": [{"featureName": "Structured data / schema markup", "values": {"wixai": "Minimal or absent", "ailk": "60 typed page schemas, built in"}}, {"featureName": "Agent-readable surface", "values": {"wixai": false, "ailk": "Ships as a default, not an add-on"}}, {"featureName": "Pre-launch AEO scoring", "values": {"wixai": false, "ailk": "Runs before launch and in CI on every change"}}, {"featureName": "Ownership / license", "values": {"wixai": "Closed, vendor-hosted", "ailk": "Apache 2.0 — you own the code"}}, {"featureName": "Deploy speed", "values": {"wixai": "Minutes to a first draft", "ailk": "Days, agent-assisted, to a live site"}}, {"featureName": "Vendor lock-in", "values": {"wixai": true, "ailk": false}}]}], "footnote": "Deploy speed reflects a working, reviewed site — not the first generated draft."}}, {"id": "capabilities-ailk-ships", "type": "items", "data": {"headline": "What AILK ships that AI-generated builders don't", "columns": 2, "items": [{"title": "A typed schema registry, built in", "description": "60 page types, each validated and emitting the structured data an AI system needs to identify what a page is and which business it belongs to. No plugin stack to maintain — the schema ships with the page."}, {"title": "A surface agents can call directly", "description": "Every capability works for a human visitor and for an AI agent acting on a buyer's behalf — the same coverage, enforced automatically before anything ships."}, {"title": "A pre-launch AEO check", "description": "Enterprise AEO platforms charge $295 a month or more to measure citation problems after they've already cost the business citations. AILK's audit runs before launch and again on every change — free, built into the foundation."}, {"title": "Apache 2.0, completely", "description": "The foundation is fully open source — no trial, no feature cut at a certain size. Paid tiers add capability. They never gate access to the substrate itself."}, {"title": "Agent-assisted setup and iteration", "description": "Scaffolding a project, adding a schema, adding a new page — all guided agent workflows. What used to require a senior developer and weeks of setup now takes days, and stays that fast after launch."}]}}, {"id": "isnt-ai-builder-faster", "type": "objection", "data": {"headline": "Isn't an AI-generated site faster to launch?", "items": [{"objection": "\"Isn't an AI-generated site just faster to launch?\"", "response": "Generation is faster. Launch is not — and the two are different clocks. An AI website builder can produce a first draft in minutes. But a business still has to review it, fix the parts the model got wrong, and connect it to real content, real pricing, and a real domain. That work takes days regardless of which tool generated the starting point.\n\nAI Launch Kit's agent-assisted scaffolding closes most of that gap on the front end. The project skeleton, the schema, and the initial page set are handled by a guided agent workflow, rather than a senior developer starting from a blank repository. The AILK Launch Service turns that into a fixed two-week deploy, not an open-ended custom build.\n\nThe difference shows up after launch, not before it. On an AI-generated site, adding a new service page or fixing a citation gap means going back through the same generation-and-review cycle. On AILK, the marginal cost of a page approaches zero — a Claude Code session, not a project. The speed that matters is the speed of the tenth page, not the first."}]}}, {"id": "faq", "type": "faq", "data": {"headline": "Common questions about AI-generated builders vs. AILK", "items": [{"question": "Will my Wix AI or Durable site show up in ChatGPT answers?", "answer": "Not reliably, and not because the writing is bad. Most AI-generated sites carry little or no structured markup, so an AI system reading the page has nothing to attribute the content to. Citation depends on the model trusting the page's structure enough to quote it — a property the generation process itself doesn't produce."}, {"question": "Can I migrate an AI-generated site to AILK?", "answer": "Yes. Content and copy transfer directly; what changes is the foundation underneath it. AILK's Launch Service rebuilds the site on the typed schema registry and agent-readable surface, in a fixed two-week engagement. That gives the migration a defined start and end, rather than an open-ended rebuild."}, {"question": "Is AILK also AI-generated?", "answer": "No. AILK is a foundation you or your agency build on, with agent-assisted scaffolding handling the setup work — not a tool that generates a finished site from a prompt. The output is a codebase you own under Apache 2.0, not a hosted result you rent."}, {"question": "What does \"agent-ready\" actually mean?", "answer": "It means an AI agent acting on a buyer's behalf — a different kind of visitor than a search crawler — can read the page, identify the business, and query its offerings directly. It gets the same coverage a human visitor does. That requires an agent-readable surface built into the foundation, which AI-generated builders don't ship."}]}}, {"id": "final-cta", "type": "cta", "data": {"headline": "Ready to build on a foundation AI search can actually read?", "description": "AI Launch Kit is the open-source foundation built for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days. Book a Launch Service call and we'll scope a two-week deploy.", "primaryCta": {"label": "Book Launch Service call", "href": "/launch-service"}, "secondaryCta": {"label": "Read the foundation overview", "href": "/ailk", "variant": "ghost"}}}]
7
+ status: "Approved"
8
+ pageKey: "WebPage (/vs/ai-website-builders)"
9
+ entity: "ailaunchkit"
10
+ urlSlug: "vs-ai-website-builders"
11
+ lastUpdated: "2026-07-06"
12
+ pageLevelSchemaType: "LandingPage"
13
+ ---
14
+
15
+ import { JsonLd } from '@/components/JsonLd'
16
+
17
+ <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": "Product", "@id": "https://ailaunchkit.ai/#product", "name": "AI Launch Kit", "alternateName": ["AI Launch Kit by Working Theory", "AILK by Working Theory", "AILK", "@ailaunchkit", "@ailk", "@working-theory", "ai-launch-kit"], "url": "https://ailaunchkit.ai", "description": "AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.", "sameAs": ["https://github.com/working-theory-labs/ai-launch-kit", "https://x.com/ailaunchkit", "https://www.npmjs.com/org/ailk", "https://youtube.com/@working-theory", "https://linkedin.com/company/working-theory"], "foundingDate": "2026", "manufacturer": {"@type": "Organization", "@id": "https://ailaunchkit.ai/#salessmyth", "name": "SalesSmyth LLC"}, "brand": {"@type": "Brand", "@id": "https://workingtheory.ai/#organization", "name": "Working Theory", "url": "https://workingtheory.ai"}, "creator": {"@type": "Person", "@id": "https://samhenry.org/#person", "name": "Sam Henry"}, "category": "Open-source website foundation", "applicationCategory": "DeveloperApplication", "operatingSystem": "Cross-platform (Node.js)", "license": "https://www.apache.org/licenses/LICENSE-2.0", "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit", "additionalType": "https://schema.org/SoftwareApplication"}, {"@type": "WebPage", "@id": "https://ailaunchkit.ai/vs/ai-website-builders#webpage", "url": "https://ailaunchkit.ai/vs/ai-website-builders", "name": "AI-generated isn't AI-ready.", "description": "Wix AI and Durable generate sites. AI Launch Kit builds AI-ready ones — schema, agent-readable surfaces, and pre-launch AEO scoring, Apache 2.0.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "about": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "FAQPage", "@id": "https://ailaunchkit.ai/vs/ai-website-builders#faq", "mainEntity": [{"@type": "Question", "name": "Will my Wix AI or Durable site show up in ChatGPT answers?", "acceptedAnswer": {"@type": "Answer", "text": "Not reliably, and not because the writing is bad. Most AI-generated sites carry little or no structured markup, so an AI system reading the page has nothing to attribute the content to. Citation depends on the model trusting the page's structure enough to quote it — a property the generation process itself doesn't produce."}}, {"@type": "Question", "name": "Can I migrate an AI-generated site to AILK?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. Content and copy transfer directly; what changes is the foundation underneath it. AILK's Launch Service rebuilds the site on the typed schema registry and agent-readable surface, in a fixed two-week engagement. That gives the migration a defined start and end, rather than an open-ended rebuild."}}, {"@type": "Question", "name": "Is AILK also AI-generated?", "acceptedAnswer": {"@type": "Answer", "text": "No. AILK is a foundation you or your agency build on, with agent-assisted scaffolding handling the setup work — not a tool that generates a finished site from a prompt. The output is a codebase you own under Apache 2.0, not a hosted result you rent."}}, {"@type": "Question", "name": "What does \"agent-ready\" actually mean?", "acceptedAnswer": {"@type": "Answer", "text": "It means an AI agent acting on a buyer's behalf — a different kind of visitor than a search crawler — can read the page, identify the business, and query its offerings directly. It gets the same coverage a human visitor does. That requires an agent-readable surface built into the foundation, which AI-generated builders don't ship."}}]}}]}} />
18
+
19
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}