create-ailk 0.1.0 → 0.2.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/README.md +124 -3
- package/component-catalog.md +456 -0
- package/dist/cli.js +92 -16
- package/dist/component-catalog.d.ts +11 -0
- package/dist/component-catalog.js +39 -0
- package/dist/copy.d.ts +7 -0
- package/dist/copy.js +24 -0
- package/dist/derive-architecture.d.ts +13 -0
- package/dist/derive-architecture.js +238 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.js +19 -2
- package/dist/lib/extract-module-bundle.d.ts +16 -0
- package/dist/lib/extract-module-bundle.js +184 -0
- package/dist/lib/fetch-module.d.ts +55 -0
- package/dist/lib/fetch-module.js +125 -0
- package/dist/lib/module-license-gate.d.ts +48 -0
- package/dist/lib/module-license-gate.js +67 -0
- package/dist/lib/module-tier.d.ts +35 -0
- package/dist/lib/module-tier.js +37 -0
- package/dist/module-architecture.d.ts +175 -0
- package/dist/module-architecture.js +663 -0
- package/dist/parse-args.d.ts +47 -1
- package/dist/parse-args.js +143 -2
- package/dist/programmatic.d.ts +160 -3
- package/dist/programmatic.js +196 -7
- package/dist/surfaces.d.ts +211 -0
- package/dist/surfaces.js +532 -0
- package/dist/sync-routes.d.ts +92 -0
- package/dist/sync-routes.js +350 -0
- package/package.json +12 -5
- package/templates/.claude/rules/architecture.md +6 -2
- package/templates/.claude/skills/README.md +9 -9
- package/templates/.claude/skills/add-schema/SKILL.md +14 -7
- package/templates/.claude/skills/add-schema/references/schema-types.md +109 -6
- package/templates/.claude/skills/provision-config/SKILL.md +1 -1
- package/templates/.claude/skills/scaffold-commerce/SKILL.md +498 -1
- package/templates/.claude/skills/scaffold-commerce/templates/checkout-route.template.ts +370 -0
- package/templates/.claude/skills/scaffold-commerce/templates/invoice-route.template.ts +376 -0
- package/templates/.claude/skills/scaffold-commerce/templates/payment-link-route.template.ts +471 -0
- package/templates/.claude/skills/scaffold-commerce/templates/portal-route.template.ts +365 -0
- package/templates/.claude/skills/scaffold-commerce/templates/stripe-config.template.ts +60 -0
- package/templates/.claude/skills/scaffold-commerce/templates/subscription-route.template.ts +446 -0
- package/templates/.claude/skills/suggest-site-pages/references/categories.md +4 -4
- package/templates/.env.example +126 -2
- package/templates/CLAUDE.md +11 -5
- package/templates/README.md +1 -1
- package/templates/apps/api/.env.example +38 -0
- package/templates/apps/api/CLAUDE.md +78 -1
- package/templates/apps/api/LICENSE +201 -0
- package/templates/apps/api/api/index.ts +6 -141
- package/templates/apps/api/jest.config.cjs +16 -0
- package/templates/apps/api/package.json +22 -6
- package/templates/apps/api/src/__tests__/module-exclusion.test.ts +141 -0
- package/templates/apps/api/src/__tests__/server.test.ts +46 -0
- package/templates/apps/api/src/__tests__/vercel-handler.test.ts +211 -0
- package/templates/apps/api/src/bin/abandon-sweep.ts +42 -0
- package/templates/apps/api/src/bin/deliverable-resend.ts +144 -0
- package/templates/apps/api/src/bin/deliverable-upload.ts +114 -0
- package/templates/apps/api/src/bin/followup-sweep.ts +44 -0
- package/templates/apps/api/src/bin/listing-csv-sweep.ts +46 -0
- package/templates/apps/api/src/bin/seed-presets.ts +58 -0
- package/templates/apps/api/src/bin/seed-waitlist-experiments.ts +104 -0
- package/templates/apps/api/src/bin/session-retention-sweep.ts +46 -0
- package/templates/apps/api/src/cli.ts +5 -11
- package/templates/apps/api/src/config/index.ts +35 -0
- package/templates/apps/api/src/config/modules.ts +43 -0
- package/templates/apps/api/src/lib/__mocks__/prisma-client.js +11 -0
- package/templates/apps/api/src/lib/__mocks__/prisma.ts +241 -0
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +2 -2
- package/templates/apps/api/src/lib/site.ts +16 -0
- package/templates/apps/api/src/lib/stripe.ts +22 -0
- package/templates/apps/api/src/lib/tenant-db.ts +225 -0
- package/templates/apps/api/src/lib/ws-token.ts +91 -0
- package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +7 -1
- package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +7 -1
- package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +91 -4
- package/templates/apps/api/src/middleware/auth.ts +43 -8
- package/templates/apps/api/src/middleware/rate-limit.ts +78 -3
- package/templates/apps/api/src/middleware/tenant.ts +99 -0
- package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +92 -0
- package/templates/apps/api/src/openapi/spec.ts +312 -3
- package/templates/apps/api/src/routes/aeo/__tests__/index.test.ts +175 -0
- package/templates/apps/api/src/routes/aeo/index.ts +107 -0
- package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +5 -2
- package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +22 -3
- package/templates/apps/api/src/routes/auth/tokens.ts +13 -1
- package/templates/apps/api/src/routes/billing/__tests__/portal.test.ts +450 -0
- package/templates/apps/api/src/routes/billing/__tests__/read.test.ts +262 -0
- package/templates/apps/api/src/routes/billing/__tests__/usage.test.ts +436 -0
- package/templates/apps/api/src/routes/billing/index.ts +36 -0
- package/templates/apps/api/src/routes/billing/portal.ts +182 -0
- package/templates/apps/api/src/routes/billing/read.ts +75 -0
- package/templates/apps/api/src/routes/billing/usage.ts +153 -0
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +99 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +20 -8
- package/templates/apps/api/src/routes/content/create.ts +1 -0
- package/templates/apps/api/src/routes/content/delete.ts +1 -0
- package/templates/apps/api/src/routes/content/index.ts +42 -6
- package/templates/apps/api/src/routes/content/update.ts +1 -0
- package/templates/apps/api/src/routes/deliverables/__tests__/index.test.ts +393 -0
- package/templates/apps/api/src/routes/deliverables/index.ts +200 -0
- package/templates/apps/api/src/routes/flow-checkouts/__tests__/index.test.ts +443 -0
- package/templates/apps/api/src/routes/flow-checkouts/index.ts +82 -0
- package/templates/apps/api/src/routes/flows/README.md +147 -0
- package/templates/apps/api/src/routes/flows/__tests__/index.test.ts +752 -0
- package/templates/apps/api/src/routes/flows/__tests__/recommender.test.ts +671 -0
- package/templates/apps/api/src/routes/flows/index.ts +202 -0
- package/templates/apps/api/src/routes/flows/recommender.ts +443 -0
- package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +438 -31
- package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +10 -10
- package/templates/apps/api/src/routes/leads/index.ts +43 -9
- package/templates/apps/api/src/routes/project-listings/__tests__/configured-application.test.ts +558 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/copy-edit.test.ts +815 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/drafts.test.ts +869 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/me-route-precedence.test.ts +221 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/me.test.ts +468 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/public.test.ts +424 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/site-answers.test.ts +707 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/site-key.test.ts +375 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/structured-address.test.ts +467 -0
- package/templates/apps/api/src/routes/project-listings/__tests__/tenant-isolation.test.ts +566 -0
- package/templates/apps/api/src/routes/project-listings/get.ts +70 -0
- package/templates/apps/api/src/routes/project-listings/index.ts +120 -0
- package/templates/apps/api/src/routes/project-listings/list.ts +47 -0
- package/templates/apps/api/src/routes/project-listings/me.ts +76 -0
- package/templates/apps/api/src/routes/project-listings/patch-copy.ts +222 -0
- package/templates/apps/api/src/routes/project-listings/patch-draft.ts +97 -0
- package/templates/apps/api/src/routes/project-listings/patch.ts +136 -0
- package/templates/apps/api/src/routes/project-listings/public.ts +52 -0
- package/templates/apps/api/src/routes/project-listings/respond.ts +37 -0
- package/templates/apps/api/src/routes/project-listings/resume-token.ts +22 -0
- package/templates/apps/api/src/routes/project-listings/start.ts +106 -0
- package/templates/apps/api/src/routes/project-listings/submit.ts +122 -0
- package/templates/apps/api/src/routes/schedule/__tests__/index.test.ts +490 -0
- package/templates/apps/api/src/routes/schedule/index.ts +249 -0
- package/templates/apps/api/src/routes/slack/__tests__/actions.test.ts +385 -0
- package/templates/apps/api/src/routes/slack/actions.ts +177 -0
- package/templates/apps/api/src/routes/slack/index.ts +38 -0
- package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +16 -6
- package/templates/apps/api/src/routes/test/auth/session.ts +8 -6
- package/templates/apps/api/src/routes/waitlist-experiments/__tests__/tenant-isolation.test.ts +577 -0
- package/templates/apps/api/src/routes/waitlist-experiments/comparison.ts +78 -0
- package/templates/apps/api/src/routes/waitlist-experiments/index.ts +41 -0
- package/templates/apps/api/src/routes/waitlist-experiments/list.ts +64 -0
- package/templates/apps/api/src/routes/waitlist-experiments/respond.ts +42 -0
- package/templates/apps/api/src/routes/waitlist-experiments/signup.ts +84 -0
- package/templates/apps/api/src/routes/waitlist-experiments/signups.ts +119 -0
- package/templates/apps/api/src/routes/waitlist-signups/__tests__/index.test.ts +238 -0
- package/templates/apps/api/src/routes/waitlist-signups/index.ts +101 -0
- package/templates/apps/api/src/routes/webhooks/README.md +35 -12
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +315 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +270 -0
- package/templates/apps/api/src/routes/webhooks/stripe.ts +248 -20
- package/templates/apps/api/src/routes/workspaces/__tests__/config-tenant-isolation.test.ts +356 -0
- package/templates/apps/api/src/routes/workspaces/__tests__/tenant-isolation.test.ts +671 -0
- package/templates/apps/api/src/routes/workspaces/config.ts +125 -0
- package/templates/apps/api/src/routes/workspaces/index.ts +194 -0
- package/templates/apps/api/src/routes/workspaces/sessions.ts +218 -0
- package/templates/apps/api/src/server.ts +307 -7
- package/templates/apps/api/src/services/__tests__/abandon-email.test.ts +489 -0
- package/templates/apps/api/src/services/__tests__/aeo-score.test.ts +475 -0
- package/templates/apps/api/src/services/__tests__/answer-distributions.test.ts +132 -0
- package/templates/apps/api/src/services/__tests__/consent-migration.test.ts +65 -0
- package/templates/apps/api/src/services/__tests__/consent.test.ts +282 -0
- package/templates/apps/api/src/services/__tests__/deliverable-fulfillment.test.ts +523 -0
- package/templates/apps/api/src/services/__tests__/deliverable-resend.test.ts +359 -0
- package/templates/apps/api/src/services/__tests__/entitlements.test.ts +142 -0
- package/templates/apps/api/src/services/__tests__/flow-aggregate.test.ts +425 -0
- package/templates/apps/api/src/services/__tests__/flow-engine.test.ts +2840 -0
- package/templates/apps/api/src/services/__tests__/lead-promotion.test.ts +393 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +8 -8
- package/templates/apps/api/src/services/__tests__/listing-csv-sweep.test.ts +560 -0
- package/templates/apps/api/src/services/__tests__/listing-promotion.test.ts +684 -0
- package/templates/apps/api/src/services/__tests__/playbook-compile.test.ts +406 -0
- package/templates/apps/api/src/services/__tests__/playbook-render.test.ts +290 -0
- package/templates/apps/api/src/services/__tests__/project-listing-decision.test.ts +736 -0
- package/templates/apps/api/src/services/__tests__/project-listing-flow.test.ts +475 -0
- package/templates/apps/api/src/services/__tests__/project-listing-issue.test.ts +340 -0
- package/templates/apps/api/src/services/__tests__/recommender-capture.test.ts +983 -0
- package/templates/apps/api/src/services/__tests__/slack-notify.test.ts +278 -0
- package/templates/apps/api/src/services/__tests__/tenant-context-cascade.test.ts +71 -0
- package/templates/apps/api/src/services/__tests__/tenant-context.test.ts +379 -0
- package/templates/apps/api/src/services/__tests__/usage-aggregation.test.ts +941 -0
- package/templates/apps/api/src/services/__tests__/usage-credits.test.ts +588 -0
- package/templates/apps/api/src/services/__tests__/usage-metering.test.ts +768 -0
- package/templates/apps/api/src/services/__tests__/waitlist-dashboard.test.ts +1314 -0
- package/templates/apps/api/src/services/__tests__/waitlist-experiments.test.ts +341 -0
- package/templates/apps/api/src/services/__tests__/waitlist-followup.test.ts +567 -0
- package/templates/apps/api/src/services/__tests__/waitlist-scoring.test.ts +474 -0
- package/templates/apps/api/src/services/__tests__/waitlist-signups.test.ts +354 -0
- package/templates/apps/api/src/services/abandon-email.ts +307 -0
- package/templates/apps/api/src/services/aeo-score.ts +288 -0
- package/templates/apps/api/src/services/answer-distributions.ts +138 -0
- package/templates/apps/api/src/services/consent.ts +236 -0
- package/templates/apps/api/src/services/deliverable-fulfillment.ts +523 -0
- package/templates/apps/api/src/services/entitlements.ts +102 -0
- package/templates/apps/api/src/services/flow-aggregate.ts +232 -0
- package/templates/apps/api/src/services/flow-checkouts.ts +123 -0
- package/templates/apps/api/src/services/flow-engine.ts +1296 -0
- package/templates/apps/api/src/services/lead-promotion.ts +176 -0
- package/templates/apps/api/src/services/lead-routing.ts +3 -3
- package/templates/apps/api/src/services/listing-config.ts +102 -0
- package/templates/apps/api/src/services/listing-csv-sweep.ts +455 -0
- package/templates/apps/api/src/services/listing-promotion.ts +342 -0
- package/templates/apps/api/src/services/playbook-compile.ts +398 -0
- package/templates/apps/api/src/services/playbook-render.ts +263 -0
- package/templates/apps/api/src/services/project-listing-decision.ts +510 -0
- package/templates/apps/api/src/services/project-listing-flow.ts +426 -0
- package/templates/apps/api/src/services/project-listing-issue.ts +251 -0
- package/templates/apps/api/src/services/project-listings.ts +1472 -0
- package/templates/apps/api/src/services/recommender-capture.ts +835 -0
- package/templates/apps/api/src/services/scheduling/cal-provider.ts +392 -0
- package/templates/apps/api/src/services/scheduling/index.ts +63 -0
- package/templates/apps/api/src/services/scheduling/types.ts +88 -0
- package/templates/apps/api/src/services/slack-notify.ts +240 -0
- package/templates/apps/api/src/services/tenant-context.ts +451 -0
- package/templates/apps/api/src/services/usage-aggregation.ts +516 -0
- package/templates/apps/api/src/services/usage-credits.ts +340 -0
- package/templates/apps/api/src/services/usage-metering.ts +699 -0
- package/templates/apps/api/src/services/waitlist-dashboard.ts +947 -0
- package/templates/apps/api/src/services/waitlist-experiments.ts +213 -0
- package/templates/apps/api/src/services/waitlist-followup.ts +486 -0
- package/templates/apps/api/src/services/waitlist-scoring.ts +166 -0
- package/templates/apps/api/src/services/waitlist-signups.ts +165 -0
- package/templates/apps/api/src/vercel-handler.ts +165 -0
- package/templates/apps/api/tsconfig.json +0 -12
- package/templates/apps/mcp/CLAUDE.md +19 -9
- package/templates/apps/mcp/LICENSE +201 -0
- package/templates/apps/mcp/__tests__/create_page.test.ts +1 -0
- package/templates/apps/mcp/__tests__/delete_page.test.ts +1 -0
- package/templates/apps/mcp/__tests__/module-exclusion.test.ts +105 -0
- package/templates/apps/mcp/__tests__/parity.test.ts +70 -6
- package/templates/apps/mcp/__tests__/request_callback.test.ts +4 -4
- package/templates/apps/mcp/__tests__/schedule_tools.test.ts +242 -0
- package/templates/apps/mcp/__tests__/submit_lead.test.ts +4 -4
- package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +4 -4
- package/templates/apps/mcp/__tests__/tools/purchase.test.ts +47 -0
- package/templates/apps/mcp/__tests__/update_page.test.ts +1 -0
- package/templates/apps/mcp/package.json +6 -4
- package/templates/apps/mcp/src/config/modules.ts +37 -0
- package/templates/apps/mcp/src/server.ts +109 -18
- package/templates/apps/mcp/src/tools/capture_lead.ts +1 -1
- package/templates/apps/mcp/src/tools/create_booking.ts +58 -0
- package/templates/apps/mcp/src/tools/create_page.ts +1 -0
- package/templates/apps/mcp/src/tools/delete_page.ts +1 -0
- package/templates/apps/mcp/src/tools/get_event_meta.ts +55 -0
- package/templates/apps/mcp/src/tools/get_flow.ts +61 -0
- package/templates/apps/mcp/src/tools/index.ts +25 -0
- package/templates/apps/mcp/src/tools/list_availability.ts +67 -0
- package/templates/apps/mcp/src/tools/purchase.ts +3 -0
- package/templates/apps/mcp/src/tools/submit_flow_step.ts +83 -0
- package/templates/apps/mcp/src/tools/update_page.ts +1 -0
- package/templates/apps/mcp/tsconfig.json +1 -9
- package/templates/apps/web/.env.example +44 -0
- package/templates/apps/web/CLAUDE.md +28 -0
- package/templates/apps/web/LICENSE +201 -0
- package/templates/apps/web/__tests__/__mocks__/code-highlight.jest-stub.ts +24 -0
- package/templates/apps/web/__tests__/__mocks__/next-intl-server.ts +33 -0
- package/templates/apps/web/__tests__/__mocks__/next-intl.ts +18 -0
- package/templates/apps/web/__tests__/__mocks__/server-only.ts +13 -0
- package/templates/apps/web/__tests__/__mocks__/style-mock.js +4 -0
- package/templates/apps/web/__tests__/__mocks__/vercel-analytics-server.ts +9 -0
- package/templates/apps/web/__tests__/jest-support/import-meta-transformer.cjs +90 -0
- package/templates/apps/web/__tests__/setup.ts +22 -32
- package/templates/apps/web/app/.well-known/ai-plugin.json/route.ts +6 -3
- package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +8 -2
- package/templates/apps/web/app/[locale]/(authed)/account/__tests__/page.test.tsx +260 -0
- package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +263 -0
- package/templates/apps/web/app/[locale]/(authed)/account/sign-out-button.tsx +39 -0
- package/templates/apps/web/app/[locale]/(authed)/layout.tsx +54 -0
- package/templates/apps/web/app/[locale]/(authed)/sign-in-gate.tsx +96 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/[experimentId]/page.tsx +309 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/[experimentId]/signups/[leadId]/page.tsx +149 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/comparison.test.tsx +273 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/gate.test.tsx +172 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/list.test.tsx +171 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/__tests__/signup.test.tsx +179 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ExperimentsTable.tsx +116 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ForbiddenState.tsx +24 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/OfferFunnelTable.tsx +66 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/RollupTicker.tsx +61 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/ScoreTrace.tsx +114 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/SignupsTable.tsx +139 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/WaitlistComparisonTabs.tsx +85 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/components/status-badges.tsx +67 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/format.ts +111 -0
- package/templates/apps/web/app/[locale]/(authed)/waitlist/page.tsx +179 -0
- package/templates/apps/web/app/[locale]/about/page.tsx +10 -1
- package/templates/apps/web/app/[locale]/blog/[[...slug]]/page.tsx +6 -1
- package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/careers/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/case-studies/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +11 -1
- package/templates/apps/web/app/[locale]/clients/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +21 -1
- package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +188 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +242 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +29 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/intake-analytics.test.ts +51 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +39 -15
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +21 -3
- package/templates/apps/web/app/[locale]/contact/intake-analytics.ts +49 -0
- package/templates/apps/web/app/[locale]/contact/intake-script.ts +66 -0
- package/templates/apps/web/app/[locale]/contact/page.tsx +14 -4
- package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/courses/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/docs/[[...slug]]/page.tsx +1 -0
- package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +11 -1
- package/templates/apps/web/app/[locale]/downloads/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +12 -2
- package/templates/apps/web/app/[locale]/events/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/faq/page.tsx +10 -1
- package/templates/apps/web/app/[locale]/flows/[slug]/FlowStepperClient.tsx +265 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.permalink.test.tsx +445 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.test.tsx +341 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/checkout.actions.test.ts +287 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/flow.actions.test.ts +302 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/two-route-tool.test.tsx +128 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/checkout.actions.ts +254 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/flow.actions.ts +144 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/page.tsx +108 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/ResultsClient.tsx +532 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/ResultsEmailStep.tsx +121 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/__tests__/ResultsClient.checkout.test.tsx +457 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/__tests__/page.test.tsx +396 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/results/[payload]/page.tsx +114 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/start/page.tsx +52 -0
- package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/integrations/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/launch-service/page.tsx +14 -1
- package/templates/apps/web/app/[locale]/layout.tsx +127 -16
- package/templates/apps/web/app/[locale]/page.tsx +10 -1
- package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/partners/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/products/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +10 -0
- package/templates/apps/web/app/[locale]/projects/apply/ListingApplicationClient.tsx +110 -0
- package/templates/apps/web/app/[locale]/projects/apply/__tests__/ListingApplicationClient.test.tsx +96 -0
- package/templates/apps/web/app/[locale]/projects/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +12 -2
- package/templates/apps/web/app/[locale]/resources/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/schedule/__tests__/page.test.tsx +117 -0
- package/templates/apps/web/app/[locale]/schedule/confirmed/__tests__/page.test.tsx +96 -0
- package/templates/apps/web/app/[locale]/schedule/confirmed/page.tsx +92 -0
- package/templates/apps/web/app/[locale]/schedule/page.tsx +82 -0
- package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +9 -0
- package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/services/page.tsx +9 -1
- package/templates/apps/web/app/[locale]/sign-in/__tests__/next-path.test.ts +31 -0
- package/templates/apps/web/app/[locale]/sign-in/__tests__/page.test.tsx +152 -0
- package/templates/apps/web/app/[locale]/sign-in/next-path.ts +0 -0
- package/templates/apps/web/app/[locale]/sign-in/page.tsx +83 -0
- package/templates/apps/web/app/[locale]/sign-in/sign-in-card.tsx +123 -0
- package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +11 -1
- package/templates/apps/web/app/[locale]/testimonials/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/thanks/[slug]/__tests__/page.test.tsx +93 -0
- package/templates/apps/web/app/[locale]/thanks/[slug]/page.tsx +48 -0
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +11 -1
- package/templates/apps/web/app/[locale]/use-cases/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +13 -1
- package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/globals.css +35 -0
- package/templates/apps/web/app/llms.txt/route.ts +2 -1
- package/templates/apps/web/app/og/route.tsx +10 -2
- package/templates/apps/web/auth.ts +8 -0
- package/templates/apps/web/components/sign-out-trigger.tsx +42 -0
- package/templates/apps/web/content/en/blog/README.txt +25 -0
- package/templates/apps/web/content/en/docs/index.mdx +28 -0
- package/templates/apps/web/jest.config.cjs +90 -27
- package/templates/apps/web/lib/__tests__/site-brand.test.ts +119 -0
- package/templates/apps/web/lib/__tests__/site-theme.test.ts +112 -0
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +499 -0
- package/templates/apps/web/lib/account-config.ts +13 -0
- package/templates/apps/web/lib/server-api.ts +85 -0
- package/templates/apps/web/lib/site-brand.tsx +121 -0
- package/templates/apps/web/lib/site-theme.ts +74 -0
- package/templates/apps/web/messages/en.json +275 -7
- package/templates/apps/web/middleware.ts +11 -3
- package/templates/apps/web/next.config.mjs +8 -2
- package/templates/apps/web/package.json +17 -7
- package/templates/apps/web/postcss.config.mjs +23 -0
- package/templates/apps/web/public/.well-known/security.txt +3 -3
- package/templates/apps/web/src/lib/routes.ts +15 -2
- package/templates/apps/web/tsconfig.json +1 -16
- package/templates/content/_site.mdx +36 -25
- package/templates/content/en/AboutPage/about.mdx +24 -14
- package/templates/content/en/ContactPage/contact.mdx +23 -14
- package/templates/content/en/FAQPage/faq.mdx +10 -392
- package/templates/content/en/HomePage/home.mdx +14 -285
- package/templates/database/CHANGELOG.md +443 -0
- package/templates/database/LICENSE +201 -0
- package/templates/database/README.md +3 -1
- package/templates/database/__tests__/flows-listing-diagnostic.test.ts +392 -0
- package/templates/database/__tests__/flows-presets.test.ts +173 -0
- package/templates/database/__tests__/prefixed-ids.db.test.ts +146 -0
- package/templates/database/__tests__/seed.test.ts +88 -0
- package/templates/database/__tests__/user-cascade.test.ts +19 -4
- package/templates/database/auth/schema.prisma +521 -0
- package/templates/database/config/schema.prisma +234 -0
- package/templates/database/content/schema.prisma +263 -0
- package/templates/database/flows/listing-diagnostic.ts +182 -0
- package/templates/database/flows/presets.ts +315 -0
- package/templates/database/inbox/__tests__/schema.test.ts +4 -0
- package/templates/database/inbox/schema.prisma +574 -3
- package/templates/database/jest.config.cjs +8 -0
- package/templates/database/migrations/20260712215647_add_multi_tenant_tenancy/migration.sql +201 -0
- package/templates/database/migrations/20260713143320_reanchor_site_config_to_workspace/migration.sql +67 -0
- package/templates/database/migrations/20260713174000_add_audit_logs/migration.sql +46 -0
- package/templates/database/migrations/20260713190000_drop_telemetry_records/migration.sql +25 -0
- package/templates/database/migrations/20260713192000_add_uuidv7_function/migration.sql +49 -0
- package/templates/database/migrations/20260713192429_prefixed_uuid_entity_ids/migration.sql +197 -0
- package/templates/database/migrations/20260713200000_add_org_billing/migration.sql +32 -0
- package/templates/database/migrations/20260714000000_add_lead_promotion_fields/migration.sql +22 -0
- package/templates/database/migrations/20260714010000_add_usage_billing_content_models/migration.sql +151 -0
- package/templates/database/migrations/20260714020000_add_usage_billing_auth_config_models/migration.sql +223 -0
- package/templates/database/migrations/20260714030000_credit_balance_non_negative/migration.sql +22 -0
- package/templates/database/migrations/20260714030000_widen_usage_billing_report_aggregates/migration.sql +32 -0
- package/templates/database/migrations/20260810233516_add_flow_engine_models/migration.sql +40 -0
- package/templates/database/migrations/20260811020000_add_flow_session_abandon_email_columns/migration.sql +4 -0
- package/templates/database/migrations/20260811030000_add_flow_session_abandon_email_index/migration.sql +2 -0
- package/templates/database/migrations/20260811040000_add_flow_session_segment/migration.sql +2 -0
- package/templates/database/migrations/20260811050000_add_deliverable_models/migration.sql +29 -0
- package/templates/database/migrations/20260812000000_add_deliverable_grant_send_columns/migration.sql +6 -0
- package/templates/database/migrations/20260902222948_add_waitlist_experiment_models/migration.sql +39 -0
- package/templates/database/migrations/20260902224500_add_waitlist_id_format_checks/migration.sql +24 -0
- package/templates/database/migrations/20260903004112_add_flow_session_flags_aeo_score/migration.sql +3 -0
- package/templates/database/migrations/20260903010000_add_playbook_instance/migration.sql +33 -0
- package/templates/database/migrations/20260904000000_add_waitlist_followup_send/migration.sql +30 -0
- package/templates/database/migrations/20260905230000_add_flow_checkout/migration.sql +47 -0
- package/templates/database/migrations/20260906000000_add_flow_checkout_idempotency/migration.sql +16 -0
- package/templates/database/migrations/20260907120000_add_project_listing/migration.sql +47 -0
- package/templates/database/migrations/20260907130000_add_project_listing_slack_columns/migration.sql +10 -0
- package/templates/database/migrations/20260907180000_add_listing_csv_send/migration.sql +26 -0
- package/templates/database/migrations/20260909120000_project_listings_platform/migration.sql +90 -0
- package/templates/database/migrations/20260909180000_listing_draft_and_fields/migration.sql +174 -0
- package/templates/database/migrations/20260910120000_listing_public_site_key/migration.sql +14 -0
- package/templates/database/migrations/20260911120000_listing_copy_edit_audit/migration.sql +25 -0
- package/templates/database/migrations/20260911140000_listing_structured_address/migration.sql +32 -0
- package/templates/database/migrations/20260911180000_consent_grants/migration.sql +71 -0
- package/templates/database/migrations/20260911200000_listing_site_answers/migration.sql +30 -0
- package/templates/database/migrations/20260912120000_listing_owner_link/migration.sql +49 -0
- package/templates/database/ops/schema.prisma +27 -0
- package/templates/database/package.json +42 -4
- package/templates/database/prisma.config.ts +1 -1
- package/templates/database/schema.prisma +19 -435
- package/templates/database/seed-test.ts +14 -4
- package/templates/database/seed.ts +148 -0
- package/templates/database/tenancy.ts +45 -0
- package/templates/database/tsconfig.flows.json +15 -0
- package/templates/database/tsconfig.json +7 -1
- package/templates/database/tsconfig.tenancy.json +14 -0
- package/templates/package.json +30 -55
- package/templates/pnpm-workspace.yaml +0 -3
- package/templates/project.yaml +1 -1
- package/templates/tsconfig.json +1 -37
- package/templates/apps/web/__tests__/auth/adversarial/cookie-attributes.test.ts +0 -94
- package/templates/apps/web/__tests__/auth/adversarial/oauth-state-parameter.test.ts +0 -75
- package/templates/apps/web/__tests__/auth/adversarial/redirect-uri-allowlist.test.ts +0 -82
- package/templates/apps/web/__tests__/auth/env-helpers.test.ts +0 -168
- package/templates/apps/web/__tests__/authority-list-routes.test.tsx +0 -208
- package/templates/apps/web/__tests__/better-stack.test.ts +0 -66
- package/templates/apps/web/__tests__/blog-dir-resolution.test.ts +0 -87
- package/templates/apps/web/__tests__/blog-source-populated.test.ts +0 -130
- package/templates/apps/web/__tests__/data-testid-coverage.test.tsx +0 -60
- package/templates/apps/web/__tests__/google-analytics.test.tsx +0 -104
- package/templates/apps/web/__tests__/i18n/middleware.test.ts +0 -119
- package/templates/apps/web/__tests__/i18n/routing.test.ts +0 -114
- package/templates/apps/web/__tests__/i18n/translations.test.ts +0 -191
- package/templates/apps/web/__tests__/json-ld.test.ts +0 -98
- package/templates/apps/web/__tests__/knowledge-events-routes.test.tsx +0 -580
- package/templates/apps/web/__tests__/layout-stealth.test.ts +0 -39
- package/templates/apps/web/__tests__/lighthouse-fixtures/improvement-image-shrink.tsx +0 -103
- package/templates/apps/web/__tests__/lighthouse-fixtures/override-fixture.md +0 -114
- package/templates/apps/web/__tests__/lighthouse-fixtures/regression-bloat.tsx +0 -94
- package/templates/apps/web/__tests__/page.test.tsx +0 -230
- package/templates/apps/web/__tests__/products-services-phase1.test.tsx +0 -321
- package/templates/apps/web/__tests__/projects-routes.test.tsx +0 -392
- package/templates/apps/web/__tests__/resources-downloads-integrations-phase2.test.tsx +0 -475
- package/templates/apps/web/__tests__/routes/ai-plugin-json.test.ts +0 -53
- package/templates/apps/web/__tests__/routes/blog-route.test.tsx +0 -191
- package/templates/apps/web/__tests__/routes/llms-txt.test.ts +0 -123
- package/templates/apps/web/__tests__/routes/robots-txt.test.ts +0 -52
- package/templates/apps/web/__tests__/routes/sitemap-xml.test.ts +0 -78
- package/templates/apps/web/__tests__/routes/well-known-mcp.test.ts +0 -203
- package/templates/apps/web/__tests__/section-routes.test.tsx +0 -693
- package/templates/apps/web/__tests__/security-headers.test.ts +0 -201
- package/templates/apps/web/__tests__/sentry-config.test.ts +0 -116
- package/templates/apps/web/__tests__/sitemap-locales.test.ts +0 -415
- package/templates/apps/web/__tests__/standalone-informational-routes.test.tsx +0 -844
- package/templates/apps/web/app/[locale]/__tests__/layout.test.tsx +0 -120
- package/templates/apps/web/app/[locale]/__tests__/page-renderer-migration.test.tsx +0 -202
- package/templates/apps/web/app/__tests__/error-boundaries.test.tsx +0 -152
- package/templates/apps/web/content/en/blog/index.mdx +0 -15
- package/templates/apps/web/content/en/blog/launching-ailk.mdx +0 -20
- package/templates/apps/web/content/en/docs/getting-started.mdx +0 -30
- package/templates/content/.gitkeep +0 -0
- package/templates/content/CLAUDE.md +0 -85
- package/templates/content/ar/HomePage/home.mdx +0 -123
- package/templates/content/ar/_site.mdx +0 -35
- package/templates/content/de/_site.mdx +0 -29
- package/templates/content/en/.gitkeep +0 -0
- package/templates/content/en/AboutPage/about.schema.json +0 -82
- package/templates/content/en/BookCall/book-call.mdx +0 -19
- package/templates/content/en/BookCall/book-call.schema.json +0 -121
- package/templates/content/en/BreadcrumbList/site-breadcrumbs.mdx +0 -20
- package/templates/content/en/CareersList/careers.mdx +0 -24
- package/templates/content/en/CaseStudiesList/case-studies.mdx +0 -22
- package/templates/content/en/CaseStudiesList/showcase.mdx +0 -8
- package/templates/content/en/CaseStudy/ailk-aeo-rollout.mdx +0 -32
- package/templates/content/en/CaseStudy/schema-builder-migration.mdx +0 -41
- package/templates/content/en/ClientsList/clients.mdx +0 -38
- package/templates/content/en/ContactPage/contact.schema.json +0 -100
- package/templates/content/en/ContactPoint/primary.mdx +0 -14
- package/templates/content/en/Course/aeo-fundamentals.mdx +0 -37
- package/templates/content/en/Course/schema-builder-workshop.mdx +0 -62
- package/templates/content/en/CoursesList/courses.mdx +0 -22
- package/templates/content/en/DownloadsList/downloads.mdx +0 -22
- package/templates/content/en/Event/aeo-office-hours-may-2026.mdx +0 -39
- package/templates/content/en/Event/ailk-launch-day-2026.mdx +0 -35
- package/templates/content/en/EventsList/events.mdx +0 -26
- package/templates/content/en/FAQPage/faq.schema.json +0 -231
- package/templates/content/en/GlossaryList/glossary.mdx +0 -19
- package/templates/content/en/GlossaryList/glossary.schema.json +0 -300
- package/templates/content/en/HomePage/home.schema.json +0 -88
- package/templates/content/en/HomePage/launch-service.mdx +0 -475
- package/templates/content/en/HomePage/launch-service.schema.json +0 -138
- package/templates/content/en/HowTo/add-mdx-content.mdx +0 -38
- package/templates/content/en/HowTo/configure-aeo-scoring.mdx +0 -35
- package/templates/content/en/HowTo/set-up-json-ld.mdx +0 -36
- package/templates/content/en/Integration/github-actions.mdx +0 -31
- package/templates/content/en/Integration/openai-api.mdx +0 -26
- package/templates/content/en/Integration/vercel.mdx +0 -32
- package/templates/content/en/IntegrationsList/integrations.mdx +0 -22
- package/templates/content/en/JobPosting/content-strategist.mdx +0 -46
- package/templates/content/en/JobPosting/developer-advocate.mdx +0 -47
- package/templates/content/en/JobPosting/senior-fullstack-engineer.mdx +0 -57
- package/templates/content/en/LandingPage/aeo-audit.mdx +0 -19
- package/templates/content/en/LandingPage/aeo-audit.schema.json +0 -92
- package/templates/content/en/LandingPage/agency-waitlist.mdx +0 -340
- package/templates/content/en/LandingPage/agency-waitlist.schema.json +0 -152
- package/templates/content/en/LandingPage/developers.mdx +0 -19
- package/templates/content/en/LandingPage/developers.schema.json +0 -109
- package/templates/content/en/LandingPage/for-agencies.mdx +0 -390
- package/templates/content/en/LandingPage/for-agencies.schema.json +0 -107
- package/templates/content/en/LandingPage/for-ai-search-agencies.mdx +0 -417
- package/templates/content/en/LandingPage/for-ai-search-agencies.schema.json +0 -105
- package/templates/content/en/LandingPage/for-businesses.mdx +0 -19
- package/templates/content/en/LandingPage/for-businesses.schema.json +0 -96
- package/templates/content/en/LandingPage/platform.mdx +0 -369
- package/templates/content/en/LandingPage/platform.schema.json +0 -166
- package/templates/content/en/LandingPage/vs-ai-website-builders.mdx +0 -19
- package/templates/content/en/LandingPage/vs-ai-website-builders.schema.json +0 -102
- package/templates/content/en/LandingPage/vs-wordpress.mdx +0 -19
- package/templates/content/en/LandingPage/vs-wordpress.schema.json +0 -53
- package/templates/content/en/NewsletterSignup/newsletter.mdx +0 -236
- package/templates/content/en/NewsletterSignup/newsletter.schema.json +0 -91
- package/templates/content/en/Organization/site-owner.mdx +0 -16
- package/templates/content/en/Partner/prisma.mdx +0 -31
- package/templates/content/en/Partner/supabase.mdx +0 -30
- package/templates/content/en/Partner/vercel.mdx +0 -28
- package/templates/content/en/PartnersList/partners.mdx +0 -22
- package/templates/content/en/Person/founder.mdx +0 -18
- package/templates/content/en/Pricing/pricing.mdx +0 -538
- package/templates/content/en/Pricing/pricing.schema.json +0 -209
- package/templates/content/en/PrivacyPage/privacy.mdx +0 -165
- package/templates/content/en/PrivacyPage/privacy.schema.json +0 -64
- package/templates/content/en/Product/ailk.mdx +0 -19
- package/templates/content/en/Product/ailk.schema.json +0 -94
- package/templates/content/en/Product/api-launch-kit.mdx +0 -26
- package/templates/content/en/Product/launch-kit.mdx +0 -28
- package/templates/content/en/ProductsList/products.mdx +0 -26
- package/templates/content/en/Project/ailk-phase-2.mdx +0 -54
- package/templates/content/en/ProjectsList/projects.mdx +0 -25
- package/templates/content/en/ResourceDetail/aeo-scoring-guide.mdx +0 -27
- package/templates/content/en/ResourceDetail/content-model-whitepaper.mdx +0 -28
- package/templates/content/en/ResourceDetail/schema-org-quick-reference.mdx +0 -39
- package/templates/content/en/ResourcesHub/resources.mdx +0 -22
- package/templates/content/en/Service/consulting.mdx +0 -22
- package/templates/content/en/Service/implementation.mdx +0 -30
- package/templates/content/en/Service/launch-service.mdx +0 -232
- package/templates/content/en/Service/launch.mdx +0 -228
- package/templates/content/en/ServicesList/services.mdx +0 -84
- package/templates/content/en/SoftwareProduct/ailk-aeo.mdx +0 -44
- package/templates/content/en/SoftwareProduct/ailk-content-adapters.mdx +0 -47
- package/templates/content/en/SoftwareProduct/ailk-schema.mdx +0 -49
- package/templates/content/en/TeamList/team.mdx +0 -63
- package/templates/content/en/TeamMember/founder.mdx +0 -72
- package/templates/content/en/TermsPage/terms.mdx +0 -19
- package/templates/content/en/TermsPage/terms.schema.json +0 -99
- package/templates/content/en/TestimonialsList/testimonials.mdx +0 -44
- package/templates/content/en/UseCasesList/use-cases.mdx +0 -30
- package/templates/content/en/Whitepaper/ax-first-product-development.mdx +0 -27
- package/templates/content/en/Whitepaper/open-core-commercial-strategy.mdx +0 -27
- package/templates/content/en/Whitepaper/structured-data-for-answer-engines.mdx +0 -31
- package/templates/content/en-XA/AboutPage/about.mdx +0 -8
- package/templates/content/en-XA/FAQPage/faq.mdx +0 -8
- package/templates/content/en-XA/HomePage/home.mdx +0 -8
- package/templates/content/es/_site.mdx +0 -30
- package/templates/content/fr/_site.mdx +0 -30
- package/templates/content/ja/_site.mdx +0 -30
- package/templates/content/pt-BR/AboutPage/about.mdx +0 -8
- package/templates/content/pt-BR/FAQPage/faq.mdx +0 -8
- package/templates/content/pt-BR/HomePage/home.mdx +0 -23
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Service
|
|
3
|
-
slug: launch
|
|
4
|
-
title: Two weeks. $2,495. Your site on the foundation built for AI search.
|
|
5
|
-
description: Launch Service is the productized two-week deploy onto AI Launch Kit — the open-source website foundation for the agent-first internet. Fixed scope. Fixed price. Working Theory ships the site; you own the codebase from day one.
|
|
6
|
-
schema:
|
|
7
|
-
"@type": WebPage
|
|
8
|
-
about:
|
|
9
|
-
"@id": "https://ailaunchkit.ai/#product"
|
|
10
|
-
audience:
|
|
11
|
-
"@type": Audience
|
|
12
|
-
audienceType: Agencies and SMB owners ready to deploy
|
|
13
|
-
sections:
|
|
14
|
-
- id: hero-1
|
|
15
|
-
type: hero
|
|
16
|
-
data:
|
|
17
|
-
variant: centered
|
|
18
|
-
headline: Two weeks. $2,495. Your site on the foundation built for AI search.
|
|
19
|
-
subheadline: Launch Service is the productized two-week deploy onto AI Launch Kit — the open-source website foundation AI search agencies and SMB owners use when they want the foundation running without doing the build themselves.
|
|
20
|
-
body: Fixed scope. Fixed price. Working Theory ships the site; you own the codebase, the content, and the citation work from day one.
|
|
21
|
-
primaryCta:
|
|
22
|
-
label: Book the intro call
|
|
23
|
-
href: /contact
|
|
24
|
-
secondaryCta:
|
|
25
|
-
label: Read the FAQ
|
|
26
|
-
href: /faq
|
|
27
|
-
|
|
28
|
-
- id: content-block-1
|
|
29
|
-
type: content-block
|
|
30
|
-
data:
|
|
31
|
-
variant: narrow
|
|
32
|
-
headline: The page is the unit of citation, not the site
|
|
33
|
-
body: |
|
|
34
|
-
When ChatGPT recommends a business, the recommendation was assembled from sources.
|
|
35
|
-
The model read pages. Attributed them to a brand. Quoted what it trusted. The brand
|
|
36
|
-
that gets recommended is the brand whose pages got cited.
|
|
37
|
-
|
|
38
|
-
A website used to be a marketing surface humans visited. Now it is also infrastructure
|
|
39
|
-
AI systems read on behalf of buyers who never visit. Two audiences. Same pages.
|
|
40
|
-
Different requirements.
|
|
41
|
-
|
|
42
|
-
Most of the web was not built for the second audience. Launch Service puts your
|
|
43
|
-
site on a foundation that was.
|
|
44
|
-
|
|
45
|
-
- id: content-block-2
|
|
46
|
-
type: content-block
|
|
47
|
-
data:
|
|
48
|
-
variant: narrow
|
|
49
|
-
headline: What you have already considered, and where each option breaks
|
|
50
|
-
body: |
|
|
51
|
-
WordPress plus plugins. Familiar. Cheap hosting. The schema plugin, the FAQ plugin,
|
|
52
|
-
the AEO plugin — each one is real. They do not integrate. They break on updates.
|
|
53
|
-
The AEO work depends on whichever combination was installed last. The foundation
|
|
54
|
-
is from a world where Google was the only entry point. The plugins are retrofits.
|
|
55
|
-
|
|
56
|
-
Closed website builders. Beautiful templates. The limit: closed systems. Weak
|
|
57
|
-
schema. No agent surface. Vendor lock-in is the business model. You never own
|
|
58
|
-
the substrate.
|
|
59
|
-
|
|
60
|
-
AI-generated site builders. "Describe your business, AI generates a site." The
|
|
61
|
-
limit: inversion. The site is generated by AI and then invisible to the AI systems
|
|
62
|
-
doing discovery. AI-generated, not AI-ready.
|
|
63
|
-
|
|
64
|
-
A custom build. Three to six months. Senior developer required. The economics
|
|
65
|
-
do not work for most SMB engagements.
|
|
66
|
-
|
|
67
|
-
The fifth option was waiting. The cost of waiting is citations going to competitors
|
|
68
|
-
whose pages got structured first.
|
|
69
|
-
|
|
70
|
-
- id: items-1
|
|
71
|
-
type: items
|
|
72
|
-
data:
|
|
73
|
-
headline: What the foundation had to do — before we built the service on top of it
|
|
74
|
-
description: Five criteria. None are AILK features. They are what any site needs to publish into a world where AI systems read pages and recommend brands.
|
|
75
|
-
columns: 3
|
|
76
|
-
items:
|
|
77
|
-
- title: Be read correctly
|
|
78
|
-
description: The model knows what the page is about and which business it belongs to. If it has to guess, it cites someone else.
|
|
79
|
-
icon: eye
|
|
80
|
-
- title: Work for non-human visitors
|
|
81
|
-
description: Agents researching on a buyer's behalf find a first-class surface. Not a degraded API.
|
|
82
|
-
icon: bot
|
|
83
|
-
- title: Surface its own gaps
|
|
84
|
-
description: AEO problems are silent. The foundation catches structural gaps before the site ships. In CI.
|
|
85
|
-
icon: alert-triangle
|
|
86
|
-
- title: Belong to the people running on it
|
|
87
|
-
description: No platform takes a cut. No vendor reshapes the roadmap. The codebase leaves with you.
|
|
88
|
-
icon: key
|
|
89
|
-
- title: Fit inside a real engagement
|
|
90
|
-
description: Two weeks. Not three months. The deploy path matches the economics of an SMB engagement.
|
|
91
|
-
icon: clock
|
|
92
|
-
|
|
93
|
-
- id: content-block-3
|
|
94
|
-
type: content-block
|
|
95
|
-
data:
|
|
96
|
-
variant: narrow
|
|
97
|
-
headline: What Launch Service is
|
|
98
|
-
body: |
|
|
99
|
-
Launch Service is a fixed-scope two-week deploy onto AI Launch Kit — the Apache
|
|
100
|
-
2.0 website foundation built for the agent-first internet. Working Theory delivers
|
|
101
|
-
the site. You own everything from day one.
|
|
102
|
-
|
|
103
|
-
The AILK substrate ships a typed schema registry, a first-class MCP server, an AEO
|
|
104
|
-
scoring CLI that runs in CI, and an agent-assisted scaffolding workflow. Launch
|
|
105
|
-
Service is the path to that foundation for agencies and SMB owners who want the
|
|
106
|
-
site running without running the build themselves.
|
|
107
|
-
|
|
108
|
-
Paid tiers — Pro, Pro Plus — add operational capability on top. They do not gate
|
|
109
|
-
access to the substrate.
|
|
110
|
-
|
|
111
|
-
- id: items-2
|
|
112
|
-
type: items
|
|
113
|
-
data:
|
|
114
|
-
headline: What ships in two weeks
|
|
115
|
-
description: Five capabilities from the AILK foundation. Each one corresponds to something the alternatives either do not ship or charge extra to retrofit.
|
|
116
|
-
columns: 2
|
|
117
|
-
items:
|
|
118
|
-
- title: A typed schema registry, already wired
|
|
119
|
-
description: Sixty page types. Per-type validation. JSON-LD from frontmatter. FAQ, glossary, entity, identity. Ship a page, ship the structure.
|
|
120
|
-
icon: database
|
|
121
|
-
- title: Peer surfaces over one substrate
|
|
122
|
-
description: Web for humans. MCP for agents. HTTP API for programmatic callers. One repo. CI-enforced parity. Whatever a person can do, an agent can do.
|
|
123
|
-
icon: layers
|
|
124
|
-
- title: The ailk audit CLI, in the OSS
|
|
125
|
-
description: Catches missing schema, ambiguous entity, pages that do not emit JSON-LD — before the site ships. Enterprise AEO platforms charge $295 a month to measure the same problems after they have cost citations.
|
|
126
|
-
icon: search
|
|
127
|
-
- title: Apache 2.0. Complete OSS.
|
|
128
|
-
description: Not source-available. The codebase is yours. Leave any host, leave any tool, the site comes with you.
|
|
129
|
-
icon: unlock
|
|
130
|
-
- title: Agent-assisted scaffolding, set up and handed off
|
|
131
|
-
description: Eight skills covering initial deploy, schema work, audit runs, auth, commerce, and config. Adding a service page after launch is a Claude Code session, not a sprint.
|
|
132
|
-
icon: zap
|
|
133
|
-
|
|
134
|
-
- id: items-3
|
|
135
|
-
type: items
|
|
136
|
-
data:
|
|
137
|
-
headline: What this means for your business
|
|
138
|
-
description: What changes on the other side of two weeks.
|
|
139
|
-
columns: 2
|
|
140
|
-
items:
|
|
141
|
-
- title: Your site shows up where decisions are being made
|
|
142
|
-
description: AI search citations do not go to the most-visited site. They go to the best-structured pages. Yours are structured from day one.
|
|
143
|
-
icon: trending-up
|
|
144
|
-
- title: You own the foundation
|
|
145
|
-
description: Apache 2.0. No platform takes a cut. No vendor reshapes the roadmap. If you leave a host or a tool, the codebase leaves with you.
|
|
146
|
-
icon: key
|
|
147
|
-
- title: The citation work compounds — and stops fighting the platform
|
|
148
|
-
description: On WordPress plus plugins, every campaign re-fights plugin conflicts and weak markup. On AILK, every page is already structured. The work lands faster and stays landed.
|
|
149
|
-
icon: rocket
|
|
150
|
-
- title: The marginal cost of a page approaches zero
|
|
151
|
-
description: Adding a service offering takes a Claude Code session, not a development sprint. Responding to a citation gap takes a day, not a quarter.
|
|
152
|
-
icon: trending-down
|
|
153
|
-
- title: AEO gaps get caught before they cost you
|
|
154
|
-
description: A structural gap caught in CI costs minutes. A citation gap discovered three months in costs months of work to recover. The cost shifts from after you notice to before it matters.
|
|
155
|
-
icon: shield
|
|
156
|
-
|
|
157
|
-
- id: content-block-4
|
|
158
|
-
type: content-block
|
|
159
|
-
data:
|
|
160
|
-
variant: narrow
|
|
161
|
-
headline: What you can verify before you book
|
|
162
|
-
body: |
|
|
163
|
-
The architecture is in the repo, not on a slide deck. Apache 2.0 on GitHub.
|
|
164
|
-
`apps/web`, `apps/mcp`, `apps/api` as peer apps. Parity test in CI. `ailk audit`
|
|
165
|
-
runs against any AILK site, including this one. Pre-launch claims are easy to make
|
|
166
|
-
and hard to back. Ours are testable today.
|
|
167
|
-
|
|
168
|
-
Sam Henry, Working Theory, and SalesSmyth all publish on AILK. The dogfooding
|
|
169
|
-
is not a claim. It is the reason the schema registry and the peer-surfaces
|
|
170
|
-
architecture exist in their current shape. We hit the problem first.
|
|
171
|
-
|
|
172
|
-
The capability boundary is public. Thirteen capabilities. Ten installed. Three
|
|
173
|
-
Platform Services. The roster is at /platform. Anyone selling AILK has to
|
|
174
|
-
be honest about what ships today.
|
|
175
|
-
|
|
176
|
-
The downside is bounded. Apache 2.0. If AILK never finds traction, you keep the
|
|
177
|
-
codebase and keep the site.
|
|
178
|
-
|
|
179
|
-
No public install counts. No external testimonials at launch. No third-party
|
|
180
|
-
benchmarks. The first Launch Service customers generate that proof over the next
|
|
181
|
-
90–180 days. We are not making up metrics we do not have.
|
|
182
|
-
|
|
183
|
-
- id: faq-1
|
|
184
|
-
type: faq
|
|
185
|
-
data:
|
|
186
|
-
headline: Common questions
|
|
187
|
-
items:
|
|
188
|
-
- question: You're pre-launch. Why book now?
|
|
189
|
-
answer: >
|
|
190
|
-
The architecture is observable in the repo, not on a slide deck. The schema
|
|
191
|
-
registry is a directory with 60 typed entries. The parity test is in CI. The
|
|
192
|
-
CLI runs. Working Theory ships three other brands on the same substrate.
|
|
193
|
-
Apache 2.0 bounds the downside — if AILK never finds traction, you keep the
|
|
194
|
-
code and keep the site.
|
|
195
|
-
- question: Do I need to be technical to use the site after Launch Service delivers it?
|
|
196
|
-
answer: >
|
|
197
|
-
No. Content and citations are MDX files — the agency or owner manages them
|
|
198
|
-
without touching the build pipeline. Working Theory hands off the repo with
|
|
199
|
-
the eight scaffolding skills wired. Adding a service page, updating a FAQ
|
|
200
|
-
block, running an AEO audit — all Claude Code sessions. No senior developer
|
|
201
|
-
required for day-to-day work.
|
|
202
|
-
- question: We run a portfolio of client sites. Where's fleet management?
|
|
203
|
-
answer: >
|
|
204
|
-
Deferred. Fleet management — cross-site rollup, white-label,
|
|
205
|
-
per-seat licensing — is planned as a future Enterprise multi-tenant
|
|
206
|
-
entitlement, not a separate tier, and not shipped yet. At launch,
|
|
207
|
-
agencies deliver on OSS plus Pro per-user.
|
|
208
|
-
- question: How does this relate to Working Theory Platform? Am I locked in?
|
|
209
|
-
answer: >
|
|
210
|
-
You are not. AILK works fully standalone. Working Theory Platform is a
|
|
211
|
-
separate product — growth marketing as a system. It publishes into AILK with
|
|
212
|
-
the deepest integration. Neither product requires the other.
|
|
213
|
-
|
|
214
|
-
- id: cta-1
|
|
215
|
-
type: cta
|
|
216
|
-
data:
|
|
217
|
-
variant: box
|
|
218
|
-
headline: Ready to book the intro call?
|
|
219
|
-
description: Fixed scope. Fixed price. Two weeks. Book the intro call to confirm scope fits and schedule the deploy.
|
|
220
|
-
primaryCta:
|
|
221
|
-
label: Book the intro call
|
|
222
|
-
href: /contact
|
|
223
|
-
secondaryCta:
|
|
224
|
-
label: Read the FAQ
|
|
225
|
-
href: /faq
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
<!-- MDX body is preserved for content adapters that use it, but the page renders from frontmatter sections. -->
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: ServicesList
|
|
3
|
-
slug: services
|
|
4
|
-
title: Services — AI Launch Kit
|
|
5
|
-
description: How the Working Theory team works with teams to get on AILK fast — from architecture reviews to the Launch Service two-week deploy.
|
|
6
|
-
sections:
|
|
7
|
-
- id: hero-1
|
|
8
|
-
type: hero
|
|
9
|
-
data:
|
|
10
|
-
variant: centered
|
|
11
|
-
headline: Get on AILK fast
|
|
12
|
-
subheadline: >
|
|
13
|
-
The Working Theory team works with small, high-output teams who have
|
|
14
|
-
decided to ship. Two engagement shapes — Launch Service and architecture
|
|
15
|
-
review. Pick the one that fits your situation.
|
|
16
|
-
primaryCta:
|
|
17
|
-
label: Book a Launch Service call
|
|
18
|
-
href: /launch
|
|
19
|
-
secondaryCta:
|
|
20
|
-
label: Learn what AILK includes
|
|
21
|
-
href: /ailk
|
|
22
|
-
|
|
23
|
-
- id: items-1
|
|
24
|
-
type: items
|
|
25
|
-
data:
|
|
26
|
-
headline: Two ways to engage
|
|
27
|
-
description: >
|
|
28
|
-
Every engagement starts with a clear statement of what done looks like.
|
|
29
|
-
No discovery theater, no retainer required.
|
|
30
|
-
columns: 2
|
|
31
|
-
items:
|
|
32
|
-
- title: Launch Service
|
|
33
|
-
description: >
|
|
34
|
-
Fixed-scope, fixed-price, two-week deploy. We provision your
|
|
35
|
-
instance — Supabase, Vercel, Cloudflare wired — migrate your
|
|
36
|
-
content, and hand off a running site. Your team takes over
|
|
37
|
-
content and citation work from there. $2,495 flat.
|
|
38
|
-
icon: rocket
|
|
39
|
-
link:
|
|
40
|
-
label: Book a call
|
|
41
|
-
href: /launch
|
|
42
|
-
- title: Architecture review
|
|
43
|
-
description: >
|
|
44
|
-
A focused two-day audit of your current stack. We read the code,
|
|
45
|
-
talk to the engineers, and return a written assessment with ranked
|
|
46
|
-
recommendations. No slides, no retainer required. Contact us to
|
|
47
|
-
scope your review.
|
|
48
|
-
icon: search
|
|
49
|
-
link:
|
|
50
|
-
label: Get in touch
|
|
51
|
-
href: /contact
|
|
52
|
-
|
|
53
|
-
- id: stats-1
|
|
54
|
-
type: stats
|
|
55
|
-
data:
|
|
56
|
-
variant: horizontal
|
|
57
|
-
headline: What the Launch Service delivers
|
|
58
|
-
items:
|
|
59
|
-
- value: "2"
|
|
60
|
-
label: Weeks to deploy
|
|
61
|
-
- value: "$2,495"
|
|
62
|
-
label: Flat price
|
|
63
|
-
- value: "45"
|
|
64
|
-
label: Schema types configured
|
|
65
|
-
- value: "0"
|
|
66
|
-
label: Next.js fluency required
|
|
67
|
-
|
|
68
|
-
- id: cta-1
|
|
69
|
-
type: cta
|
|
70
|
-
data:
|
|
71
|
-
variant: box
|
|
72
|
-
headline: Ready to ship on AILK?
|
|
73
|
-
description: >
|
|
74
|
-
Book a Launch Service call to scope your deployment — or reach out
|
|
75
|
-
to discuss an architecture review. We respond within one business day.
|
|
76
|
-
primaryCta:
|
|
77
|
-
label: Book a Launch Service call
|
|
78
|
-
href: /launch
|
|
79
|
-
secondaryCta:
|
|
80
|
-
label: Contact us
|
|
81
|
-
href: /contact
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
<!-- MDX body is preserved for content adapters that use it, but the page renders from frontmatter sections. -->
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: SoftwareProduct
|
|
3
|
-
slug: ailk-aeo
|
|
4
|
-
title: "@working-theory/aeo — AEO Scorer"
|
|
5
|
-
description: Deterministic AEO scoring for AILK pages. Grades structured data against Layer 1 citation-readiness rules — same input always returns the same score.
|
|
6
|
-
schema:
|
|
7
|
-
mainEntity:
|
|
8
|
-
"@type": SoftwareApplication
|
|
9
|
-
name: "@working-theory/aeo"
|
|
10
|
-
applicationCategory: DeveloperApplication
|
|
11
|
-
operatingSystem: Node.js
|
|
12
|
-
softwareVersion: "1.0.0"
|
|
13
|
-
url: https://github.com/working-theory-labs/ai-launch-kit/tree/main/packages/aeo
|
|
14
|
-
license: https://opensource.org/licenses/MIT
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# @working-theory/aeo — AEO Scorer
|
|
18
|
-
|
|
19
|
-
`@working-theory/aeo` is a deterministic Answer Engine Optimization scorer. It grades `ContentPage` objects against a set of Layer 1 citation-readiness rules and returns a structured findings report.
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
pnpm add @working-theory/aeo
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Usage
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { scoreAeo } from "@working-theory/aeo";
|
|
31
|
-
|
|
32
|
-
const result = scoreAeo(page);
|
|
33
|
-
// result.score: number (0-100)
|
|
34
|
-
// result.passing: boolean
|
|
35
|
-
// result.findings: Array<{ rule, severity, message }>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Layer 1 rules
|
|
39
|
-
|
|
40
|
-
The scorer checks for required structured-data fields, valid `@type` declarations, non-empty titles and descriptions, `inLanguage` presence, and absolute `url` values. Each check is independent and deterministic.
|
|
41
|
-
|
|
42
|
-
## Integration
|
|
43
|
-
|
|
44
|
-
Pass the `ContentPage` returned by the content adapter directly to `scoreAeo`. No additional transformation needed — the adapter output is the scorer input.
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: SoftwareProduct
|
|
3
|
-
slug: ailk-content-adapters
|
|
4
|
-
title: "@working-theory/content-adapters — MDX Content Adapter"
|
|
5
|
-
description: The MDX content adapter for AILK — reads typed MDX frontmatter from the content directory and returns ContentPage objects for the JSON-LD pipeline.
|
|
6
|
-
schema:
|
|
7
|
-
mainEntity:
|
|
8
|
-
"@type": SoftwareApplication
|
|
9
|
-
name: "@working-theory/content-adapters"
|
|
10
|
-
applicationCategory: DeveloperApplication
|
|
11
|
-
operatingSystem: Node.js
|
|
12
|
-
softwareVersion: "1.0.0"
|
|
13
|
-
url: https://github.com/working-theory-labs/ai-launch-kit/tree/main/packages/content-adapters
|
|
14
|
-
license: https://opensource.org/licenses/MIT
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# @working-theory/content-adapters — MDX Content Adapter
|
|
18
|
-
|
|
19
|
-
`@working-theory/content-adapters` bridges the `content/` directory to the rest of the AILK stack. It reads MDX frontmatter, validates it against a Zod schema, and returns typed `ContentPage` objects.
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
pnpm add @working-theory/content-adapters
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Usage
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { createMdxAdapter } from "@working-theory/content-adapters";
|
|
31
|
-
|
|
32
|
-
const adapter = createMdxAdapter({
|
|
33
|
-
contentRoot: "./content",
|
|
34
|
-
defaultLocale: "en",
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
const page = await adapter.getPageSource("HowTo", "my-guide", "en");
|
|
38
|
-
// page.frontmatter: ContentPage
|
|
39
|
-
// page.body: string (raw MDX body)
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Key exports
|
|
43
|
-
|
|
44
|
-
- `createMdxAdapter(options)` — factory for the MDX adapter
|
|
45
|
-
- `ContentPage` — the Zod-inferred page type (frontmatter contract)
|
|
46
|
-
- `MdxPageSource` — the full source object (`frontmatter` + `body`)
|
|
47
|
-
- `SchemaOrgType` — union of all valid `type` field values
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: SoftwareProduct
|
|
3
|
-
slug: ailk-schema
|
|
4
|
-
title: "@working-theory/schema — JSON-LD Builders"
|
|
5
|
-
description: Typed schema.org JSON-LD builders for all 45 AILK page types. One builder per type, one dispatcher, zero runtime dependencies beyond the site identity pack.
|
|
6
|
-
schema:
|
|
7
|
-
mainEntity:
|
|
8
|
-
"@type": SoftwareApplication
|
|
9
|
-
name: "@working-theory/schema"
|
|
10
|
-
applicationCategory: DeveloperApplication
|
|
11
|
-
operatingSystem: Node.js
|
|
12
|
-
softwareVersion: "2.0.0"
|
|
13
|
-
url: https://github.com/working-theory-labs/ai-launch-kit/tree/main/packages/schema
|
|
14
|
-
license: https://opensource.org/licenses/MIT
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# @working-theory/schema — JSON-LD Builders
|
|
18
|
-
|
|
19
|
-
`@working-theory/schema` is the structured-data foundation of the AILK stack. It ships typed builders for all 60 schema.org page types supported in Phase 2, a dispatcher that routes a `ContentPageInput` to the right builder, and a registry that describes each type's family and tier.
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
pnpm add @working-theory/schema
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Usage
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { buildJsonLdWithPack } from "@working-theory/schema";
|
|
31
|
-
|
|
32
|
-
const jsonLd = buildJsonLdWithPack(
|
|
33
|
-
{
|
|
34
|
-
type: "BlogPosting",
|
|
35
|
-
slug: "my-post",
|
|
36
|
-
title: "My Post",
|
|
37
|
-
description: "A post.",
|
|
38
|
-
locale: "en",
|
|
39
|
-
},
|
|
40
|
-
pack,
|
|
41
|
-
);
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Key exports
|
|
45
|
-
|
|
46
|
-
- `buildJsonLd(input)` — zero-config dispatcher (resolves pack from env)
|
|
47
|
-
- `buildJsonLdWithPack(input, pack)` — explicit-pack variant for server components
|
|
48
|
-
- `pageTypeRegistry` — the 60-entry registry for tooling and auditing
|
|
49
|
-
- Per-type builders (`howToJsonLd`, `techArticleJsonLd`, etc.) for direct access
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: TeamList
|
|
3
|
-
slug: team
|
|
4
|
-
title: Team
|
|
5
|
-
description: The people building AI Launch Kit — a small, focused team shipping OSS infrastructure for the next generation of AX-first products.
|
|
6
|
-
schema:
|
|
7
|
-
mainEntity:
|
|
8
|
-
"@type": Organization
|
|
9
|
-
name: AI Launch Kit
|
|
10
|
-
description: Open-source template for building agent-first products.
|
|
11
|
-
member:
|
|
12
|
-
- "@type": Person
|
|
13
|
-
name: Jane Doe
|
|
14
|
-
jobTitle: Founder & CEO
|
|
15
|
-
description: Building the infrastructure layer for human-agent teams.
|
|
16
|
-
url: /team/founder
|
|
17
|
-
- "@type": Person
|
|
18
|
-
name: Alex Kim
|
|
19
|
-
jobTitle: Lead Engineer
|
|
20
|
-
description: Open-source contributor and monorepo architect.
|
|
21
|
-
url: /team/lead-engineer
|
|
22
|
-
- "@type": Person
|
|
23
|
-
name: Morgan Lee
|
|
24
|
-
jobTitle: Head of Product
|
|
25
|
-
description: Product strategy and developer experience.
|
|
26
|
-
url: /team/head-of-product
|
|
27
|
-
sections:
|
|
28
|
-
- id: hero-1
|
|
29
|
-
type: hero
|
|
30
|
-
data:
|
|
31
|
-
variant: centered
|
|
32
|
-
headline: The team behind AI Launch Kit.
|
|
33
|
-
subheadline: A small group of engineers, designers, and product builders committed to making AX-first development accessible.
|
|
34
|
-
|
|
35
|
-
- id: items-1
|
|
36
|
-
type: items
|
|
37
|
-
data:
|
|
38
|
-
headline: Who we are
|
|
39
|
-
columns: 3
|
|
40
|
-
items:
|
|
41
|
-
- title: Jane Doe
|
|
42
|
-
description: Founder & CEO — building the infrastructure layer for human-agent teams.
|
|
43
|
-
icon: user
|
|
44
|
-
- title: Alex Kim
|
|
45
|
-
description: Lead Engineer — open-source contributor and monorepo architect.
|
|
46
|
-
icon: code
|
|
47
|
-
- title: Morgan Lee
|
|
48
|
-
description: Head of Product — product strategy and developer experience.
|
|
49
|
-
icon: layout
|
|
50
|
-
|
|
51
|
-
- id: cta-1
|
|
52
|
-
type: cta
|
|
53
|
-
data:
|
|
54
|
-
variant: box
|
|
55
|
-
headline: Want to contribute?
|
|
56
|
-
description: AI Launch Kit is open source. Join us on GitHub — issues, PRs, and discussions are open to everyone.
|
|
57
|
-
primaryCta:
|
|
58
|
-
label: Contribute on GitHub
|
|
59
|
-
href: https://github.com/working-theory-labs/ai-launch-kit
|
|
60
|
-
external: true
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
<!-- MDX body is preserved for content adapters that use it, but the page renders from frontmatter sections. -->
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: TeamMember
|
|
3
|
-
slug: founder
|
|
4
|
-
title: Jane Doe — Founder & CEO
|
|
5
|
-
description: Jane founded AI Launch Kit to make AX-first product development accessible to any team. Previously built developer infrastructure at scale.
|
|
6
|
-
schema:
|
|
7
|
-
mainEntity:
|
|
8
|
-
"@type": Person
|
|
9
|
-
name: Jane Doe
|
|
10
|
-
jobTitle: Founder & CEO
|
|
11
|
-
description: Building the infrastructure layer for human-agent teams. Previously built developer infrastructure at scale.
|
|
12
|
-
image: /images/team/jane-doe.jpg
|
|
13
|
-
sameAs:
|
|
14
|
-
- https://github.com/janedoe
|
|
15
|
-
- https://linkedin.com/in/janedoe
|
|
16
|
-
worksFor:
|
|
17
|
-
"@type": Organization
|
|
18
|
-
name: AI Launch Kit
|
|
19
|
-
sections:
|
|
20
|
-
- id: hero-1
|
|
21
|
-
type: hero
|
|
22
|
-
data:
|
|
23
|
-
variant: centered
|
|
24
|
-
headline: Jane Doe
|
|
25
|
-
subheadline: Founder & CEO — building the infrastructure layer for human-agent teams.
|
|
26
|
-
|
|
27
|
-
- id: content-block-1
|
|
28
|
-
type: content-block
|
|
29
|
-
data:
|
|
30
|
-
variant: narrow
|
|
31
|
-
headline: Background
|
|
32
|
-
body: |
|
|
33
|
-
Jane has spent the last decade building developer infrastructure — the
|
|
34
|
-
kind of plumbing that lets product teams move fast without worrying about
|
|
35
|
-
the underlying stack. AI Launch Kit started as an internal template and
|
|
36
|
-
became a public project when it became clear that the AX-first pattern
|
|
37
|
-
was something every team would need.
|
|
38
|
-
|
|
39
|
-
Before AI Launch Kit, Jane worked on API platforms and monorepo
|
|
40
|
-
infrastructure at developer-tools companies. The pattern of "API and MCP
|
|
41
|
-
as first-class surfaces alongside the web app" emerged from watching teams
|
|
42
|
-
retrofit agent support onto existing products and seeing how painful that
|
|
43
|
-
was. AI Launch Kit bakes the pattern in from day one.
|
|
44
|
-
|
|
45
|
-
- id: items-1
|
|
46
|
-
type: items
|
|
47
|
-
data:
|
|
48
|
-
headline: Focus areas
|
|
49
|
-
columns: 3
|
|
50
|
-
items:
|
|
51
|
-
- title: Developer Experience
|
|
52
|
-
description: Making the right pattern the easy path — from project setup to CI to deployment.
|
|
53
|
-
icon: terminal
|
|
54
|
-
- title: Agent Infrastructure
|
|
55
|
-
description: API and MCP surfaces as first-class citizens, not bolt-ons.
|
|
56
|
-
icon: cpu
|
|
57
|
-
- title: Open Source
|
|
58
|
-
description: The core template ships free and OSS. The business model funds continued development.
|
|
59
|
-
icon: github
|
|
60
|
-
|
|
61
|
-
- id: cta-1
|
|
62
|
-
type: cta
|
|
63
|
-
data:
|
|
64
|
-
variant: box
|
|
65
|
-
headline: Get in touch
|
|
66
|
-
description: Interested in contributing, partnering, or just discussing AX-first architecture? Reach out.
|
|
67
|
-
primaryCta:
|
|
68
|
-
label: Contact
|
|
69
|
-
href: /contact
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
<!-- MDX body is preserved for content adapters that use it, but the page renders from frontmatter sections. -->
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: "TermsPage"
|
|
3
|
-
slug: "terms"
|
|
4
|
-
title: "Terms of Service"
|
|
5
|
-
description: "The terms governing use of ailaunchkit.ai and the AI Launch Kit paid offerings — Pro, Pro Plus, and Launch Service — operated by SalesSmyth LLC."
|
|
6
|
-
sections: [{"id": "intro", "type": "content-block", "data": {"headline": "Terms of Service", "body": "These terms govern your use of ailaunchkit.ai and the paid AI Launch Kit (AILK) offerings — Pro, Pro Plus, and the Launch Service. They don't govern the open-source AILK codebase; that's licensed separately under Apache 2.0. Using the paid offerings or this site means you accept these terms."}}, {"id": "who-provides-the-service", "type": "content-block", "data": {"headline": "Who provides this service", "body": "SalesSmyth LLC operates ailaunchkit.ai and the AI Launch Kit paid offerings. SalesSmyth LLC is the legal entity behind the Working Theory product line, which includes AI Launch Kit. \"AILK,\" \"we,\" and \"us\" all mean SalesSmyth LLC in these terms."}}, {"id": "open-source-software", "type": "content-block", "data": {"headline": "The open-source software", "body": "The AILK codebase is licensed under Apache 2.0, published at github.com/working-theory-labs/ai-launch-kit. That license — not these terms — governs how you use, modify, and distribute the OSS code. Nothing here restricts or contradicts the rights it already grants you."}}, {"id": "paid-offerings", "type": "content-block", "data": {"headline": "Paid offerings", "body": "Pro, Pro Plus, and the Launch Service are commercial offerings governed by these terms. Current fees and tier details are published at /pricing and incorporated here by reference. Paid tiers add capability on top of the OSS foundation — they never restrict what the OSS license already grants."}}, {"id": "acceptable-use", "type": "content-block", "data": {"headline": "Acceptable use", "body": "Don't use this site or the paid offerings for any unlawful purpose, to infringe on others' rights, or to interfere with the site or services. You're responsible for the content and configuration of any site you build with AILK."}}, {"id": "disclaimers-and-limitation-of-liability", "type": "content-block", "data": {"headline": "Disclaimers and limitation of liability", "body": "This site and the paid offerings are provided as-is and as-available, to the fullest extent the law allows, without warranties of any kind — express or implied, including merchantability, fitness for a particular purpose, or non-infringement. To that same extent, SalesSmyth LLC isn't liable for indirect, incidental, or consequential damages arising from your use of the site or the paid offerings. Nothing here limits liability that can't be limited under applicable law. These terms aren't legal advice. If you need guidance on your own use of AILK, talk to your own counsel."}}, {"id": "governing-law-and-changes", "type": "content-block", "data": {"headline": "Governing law and changes", "body": "These terms are governed by the laws of the State of Colorado, USA, without regard to conflict-of-law principles. We may update them from time to time — the current version is always posted at this page. Using the site or paid offerings after an update means you accept the revised terms."}}, {"id": "contact", "type": "contact-channels", "data": {"headline": "Questions about these terms", "items": [{"icon": "mail", "headline": "Email us", "description": "Send questions about these terms to hello@ailaunchkit.ai and the Working Theory team will respond directly.", "cta": {"label": "Email hello@ailaunchkit.ai", "href": "mailto:hello@ailaunchkit.ai"}}]}}]
|
|
7
|
-
status: "Approved"
|
|
8
|
-
pageKey: "TermsPage"
|
|
9
|
-
entity: "ailaunchkit"
|
|
10
|
-
urlSlug: "terms-page"
|
|
11
|
-
lastUpdated: "2026-07-06"
|
|
12
|
-
pageLevelSchemaType: "TermsPage"
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
import { JsonLd } from '@/components/JsonLd'
|
|
16
|
-
|
|
17
|
-
<JsonLd data={{"@context": "https://schema.org", "@graph": [{"@type": "Product", "additionalType": "https://schema.org/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/#organization", "name": "SalesSmyth LLC"}, "brand": {"@type": "Brand", "name": "Working Theory", "url": "https://workingtheory.ai"}, "creator": {"@id": "https://samhenry.org/#person"}, "offers": [{"@type": "Offer", "name": "Free (OSS)", "price": "0", "priceCurrency": "USD"}, {"@type": "Offer", "name": "Pro", "price": "249", "priceCurrency": "USD", "priceSpecification": {"@type": "UnitPriceSpecification", "price": "249", "priceCurrency": "USD", "unitText": "per user per year"}}, {"@type": "Offer", "name": "Pro Plus", "price": "449", "priceCurrency": "USD", "priceSpecification": {"@type": "UnitPriceSpecification", "price": "449", "priceCurrency": "USD", "unitText": "per user per month"}}, {"@type": "Offer", "name": "Launch Service", "price": "2495", "priceCurrency": "USD"}]}, {"@type": "WebPage", "@id": "https://ailaunchkit.ai/terms#webpage", "url": "https://ailaunchkit.ai/terms", "name": "Terms of Service", "description": "The terms governing use of ailaunchkit.ai and the AI Launch Kit paid offerings — Pro, Pro Plus, and Launch Service — operated by SalesSmyth LLC.", "isPartOf": {"@id": "https://ailaunchkit.ai/#product"}, "about": {"@id": "https://ailaunchkit.ai/#organization"}}]}} />
|
|
18
|
-
|
|
19
|
-
{/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Landed by land-section-catalog.py (#3111). */}
|