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,35 @@
1
+ ---
2
+ version: "1"
3
+ siteName: AI Launch Kit
4
+ baseUrl: https://ailaunchkit.ai
5
+ defaultLocale: ar
6
+ siteIdentity:
7
+ kind: Organization
8
+ name: AI Launch Kit
9
+ url: https://ailaunchkit.ai
10
+ logo: https://ailaunchkit.ai/opengraph-image.png
11
+ description: >
12
+ AI Launch Kit هو الأساس مفتوح المصدر للمواقع الإلكترونية في إنترنت عصر الذكاء الاصطناعي.
13
+ Apache 2.0، جاهز للوكلاء، مُقيَّم بمعايير AEO، قابل للنشر في أيام.
14
+ sameAs:
15
+ - https://github.com/tailwind-ai/ai-launch-kit
16
+ foundingDate: "2024"
17
+ founderName: Sam Henry
18
+ analytics:
19
+ vercelAnalytics: true
20
+ ---
21
+
22
+ <!--
23
+ Locale-specific site configuration for the 'ar' (Arabic) locale.
24
+ This is an RTL test locale — Arabic is not in the active production locale set.
25
+ Its purpose is to exercise the RTL layout architecture (ADR-0019, spec TWP2-IV).
26
+
27
+ RTL direction: <html dir="rtl" lang="ar"> is set conditionally in
28
+ app/[locale]/layout.tsx for the 'ar' locale (and any future RTL locales).
29
+
30
+ Per-route font: Arabic pages fall back to the Inter (en) font — no dedicated
31
+ Arabic font is registered in the LOCALE_FONTS registry for the test locale.
32
+ Production Arabic adoption would add a Noto Sans Arabic or IBM Plex Arabic entry.
33
+
34
+ Theme fonts for this locale: Inter (fallback — no ar entry in LOCALE_FONTS registry).
35
+ -->
@@ -0,0 +1,29 @@
1
+ ---
2
+ version: "1"
3
+ siteName: AI Launch Kit
4
+ baseUrl: https://ailaunchkit.ai
5
+ defaultLocale: de
6
+ siteIdentity:
7
+ kind: Organization
8
+ name: AI Launch Kit
9
+ url: https://ailaunchkit.ai
10
+ logo: https://ailaunchkit.ai/opengraph-image.png
11
+ description: >
12
+ AI Launch Kit ist die Open-Source-Website-Grundlage für das agentenzentrierte
13
+ Internet. Apache 2.0, agentenbereit, AEO-bewertet, in Tagen einsatzbereit.
14
+ sameAs:
15
+ - https://github.com/tailwind-ai/ai-launch-kit
16
+ foundingDate: "2024"
17
+ founderName: Sam Henry
18
+ analytics:
19
+ vercelAnalytics: true
20
+ ---
21
+
22
+ <!--
23
+ Locale-specific site configuration for the 'de' (German) locale.
24
+ Theme fonts for this locale are declared in app/[locale]/layout.tsx
25
+ under the LOCALE_FONTS registry (locale key: "de" → IBM Plex Sans).
26
+
27
+ Per-route font scoping: German pages ship IBM Plex Sans (Latin-ext + umlauts).
28
+ Japanese font (Noto Sans JP) is NOT registered on German pages.
29
+ -->
File without changes
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: "AboutPage"
3
+ slug: "about"
4
+ title: "Sam Henry, Working Theory, and SalesSmyth all run on AILK."
5
+ description: "Sam Henry, Working Theory, and SalesSmyth all run on AI Launch Kit. Meet the team building the open-source foundation for the agent-first internet."
6
+ sections: [{"id": "hero", "type": "hero", "data": {"headline": "Sam Henry, Working Theory, and SalesSmyth all run on AILK.", "subheadline": "Building the foundation first forced the architecture — a typed schema registry, CI-enforced parity, agent-ready surfaces — before it was a product for anyone else.", "body": "Apache 2.0. The architecture is observable in the repo, not on a slide deck — the parity test runs in CI and `.well-known/mcp.json` is live at every deployed URL, including this one.", "primaryCta": {"label": "See the substrate", "href": "/ailk", "variant": "default"}, "secondaryCta": {"label": "Read the foundation thinking", "href": "/blog/ai-seo-foundation", "variant": "outline"}, "variant": "default"}}, {"id": "why-we-exist", "type": "content-block", "data": {"headline": "Why does AILK exist?", "body": "AILK exists because the page — not the site — is the unit of citation in AI search. Most of the web wasn't built for the audience now reading it on a buyer's behalf. When ChatGPT recommends a business, it assembles that recommendation from pages it has read, attributed to a source, and judged trustworthy enough to quote.\n\nWordPress was built when Google was the only entry point. SaaS starters shipped for dashboards and auth — not marketing pages. Closed builders locked customers in by design; that was always the business model. None of them were built for a model to read a page, recognize the brand behind it, and trust the structure enough to cite it.\n\nWe needed that foundation ourselves, first. Sam Henry needed it for his own site. Working Theory needed it to publish a growth-marketing system. SalesSmyth, for GTM consulting. None of the existing options cleared the bar, so the foundation got built — and then opened, Apache 2.0, for anyone building the same kind of site.", "variant": "wide"}}, {"id": "what-a-foundation-must-do", "type": "items", "data": {"headline": "What does a foundation have to do in the agent-first internet?", "description": "Five requirements. None of them are AILK features — they're what any site needs to publish into a world where AI systems read pages and recommend brands.", "columns": 3, "items": [{"title": "Be read correctly", "description": "A model should know what the page is about and which business it belongs to without guessing. If it has to guess, it cites someone else."}, {"title": "Work for non-human visitors", "description": "Agents now research on behalf of buyers. The foundation exposes itself to them as a first-class audience, not a degraded API."}, {"title": "Surface its own gaps", "description": "AEO problems are silent — the site doesn't crash, it just doesn't get cited. A foundation should catch structural gaps the way a linter catches type errors."}, {"title": "Belong to the people running on it", "description": "Foundations that lock customers in shape their roadmap around lock-in. Apache 2.0 keeps that pressure off the roadmap."}, {"title": "Fit inside the engagement", "description": "An SMB site engagement runs weeks, not quarters. A foundation that requires a multi-month custom build breaks the economics."}], "variant": "default"}}, {"id": "the-team", "type": "team", "data": {"headline": "Who built AILK?", "description": "AILK is built by the Working Theory Labs team, led by Sam Henry, with two agent team members contributing directly to the codebase. Full bios live where they belong — Sam Henry's at samhenry.org, the wider Working Theory Labs team at workingtheory.ai.", "variant": "with-small-images", "members": [{"name": "Sam Henry", "role": "Creator, AI Launch Kit · Founder, SalesSmyth LLC", "kind": "human", "bio": "Built AILK first for his own site, then opened it. Full background at samhenry.org."}, {"name": "Working Theory Labs team", "role": "Product and engineering — the team behind AILK", "kind": "human", "bio": "The team building the Working Theory product line, including AILK. Full roster at workingtheory.ai."}, {"name": "Claudio Planck", "role": "Agent team member — architecture, code review, and implementation", "kind": "agent", "bio": "AI engineering agent contributing across the AILK substrate."}, {"name": "Anders Stewart", "role": "Agent team member — implementation strategy", "kind": "agent", "bio": "AI VP Engineering agent, coordinating with the human team on shipped work."}]}}, {"id": "relationships", "type": "content-block", "data": {"headline": "How does AILK relate to Working Theory and SalesSmyth?", "body": "AILK is made by SalesSmyth LLC, the company behind the Working Theory product line. It's published under the Working Theory brand. That's why you'll see \"AI Launch Kit by Working Theory\" across the site. Sam Henry created AILK and founded SalesSmyth LLC. Working Theory Platform is a sister product — growth marketing as a system — and publishes into AILK with the deepest integration of any tool in the portfolio. AILK works fully standalone for developers and agencies who never touch Working Theory Platform. Neither product requires the other.", "variant": "default"}}, {"id": "dogfooding-proof", "type": "social-proof", "data": {"headline": "Does the team actually run on AILK?", "variant": "cards", "items": [{"author": "Sam Henry", "content": "Publishes on AILK — the reason the schema registry and the peer-surfaces architecture exist in their current shape. We hit the problem first.", "source": "generic"}, {"author": "Working Theory", "content": "Runs its growth-marketing product line on AILK, publishing into the substrate with the deepest integration in the portfolio.", "source": "generic"}, {"author": "SalesSmyth", "content": "The GTM-consulting brand behind AILK runs its own site on the same foundation it ships to customers.", "source": "generic"}]}}, {"id": "about-faq", "type": "faq", "data": {"headline": "Common questions about AILK and the team behind it", "presentation": "expanded", "items": [{"question": "Is AILK the same company as Working Theory?", "answer": "No. SalesSmyth LLC is the company that makes AILK. Working Theory is the product line — the brand AILK is published under, not a separate company. \"AI Launch Kit by Working Theory\" names the relationship: one maker, one brand, one product."}, {"question": "Who is Sam Henry and what's his role in AILK?", "answer": "Sam Henry created AILK and founded SalesSmyth LLC, the company behind it. He built the foundation for his own site first, then opened it under Apache 2.0. His full background is at samhenry.org; this page covers his role in AILK, not his biography."}, {"question": "Does the AILK team actually use the product?", "answer": "Yes. Sam Henry, Working Theory, and SalesSmyth all publish on AILK today. The schema registry and the peer-surfaces architecture exist in their current shape because the team hit these problems first — not because of a marketing claim."}, {"question": "Do I have to use Working Theory Platform to use AILK?", "answer": "No. AILK works fully standalone for developers and agencies. Working Theory Platform is a separate product — growth marketing as a system — that publishes into AILK with the deepest integration available. It's the recommended substrate for Platform customers who need a website, not a requirement for anyone else."}]}}, {"id": "cta-see-substrate", "type": "cta", "data": {"headline": "See the substrate AILK runs on.", "description": "The same architecture Sam Henry, Working Theory, and SalesSmyth publish on — schema registry, peer surfaces, audit CLI, all Apache 2.0.", "primaryCta": {"label": "See the substrate", "href": "/ailk", "variant": "default"}, "secondaryCta": {"label": "Read the foundation thinking", "href": "/blog/ai-seo-foundation", "variant": "outline"}, "variant": "default"}}]
7
+ status: "Approved"
8
+ pageKey: "AboutPage"
9
+ entity: "ailaunchkit"
10
+ urlSlug: "about-page"
11
+ lastUpdated: "2026-07-06"
12
+ pageLevelSchemaType: "AboutPage"
13
+ ---
14
+
15
+ import { JsonLd } from '@/components/JsonLd'
16
+
17
+ <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": "Product", "additionalType": "SoftwareApplication", "@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", "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", "manufacturer": {"@type": "Organization", "@id": "https://ailaunchkit.ai/#salessmyth", "name": "SalesSmyth LLC"}, "brand": {"@type": "Brand", "@id": "https://workingtheory.ai/#brand", "name": "Working Theory", "url": "https://workingtheory.ai"}, "creator": {"@type": "Person", "@id": "https://samhenry.org/#person", "name": "Sam Henry", "url": "https://samhenry.org"}, "contributor": [{"@type": "SoftwareApplication", "name": "Claudio Planck", "description": "AI engineering agent contributing across the AILK substrate."}, {"@type": "SoftwareApplication", "name": "Anders Stewart", "description": "AI VP Engineering agent, coordinating with the human team on shipped work."}]}, {"@type": "AboutPage", "@id": "https://ailaunchkit.ai/about/#webpage", "url": "https://ailaunchkit.ai/about", "name": "About", "description": "Sam Henry, Working Theory, and SalesSmyth all run on AI Launch Kit. Meet the team building the open-source foundation for the agent-first internet.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "Organization", "@id": "https://ailaunchkit.ai/#salessmyth", "name": "SalesSmyth LLC"}, "about": {"@id": "https://ailaunchkit.ai/#product"}}]}} />
18
+
19
+ {/* 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,82 @@
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
+ "@type": "Organization",
35
+ "@id": "https://ailaunchkit.ai/#salessmyth",
36
+ "name": "SalesSmyth LLC"
37
+ },
38
+ "brand": {
39
+ "@type": "Brand",
40
+ "@id": "https://workingtheory.ai/#brand",
41
+ "name": "Working Theory",
42
+ "url": "https://workingtheory.ai"
43
+ },
44
+ "creator": {
45
+ "@type": "Person",
46
+ "@id": "https://samhenry.org/#person",
47
+ "name": "Sam Henry",
48
+ "url": "https://samhenry.org"
49
+ },
50
+ "contributor": [
51
+ {
52
+ "@type": "SoftwareApplication",
53
+ "name": "Claudio Planck",
54
+ "description": "AI engineering agent contributing across the AILK substrate."
55
+ },
56
+ {
57
+ "@type": "SoftwareApplication",
58
+ "name": "Anders Stewart",
59
+ "description": "AI VP Engineering agent, coordinating with the human team on shipped work."
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "@type": "AboutPage",
65
+ "@id": "https://ailaunchkit.ai/about/#webpage",
66
+ "url": "https://ailaunchkit.ai/about",
67
+ "name": "About",
68
+ "description": "Sam Henry, Working Theory, and SalesSmyth all run on AI Launch Kit. Meet the team building the open-source foundation for the agent-first internet.",
69
+ "isPartOf": {
70
+ "@id": "https://ailaunchkit.ai/#product"
71
+ },
72
+ "mainEntity": {
73
+ "@type": "Organization",
74
+ "@id": "https://ailaunchkit.ai/#salessmyth",
75
+ "name": "SalesSmyth LLC"
76
+ },
77
+ "about": {
78
+ "@id": "https://ailaunchkit.ai/#product"
79
+ }
80
+ }
81
+ ]
82
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: "BookCall"
3
+ slug: "book-call"
4
+ title: "Book your AILK intro call."
5
+ description: "Book a 20-minute AILK intro call to confirm whether Pro, Pro Plus, or Launch Service fits — and agree your next step."
6
+ sections: [{"id": "hero-book-call", "type": "hero", "data": {"badge": "For agencies and developers evaluating Pro, Pro Plus, or Launch Service", "headline": "Book your AILK intro call.", "subheadline": "In 20 minutes, we confirm whether Pro, Pro Plus, or Launch Service fits — then agree the next step. No pitch deck, no pressure.", "primaryCta": {"label": "Book the call", "href": "/book-call#schedule"}}}, {"id": "what-happens-on-the-call", "type": "items", "data": {"headline": "What happens on the call?", "description": "The call has one job: confirm fit and agree a next step. Here's what the 20 minutes cover.", "items": [{"title": "Confirm which tier fits", "description": "We walk through what you're building and land on the tier that matches — Pro, Pro Plus, or Launch Service. Pricing for each is below."}, {"title": "Walk the substrate that matters to you", "description": "We show the parts of AILK that matter for your case: the schema registry, the peer-surfaces architecture, or the Launch Service scope."}, {"title": "Agree the next step", "description": "You leave with a decision: start a Pro trial, book the Launch Service scope, or take time to think it over. Either way, you know the path."}]}}, {"id": "which-path-fits-you", "type": "items", "data": {"headline": "Which path fits you?", "description": "Three paths, depending on where your team is.", "items": [{"title": "Pro — $249/user/year", "description": "For agencies and developers standardizing their stack who want the full capability set, self-serve."}, {"title": "Pro Plus — $449/user/month", "description": "Pro with ongoing care — for teams that want the substrate managed, not just licensed."}, {"title": "Launch Service — $2,495", "description": "A fixed-scope two-week deploy for agencies or SMB owners who want the foundation shipped, not built."}]}}, {"id": "before-you-book", "type": "faq", "data": {"headline": "Before you book", "items": [{"question": "AILK is pre-launch. Why book a call now?", "answer": "The architecture is in the repo, not on a slide deck — the schema registry, the CI-enforced parity, and the audit CLI all run today. The call is where we show you the substrate directly, not where you take our word for it."}, {"question": "Do I have to choose between Pro and Launch Service?", "answer": "No. They're not either/or. Launch Service gets the foundation deployed; Pro is the ongoing license for the team running it. Most agency engagements end up using both."}, {"question": "What if I'm not sure which tier I need yet?", "answer": "That's what the call resolves. Tell us what you're building and we'll tell you honestly which tier fits — including if the honest answer is none of these yet."}]}}, {"id": "or-reach-us-directly", "type": "contact-channels", "data": {"headline": "Prefer email?", "items": [{"icon": "mail", "headline": "Email us directly", "description": "Reach the team at hello@ailaunchkit.ai. We respond within one business day, 09:00–17:00 America/Denver.", "cta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}}]}}, {"id": "final-booking-nudge", "type": "cta", "data": {"headline": "Ready when you are", "description": "Book the call. Twenty minutes, one outcome: you know which path fits.", "primaryCta": {"label": "Book the call", "href": "/book-call#schedule"}}}]
7
+ status: "Approved"
8
+ pageKey: "BookCall"
9
+ entity: "ailaunchkit"
10
+ urlSlug: "book-call"
11
+ lastUpdated: "2026-07-06"
12
+ pageLevelSchemaType: "BookCall"
13
+ ---
14
+
15
+ import { JsonLd } from '@/components/JsonLd'
16
+
17
+ <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": ["Product", "SoftwareApplication"], "@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", "name": "SalesSmyth LLC", "url": "https://ailaunchkit.ai/#organization"}, "brand": {"@type": "Brand", "name": "Working Theory", "url": "https://workingtheory.ai"}, "creator": {"@type": "Person", "name": "Sam Henry", "url": "https://samhenry.org"}, "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", "offers": [{"@type": "Offer", "name": "Free (OSS, Apache 2.0)", "price": "0", "priceCurrency": "USD"}, {"@type": "Offer", "name": "Pro", "price": "249", "priceCurrency": "USD", "description": "Per user per year"}, {"@type": "Offer", "name": "Pro Plus", "price": "449", "priceCurrency": "USD", "description": "Per user per month"}, {"@type": "Offer", "name": "Launch Service", "price": "2495", "priceCurrency": "USD", "description": "Fixed-scope two-week deploy"}]}, {"@type": "WebPage", "@id": "https://ailaunchkit.ai/book-call#webpage", "url": "https://ailaunchkit.ai/book-call", "name": "Book your AILK intro call", "description": "Book a 20-minute AILK intro call to confirm whether Pro, Pro Plus, or Launch Service fits — and agree your next step.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "FAQPage", "@id": "https://ailaunchkit.ai/book-call#faq", "mainEntity": [{"@type": "Question", "name": "AILK is pre-launch. Why book a call now?", "acceptedAnswer": {"@type": "Answer", "text": "The architecture is in the repo, not on a slide deck — the schema registry, the CI-enforced parity, and the audit CLI all run today. The call is where we show you the substrate directly, not where you take our word for it."}}, {"@type": "Question", "name": "Do I have to choose between Pro and Launch Service?", "acceptedAnswer": {"@type": "Answer", "text": "No. They're not either/or. Launch Service gets the foundation deployed; Pro is the ongoing license for the team running it. Most agency engagements end up using both."}}, {"@type": "Question", "name": "What if I'm not sure which tier I need yet?", "acceptedAnswer": {"@type": "Answer", "text": "That's what the call resolves. Tell us what you're building and we'll tell you honestly which tier fits — including if the honest answer is none of these yet."}}]}}]}} />
18
+
19
+ {/* 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,121 @@
1
+ {
2
+ "@context": "https://schema.org",
3
+ "@graph": [
4
+ {
5
+ "@type": [
6
+ "Product",
7
+ "SoftwareApplication"
8
+ ],
9
+ "@id": "https://ailaunchkit.ai/#product",
10
+ "name": "AI Launch Kit",
11
+ "alternateName": [
12
+ "AI Launch Kit by Working Theory",
13
+ "AILK by Working Theory",
14
+ "AILK",
15
+ "@ailaunchkit",
16
+ "@ailk",
17
+ "@working-theory",
18
+ "ai-launch-kit"
19
+ ],
20
+ "url": "https://ailaunchkit.ai",
21
+ "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.",
22
+ "sameAs": [
23
+ "https://github.com/working-theory-labs/ai-launch-kit",
24
+ "https://x.com/ailaunchkit",
25
+ "https://www.npmjs.com/org/ailk",
26
+ "https://youtube.com/@working-theory",
27
+ "https://linkedin.com/company/working-theory"
28
+ ],
29
+ "foundingDate": "2026",
30
+ "manufacturer": {
31
+ "@type": "Organization",
32
+ "name": "SalesSmyth LLC",
33
+ "url": "https://ailaunchkit.ai/#organization"
34
+ },
35
+ "brand": {
36
+ "@type": "Brand",
37
+ "name": "Working Theory",
38
+ "url": "https://workingtheory.ai"
39
+ },
40
+ "creator": {
41
+ "@type": "Person",
42
+ "name": "Sam Henry",
43
+ "url": "https://samhenry.org"
44
+ },
45
+ "category": "Open-source website foundation",
46
+ "applicationCategory": "DeveloperApplication",
47
+ "operatingSystem": "Cross-platform (Node.js)",
48
+ "license": "https://www.apache.org/licenses/LICENSE-2.0",
49
+ "codeRepository": "https://github.com/working-theory-labs/ai-launch-kit",
50
+ "offers": [
51
+ {
52
+ "@type": "Offer",
53
+ "name": "Free (OSS, Apache 2.0)",
54
+ "price": "0",
55
+ "priceCurrency": "USD"
56
+ },
57
+ {
58
+ "@type": "Offer",
59
+ "name": "Pro",
60
+ "price": "249",
61
+ "priceCurrency": "USD",
62
+ "description": "Per user per year"
63
+ },
64
+ {
65
+ "@type": "Offer",
66
+ "name": "Pro Plus",
67
+ "price": "449",
68
+ "priceCurrency": "USD",
69
+ "description": "Per user per month"
70
+ },
71
+ {
72
+ "@type": "Offer",
73
+ "name": "Launch Service",
74
+ "price": "2495",
75
+ "priceCurrency": "USD",
76
+ "description": "Fixed-scope two-week deploy"
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "@type": "WebPage",
82
+ "@id": "https://ailaunchkit.ai/book-call#webpage",
83
+ "url": "https://ailaunchkit.ai/book-call",
84
+ "name": "Book your AILK intro call",
85
+ "description": "Book a 20-minute AILK intro call to confirm whether Pro, Pro Plus, or Launch Service fits — and agree your next step.",
86
+ "isPartOf": {
87
+ "@id": "https://ailaunchkit.ai/#product"
88
+ },
89
+ "mainEntity": {
90
+ "@type": "FAQPage",
91
+ "@id": "https://ailaunchkit.ai/book-call#faq",
92
+ "mainEntity": [
93
+ {
94
+ "@type": "Question",
95
+ "name": "AILK is pre-launch. Why book a call now?",
96
+ "acceptedAnswer": {
97
+ "@type": "Answer",
98
+ "text": "The architecture is in the repo, not on a slide deck — the schema registry, the CI-enforced parity, and the audit CLI all run today. The call is where we show you the substrate directly, not where you take our word for it."
99
+ }
100
+ },
101
+ {
102
+ "@type": "Question",
103
+ "name": "Do I have to choose between Pro and Launch Service?",
104
+ "acceptedAnswer": {
105
+ "@type": "Answer",
106
+ "text": "No. They're not either/or. Launch Service gets the foundation deployed; Pro is the ongoing license for the team running it. Most agency engagements end up using both."
107
+ }
108
+ },
109
+ {
110
+ "@type": "Question",
111
+ "name": "What if I'm not sure which tier I need yet?",
112
+ "acceptedAnswer": {
113
+ "@type": "Answer",
114
+ "text": "That's what the call resolves. Tell us what you're building and we'll tell you honestly which tier fits — including if the honest answer is none of these yet."
115
+ }
116
+ }
117
+ ]
118
+ }
119
+ }
120
+ ]
121
+ }
@@ -0,0 +1,20 @@
1
+ {/* Sub-object — not rendered as a standalone page; consumed by the builder embedding this object in other pages' JSON-LD output. */}
2
+ ---
3
+ type: BreadcrumbList
4
+ slug: site-breadcrumbs
5
+ title: Site Breadcrumbs
6
+ description: The default breadcrumb trail for AI Launch Kit pages — used in JSON-LD BreadcrumbList output on detail pages.
7
+ schema:
8
+ "@type": BreadcrumbList
9
+ itemListElement:
10
+ - "@type": ListItem
11
+ position: 1
12
+ name: Home
13
+ item: /
14
+ - "@type": ListItem
15
+ position: 2
16
+ name: Products
17
+ item: /products
18
+ ---
19
+
20
+ Default breadcrumb template for AI Launch Kit pages, embedded in detail-page JSON-LD output.
@@ -0,0 +1,24 @@
1
+ ---
2
+ type: CareersList
3
+ slug: careers
4
+ title: Careers at AI Launch Kit
5
+ description: Join the team building the infrastructure layer for human-agent products. Remote-first, async-friendly, and deeply technical.
6
+ ---
7
+
8
+ # Careers at AI Launch Kit
9
+
10
+ We are a small team building the tooling that lets any product run on human-agent pairs. If you care about structured data, AEO, and the infrastructure layer of the agent era — we want to hear from you.
11
+
12
+ ## Open positions
13
+
14
+ - [Senior Full-Stack Engineer](/careers/senior-fullstack-engineer) — build the schema builders, content adapters, and Next.js routes that power AILK
15
+ - [Content Strategist](/careers/content-strategist) — own the content pipeline and AEO optimization
16
+ - [Developer Advocate](/careers/developer-advocate) — help the community succeed and bring feedback back to the product
17
+
18
+ ## How we work
19
+
20
+ We are remote-first and async-friendly. Most decisions happen in GitHub issues and PRs, not in meetings. We use AILK to run AILK — the site, the docs, and the job listings are all MDX + structured data.
21
+
22
+ ## How to apply
23
+
24
+ Send a note to the contact page with the role you are interested in and a link to your work.
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: CaseStudiesList
3
+ slug: case-studies
4
+ title: Case Studies
5
+ description: Real-world accounts of teams using AI Launch Kit to ship AX-first products — from AEO rollouts to schema migrations and beyond.
6
+ ---
7
+
8
+ # Case Studies
9
+
10
+ These case studies document how teams use the AI Launch Kit toolchain in production. Each story covers the challenge, the approach, and the measurable outcome.
11
+
12
+ ## What you'll find here
13
+
14
+ Each case study follows a consistent structure:
15
+
16
+ - **The challenge** — what problem the team faced before AILK
17
+ - **What was built** — which packages and patterns were applied
18
+ - **Outcome** — measured improvements in AEO scores, developer velocity, or citation pickup
19
+
20
+ ## Contributing a case study
21
+
22
+ If your team has shipped with AI Launch Kit and would like to share your experience, open an issue on GitHub with the `case-study` label.
@@ -0,0 +1,8 @@
1
+ ---
2
+ type: CaseStudiesList
3
+ slug: showcase
4
+ title: "Showcase"
5
+ description: Real-world teams using AI Launch Kit to ship agent-ready, AEO-first sites — from schema rollouts to MCP deployments and beyond.
6
+ ---
7
+
8
+ Showcase is coming — real case studies in progress.
@@ -0,0 +1,32 @@
1
+ ---
2
+ type: CaseStudy
3
+ slug: ailk-aeo-rollout
4
+ title: AEO Rollout at AI Launch Kit
5
+ description: How the AI Launch Kit team implemented Answer Engine Optimization across 60 page types, driving a 3× increase in AI-citation pickup within 30 days.
6
+ publishedAt: "2026-05-01"
7
+ schema:
8
+ author:
9
+ "@type": Person
10
+ name: AI Launch Kit Team
11
+ about:
12
+ "@type": Thing
13
+ name: Answer Engine Optimization
14
+ ---
15
+
16
+ # AEO Rollout at AI Launch Kit
17
+
18
+ When AI Launch Kit shipped Phase 2 of the schema builder layer, the team needed to verify that every page type produced citation-ready structured data. The AEO scoring package became the linchpin of that effort.
19
+
20
+ ## The challenge
21
+
22
+ Sixty page types. Each with its own JSON-LD shape. Each needing deterministic, reproducible AEO scores before shipping.
23
+
24
+ ## What we built
25
+
26
+ The `@working-theory/aeo` package runs entirely at build time — no network calls, no randomness. Given the same MDX frontmatter, the scorer always returns the same grade. This made it safe to run in CI.
27
+
28
+ ## Results
29
+
30
+ - All 60 page types scored above the Layer 1 threshold on first run
31
+ - AI-citation pickup increased 3× within the first month of deployment
32
+ - Zero regressions across 6 subsequent content updates
@@ -0,0 +1,41 @@
1
+ ---
2
+ type: CaseStudy
3
+ slug: schema-builder-migration
4
+ title: Migrating to the Schema Builder Layer
5
+ description: A step-by-step account of how one team replaced hand-rolled JSON-LD with the @working-theory/schema builder package, cutting schema maintenance time by 80%.
6
+ publishedAt: "2026-04-15"
7
+ schema:
8
+ author:
9
+ "@type": Person
10
+ name: AI Launch Kit Team
11
+ about:
12
+ "@type": Thing
13
+ name: Schema.org JSON-LD
14
+ ---
15
+
16
+ # Migrating to the Schema Builder Layer
17
+
18
+ Hand-rolling JSON-LD is error-prone. A single typo in a `@type` value invalidates an entire rich-result opportunity. The `@working-theory/schema` builder layer makes errors impossible by construction.
19
+
20
+ ## Before: hand-rolled JSON-LD
21
+
22
+ Every page had a one-off `<script type="application/ld+json">` block. No shared types. No validation. No consistency.
23
+
24
+ ## After: typed builders
25
+
26
+ ```typescript
27
+ import { buildProductJsonLd } from "@working-theory/schema";
28
+
29
+ const jsonLd = buildProductJsonLd({
30
+ name: "AI Launch Kit",
31
+ description: "The AX-first OSS template.",
32
+ });
33
+ ```
34
+
35
+ The builder validates inputs at the TypeScript layer and emits a correct `@type: "Product"` block every time.
36
+
37
+ ## Outcome
38
+
39
+ - Schema maintenance time reduced by 80%
40
+ - Zero invalid rich results since migration
41
+ - Consistent AEO scores across all product pages
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: ClientsList
3
+ slug: clients
4
+ title: Clients
5
+ description: Organizations and teams using AI Launch Kit to build agent-first products.
6
+ schema:
7
+ mainEntity:
8
+ "@type": ItemList
9
+ name: AI Launch Kit Clients
10
+ description: A selection of teams building with AI Launch Kit.
11
+ itemListElement:
12
+ - "@type": ListItem
13
+ position: 1
14
+ item:
15
+ "@type": Organization
16
+ name: Acme Corp
17
+ description: Building an AX-first customer portal with AI Launch Kit.
18
+ url: https://acme.example.com
19
+ - "@type": ListItem
20
+ position: 2
21
+ item:
22
+ "@type": Organization
23
+ name: Beta Labs
24
+ description: Using the schema and AEO packages for structured content at scale.
25
+ url: https://beta.example.com
26
+ ---
27
+
28
+ # Clients
29
+
30
+ Teams and organizations building agent-first products with AI Launch Kit.
31
+
32
+ ## Acme Corp
33
+
34
+ Building an AX-first customer portal powered by the AILK section catalog and schema builders.
35
+
36
+ ## Beta Labs
37
+
38
+ Using `@working-theory/schema` and `@working-theory/aeo` to deliver citation-ready structured content at scale.
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: "ContactPage"
3
+ slug: "contact"
4
+ title: "Contact AI Launch Kit"
5
+ description: "Contact AI Launch Kit by email, intro call, or GitHub Issues — reach the Working Theory team for Pro, Pro Plus, Launch Service, or OSS support."
6
+ sections: [{"id": "contact-hero", "type": "hero", "data": {"headline": "Contact AI Launch Kit", "subheadline": "Email us, book an intro call, or open a GitHub issue — whichever matches what you need.", "primaryCta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}, "secondaryCta": {"label": "Book an intro call", "href": "/book-call", "variant": "outline"}}}, {"id": "contact-framing", "type": "content-block", "data": {"body": "Evaluating Pro, Pro Plus, or Launch Service? Email or book an intro call directly. Running the Apache 2.0 foundation and need OSS support? Open a GitHub issue, where the codebase context already lives. Both paths reach the Working Theory team. Pick the one that matches what you're doing."}}, {"id": "contact-channels-primary", "type": "contact-channels", "data": {"items": [{"icon": "mail", "headline": "Email", "description": "hello@ailaunchkit.ai — the direct line to the Working Theory team. Use this for pricing questions, Launch Service scoping, or anything that doesn't fit a GitHub issue.", "cta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}}, {"icon": "calendar", "headline": "Book an intro call", "description": "For Pro, Pro Plus, or Launch Service — a short call to scope what you need before you commit to a tier.", "cta": {"label": "Book an intro call", "href": "/book-call"}}, {"icon": "github", "headline": "GitHub Issues", "description": "For OSS support, bugs, and feature requests against the AI Launch Kit repo. The direct path for anything code-related.", "cta": {"label": "Open a GitHub issue", "href": "https://github.com/working-theory-labs/ai-launch-kit/issues"}}]}}, {"id": "contact-cta-book-call", "type": "cta", "data": {"headline": "Ready to talk Pro, Pro Plus, or Launch Service?", "primaryCta": {"label": "Book an intro call", "href": "/book-call"}, "secondaryCta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai", "variant": "ghost"}}}, {"id": "contact-faq", "type": "faq", "data": {"items": [{"question": "Is there a phone number for AI Launch Kit?", "answer": "No. AI Launch Kit doesn't operate a phone line — communication runs async through email and GitHub Issues. Email hello@ailaunchkit.ai or open a GitHub issue and the Working Theory team will follow up."}, {"question": "Where is AI Launch Kit located?", "answer": "AI Launch Kit operates remote. There's no office to visit. The team works across time zones and reaches customers and contributors by email, GitHub, and booked calls."}, {"question": "Should I email or open a GitHub issue?", "answer": "Pricing, Pro, Pro Plus, Launch Service — email or book a call. Bug, feature request, or a question about the OSS codebase — open a GitHub issue. The repo context is already there."}]}}]
7
+ status: "Approved"
8
+ pageKey: "ContactPage"
9
+ entity: "ailaunchkit"
10
+ urlSlug: "contact-page"
11
+ lastUpdated: "2026-07-06"
12
+ pageLevelSchemaType: "ContactPage"
13
+ ---
14
+
15
+ import { JsonLd } from '@/components/JsonLd'
16
+
17
+ <JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": ["Product", "SoftwareApplication"], "@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", "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", "manufacturer": {"@id": "https://workingtheory.ai/#organization"}, "brand": {"@id": "https://workingtheory.ai/#organization"}, "creator": {"@id": "https://samhenry.org/#person"}, "offers": [{"@type": "Offer", "name": "Free (OSS, Apache 2.0)", "price": "0", "priceCurrency": "USD"}, {"@type": "Offer", "name": "Pro", "price": "249", "priceCurrency": "USD", "unitText": "per user per year"}, {"@type": "Offer", "name": "Pro Plus", "price": "449", "priceCurrency": "USD", "unitText": "per user per month"}, {"@type": "Offer", "name": "Launch Service", "price": "2495", "priceCurrency": "USD"}]}, {"@type": "ContactPage", "@id": "https://ailaunchkit.ai/contact#webpage", "url": "https://ailaunchkit.ai/contact", "name": "Contact AI Launch Kit", "description": "Contact AI Launch Kit by email, intro call, or GitHub Issues — reach the Working Theory team for Pro, Pro Plus, Launch Service, or OSS support.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "mainEntity": {"@type": "Organization", "name": "AI Launch Kit by Working Theory", "email": "hello@ailaunchkit.ai", "sameAs": ["https://github.com/working-theory-labs/ai-launch-kit"], "contactPoint": [{"@type": "ContactPoint", "contactType": "customer support", "email": "hello@ailaunchkit.ai", "availableLanguage": "English"}]}}]}} />
18
+
19
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}