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.
- package/LICENSE +201 -0
- package/README.md +39 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +80 -0
- package/dist/copy.d.ts +8 -0
- package/dist/copy.js +109 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/lib/pro-callout.d.ts +12 -0
- package/dist/lib/pro-callout.js +20 -0
- package/dist/parse-args.d.ts +13 -0
- package/dist/parse-args.js +81 -0
- package/dist/programmatic.d.ts +49 -0
- package/dist/programmatic.js +89 -0
- package/dist/substitute.d.ts +31 -0
- package/dist/substitute.js +45 -0
- package/dist/validate.d.ts +8 -0
- package/dist/validate.js +70 -0
- package/package.json +47 -0
- package/templates/.claude/.gitkeep +0 -0
- package/templates/.claude/agents/web.md +80 -0
- package/templates/.claude/rules/architecture.md +62 -0
- package/templates/.claude/rules/preserve-existing-style.md +51 -0
- package/templates/.claude/skills/README.md +43 -0
- package/templates/.claude/skills/add-schema/SKILL.md +270 -0
- package/templates/.claude/skills/add-schema/references/conflict-handling.md +200 -0
- package/templates/.claude/skills/add-schema/references/file-finding.md +123 -0
- package/templates/.claude/skills/add-schema/references/schema-types.md +131 -0
- package/templates/.claude/skills/audit-site/SKILL.md +213 -0
- package/templates/.claude/skills/audit-site/references/common-errors.md +113 -0
- package/templates/.claude/skills/audit-site/references/findings-glossary.md +138 -0
- package/templates/.claude/skills/audit-site/references/severity-levels.md +114 -0
- package/templates/.claude/skills/provision-config/SKILL.md +243 -0
- package/templates/.claude/skills/provision-config/references/env-vars-template.md +184 -0
- package/templates/.claude/skills/provision-config/references/runbook-template.md +248 -0
- package/templates/.claude/skills/provision-config/references/vercel-json-template.md +98 -0
- package/templates/.claude/skills/scaffold-auth/SKILL.md +261 -0
- package/templates/.claude/skills/scaffold-auth/references/env-vars.md +91 -0
- package/templates/.claude/skills/scaffold-auth/references/oauth-app-setup.md +171 -0
- package/templates/.claude/skills/scaffold-commerce/SKILL.md +310 -0
- package/templates/.claude/skills/scaffold-commerce/references/lookup-keys-template.md +71 -0
- package/templates/.claude/skills/scaffold-commerce/references/marketplace-brand-pages.md +83 -0
- package/templates/.claude/skills/scaffold-commerce/templates/marketplace-cta-route.tsx.tmpl +72 -0
- package/templates/.claude/skills/scaffold-page/SKILL.md +243 -0
- package/templates/.claude/skills/scaffold-page/references/page-types.md +169 -0
- package/templates/.claude/skills/scaffold-page/templates/content.mdx.tmpl +28 -0
- package/templates/.claude/skills/scaffold-page/templates/route.tsx.tmpl +28 -0
- package/templates/.claude/skills/suggest-site-pages/SKILL.md +242 -0
- package/templates/.claude/skills/suggest-site-pages/references/categories.md +287 -0
- package/templates/.env.example +205 -0
- package/templates/.gitkeep +2 -0
- package/templates/CLAUDE.md +142 -0
- package/templates/CONVENTIONS.md +222 -0
- package/templates/README.md +110 -0
- package/templates/apps/api/.env.example +40 -0
- package/templates/apps/api/CLAUDE.md +63 -0
- package/templates/apps/api/api/index.ts +144 -0
- package/templates/apps/api/jest.config.cjs +74 -0
- package/templates/apps/api/package.json +54 -0
- package/templates/apps/api/src/__tests__/factories/content-fixture.ts +138 -0
- package/templates/apps/api/src/__tests__/factories/index.ts +70 -0
- package/templates/apps/api/src/__tests__/factories/lead-fixture.ts +82 -0
- package/templates/apps/api/src/__tests__/index.test.ts +118 -0
- package/templates/apps/api/src/__tests__/server.test.ts +207 -0
- package/templates/apps/api/src/__tests__/services/enrichment-shim.test.ts +126 -0
- package/templates/apps/api/src/__tests__/setup.ts +24 -0
- package/templates/apps/api/src/cli.ts +30 -0
- package/templates/apps/api/src/config/__tests__/index.test.ts +97 -0
- package/templates/apps/api/src/config/index.ts +56 -0
- package/templates/apps/api/src/index.ts +32 -0
- package/templates/apps/api/src/lib/__mocks__/prisma-client.js +15 -0
- package/templates/apps/api/src/lib/__mocks__/prisma.ts +45 -0
- package/templates/apps/api/src/lib/__tests__/content-adapter.test.ts +178 -0
- package/templates/apps/api/src/lib/__tests__/error-serializer.test.ts +100 -0
- package/templates/apps/api/src/lib/__tests__/errors.test.ts +94 -0
- package/templates/apps/api/src/lib/__tests__/file-fallback.test.ts +144 -0
- package/templates/apps/api/src/lib/__tests__/fixtures/HomePage/home.mdx +8 -0
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +227 -0
- package/templates/apps/api/src/lib/__tests__/outbound-http.test.ts +125 -0
- package/templates/apps/api/src/lib/__tests__/prisma.test.ts +165 -0
- package/templates/apps/api/src/lib/__tests__/require-paid-tier.test.ts +129 -0
- package/templates/apps/api/src/lib/__tests__/stripe.test.ts +74 -0
- package/templates/apps/api/src/lib/content-adapter.ts +86 -0
- package/templates/apps/api/src/lib/error-serializer.ts +77 -0
- package/templates/apps/api/src/lib/errors.ts +95 -0
- package/templates/apps/api/src/lib/file-fallback.ts +87 -0
- package/templates/apps/api/src/lib/lead-capture-store.ts +110 -0
- package/templates/apps/api/src/lib/locales.ts +201 -0
- package/templates/apps/api/src/lib/outbound-http.ts +122 -0
- package/templates/apps/api/src/lib/prisma.ts +21 -0
- package/templates/apps/api/src/lib/require-paid-tier.ts +53 -0
- package/templates/apps/api/src/lib/stripe.ts +30 -0
- package/templates/apps/api/src/lib/webhook-idempotency.ts +92 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/bearer-token-format.test.ts +111 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/cookie-or-bearer-precedence.test.ts +172 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-bearer-skip.test.ts +119 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-cookie-path.test.ts +138 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +149 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/session-timeout.test.ts +139 -0
- package/templates/apps/api/src/middleware/__tests__/auth.bearer-path.test.ts +175 -0
- package/templates/apps/api/src/middleware/__tests__/auth.both-present-precedence.test.ts +76 -0
- package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +153 -0
- package/templates/apps/api/src/middleware/__tests__/auth.neither-present.test.ts +72 -0
- package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +292 -0
- package/templates/apps/api/src/middleware/auth.ts +246 -0
- package/templates/apps/api/src/middleware/rate-limit.ts +132 -0
- package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +129 -0
- package/templates/apps/api/src/openapi/index.ts +12 -0
- package/templates/apps/api/src/openapi/spec.ts +408 -0
- package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +193 -0
- package/templates/apps/api/src/routes/auth/__tests__/auth-user.functional.test.ts +201 -0
- package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +294 -0
- package/templates/apps/api/src/routes/auth/__tests__/user.test.ts +486 -0
- package/templates/apps/api/src/routes/auth/tokens.ts +199 -0
- package/templates/apps/api/src/routes/auth/user.ts +244 -0
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +588 -0
- package/templates/apps/api/src/routes/checkout/index.ts +13 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +185 -0
- package/templates/apps/api/src/routes/content/__tests__/create.test.ts +239 -0
- package/templates/apps/api/src/routes/content/__tests__/delete.test.ts +201 -0
- package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +141 -0
- package/templates/apps/api/src/routes/content/__tests__/list-pages.test.ts +122 -0
- package/templates/apps/api/src/routes/content/__tests__/list-types.test.ts +44 -0
- package/templates/apps/api/src/routes/content/__tests__/locale.test.ts +118 -0
- package/templates/apps/api/src/routes/content/__tests__/rate-limit.test.ts +51 -0
- package/templates/apps/api/src/routes/content/__tests__/update.test.ts +252 -0
- package/templates/apps/api/src/routes/content/create.ts +114 -0
- package/templates/apps/api/src/routes/content/delete.ts +81 -0
- package/templates/apps/api/src/routes/content/get-page.ts +98 -0
- package/templates/apps/api/src/routes/content/index.ts +32 -0
- package/templates/apps/api/src/routes/content/list-pages.ts +83 -0
- package/templates/apps/api/src/routes/content/list-types.ts +19 -0
- package/templates/apps/api/src/routes/content/rate-limit.ts +13 -0
- package/templates/apps/api/src/routes/content/slug.ts +9 -0
- package/templates/apps/api/src/routes/content/update.ts +111 -0
- package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +415 -0
- package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +165 -0
- package/templates/apps/api/src/routes/leads/index.ts +130 -0
- package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +296 -0
- package/templates/apps/api/src/routes/test/auth/session.ts +141 -0
- package/templates/apps/api/src/routes/webhooks/README.md +57 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-idempotency.test.ts +247 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-rate-limit.test.ts +198 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +633 -0
- package/templates/apps/api/src/routes/webhooks/index.ts +41 -0
- package/templates/apps/api/src/routes/webhooks/stripe.ts +253 -0
- package/templates/apps/api/src/server.ts +157 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +395 -0
- package/templates/apps/api/src/services/enrichment-shim.ts +53 -0
- package/templates/apps/api/src/services/lead-routing.ts +338 -0
- package/templates/apps/api/tsconfig.json +34 -0
- package/templates/apps/api/vercel.json +17 -0
- package/templates/apps/mcp/.env.example +52 -0
- package/templates/apps/mcp/CLAUDE.md +84 -0
- package/templates/apps/mcp/__tests__/abuse/daily-cap.test.ts +52 -0
- package/templates/apps/mcp/__tests__/abuse/email-validator.test.ts +46 -0
- package/templates/apps/mcp/__tests__/abuse/honeypot.test.ts +36 -0
- package/templates/apps/mcp/__tests__/abuse/user-agent-deny.test.ts +54 -0
- package/templates/apps/mcp/__tests__/aeo-cli-parity.test.ts +110 -0
- package/templates/apps/mcp/__tests__/audit-single-page.test.ts +213 -0
- package/templates/apps/mcp/__tests__/audit.test.ts +217 -0
- package/templates/apps/mcp/__tests__/catalog-drift.test.ts +52 -0
- package/templates/apps/mcp/__tests__/create_page.test.ts +201 -0
- package/templates/apps/mcp/__tests__/delete_page.test.ts +176 -0
- package/templates/apps/mcp/__tests__/get_business_hours.test.ts +82 -0
- package/templates/apps/mcp/__tests__/get_faq.test.ts +80 -0
- package/templates/apps/mcp/__tests__/get_locations.test.ts +65 -0
- package/templates/apps/mcp/__tests__/get_offerings.test.ts +90 -0
- package/templates/apps/mcp/__tests__/get_pricing.test.ts +80 -0
- package/templates/apps/mcp/__tests__/get_site_info.test.ts +81 -0
- package/templates/apps/mcp/__tests__/http-transport.test.ts +323 -0
- package/templates/apps/mcp/__tests__/lib/errors.test.ts +75 -0
- package/templates/apps/mcp/__tests__/lib/require-paid-tier.test.ts +75 -0
- package/templates/apps/mcp/__tests__/list_pages.test.ts +112 -0
- package/templates/apps/mcp/__tests__/locale.test.ts +135 -0
- package/templates/apps/mcp/__tests__/parity.test.ts +205 -0
- package/templates/apps/mcp/__tests__/purchase-disabled.test.ts +34 -0
- package/templates/apps/mcp/__tests__/read_content.test.ts +153 -0
- package/templates/apps/mcp/__tests__/request_callback.test.ts +163 -0
- package/templates/apps/mcp/__tests__/search_content.test.ts +153 -0
- package/templates/apps/mcp/__tests__/server.test.ts +115 -0
- package/templates/apps/mcp/__tests__/submit_lead.test.ts +165 -0
- package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +161 -0
- package/templates/apps/mcp/__tests__/tools/purchase.test.ts +227 -0
- package/templates/apps/mcp/__tests__/tools/scaffold.test.ts +237 -0
- package/templates/apps/mcp/__tests__/update_page.test.ts +195 -0
- package/templates/apps/mcp/jest.config.cjs +82 -0
- package/templates/apps/mcp/package.json +37 -0
- package/templates/apps/mcp/src/abuse/daily-cap.ts +47 -0
- package/templates/apps/mcp/src/abuse/email-validator.ts +25 -0
- package/templates/apps/mcp/src/abuse/honeypot.ts +21 -0
- package/templates/apps/mcp/src/abuse/index.ts +111 -0
- package/templates/apps/mcp/src/abuse/user-agent-deny.ts +58 -0
- package/templates/apps/mcp/src/http-transport.ts +303 -0
- package/templates/apps/mcp/src/index.ts +67 -0
- package/templates/apps/mcp/src/lib/audit-single-page.ts +194 -0
- package/templates/apps/mcp/src/lib/errors.ts +61 -0
- package/templates/apps/mcp/src/lib/locales.ts +171 -0
- package/templates/apps/mcp/src/lib/require-paid-tier.ts +44 -0
- package/templates/apps/mcp/src/lib/resolve-locale.ts +30 -0
- package/templates/apps/mcp/src/server.ts +139 -0
- package/templates/apps/mcp/src/tools/audit.ts +103 -0
- package/templates/apps/mcp/src/tools/capture_lead.ts +52 -0
- package/templates/apps/mcp/src/tools/create_page.ts +95 -0
- package/templates/apps/mcp/src/tools/delete_page.ts +73 -0
- package/templates/apps/mcp/src/tools/get_business_hours.ts +66 -0
- package/templates/apps/mcp/src/tools/get_faq.ts +69 -0
- package/templates/apps/mcp/src/tools/get_locations.ts +85 -0
- package/templates/apps/mcp/src/tools/get_offerings.ts +66 -0
- package/templates/apps/mcp/src/tools/get_pricing.ts +74 -0
- package/templates/apps/mcp/src/tools/get_site_info.ts +84 -0
- package/templates/apps/mcp/src/tools/index.ts +125 -0
- package/templates/apps/mcp/src/tools/list_pages.ts +72 -0
- package/templates/apps/mcp/src/tools/purchase.ts +89 -0
- package/templates/apps/mcp/src/tools/read_content.ts +61 -0
- package/templates/apps/mcp/src/tools/request_callback.ts +51 -0
- package/templates/apps/mcp/src/tools/scaffold.ts +119 -0
- package/templates/apps/mcp/src/tools/search_content.ts +59 -0
- package/templates/apps/mcp/src/tools/subscribe_newsletter.ts +47 -0
- package/templates/apps/mcp/src/tools/update_page.ts +91 -0
- package/templates/apps/mcp/tsconfig.json +19 -0
- package/templates/apps/web/.env.example +47 -0
- package/templates/apps/web/CLAUDE.md +81 -0
- package/templates/apps/web/__tests__/auth/adversarial/cookie-attributes.test.ts +94 -0
- package/templates/apps/web/__tests__/auth/adversarial/oauth-state-parameter.test.ts +75 -0
- package/templates/apps/web/__tests__/auth/adversarial/redirect-uri-allowlist.test.ts +82 -0
- package/templates/apps/web/__tests__/auth/env-helpers.test.ts +168 -0
- package/templates/apps/web/__tests__/authority-list-routes.test.tsx +208 -0
- package/templates/apps/web/__tests__/better-stack.test.ts +66 -0
- package/templates/apps/web/__tests__/blog-dir-resolution.test.ts +87 -0
- package/templates/apps/web/__tests__/blog-source-populated.test.ts +130 -0
- package/templates/apps/web/__tests__/data-testid-coverage.test.tsx +60 -0
- package/templates/apps/web/__tests__/google-analytics.test.tsx +104 -0
- package/templates/apps/web/__tests__/i18n/middleware.test.ts +119 -0
- package/templates/apps/web/__tests__/i18n/routing.test.ts +114 -0
- package/templates/apps/web/__tests__/i18n/translations.test.ts +191 -0
- package/templates/apps/web/__tests__/json-ld.test.ts +98 -0
- package/templates/apps/web/__tests__/knowledge-events-routes.test.tsx +580 -0
- package/templates/apps/web/__tests__/layout-stealth.test.ts +39 -0
- package/templates/apps/web/__tests__/lighthouse-fixtures/improvement-image-shrink.tsx +103 -0
- package/templates/apps/web/__tests__/lighthouse-fixtures/override-fixture.md +114 -0
- package/templates/apps/web/__tests__/lighthouse-fixtures/regression-bloat.tsx +94 -0
- package/templates/apps/web/__tests__/page.test.tsx +230 -0
- package/templates/apps/web/__tests__/products-services-phase1.test.tsx +321 -0
- package/templates/apps/web/__tests__/projects-routes.test.tsx +392 -0
- package/templates/apps/web/__tests__/resources-downloads-integrations-phase2.test.tsx +475 -0
- package/templates/apps/web/__tests__/routes/ai-plugin-json.test.ts +53 -0
- package/templates/apps/web/__tests__/routes/blog-route.test.tsx +191 -0
- package/templates/apps/web/__tests__/routes/llms-txt.test.ts +123 -0
- package/templates/apps/web/__tests__/routes/robots-txt.test.ts +52 -0
- package/templates/apps/web/__tests__/routes/sitemap-xml.test.ts +78 -0
- package/templates/apps/web/__tests__/routes/well-known-mcp.test.ts +203 -0
- package/templates/apps/web/__tests__/section-routes.test.tsx +693 -0
- package/templates/apps/web/__tests__/security-headers.test.ts +201 -0
- package/templates/apps/web/__tests__/sentry-config.test.ts +116 -0
- package/templates/apps/web/__tests__/setup.ts +82 -0
- package/templates/apps/web/__tests__/sitemap-locales.test.ts +415 -0
- package/templates/apps/web/__tests__/standalone-informational-routes.test.tsx +844 -0
- package/templates/apps/web/app/.well-known/ai-plugin.json/route.ts +81 -0
- package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +110 -0
- package/templates/apps/web/app/.well-known/mcp.json/route.ts +58 -0
- package/templates/apps/web/app/[locale]/__tests__/layout.test.tsx +120 -0
- package/templates/apps/web/app/[locale]/__tests__/page-renderer-migration.test.tsx +202 -0
- package/templates/apps/web/app/[locale]/about/page.tsx +31 -0
- package/templates/apps/web/app/[locale]/blog/[[...slug]]/page.tsx +173 -0
- package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +45 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +117 -0
- package/templates/apps/web/app/[locale]/careers/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +44 -0
- package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +113 -0
- package/templates/apps/web/app/[locale]/case-studies/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +63 -0
- package/templates/apps/web/app/[locale]/clients/page.tsx +27 -0
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +130 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +152 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +92 -0
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +79 -0
- package/templates/apps/web/app/[locale]/contact/error.tsx +24 -0
- package/templates/apps/web/app/[locale]/contact/page.tsx +38 -0
- package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +34 -0
- package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +119 -0
- package/templates/apps/web/app/[locale]/courses/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/dev/purchase/__tests__/actions.test.ts +160 -0
- package/templates/apps/web/app/[locale]/dev/purchase/error.tsx +25 -0
- package/templates/apps/web/app/[locale]/dev/purchase/page.tsx +117 -0
- package/templates/apps/web/app/[locale]/dev/purchase/purchase.actions.ts +58 -0
- package/templates/apps/web/app/[locale]/docs/[[...slug]]/page.tsx +118 -0
- package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +72 -0
- package/templates/apps/web/app/[locale]/downloads/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +47 -0
- package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +130 -0
- package/templates/apps/web/app/[locale]/events/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/faq/page.tsx +36 -0
- package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +34 -0
- package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +78 -0
- package/templates/apps/web/app/[locale]/how-to/page.tsx +40 -0
- package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +43 -0
- package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +129 -0
- package/templates/apps/web/app/[locale]/integrations/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/launch-service/page.tsx +31 -0
- package/templates/apps/web/app/[locale]/layout.tsx +241 -0
- package/templates/apps/web/app/[locale]/page.tsx +41 -0
- package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +44 -0
- package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +113 -0
- package/templates/apps/web/app/[locale]/partners/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +43 -0
- package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +129 -0
- package/templates/apps/web/app/[locale]/products/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +39 -0
- package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +138 -0
- package/templates/apps/web/app/[locale]/projects/page.tsx +30 -0
- package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +51 -0
- package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +117 -0
- package/templates/apps/web/app/[locale]/resources/page.tsx +27 -0
- package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +43 -0
- package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +129 -0
- package/templates/apps/web/app/[locale]/services/page.tsx +25 -0
- package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +34 -0
- package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +81 -0
- package/templates/apps/web/app/[locale]/software/page.tsx +39 -0
- package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +34 -0
- package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +82 -0
- package/templates/apps/web/app/[locale]/tech-articles/page.tsx +39 -0
- package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +63 -0
- package/templates/apps/web/app/[locale]/testimonials/page.tsx +27 -0
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +63 -0
- package/templates/apps/web/app/[locale]/use-cases/page.tsx +27 -0
- package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +34 -0
- package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +82 -0
- package/templates/apps/web/app/[locale]/whitepapers/page.tsx +39 -0
- package/templates/apps/web/app/__tests__/error-boundaries.test.tsx +152 -0
- package/templates/apps/web/app/api/auth/[...all]/route.ts +16 -0
- package/templates/apps/web/app/error-fallback.tsx +75 -0
- package/templates/apps/web/app/error.tsx +23 -0
- package/templates/apps/web/app/layout.tsx +18 -0
- package/templates/apps/web/app/llms.txt/route.ts +101 -0
- package/templates/apps/web/app/not-found.tsx +48 -0
- package/templates/apps/web/app/og/__tests__/route.test.ts +164 -0
- package/templates/apps/web/app/og/route.tsx +135 -0
- package/templates/apps/web/app/robots.txt/route.ts +36 -0
- package/templates/apps/web/app/sitemap.xml/route.ts +146 -0
- package/templates/apps/web/auth.ts +141 -0
- package/templates/apps/web/components/ThemeToggle.tsx +60 -0
- package/templates/apps/web/components/google-analytics.tsx +34 -0
- package/templates/apps/web/content/en/blog/index.mdx +15 -0
- package/templates/apps/web/content/en/blog/launching-ailk.mdx +20 -0
- package/templates/apps/web/content/en/docs/getting-started.mdx +30 -0
- package/templates/apps/web/i18n/request.ts +36 -0
- package/templates/apps/web/jest.config.cjs +100 -0
- package/templates/apps/web/lib/__mocks__/next-mdx-remote-rsc.js +12 -0
- package/templates/apps/web/lib/__mocks__/source-server.js +31 -0
- package/templates/apps/web/lib/__tests__/og.test.ts +65 -0
- package/templates/apps/web/lib/auth-env.ts +66 -0
- package/templates/apps/web/lib/blog-list-data.ts +95 -0
- package/templates/apps/web/lib/blog-post-data.ts +79 -0
- package/templates/apps/web/lib/nav-config.ts +13 -0
- package/templates/apps/web/lib/observability/better-stack.ts +27 -0
- package/templates/apps/web/lib/og.ts +23 -0
- package/templates/apps/web/lib/prisma-for-auth.ts +34 -0
- package/templates/apps/web/lib/source.ts +34 -0
- package/templates/apps/web/messages/en.json +131 -0
- package/templates/apps/web/middleware.ts +80 -0
- package/templates/apps/web/next.config.mjs +167 -0
- package/templates/apps/web/package.json +62 -0
- package/templates/apps/web/public/.well-known/security.txt +17 -0
- package/templates/apps/web/public/android-chrome-192x192.png +0 -0
- package/templates/apps/web/public/android-chrome-512x512.png +0 -0
- package/templates/apps/web/public/apple-touch-icon.png +0 -0
- package/templates/apps/web/public/favicon-16x16.png +0 -0
- package/templates/apps/web/public/favicon-32x32.png +0 -0
- package/templates/apps/web/public/favicon.ico +0 -0
- package/templates/apps/web/public/favicon.svg +4 -0
- package/templates/apps/web/public/logo-dark.svg +21 -0
- package/templates/apps/web/public/logo-light.svg +21 -0
- package/templates/apps/web/public/logomark-dark.svg +4 -0
- package/templates/apps/web/public/logomark-light.svg +4 -0
- package/templates/apps/web/public/og-default.png +0 -0
- package/templates/apps/web/public/site.webmanifest +19 -0
- package/templates/apps/web/scripts/assert-content-bundled.ts +55 -0
- package/templates/apps/web/security-headers.config.ts +132 -0
- package/templates/apps/web/sentry.client.config.ts +27 -0
- package/templates/apps/web/sentry.edge.config.ts +15 -0
- package/templates/apps/web/sentry.server.config.ts +20 -0
- package/templates/apps/web/source.config.ts +78 -0
- package/templates/apps/web/src/components/SiteNav.tsx +21 -0
- package/templates/apps/web/src/lib/routes.ts +37 -0
- package/templates/apps/web/tsconfig.json +35 -0
- package/templates/apps/web/types/messages.d.ts +19 -0
- package/templates/content/.gitkeep +0 -0
- package/templates/content/CLAUDE.md +85 -0
- package/templates/content/_site.mdx +38 -0
- package/templates/content/ar/HomePage/home.mdx +123 -0
- package/templates/content/ar/_site.mdx +35 -0
- package/templates/content/de/_site.mdx +29 -0
- package/templates/content/en/.gitkeep +0 -0
- package/templates/content/en/AboutPage/about.mdx +19 -0
- package/templates/content/en/AboutPage/about.schema.json +82 -0
- package/templates/content/en/BookCall/book-call.mdx +19 -0
- package/templates/content/en/BookCall/book-call.schema.json +121 -0
- package/templates/content/en/BreadcrumbList/site-breadcrumbs.mdx +20 -0
- package/templates/content/en/CareersList/careers.mdx +24 -0
- package/templates/content/en/CaseStudiesList/case-studies.mdx +22 -0
- package/templates/content/en/CaseStudiesList/showcase.mdx +8 -0
- package/templates/content/en/CaseStudy/ailk-aeo-rollout.mdx +32 -0
- package/templates/content/en/CaseStudy/schema-builder-migration.mdx +41 -0
- package/templates/content/en/ClientsList/clients.mdx +38 -0
- package/templates/content/en/ContactPage/contact.mdx +19 -0
- package/templates/content/en/ContactPage/contact.schema.json +100 -0
- package/templates/content/en/ContactPoint/primary.mdx +14 -0
- package/templates/content/en/Course/aeo-fundamentals.mdx +37 -0
- package/templates/content/en/Course/schema-builder-workshop.mdx +62 -0
- package/templates/content/en/CoursesList/courses.mdx +22 -0
- package/templates/content/en/DownloadsList/downloads.mdx +22 -0
- package/templates/content/en/Event/aeo-office-hours-may-2026.mdx +39 -0
- package/templates/content/en/Event/ailk-launch-day-2026.mdx +35 -0
- package/templates/content/en/EventsList/events.mdx +26 -0
- package/templates/content/en/FAQPage/faq.mdx +420 -0
- package/templates/content/en/FAQPage/faq.schema.json +231 -0
- package/templates/content/en/GlossaryList/glossary.mdx +19 -0
- package/templates/content/en/GlossaryList/glossary.schema.json +300 -0
- package/templates/content/en/HomePage/home.mdx +312 -0
- package/templates/content/en/HomePage/home.schema.json +88 -0
- package/templates/content/en/HomePage/launch-service.mdx +475 -0
- package/templates/content/en/HomePage/launch-service.schema.json +138 -0
- package/templates/content/en/HowTo/add-mdx-content.mdx +38 -0
- package/templates/content/en/HowTo/configure-aeo-scoring.mdx +35 -0
- package/templates/content/en/HowTo/set-up-json-ld.mdx +36 -0
- package/templates/content/en/Integration/github-actions.mdx +31 -0
- package/templates/content/en/Integration/openai-api.mdx +26 -0
- package/templates/content/en/Integration/vercel.mdx +32 -0
- package/templates/content/en/IntegrationsList/integrations.mdx +22 -0
- package/templates/content/en/JobPosting/content-strategist.mdx +46 -0
- package/templates/content/en/JobPosting/developer-advocate.mdx +47 -0
- package/templates/content/en/JobPosting/senior-fullstack-engineer.mdx +57 -0
- package/templates/content/en/LandingPage/aeo-audit.mdx +19 -0
- package/templates/content/en/LandingPage/aeo-audit.schema.json +92 -0
- package/templates/content/en/LandingPage/agency-waitlist.mdx +340 -0
- package/templates/content/en/LandingPage/agency-waitlist.schema.json +152 -0
- package/templates/content/en/LandingPage/developers.mdx +19 -0
- package/templates/content/en/LandingPage/developers.schema.json +109 -0
- package/templates/content/en/LandingPage/for-agencies.mdx +390 -0
- package/templates/content/en/LandingPage/for-agencies.schema.json +107 -0
- package/templates/content/en/LandingPage/for-ai-search-agencies.mdx +417 -0
- package/templates/content/en/LandingPage/for-ai-search-agencies.schema.json +105 -0
- package/templates/content/en/LandingPage/for-businesses.mdx +19 -0
- package/templates/content/en/LandingPage/for-businesses.schema.json +96 -0
- package/templates/content/en/LandingPage/platform.mdx +369 -0
- package/templates/content/en/LandingPage/platform.schema.json +166 -0
- package/templates/content/en/LandingPage/vs-ai-website-builders.mdx +19 -0
- package/templates/content/en/LandingPage/vs-ai-website-builders.schema.json +102 -0
- package/templates/content/en/LandingPage/vs-wordpress.mdx +19 -0
- package/templates/content/en/LandingPage/vs-wordpress.schema.json +53 -0
- package/templates/content/en/NewsletterSignup/newsletter.mdx +236 -0
- package/templates/content/en/NewsletterSignup/newsletter.schema.json +91 -0
- package/templates/content/en/Organization/site-owner.mdx +16 -0
- package/templates/content/en/Partner/prisma.mdx +31 -0
- package/templates/content/en/Partner/supabase.mdx +30 -0
- package/templates/content/en/Partner/vercel.mdx +28 -0
- package/templates/content/en/PartnersList/partners.mdx +22 -0
- package/templates/content/en/Person/founder.mdx +18 -0
- package/templates/content/en/Pricing/pricing.mdx +538 -0
- package/templates/content/en/Pricing/pricing.schema.json +209 -0
- package/templates/content/en/PrivacyPage/privacy.mdx +165 -0
- package/templates/content/en/PrivacyPage/privacy.schema.json +64 -0
- package/templates/content/en/Product/ailk.mdx +19 -0
- package/templates/content/en/Product/ailk.schema.json +94 -0
- package/templates/content/en/Product/api-launch-kit.mdx +26 -0
- package/templates/content/en/Product/launch-kit.mdx +28 -0
- package/templates/content/en/ProductsList/products.mdx +26 -0
- package/templates/content/en/Project/ailk-phase-2.mdx +54 -0
- package/templates/content/en/ProjectsList/projects.mdx +25 -0
- package/templates/content/en/ResourceDetail/aeo-scoring-guide.mdx +27 -0
- package/templates/content/en/ResourceDetail/content-model-whitepaper.mdx +28 -0
- package/templates/content/en/ResourceDetail/schema-org-quick-reference.mdx +39 -0
- package/templates/content/en/ResourcesHub/resources.mdx +22 -0
- package/templates/content/en/Service/consulting.mdx +22 -0
- package/templates/content/en/Service/implementation.mdx +30 -0
- package/templates/content/en/Service/launch-service.mdx +232 -0
- package/templates/content/en/Service/launch.mdx +228 -0
- package/templates/content/en/ServicesList/services.mdx +84 -0
- package/templates/content/en/SoftwareProduct/ailk-aeo.mdx +44 -0
- package/templates/content/en/SoftwareProduct/ailk-content-adapters.mdx +47 -0
- package/templates/content/en/SoftwareProduct/ailk-schema.mdx +49 -0
- package/templates/content/en/TeamList/team.mdx +63 -0
- package/templates/content/en/TeamMember/founder.mdx +72 -0
- package/templates/content/en/TermsPage/terms.mdx +19 -0
- package/templates/content/en/TermsPage/terms.schema.json +99 -0
- package/templates/content/en/TestimonialsList/testimonials.mdx +44 -0
- package/templates/content/en/UseCasesList/use-cases.mdx +30 -0
- package/templates/content/en/Whitepaper/ax-first-product-development.mdx +27 -0
- package/templates/content/en/Whitepaper/open-core-commercial-strategy.mdx +27 -0
- package/templates/content/en/Whitepaper/structured-data-for-answer-engines.mdx +31 -0
- package/templates/content/en-XA/AboutPage/about.mdx +8 -0
- package/templates/content/en-XA/FAQPage/faq.mdx +8 -0
- package/templates/content/en-XA/HomePage/home.mdx +8 -0
- package/templates/content/es/_site.mdx +30 -0
- package/templates/content/fr/_site.mdx +30 -0
- package/templates/content/ja/_site.mdx +30 -0
- package/templates/content/pt-BR/AboutPage/about.mdx +8 -0
- package/templates/content/pt-BR/FAQPage/faq.mdx +8 -0
- package/templates/content/pt-BR/HomePage/home.mdx +23 -0
- package/templates/database/CHANGELOG.md +5 -0
- package/templates/database/README.md +234 -0
- package/templates/database/__tests__/user-cascade.test.ts +125 -0
- package/templates/database/auth/.gitkeep +0 -0
- package/templates/database/config/.gitkeep +0 -0
- package/templates/database/content/.gitkeep +0 -0
- package/templates/database/inbox/.gitkeep +0 -0
- package/templates/database/inbox/README.md +3 -0
- package/templates/database/inbox/__tests__/schema.test.ts +40 -0
- package/templates/database/inbox/schema.prisma +52 -0
- package/templates/database/jest.config.cjs +29 -0
- package/templates/database/migrations/20260508000000_add_inbox_namespace/migration.sql +328 -0
- package/templates/database/migrations/20260513000000_better_auth_migration/migration.sql +100 -0
- package/templates/database/migrations/20260515000000_add_user_billing_fields/migration.sql +28 -0
- package/templates/database/migrations/20260516000000_add_user_tier_care_plan_seat/migration.sql +25 -0
- package/templates/database/migrations/20260518000000_add_telemetry_records/migration.sql +42 -0
- package/templates/database/migrations/20260525000000_theme_wiring/migration.sql +67 -0
- package/templates/database/migrations/20260710000000_retire_commercial_tier/migration.sql +21 -0
- package/templates/database/migrations/migration_lock.toml +3 -0
- package/templates/database/ops/.gitkeep +0 -0
- package/templates/database/package.json +45 -0
- package/templates/database/prisma.config.ts +20 -0
- package/templates/database/schema.prisma +487 -0
- package/templates/database/scripts/db-generate-locked.sh +80 -0
- package/templates/database/seed-test.ts +85 -0
- package/templates/database/tsconfig.build.json +16 -0
- package/templates/database/tsconfig.json +9 -0
- package/templates/package.json +125 -0
- package/templates/pnpm-workspace.yaml +6 -0
- package/templates/project.yaml +59 -0
- package/templates/tsconfig.base.json +18 -0
- package/templates/tsconfig.json +45 -0
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "HomePage"
|
|
3
|
+
slug: "launch-service"
|
|
4
|
+
title: "Ship an AI-search-ready website in two weeks. Fixed scope. Fixed price: $2,495."
|
|
5
|
+
description: "Deploy your website on AILK in two weeks. Fixed scope, fixed price: $2,495. The open-source, agent-ready foundation — built by the team that runs it."
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero-launch-service",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"headline": "Ship an AI-search-ready website in two weeks. Fixed scope. Fixed price: $2,495.",
|
|
14
|
+
"subheadline": "The same open-source foundation Sam Henry, Working Theory, and SalesSmyth publish on — deployed for your business by the team that built it.",
|
|
15
|
+
"body": "AILK Launch Service is the fixed-scope, two-week deploy of the AI Launch Kit foundation: schema-typed, agent-callable, already audited before it ships.",
|
|
16
|
+
"primaryCta":
|
|
17
|
+
{ "label": "Book your intro call", "href": "/book-call" },
|
|
18
|
+
"secondaryCta":
|
|
19
|
+
{
|
|
20
|
+
"label": "See common questions",
|
|
21
|
+
"href": "/faq",
|
|
22
|
+
"variant": "ghost",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "insight-foundation-is-the-bottleneck",
|
|
28
|
+
"type": "content-block",
|
|
29
|
+
"data":
|
|
30
|
+
{
|
|
31
|
+
"headline": "Why does your website's foundation decide whether AI search cites you?",
|
|
32
|
+
"body": "AI search doesn't send someone to your homepage first. It reads a page, decides whether to trust it, and quotes the sentence that answers the question — often without the reader ever visiting the rest of your site. That page is the unit of citation, not the site.\n\nFor a model to cite your business, it has to read a page it can parse: structured, marked up, and clearly attributed to your brand. Most SMB sites weren't built with that requirement in mind. They were built when a search engine, not a chatbot, decided what a buyer saw next — so the words on the page were written for people scanning a results list, not for a system extracting a fact.\n\nThat gap is now a business cost. Every quarter, another competitor's page gets cited instead of yours, in an answer your buyer never sees you compete for. The foundation your site runs on decides whether your pages are even eligible to be quoted — before a single word of content gets written.",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "alternatives-to-two-week-launch",
|
|
37
|
+
"type": "comparison-table",
|
|
38
|
+
"data":
|
|
39
|
+
{
|
|
40
|
+
"eyebrow": "Compare the paths to a modern SMB site",
|
|
41
|
+
"headline": "What are the alternatives to a two-week AILK launch?",
|
|
42
|
+
"description": "Four paths exist for a modern SMB website in 2026, and each trades speed, cost, or control for something you'll notice within a year. WordPress plus AEO and schema plugins runs an estimated 40% of the web — familiar and cheap to host, but the plugins don't integrate, they break on updates, and your AI-search readiness depends on whichever combination happens to be installed this month. Closed builders like Squarespace, Wix, and Webflow trade the plugin problem for a different one: fast templates, but weak schema control, no agent-callable surface, and a vendor that owns the substrate you're renting. A custom development build gives you full control and often the strongest final result — at three to six months and $15,000 to $50,000-plus, timelines and budgets that don't fit most SMB engagements. AILK Launch Service is the fourth path: the same Apache 2.0 foundation the Working Theory team runs its own brands on, deployed for your business in a fixed two-week scope, for a fixed $2,495. Every option below is measured against the same four dimensions: timeline, price, AI-search structure, and who owns the code when the engagement ends.",
|
|
43
|
+
"columns":
|
|
44
|
+
[
|
|
45
|
+
{
|
|
46
|
+
"key": "ailk",
|
|
47
|
+
"name": "AILK Launch Service",
|
|
48
|
+
"highlighted": true,
|
|
49
|
+
},
|
|
50
|
+
{ "key": "wordpress", "name": "WordPress + Plugins" },
|
|
51
|
+
{ "key": "closed", "name": "Closed Builders" },
|
|
52
|
+
{ "key": "custom", "name": "Custom Dev Build" },
|
|
53
|
+
],
|
|
54
|
+
"groups":
|
|
55
|
+
[
|
|
56
|
+
{
|
|
57
|
+
"groupName": "Timeline & Cost",
|
|
58
|
+
"rows":
|
|
59
|
+
[
|
|
60
|
+
{
|
|
61
|
+
"featureName": "Timeline",
|
|
62
|
+
"values":
|
|
63
|
+
{
|
|
64
|
+
"ailk": "2 weeks, fixed",
|
|
65
|
+
"wordpress": "4–8 weeks, variable",
|
|
66
|
+
"closed": "1–3 weeks, template-bound",
|
|
67
|
+
"custom": "3–6 months",
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"featureName": "Price",
|
|
72
|
+
"values":
|
|
73
|
+
{
|
|
74
|
+
"ailk": "$2,495 fixed",
|
|
75
|
+
"wordpress": "$3k–$15k + plugin costs",
|
|
76
|
+
"closed": "$200–$500/yr subscription",
|
|
77
|
+
"custom": "$15k–$50k+",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"groupName": "AI Search Readiness",
|
|
84
|
+
"rows":
|
|
85
|
+
[
|
|
86
|
+
{
|
|
87
|
+
"featureName": "Schema & AEO structure",
|
|
88
|
+
"values":
|
|
89
|
+
{
|
|
90
|
+
"ailk": true,
|
|
91
|
+
"wordpress": "Requires 3+ plugins",
|
|
92
|
+
"closed": "Weak, not controllable",
|
|
93
|
+
"custom": "Depends on the developer",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"featureName": "Agent-callable (MCP)",
|
|
98
|
+
"values":
|
|
99
|
+
{
|
|
100
|
+
"ailk": true,
|
|
101
|
+
"wordpress": false,
|
|
102
|
+
"closed": false,
|
|
103
|
+
"custom": "Rare",
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"featureName": "You own the codebase",
|
|
108
|
+
"values":
|
|
109
|
+
{
|
|
110
|
+
"ailk": true,
|
|
111
|
+
"wordpress": true,
|
|
112
|
+
"closed": false,
|
|
113
|
+
"custom": true,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
"footnote": "Timeline and price ranges reflect typical SMB engagements as of 2026; AILK Launch Service pricing is fixed at $2,495.",
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "what-a-foundation-must-do",
|
|
124
|
+
"type": "content-block",
|
|
125
|
+
"data":
|
|
126
|
+
{
|
|
127
|
+
"headline": "What should a modern website foundation actually do?",
|
|
128
|
+
"body": "A website foundation built for how AI search actually works has to do five specific things — none of them are AILK features, they're requirements any foundation has to meet.\n\nIt has to be read correctly: a model reading the page should know what it's about and which business it belongs to, without guessing from unstructured text.\n\nAgents now research on a buyer's behalf, so the foundation also needs to work for non-human visitors — exposing itself to them as a first-class audience, not a scraped afterthought.\n\nIt has to surface its own gaps. AEO problems don't crash a site; they quietly stop it from getting cited. The foundation needs to catch structural gaps the way a linter catches type errors — before launch, not three months after.\n\nA foundation that locks you in shapes its roadmap around that lock-in, not around your business, which is why it has to belong to the people running on it.\n\nAnd it has to fit inside a real engagement: an SMB site project runs weeks, not quarters — a foundation that demands a multi-month custom build breaks the economics before it starts.\n\nAny foundation can be measured against these five. Most fail at least three.",
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "introducing-launch-service",
|
|
133
|
+
"type": "feature",
|
|
134
|
+
"data":
|
|
135
|
+
{
|
|
136
|
+
"headline": "The AILK Launch Service: your site, deployed on the AI-search-ready foundation, in two weeks",
|
|
137
|
+
"description": "Launch Service is the productized version of what AILK ships as open source: a schema-typed, agent-callable website, deployed onto your domain by the Working Theory Labs team instead of self-served through the CLI. It's the path for businesses and agencies who want the foundation without doing the build themselves.",
|
|
138
|
+
"features":
|
|
139
|
+
[
|
|
140
|
+
{
|
|
141
|
+
"title": "Fixed scope, fixed price",
|
|
142
|
+
"description": "$2,495, one time. No hourly billing, no scope creep — the deploy is defined before you book the call.",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"title": "Built by the team that built AILK",
|
|
146
|
+
"description": "The same engineers who ship the open-source foundation deploy your site directly onto it — not a reseller layer, not a template shop.",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"title": "Two weeks, start to finish",
|
|
150
|
+
"description": "From intro call to a live, schema-typed, agent-callable site — a timeline that fits an SMB engagement instead of a custom-build budget.",
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"title": "You own the code",
|
|
154
|
+
"description": "Apache 2.0, same as the open-source project. Nothing about Launch Service changes that — the codebase is yours the day it ships.",
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "capabilities-delivered-in-two-weeks",
|
|
161
|
+
"type": "items",
|
|
162
|
+
"data":
|
|
163
|
+
{
|
|
164
|
+
"headline": "What capabilities does Launch Service deliver in two weeks?",
|
|
165
|
+
"description": "Every AILK Launch Service deploy ships the same five structural capabilities that make the open-source foundation different — the ones that determine whether your pages are readable, citable, and interactable by both people and AI agents.",
|
|
166
|
+
"items":
|
|
167
|
+
[
|
|
168
|
+
{
|
|
169
|
+
"title": "A typed schema registry, live on your pages",
|
|
170
|
+
"description": "Sixty page types ship with per-type schema validation and JSON-LD generated directly from your content — FAQ markup, entity markup, and identity markup (Organization, Person, LocalBusiness) included by default. On WordPress this normally takes three or four plugins that don't integrate cleanly; on AILK it's native to the page you publish.",
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"title": "Peer surfaces for humans and agents",
|
|
174
|
+
"description": "Your site ships as three matched surfaces sharing one codebase: a web UI for the people who visit, an MCP server for the AI agents now researching on their behalf, and an HTTP API for programmatic callers. Parity between all three is enforced in continuous integration — whatever a person can do on your site, an agent can do too.",
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"title": "A pre-launch AEO audit",
|
|
178
|
+
"description": "The `ailk audit` CLI runs against your site before it launches, scoring the schema and structural readiness the way a linter scores code for type errors. Enterprise AEO platforms charge $295 a month to measure this after a site has already lost citations. Your Launch Service deploy ships already measured, before it's public.",
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"title": "An Apache 2.0 codebase, complete",
|
|
182
|
+
"description": "Nothing in your deploy is source-available, feature-gated, or dependent on a subscription to keep working. It's Apache 2.0 — the same license, the same codebase, that the open-source AILK project ships. If you ever leave the Working Theory team, you leave with the code.",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"title": "Agent-assisted scaffolding for what comes next",
|
|
186
|
+
"description": "The `.claude/` skill bundle that ships with every AILK project — `scaffold-page`, `add-schema`, `audit-site`, and five more — comes with your deploy. Adding a new service page or a new section next quarter is a guided agent session, not a re-engagement with a developer.",
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "what-changes-after-launch",
|
|
193
|
+
"type": "items",
|
|
194
|
+
"data":
|
|
195
|
+
{
|
|
196
|
+
"headline": "What does a two-week AILK launch change for your business?",
|
|
197
|
+
"description": "Each capability above pays off as a concrete change in how your site performs and how much it costs to keep improving it.",
|
|
198
|
+
"items":
|
|
199
|
+
[
|
|
200
|
+
{
|
|
201
|
+
"title": "The citation work compounds instead of resetting",
|
|
202
|
+
"description": "On a WordPress-plus-plugins stack, every new campaign re-fights plugin conflicts and weak markup. On AILK, every page you publish is already structured for citation — the content work you do next builds on what's already there instead of fighting it.",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"title": "Enterprise-grade architecture at SMB pricing",
|
|
206
|
+
"description": "A human UI, an MCP server, an API kept in parity by CI — that peer-surfaces architecture used to require a six-figure CMS contract and a dedicated engineering team. It's the same schema-typed, agent-callable structure enterprise buyers pay Sitecore-tier budgets for. Your deploy ships it as the default, not an upsell.",
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"title": "Structural gaps get caught before launch, not three months in",
|
|
210
|
+
"description": "A citation gap discovered after launch costs months of content work to recover. The same gap caught by `ailk audit` before launch costs nothing but the audit run. The cost of an AEO mistake shifts from 'after your customers notice' to 'before you go live.'",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"title": "You own the relationship, not a vendor",
|
|
214
|
+
"description": "No platform takes a percentage, and no closed builder reshapes your roadmap. If you leave the Working Theory team a year from now, the codebase leaves with you — Apache 2.0 means nobody else holds the keys. Your business relationship is with a team, not a subscription you can't cancel without losing your site.",
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"title": "The marginal cost of your next page approaches zero",
|
|
218
|
+
"description": "Once your site is live, adding a new service page, updating a schema, or responding to a citation gap is a Claude Code session — an hour, not a sprint. The two-week deploy is the expensive part; everything after gets cheaper.",
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": "proof-the-architecture-is-in-the-repo",
|
|
225
|
+
"type": "content-block",
|
|
226
|
+
"data":
|
|
227
|
+
{
|
|
228
|
+
"headline": "What proof backs the AILK Launch Service claims?",
|
|
229
|
+
"body": "The clearest proof of the Launch Service claims is the architecture itself. You can verify it directly instead of taking our word for it: AILK is Apache 2.0 on GitHub, built as three peer apps (`apps/web`, `apps/mcp`, `apps/api`), with a parity test running in continuous integration and a `.well-known/mcp.json` file at the deployed URL of every AILK site, including this one. The `ailk audit` CLI runs against any AILK deploy and returns the same score a stranger would get.\n\nWe run on it ourselves. Sam Henry, Working Theory, and SalesSmyth all publish on AILK, and that's the actual reason the schema registry and the peer-surfaces architecture exist in their current shape. We hit the structural problems Launch Service solves before we sold anyone else a solution to them.\n\nWe're also honest about what's still ahead. There are no public install counts, no case studies from outside the founding team, and no third-party benchmarks yet — those come from the first cohort of Launch Service customers over the next several months, not from a launch-day claim. What you can verify today is the codebase, the CI, and the audit tool. What you can't verify yet, we're not pretending to have.",
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id": "launch-service-pricing",
|
|
234
|
+
"type": "pricing",
|
|
235
|
+
"data":
|
|
236
|
+
{
|
|
237
|
+
"headline": "How much does the AILK Launch Service cost?",
|
|
238
|
+
"description": "Launch Service is $2,495, one time, fixed scope — the deploy, not a subscription. If your team wants ongoing access to the AILK Pro tooling after launch, Pro and Pro Plus are priced separately, per user.",
|
|
239
|
+
"variant": "features-and-plans",
|
|
240
|
+
"plans":
|
|
241
|
+
[
|
|
242
|
+
{
|
|
243
|
+
"key": "launch-service",
|
|
244
|
+
"name": "Launch Service",
|
|
245
|
+
"price": { "custom": "$2,495" },
|
|
246
|
+
"priceSubhead": "one-time, fixed scope",
|
|
247
|
+
"description": "A fixed two-week deploy of your site onto the AILK foundation, delivered by the Working Theory Labs team.",
|
|
248
|
+
"features":
|
|
249
|
+
[
|
|
250
|
+
"Two-week deploy, start to finish",
|
|
251
|
+
"Schema-typed, agent-callable site",
|
|
252
|
+
"Pre-launch `ailk audit` pass",
|
|
253
|
+
"Apache 2.0 — you own the code",
|
|
254
|
+
],
|
|
255
|
+
"cta": { "label": "Book intro call", "href": "/book-call" },
|
|
256
|
+
"highlighted": true,
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"key": "pro",
|
|
260
|
+
"name": "Pro",
|
|
261
|
+
"price": { "annual": "$249/user/year" },
|
|
262
|
+
"priceSubhead": "per user, billed annually",
|
|
263
|
+
"description": "Ongoing Pro tooling for teams publishing and iterating on an AILK site after launch.",
|
|
264
|
+
"features":
|
|
265
|
+
[
|
|
266
|
+
"Per-user access to Pro tooling",
|
|
267
|
+
"For teams managing an active AILK site",
|
|
268
|
+
],
|
|
269
|
+
"cta": { "label": "See Pro pricing", "href": "/pricing" },
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"key": "pro-plus",
|
|
273
|
+
"name": "Pro Plus",
|
|
274
|
+
"price": { "monthly": "$449/user/month" },
|
|
275
|
+
"priceSubhead": "per user, billed monthly",
|
|
276
|
+
"description": "Pro tooling plus ongoing care for teams that want a managed relationship after launch.",
|
|
277
|
+
"features": ["Everything in Pro", "Ongoing managed support"],
|
|
278
|
+
"cta": { "label": "See Pro Plus pricing", "href": "/pricing" },
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"id": "launch-service-objections",
|
|
285
|
+
"type": "faq",
|
|
286
|
+
"data":
|
|
287
|
+
{
|
|
288
|
+
"headline": "Common questions about the AILK Launch Service",
|
|
289
|
+
"items":
|
|
290
|
+
[
|
|
291
|
+
{
|
|
292
|
+
"question": "You're pre-launch. Why bet on this?",
|
|
293
|
+
"answer": "The architecture is observable in the repo, not on a slide deck. The schema registry is a directory with sixty typed entries. The parity test runs in CI. The `ailk audit` CLI works against any AILK site today. The team ships this foundation and runs three other brands on it — Sam Henry, Working Theory, and SalesSmyth. Apache 2.0 bounds your downside: if AILK never grows past today, you keep the code and you keep your site.",
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"question": "We run a portfolio of client sites. Where's fleet management?",
|
|
297
|
+
"answer": "It's deferred. Fleet management, cross-site rollup, and white-label licensing for agencies are planned as a future Enterprise multi-tenant entitlement, not a separate tier, and not shipped yet. At launch, agencies deliver client sites through Launch Service plus per-user Pro — one site per engagement, not a fleet dashboard.",
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"question": "We're not Next.js native. Is this still for us?",
|
|
301
|
+
"answer": "Yes — if what you need is AI-search visibility, not a codebase you maintain yourselves. Launch Service is built for exactly this: a fixed two-week deploy where our team owns the build, and you own the content and the citation work from there. No MDX, no build pipeline, no Next.js fluency required on your side.",
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"question": "How does this relate to Working Theory Platform? Am I locked in?",
|
|
305
|
+
"answer": "You're not locked into anything. AILK works fully standalone, and Launch Service delivers a complete, independent site. Working Theory Platform is a separate product for growth marketing as a system; it publishes into AILK with the deepest integration for customers who want both, but neither product requires the other.",
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
"supportLink": { "label": "Read the full FAQ", "href": "/faq" },
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"id": "book-intro-call-close",
|
|
313
|
+
"type": "cta",
|
|
314
|
+
"data":
|
|
315
|
+
{
|
|
316
|
+
"headline": "Book your intro call",
|
|
317
|
+
"description": "Fifteen minutes to confirm scope, timeline, and price — then a two-week deploy onto the foundation built for the AI-search era. No obligation until you book the engagement.",
|
|
318
|
+
"primaryCta": { "label": "Book intro call", "href": "/book-call" },
|
|
319
|
+
"secondaryCta":
|
|
320
|
+
{
|
|
321
|
+
"label": "Read common questions",
|
|
322
|
+
"href": "/faq",
|
|
323
|
+
"variant": "outline",
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
]
|
|
328
|
+
status: "Approved"
|
|
329
|
+
pageKey: "Service"
|
|
330
|
+
entity: "ailaunchkit"
|
|
331
|
+
urlSlug: "service"
|
|
332
|
+
lastUpdated: "2026-07-06"
|
|
333
|
+
pageLevelSchemaType: "HomePage"
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
import { JsonLd } from "@/components/JsonLd";
|
|
337
|
+
|
|
338
|
+
<JsonLd
|
|
339
|
+
data={{
|
|
340
|
+
"@context": "https://schema.org",
|
|
341
|
+
"@graph": [
|
|
342
|
+
{
|
|
343
|
+
"@type": "Product",
|
|
344
|
+
"@id": "https://ailaunchkit.ai/#product",
|
|
345
|
+
name: "AI Launch Kit",
|
|
346
|
+
alternateName: [
|
|
347
|
+
"AI Launch Kit by Working Theory",
|
|
348
|
+
"AILK by Working Theory",
|
|
349
|
+
"AILK",
|
|
350
|
+
"@ailaunchkit",
|
|
351
|
+
"@ailk",
|
|
352
|
+
"@working-theory",
|
|
353
|
+
"ai-launch-kit",
|
|
354
|
+
],
|
|
355
|
+
url: "https://ailaunchkit.ai",
|
|
356
|
+
description:
|
|
357
|
+
"AI Launch Kit is the open-source website foundation for the agent-first internet — Apache 2.0, agent-ready, AEO-scored, deployable in days.",
|
|
358
|
+
sameAs: [
|
|
359
|
+
"https://github.com/working-theory-labs/ai-launch-kit",
|
|
360
|
+
"https://x.com/ailaunchkit",
|
|
361
|
+
"https://www.npmjs.com/org/ailk",
|
|
362
|
+
"https://youtube.com/@working-theory",
|
|
363
|
+
"https://linkedin.com/company/working-theory",
|
|
364
|
+
],
|
|
365
|
+
foundingDate: "2026",
|
|
366
|
+
category: "Open-source website foundation",
|
|
367
|
+
applicationCategory: "DeveloperApplication",
|
|
368
|
+
operatingSystem: "Cross-platform (Node.js)",
|
|
369
|
+
license: "https://www.apache.org/licenses/LICENSE-2.0",
|
|
370
|
+
codeRepository: "https://github.com/working-theory-labs/ai-launch-kit",
|
|
371
|
+
manufacturer: {
|
|
372
|
+
"@type": "Organization",
|
|
373
|
+
name: "SalesSmyth LLC",
|
|
374
|
+
url: "https://ailaunchkit.ai",
|
|
375
|
+
},
|
|
376
|
+
brand: {
|
|
377
|
+
"@type": "Brand",
|
|
378
|
+
name: "Working Theory",
|
|
379
|
+
url: "https://workingtheory.ai",
|
|
380
|
+
},
|
|
381
|
+
creator: { "@type": "Person", name: "Sam Henry" },
|
|
382
|
+
offers: [
|
|
383
|
+
{
|
|
384
|
+
"@type": "Offer",
|
|
385
|
+
name: "Free (OSS)",
|
|
386
|
+
price: "0",
|
|
387
|
+
priceCurrency: "USD",
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"@type": "Offer",
|
|
391
|
+
name: "Pro",
|
|
392
|
+
price: "249",
|
|
393
|
+
priceCurrency: "USD",
|
|
394
|
+
description: "Per user, per year",
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"@type": "Offer",
|
|
398
|
+
name: "Pro Plus",
|
|
399
|
+
price: "449",
|
|
400
|
+
priceCurrency: "USD",
|
|
401
|
+
description: "Per user, per month",
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"@type": "Offer",
|
|
405
|
+
name: "Launch Service",
|
|
406
|
+
price: "2495",
|
|
407
|
+
priceCurrency: "USD",
|
|
408
|
+
description: "Fixed-scope, two-week productized deploy engagement",
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"@type": "Service",
|
|
414
|
+
"@id": "https://ailaunchkit.ai/launch-service#service",
|
|
415
|
+
url: "https://ailaunchkit.ai/launch-service",
|
|
416
|
+
name: "AILK Launch Service",
|
|
417
|
+
description:
|
|
418
|
+
"Deploy your website on AILK in two weeks. Fixed scope, fixed price: $2,495. The open-source, agent-ready foundation — built by the team that runs it.",
|
|
419
|
+
isPartOf: { "@id": "https://ailaunchkit.ai/#product" },
|
|
420
|
+
provider: { "@id": "https://ailaunchkit.ai/#product" },
|
|
421
|
+
areaServed: "Global",
|
|
422
|
+
serviceType: "Website foundation deployment service",
|
|
423
|
+
offers: {
|
|
424
|
+
"@type": "Offer",
|
|
425
|
+
name: "Launch Service",
|
|
426
|
+
price: "2495",
|
|
427
|
+
priceCurrency: "USD",
|
|
428
|
+
description:
|
|
429
|
+
"One-time, fixed-scope, two-week deploy of your site onto the AILK foundation, delivered by the Working Theory Labs team.",
|
|
430
|
+
url: "https://ailaunchkit.ai/launch-service",
|
|
431
|
+
},
|
|
432
|
+
mainEntity: {
|
|
433
|
+
"@type": "FAQPage",
|
|
434
|
+
"@id": "https://ailaunchkit.ai/launch-service#faq",
|
|
435
|
+
mainEntity: [
|
|
436
|
+
{
|
|
437
|
+
"@type": "Question",
|
|
438
|
+
name: "You're pre-launch. Why bet on this?",
|
|
439
|
+
acceptedAnswer: {
|
|
440
|
+
"@type": "Answer",
|
|
441
|
+
text: "The architecture is observable in the repo, not on a slide deck. The schema registry is a directory with sixty typed entries. The parity test runs in CI. The `ailk audit` CLI works against any AILK site today. The team ships this foundation and runs three other brands on it — Sam Henry, Working Theory, and SalesSmyth. Apache 2.0 bounds your downside: if AILK never grows past today, you keep the code and you keep your site.",
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"@type": "Question",
|
|
446
|
+
name: "We run a portfolio of client sites. Where's fleet management?",
|
|
447
|
+
acceptedAnswer: {
|
|
448
|
+
"@type": "Answer",
|
|
449
|
+
text: "It's deferred. Fleet management, cross-site rollup, and white-label licensing for agencies are planned as a future Enterprise multi-tenant entitlement, not a separate tier, and not shipped yet. At launch, agencies deliver client sites through Launch Service plus per-user Pro — one site per engagement, not a fleet dashboard.",
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"@type": "Question",
|
|
454
|
+
name: "We're not Next.js native. Is this still for us?",
|
|
455
|
+
acceptedAnswer: {
|
|
456
|
+
"@type": "Answer",
|
|
457
|
+
text: "Yes — if what you need is AI-search visibility, not a codebase you maintain yourselves. Launch Service is built for exactly this: a fixed two-week deploy where our team owns the build, and you own the content and the citation work from there. No MDX, no build pipeline, no Next.js fluency required on your side.",
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"@type": "Question",
|
|
462
|
+
name: "How does this relate to Working Theory Platform? Am I locked in?",
|
|
463
|
+
acceptedAnswer: {
|
|
464
|
+
"@type": "Answer",
|
|
465
|
+
text: "You're not locked into anything. AILK works fully standalone, and Launch Service delivers a complete, independent site. Working Theory Platform is a separate product for growth marketing as a system; it publishes into AILK with the deepest integration for customers who want both, but neither product requires the other.",
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
],
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
],
|
|
472
|
+
}}
|
|
473
|
+
/>
|
|
474
|
+
|
|
475
|
+
{/* 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,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@graph": [
|
|
4
|
+
{
|
|
5
|
+
"@type": "Product",
|
|
6
|
+
"@id": "https://ailaunchkit.ai/#product",
|
|
7
|
+
"name": "AI Launch Kit",
|
|
8
|
+
"alternateName": [
|
|
9
|
+
"AI Launch Kit by Working Theory",
|
|
10
|
+
"AILK by Working Theory",
|
|
11
|
+
"AILK",
|
|
12
|
+
"@ailaunchkit",
|
|
13
|
+
"@ailk",
|
|
14
|
+
"@working-theory",
|
|
15
|
+
"ai-launch-kit"
|
|
16
|
+
],
|
|
17
|
+
"url": "https://ailaunchkit.ai",
|
|
18
|
+
"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.",
|
|
19
|
+
"sameAs": [
|
|
20
|
+
"https://github.com/working-theory-labs/ai-launch-kit",
|
|
21
|
+
"https://x.com/ailaunchkit",
|
|
22
|
+
"https://www.npmjs.com/org/ailk",
|
|
23
|
+
"https://youtube.com/@working-theory",
|
|
24
|
+
"https://linkedin.com/company/working-theory"
|
|
25
|
+
],
|
|
26
|
+
"foundingDate": "2026",
|
|
27
|
+
"category": "Open-source website foundation",
|
|
28
|
+
"applicationCategory": "DeveloperApplication",
|
|
29
|
+
"operatingSystem": "Cross-platform (Node.js)",
|
|
30
|
+
"license": "https://www.apache.org/licenses/LICENSE-2.0",
|
|
31
|
+
"codeRepository": "https://github.com/working-theory-labs/ai-launch-kit",
|
|
32
|
+
"manufacturer": {
|
|
33
|
+
"@type": "Organization",
|
|
34
|
+
"name": "SalesSmyth LLC",
|
|
35
|
+
"url": "https://ailaunchkit.ai"
|
|
36
|
+
},
|
|
37
|
+
"brand": {
|
|
38
|
+
"@type": "Brand",
|
|
39
|
+
"name": "Working Theory",
|
|
40
|
+
"url": "https://workingtheory.ai"
|
|
41
|
+
},
|
|
42
|
+
"creator": {
|
|
43
|
+
"@type": "Person",
|
|
44
|
+
"name": "Sam Henry"
|
|
45
|
+
},
|
|
46
|
+
"offers": [
|
|
47
|
+
{
|
|
48
|
+
"@type": "Offer",
|
|
49
|
+
"name": "Free (OSS)",
|
|
50
|
+
"price": "0",
|
|
51
|
+
"priceCurrency": "USD"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"@type": "Offer",
|
|
55
|
+
"name": "Pro",
|
|
56
|
+
"price": "249",
|
|
57
|
+
"priceCurrency": "USD",
|
|
58
|
+
"description": "Per user, per year"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"@type": "Offer",
|
|
62
|
+
"name": "Pro Plus",
|
|
63
|
+
"price": "449",
|
|
64
|
+
"priceCurrency": "USD",
|
|
65
|
+
"description": "Per user, per month"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"@type": "Offer",
|
|
69
|
+
"name": "Launch Service",
|
|
70
|
+
"price": "2495",
|
|
71
|
+
"priceCurrency": "USD",
|
|
72
|
+
"description": "Fixed-scope, two-week productized deploy engagement"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"@type": "Service",
|
|
78
|
+
"@id": "https://ailaunchkit.ai/launch-service#service",
|
|
79
|
+
"url": "https://ailaunchkit.ai/launch-service",
|
|
80
|
+
"name": "AILK Launch Service",
|
|
81
|
+
"description": "Deploy your website on AILK in two weeks. Fixed scope, fixed price: $2,495. The open-source, agent-ready foundation — built by the team that runs it.",
|
|
82
|
+
"isPartOf": {
|
|
83
|
+
"@id": "https://ailaunchkit.ai/#product"
|
|
84
|
+
},
|
|
85
|
+
"provider": {
|
|
86
|
+
"@id": "https://ailaunchkit.ai/#product"
|
|
87
|
+
},
|
|
88
|
+
"areaServed": "Global",
|
|
89
|
+
"serviceType": "Website foundation deployment service",
|
|
90
|
+
"offers": {
|
|
91
|
+
"@type": "Offer",
|
|
92
|
+
"name": "Launch Service",
|
|
93
|
+
"price": "2495",
|
|
94
|
+
"priceCurrency": "USD",
|
|
95
|
+
"description": "One-time, fixed-scope, two-week deploy of your site onto the AILK foundation, delivered by the Working Theory Labs team.",
|
|
96
|
+
"url": "https://ailaunchkit.ai/launch-service"
|
|
97
|
+
},
|
|
98
|
+
"mainEntity": {
|
|
99
|
+
"@type": "FAQPage",
|
|
100
|
+
"@id": "https://ailaunchkit.ai/launch-service#faq",
|
|
101
|
+
"mainEntity": [
|
|
102
|
+
{
|
|
103
|
+
"@type": "Question",
|
|
104
|
+
"name": "You're pre-launch. Why bet on this?",
|
|
105
|
+
"acceptedAnswer": {
|
|
106
|
+
"@type": "Answer",
|
|
107
|
+
"text": "The architecture is observable in the repo, not on a slide deck. The schema registry is a directory with sixty typed entries. The parity test runs in CI. The `ailk audit` CLI works against any AILK site today. The team ships this foundation and runs three other brands on it — Sam Henry, Working Theory, and SalesSmyth. Apache 2.0 bounds your downside: if AILK never grows past today, you keep the code and you keep your site."
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"@type": "Question",
|
|
112
|
+
"name": "We run a portfolio of client sites. Where's fleet management?",
|
|
113
|
+
"acceptedAnswer": {
|
|
114
|
+
"@type": "Answer",
|
|
115
|
+
"text": "It's deferred. Fleet management, cross-site rollup, and white-label licensing for agencies are planned as a future Enterprise multi-tenant entitlement, not a separate tier, and not shipped yet. At launch, agencies deliver client sites through Launch Service plus per-user Pro — one site per engagement, not a fleet dashboard."
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"@type": "Question",
|
|
120
|
+
"name": "We're not Next.js native. Is this still for us?",
|
|
121
|
+
"acceptedAnswer": {
|
|
122
|
+
"@type": "Answer",
|
|
123
|
+
"text": "Yes — if what you need is AI-search visibility, not a codebase you maintain yourselves. Launch Service is built for exactly this: a fixed two-week deploy where our team owns the build, and you own the content and the citation work from there. No MDX, no build pipeline, no Next.js fluency required on your side."
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"@type": "Question",
|
|
128
|
+
"name": "How does this relate to Working Theory Platform? Am I locked in?",
|
|
129
|
+
"acceptedAnswer": {
|
|
130
|
+
"@type": "Answer",
|
|
131
|
+
"text": "You're not locked into anything. AILK works fully standalone, and Launch Service delivers a complete, independent site. Working Theory Platform is a separate product for growth marketing as a system; it publishes into AILK with the deepest integration for customers who want both, but neither product requires the other."
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: HowTo
|
|
3
|
+
slug: add-mdx-content
|
|
4
|
+
title: How to Add MDX Content to an AILK Site
|
|
5
|
+
description: Create and manage MDX content files using the AILK content adapter — frontmatter conventions, directory layout, and locale support.
|
|
6
|
+
publishedAt: "2026-05-05"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# How to Add MDX Content to an AILK Site
|
|
10
|
+
|
|
11
|
+
AILK uses MDX files as the canonical content source. The content adapter reads them at build time and maps them to typed `ContentPage` objects the schema builders consume.
|
|
12
|
+
|
|
13
|
+
## Step 1 — Create the content directory
|
|
14
|
+
|
|
15
|
+
Each schema.org type gets its own directory under `content/<locale>/<Type>/`. For example, how-to articles live at `content/en/HowTo/`.
|
|
16
|
+
|
|
17
|
+
## Step 2 — Author the frontmatter
|
|
18
|
+
|
|
19
|
+
Every MDX file needs at minimum:
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
---
|
|
23
|
+
type: HowTo
|
|
24
|
+
slug: my-guide
|
|
25
|
+
title: My Guide Title
|
|
26
|
+
description: One clear sentence explaining what this guide covers.
|
|
27
|
+
---
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Optional fields: `publishedAt`, `updatedAt`, `image`, and a `schema` override block for advanced structured data.
|
|
31
|
+
|
|
32
|
+
## Step 3 — Write the body
|
|
33
|
+
|
|
34
|
+
The MDX body renders below the frontmatter-driven heading and description on the detail page. Use standard Markdown headings, code blocks, and lists.
|
|
35
|
+
|
|
36
|
+
## Step 4 — Add locale variants
|
|
37
|
+
|
|
38
|
+
Duplicate the file into `content/es/<Type>/` (or any locale prefix) with translated frontmatter and body. The content adapter applies a fallback chain: requested locale → default locale → legacy non-prefixed layout.
|