create-ailk 0.7.0 → 0.9.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 +112 -10
- package/component-catalog.json +798 -49
- package/component-catalog.md +9 -6
- package/dist/add-module.d.ts +20 -0
- package/dist/add-module.js +43 -7
- package/dist/add-route.d.ts +56 -0
- package/dist/add-route.js +286 -0
- package/dist/apply-design-md.d.ts +7 -0
- package/dist/apply-design-md.js +50 -0
- package/dist/apply-design.d.ts +64 -0
- package/dist/apply-design.js +273 -0
- package/dist/claude-md.d.ts +111 -0
- package/dist/claude-md.js +334 -0
- package/dist/cli.js +114 -28
- package/dist/derive-architecture.js +41 -36
- package/dist/design-compile.d.ts +71 -0
- package/dist/design-compile.js +98 -0
- package/dist/design-package.d.ts +83 -0
- package/dist/design-package.js +468 -0
- package/dist/design-presets.d.ts +86 -0
- package/dist/design-presets.js +642 -0
- package/dist/design-scaffold.d.ts +76 -0
- package/dist/design-scaffold.js +220 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -1
- package/dist/legacy-nav-renderers.d.ts +45 -0
- package/dist/legacy-nav-renderers.js +545 -0
- package/dist/lib/auth-secret-file.d.ts +19 -0
- package/dist/lib/auth-secret-file.js +112 -0
- package/dist/lib/design-checks.d.ts +78 -0
- package/dist/lib/design-checks.js +174 -0
- package/dist/lib/extract-module-bundle.js +5 -1
- package/dist/lib/license-key-files.d.ts +9 -0
- package/dist/lib/license-key-files.js +2 -2
- package/dist/lib/module-license-gate.d.ts +89 -0
- package/dist/lib/module-license-gate.js +171 -12
- package/dist/lib/module-tier.d.ts +45 -16
- package/dist/lib/module-tier.js +76 -0
- package/dist/lib/pro-callout.js +10 -2
- package/dist/lib/render-verdict.d.ts +52 -0
- package/dist/lib/render-verdict.js +77 -0
- package/dist/lib/scaffold-render-sweep.d.ts +105 -0
- package/dist/lib/scaffold-render-sweep.js +236 -0
- package/dist/module-architecture.d.ts +19 -16
- package/dist/module-architecture.js +64 -21
- package/dist/parse-args.d.ts +88 -10
- package/dist/parse-args.js +272 -21
- package/dist/programmatic.d.ts +66 -12
- package/dist/programmatic.js +361 -34
- package/dist/site-chrome.d.ts +19 -9
- package/dist/site-chrome.js +23 -13
- package/dist/site-manifest.d.ts +25 -0
- package/dist/site-manifest.js +254 -0
- package/dist/site-roster.d.ts +41 -0
- package/dist/site-roster.js +149 -11
- package/dist/starter-grid.d.ts +232 -0
- package/dist/starter-grid.js +545 -0
- package/dist/surfaces.d.ts +41 -9
- package/dist/surfaces.js +268 -92
- package/dist/template-manifest.d.ts +65 -29
- package/dist/template-manifest.js +161 -382
- package/dist/template-names.d.ts +14 -12
- package/dist/template-names.js +13 -17
- package/package.json +5 -4
- package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
- package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
- package/site-templates/_base/content/en/GlossaryList/glossary.mdx +0 -1
- package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +0 -1
- package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
- package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
- package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +15 -0
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +70 -0
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +70 -0
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +70 -0
- package/site-templates/{minimalism-site/TEMPLATE-MANIFEST.json → aliases/minimalism-site.TEMPLATE-MANIFEST.json} +72 -40
- package/site-templates/designs/minimalism/DESIGN.md +98 -6
- package/site-templates/designs/minimalism/sample/README.md +48 -0
- package/site-templates/designs/standard/DESIGN.md +103 -6
- package/site-templates/marketing-site/DESIGN.md +103 -6
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +144 -47
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +82 -41
- package/site-templates/marketing-site-free/DESIGN.md +103 -6
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +150 -48
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +114 -67
- package/site-templates/marketing-site-free/ailk-template.json +1 -1
- package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
- package/site-templates/saas-product/DESIGN.md +103 -6
- package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
- package/site-templates/{simple-service → shapes/local-business-service}/TEMPLATE-MANIFEST.json +210 -81
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +356 -0
- package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
- package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
- package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
- package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/{minimalism-site → shapes/local-business-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +7 -8
- package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
- package/site-templates/shapes/local-business-service/provenance.json +4 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +471 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +354 -0
- package/site-templates/shapes/organization-service/ailk-template.json +10 -0
- package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
- package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/{minimalism-site → shapes/organization-service}/content/en/ServicesList/services.mdx +3 -4
- package/site-templates/shapes/organization-service/provenance.json +4 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +478 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +353 -0
- package/site-templates/shapes/person-service/ailk-template.json +10 -0
- package/site-templates/shapes/person-service/content/_site.mdx +85 -0
- package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
- package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
- package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/{simple-service → shapes/person-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +10 -11
- package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
- package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
- package/site-templates/shapes/person-service/provenance.json +4 -0
- package/templates/.claude/rules/architecture.md +7 -0
- package/templates/.claude/skills/README.md +5 -3
- package/templates/.claude/skills/add-auth/references/env-vars.md +22 -15
- package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +3 -2
- package/templates/.claude/skills/add-page/SKILL.md +241 -238
- package/templates/.claude/skills/add-page/references/page-types.md +85 -72
- package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
- package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
- package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
- package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
- package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
- package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
- package/templates/.claude/skills/check-site/SKILL.md +23 -0
- package/templates/.claude/skills/fill-page/SKILL.md +26 -7
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
- package/templates/.claude/skills/setup-database/SKILL.md +156 -0
- package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
- package/templates/.claude/skills/setup-deploy/SKILL.md +64 -32
- package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +44 -36
- package/templates/.claude/skills/setup-deploy/references/runbook-template.md +58 -102
- package/templates/.claude/skills/update-page/SKILL.md +117 -0
- package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
- package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
- package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
- package/templates/.github/workflows/ci.yml +4 -0
- package/templates/.prettierignore +1 -0
- package/templates/CLAUDE.md +146 -103
- package/templates/DESIGN.md +103 -6
- package/templates/README.md +63 -43
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/CLAUDE.md +3 -2
- package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
- package/templates/apps/api/src/__tests__/server.test.ts +116 -0
- package/templates/apps/api/src/config/__tests__/index.test.ts +115 -14
- package/templates/apps/api/src/config/index.ts +35 -16
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
- package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
- package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
- package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
- package/templates/apps/api/src/lib/stripe.ts +9 -0
- package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
- package/templates/apps/api/src/middleware/auth.ts +54 -0
- package/templates/apps/api/src/openapi/spec.ts +63 -12
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
- package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
- package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
- package/templates/apps/api/src/routes/leads/index.ts +46 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
- package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
- package/templates/apps/api/src/server.ts +35 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
- package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
- package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
- package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
- package/templates/apps/api/src/services/lead-routing.ts +140 -30
- package/templates/apps/api/src/services/leads-inbox.ts +48 -11
- package/templates/apps/api/src/services/revalidation.ts +60 -15
- package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
- package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
- package/templates/apps/mcp/src/tools/create_project.ts +21 -6
- package/templates/apps/mcp/src/tools/purchase.ts +4 -2
- package/templates/apps/web/.env.example +13 -0
- package/templates/apps/web/CLAUDE.md +22 -28
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
- package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
- package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
- package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
- package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
- package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
- package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +14 -6
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +10 -9
- package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +227 -84
- package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
- package/templates/apps/web/app/[locale]/contact/page.tsx +105 -15
- package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
- package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
- package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +21 -5
- package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
- package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/layout.tsx +65 -17
- package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
- package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
- package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +106 -14
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
- package/templates/apps/web/app/[locale]/{book-a-call → portfolio}/page.tsx +12 -13
- package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
- package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
- package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
- package/templates/apps/web/app/api/revalidate/route.ts +78 -36
- package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
- package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
- package/templates/apps/web/lib/locale-guard.ts +18 -0
- package/templates/apps/web/lib/meet-placeholder.ts +5 -0
- package/templates/apps/web/lib/nav-config.ts +50 -37
- package/templates/apps/web/lib/site-brand.tsx +13 -9
- package/templates/apps/web/lib/site-identity.ts +14 -0
- package/templates/apps/web/lib/site-logo.tsx +36 -0
- package/templates/apps/web/lib/site-theme.ts +46 -26
- package/templates/apps/web/messages/en.json +45 -5
- package/templates/apps/web/middleware.ts +28 -4
- package/templates/content/_site.mdx +4 -2
- package/templates/content/en/BlogList/blog.mdx +37 -16
- package/templates/content/en/BookCall/book-a-call.mdx +80 -0
- package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
- package/templates/content/en/BookCall/onsite-service.mdx +56 -0
- package/templates/content/en/BookCall/start-project.mdx +56 -0
- package/templates/content/en/ContactPage/contact.mdx +43 -34
- package/templates/content/en/HomePage/home.mdx +10 -22
- package/templates/content/en/LandingPage/meet.mdx +59 -0
- package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -1
- package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
- package/templates/database/CHANGELOG.md +14 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +2 -1
- package/templates/tools/check-claude-md.ts +128 -0
- package/versions.json +33 -33
- package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/_base/content/en/UseCase/first-use-case.mdx +0 -23
- package/site-templates/_base/content/en/UseCase/second-use-case.mdx +0 -23
- package/site-templates/_base/content/en/UseCase/third-use-case.mdx +0 -23
- package/site-templates/minimalism-site/DESIGN.md +0 -162
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -470
- package/site-templates/minimalism-site/ailk-template.json +0 -23
- package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
- package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
- package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
- package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
- package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
- package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
- package/site-templates/minimalism-site/provenance.json +0 -4
- package/site-templates/simple-service/DESIGN.md +0 -162
- package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -333
- package/site-templates/simple-service/ailk-template.json +0 -11
- package/site-templates/simple-service/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -32
- package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
- package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
- package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
- package/site-templates/simple-service/provenance.json +0 -4
- package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -211
- package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +0 -96
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
- package/templates/content/en/SoftwareProduct/product.mdx +0 -175
- /package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/first-engagement.mdx +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/second-engagement.mdx +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/third-engagement.mdx +0 -0
|
@@ -23,7 +23,7 @@ sections:
|
|
|
23
23
|
"secondaryCta":
|
|
24
24
|
{
|
|
25
25
|
"label": "{Secondary CTA}",
|
|
26
|
-
"href": "/
|
|
26
|
+
"href": "/for",
|
|
27
27
|
"variant": "outline",
|
|
28
28
|
},
|
|
29
29
|
"closingLine": "{Risk Reversal goes here}",
|
|
@@ -120,7 +120,7 @@ sections:
|
|
|
120
120
|
"link":
|
|
121
121
|
{
|
|
122
122
|
"label": "Learn More",
|
|
123
|
-
"href": "/
|
|
123
|
+
"href": "/features",
|
|
124
124
|
"variant": "link",
|
|
125
125
|
},
|
|
126
126
|
},
|
|
@@ -131,7 +131,7 @@ sections:
|
|
|
131
131
|
"link":
|
|
132
132
|
{
|
|
133
133
|
"label": "Learn More",
|
|
134
|
-
"href": "/
|
|
134
|
+
"href": "/features",
|
|
135
135
|
"variant": "link",
|
|
136
136
|
},
|
|
137
137
|
},
|
|
@@ -142,7 +142,7 @@ sections:
|
|
|
142
142
|
"link":
|
|
143
143
|
{
|
|
144
144
|
"label": "Learn More",
|
|
145
|
-
"href": "/
|
|
145
|
+
"href": "/features",
|
|
146
146
|
"variant": "link",
|
|
147
147
|
},
|
|
148
148
|
},
|
|
@@ -153,7 +153,7 @@ sections:
|
|
|
153
153
|
"link":
|
|
154
154
|
{
|
|
155
155
|
"label": "Learn More",
|
|
156
|
-
"href": "/
|
|
156
|
+
"href": "/features",
|
|
157
157
|
"variant": "link",
|
|
158
158
|
},
|
|
159
159
|
},
|
|
@@ -164,7 +164,7 @@ sections:
|
|
|
164
164
|
"link":
|
|
165
165
|
{
|
|
166
166
|
"label": "Learn More",
|
|
167
|
-
"href": "/
|
|
167
|
+
"href": "/features",
|
|
168
168
|
"variant": "link",
|
|
169
169
|
},
|
|
170
170
|
},
|
|
@@ -177,11 +177,7 @@ sections:
|
|
|
177
177
|
"href": "/contact",
|
|
178
178
|
"variant": "outline",
|
|
179
179
|
},
|
|
180
|
-
{
|
|
181
|
-
"kind": "link",
|
|
182
|
-
"label": "All Features",
|
|
183
|
-
"href": "/software/product",
|
|
184
|
-
},
|
|
180
|
+
{ "kind": "link", "label": "All Features", "href": "/features" },
|
|
185
181
|
],
|
|
186
182
|
},
|
|
187
183
|
},
|
|
@@ -203,7 +199,7 @@ sections:
|
|
|
203
199
|
"secondaryCta":
|
|
204
200
|
{
|
|
205
201
|
"label": "See all Integrations",
|
|
206
|
-
"href": "/
|
|
202
|
+
"href": "/features",
|
|
207
203
|
"variant": "link",
|
|
208
204
|
},
|
|
209
205
|
},
|
|
@@ -229,11 +225,7 @@ sections:
|
|
|
229
225
|
"href": "/contact",
|
|
230
226
|
"variant": "outline",
|
|
231
227
|
},
|
|
232
|
-
{
|
|
233
|
-
"kind": "link",
|
|
234
|
-
"label": "Integrations",
|
|
235
|
-
"href": "/software/product",
|
|
236
|
-
},
|
|
228
|
+
{ "kind": "link", "label": "Integrations", "href": "/features" },
|
|
237
229
|
],
|
|
238
230
|
"headline": "{Get set up in number easy steps}",
|
|
239
231
|
"description": "{Summarize the setup process briefly, so it reads as approachable and quick}",
|
|
@@ -311,11 +303,7 @@ sections:
|
|
|
311
303
|
"variant": "outline",
|
|
312
304
|
},
|
|
313
305
|
"secondaryCta":
|
|
314
|
-
{
|
|
315
|
-
"label": "Watch the demo",
|
|
316
|
-
"href": "/use-cases",
|
|
317
|
-
"variant": "link",
|
|
318
|
-
},
|
|
306
|
+
{ "label": "Watch the demo", "href": "/for", "variant": "link" },
|
|
319
307
|
},
|
|
320
308
|
},
|
|
321
309
|
]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "LandingPage"
|
|
3
|
+
slug: "meet"
|
|
4
|
+
title: "Book a time with us"
|
|
5
|
+
description: "{One sentence on how visitors pick the right meeting type}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Meet",
|
|
14
|
+
"headline": "{Book a time with us}",
|
|
15
|
+
"subheadline": "{One sentence on how visitors pick the right meeting type}",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "meeting-types",
|
|
20
|
+
"type": "items",
|
|
21
|
+
"data":
|
|
22
|
+
{
|
|
23
|
+
"variant": "tiles",
|
|
24
|
+
"columns": 2,
|
|
25
|
+
"items":
|
|
26
|
+
[
|
|
27
|
+
{
|
|
28
|
+
"title": "Book a Call",
|
|
29
|
+
"description": "{A quick intro call.}",
|
|
30
|
+
"link": { "label": "Book a Call", "href": "/meet/book-a-call" },
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Onsite Estimate",
|
|
34
|
+
"description": "{We come to you and quote the work.}",
|
|
35
|
+
"link":
|
|
36
|
+
{
|
|
37
|
+
"label": "Onsite Estimate",
|
|
38
|
+
"href": "/meet/onsite-estimate",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"title": "Start Project",
|
|
43
|
+
"description": "{Kick off a project you're ready to start.}",
|
|
44
|
+
"link":
|
|
45
|
+
{ "label": "Start Project", "href": "/meet/start-project" },
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"title": "Onsite Service",
|
|
49
|
+
"description": "{Book a service visit at your location.}",
|
|
50
|
+
"link":
|
|
51
|
+
{ "label": "Onsite Service", "href": "/meet/onsite-service" },
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
{/* The Free /meet hub (one static page, rendered by the generic `[slug]` route). With the scheduling module installed its own `meet/` route directory takes precedence and this file is inert. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "UseCasesList"
|
|
3
|
-
slug: "
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
slug: "for"
|
|
4
|
+
placeholder: true
|
|
5
|
+
title: "{Customers: who your product or service is for}"
|
|
6
|
+
description: "{One sentence on the customers your product or service serves and the results they get}"
|
|
6
7
|
sections:
|
|
7
8
|
[
|
|
8
9
|
{
|
|
@@ -10,14 +11,14 @@ sections:
|
|
|
10
11
|
"type": "hero",
|
|
11
12
|
"data":
|
|
12
13
|
{
|
|
13
|
-
"eyebrow": "
|
|
14
|
-
"headline": "{
|
|
15
|
-
"subheadline": "{One sentence on the customers your product serves and the results they get}",
|
|
14
|
+
"eyebrow": "Customers",
|
|
15
|
+
"headline": "{Customers: who your product or service is for}",
|
|
16
|
+
"subheadline": "{One sentence on the customers your product or service serves and the results they get}",
|
|
16
17
|
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
18
|
"secondaryCta":
|
|
18
19
|
{
|
|
19
20
|
"label": "{Secondary CTA}",
|
|
20
|
-
"href": "/
|
|
21
|
+
"href": "/about",
|
|
21
22
|
"variant": "outline",
|
|
22
23
|
},
|
|
23
24
|
},
|
|
@@ -27,38 +28,38 @@ sections:
|
|
|
27
28
|
"type": "items",
|
|
28
29
|
"data":
|
|
29
30
|
{
|
|
30
|
-
"headline": "{The jobs customers hire your product to do}",
|
|
31
|
+
"headline": "{The jobs customers hire your product or service to do}",
|
|
31
32
|
"description": "{One sentence that helps a visitor find the use case that sounds like them}",
|
|
32
33
|
"columns": 3,
|
|
33
34
|
"items":
|
|
34
35
|
[
|
|
35
36
|
{
|
|
36
|
-
"title": "{
|
|
37
|
+
"title": "{Use case 1: the job this customer hires your product or service to do}",
|
|
37
38
|
"description": "{Two sentences on who this customer is and the result they get}",
|
|
38
39
|
"link":
|
|
39
40
|
{
|
|
40
41
|
"label": "Read the use case",
|
|
41
|
-
"href": "/
|
|
42
|
+
"href": "/for/persona-1",
|
|
42
43
|
"variant": "link",
|
|
43
44
|
},
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
|
-
"title": "{
|
|
47
|
+
"title": "{Use case 2: the job this customer hires your product or service to do}",
|
|
47
48
|
"description": "{Two sentences on who this customer is and the result they get}",
|
|
48
49
|
"link":
|
|
49
50
|
{
|
|
50
51
|
"label": "Read the use case",
|
|
51
|
-
"href": "/
|
|
52
|
+
"href": "/for/persona-2",
|
|
52
53
|
"variant": "link",
|
|
53
54
|
},
|
|
54
55
|
},
|
|
55
56
|
{
|
|
56
|
-
"title": "{
|
|
57
|
+
"title": "{Use case 3: the job this customer hires your product or service to do}",
|
|
57
58
|
"description": "{Two sentences on who this customer is and the result they get}",
|
|
58
59
|
"link":
|
|
59
60
|
{
|
|
60
61
|
"label": "Read the use case",
|
|
61
|
-
"href": "/
|
|
62
|
+
"href": "/for/persona-3",
|
|
62
63
|
"variant": "link",
|
|
63
64
|
},
|
|
64
65
|
},
|
|
@@ -107,15 +108,15 @@ sections:
|
|
|
107
108
|
"data":
|
|
108
109
|
{
|
|
109
110
|
"variant": "box",
|
|
110
|
-
"headline": "{Switch to your product in time amount or less}",
|
|
111
|
-
"description": "{You shouldn't have to experience a painful problem. With
|
|
111
|
+
"headline": "{Switch to your product or service in time amount or less}",
|
|
112
|
+
"description": "{You shouldn't have to experience a painful problem. With it, you can finally achieve a value outcome or get a big improvement.}",
|
|
112
113
|
"checklist":
|
|
113
114
|
["No credit card required", "Cancel any time", "Live chat support"],
|
|
114
115
|
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
115
116
|
"secondaryCta":
|
|
116
117
|
{
|
|
117
118
|
"label": "{Secondary CTA}",
|
|
118
|
-
"href": "/
|
|
119
|
+
"href": "/about",
|
|
119
120
|
"variant": "outline",
|
|
120
121
|
},
|
|
121
122
|
"closingLine": "{Social Proof goes here}",
|
|
@@ -167,4 +168,4 @@ sections:
|
|
|
167
168
|
]
|
|
168
169
|
---
|
|
169
170
|
|
|
170
|
-
{/* Rendered from frontmatter `sections[]` by the /
|
|
171
|
+
{/* Rendered from frontmatter `sections[]` by the /for route. The three cards link the UseCase pages at /for/<slug>, and their titles become the page's JSON-LD ItemList, so keep each card's title equal to its page's title. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @working-theory/database
|
|
2
2
|
|
|
3
|
+
## 0.29.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`dc86291`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/dc862915d1700d8566e3ca82591128e31a7570a9), [`346c3c1`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/346c3c1e8c405ead3080a2f7f6a828fee6d132a9), [`1dfc83e`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/1dfc83ec63e5dc6e862b131b14af2735f4914eb6), [`6ccd87d`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/6ccd87dbd56df3b886584b215f101af7e2fd68c4)]:
|
|
8
|
+
- @working-theory/validation@0.29.0
|
|
9
|
+
|
|
10
|
+
## 0.28.0
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [[`8955dbe`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/8955dbe57b720ed516858d2373cc1bba158612e1), [`8a786be`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/8a786be9e7f6292d7aee52891bbe3185508cf65e), [`c1b4538`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/c1b4538d1faafb6c9fd9e6376430cd58548e0959), [`ea782e2`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/ea782e29a4867af89d76ad4359f501ed04bea0e9), [`491c3ff`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/491c3ff4719abdc614fc87ef5943c760c2e8fc7b)]:
|
|
15
|
+
- @working-theory/validation@0.28.0
|
|
16
|
+
|
|
3
17
|
## 0.27.0
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/templates/package.json
CHANGED
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"db:seed": "pnpm --filter @working-theory/database run db:seed",
|
|
20
20
|
"db:studio": "pnpm --filter @working-theory/database run db:studio",
|
|
21
21
|
"architecture": "tsx tools/lint-architecture.ts",
|
|
22
|
-
"
|
|
22
|
+
"claude-md:check": "tsx tools/check-claude-md.ts",
|
|
23
|
+
"preflight": "pnpm architecture && pnpm claude-md:check && pnpm type-check && pnpm lint && pnpm build"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@changesets/changelog-github": "^0.7.0",
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* CLAUDE.md drift check — fails when a template-owned section was edited.
|
|
4
|
+
*
|
|
5
|
+
* This repo's root `CLAUDE.md` comes from AI Launch Kit. Each section between
|
|
6
|
+
* `<!-- ailk:template id="…" sha256="…" -->` and
|
|
7
|
+
* `<!-- /ailk:template id="…" -->` is template-owned, and its begin marker
|
|
8
|
+
* records the SHA-256 of the section's own text. This check re-hashes every
|
|
9
|
+
* section, so it needs no network and no create-ailk. Everything from the
|
|
10
|
+
* `<!-- ailk:site -->` line to the end of the file is yours and is never read.
|
|
11
|
+
*
|
|
12
|
+
* To change a template-owned section, put your change under Site notes
|
|
13
|
+
* instead; `pnpm create ailk@latest --sync-claude-md` restores the sections to
|
|
14
|
+
* the current template.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* pnpm claude-md:check # or: tsx tools/check-claude-md.ts
|
|
18
|
+
*
|
|
19
|
+
* Exit codes:
|
|
20
|
+
* 0 — every template section matches its recorded hash
|
|
21
|
+
* 1 — a section was edited, a marker is malformed, or the file is missing
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { createHash } from "node:crypto";
|
|
25
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
26
|
+
import { dirname, join, resolve } from "node:path";
|
|
27
|
+
|
|
28
|
+
const ROOT = resolve(dirname(process.argv[1] ?? "."), "..");
|
|
29
|
+
const SYNC = "run pnpm create ailk@latest --sync-claude-md";
|
|
30
|
+
|
|
31
|
+
const BEGIN_RE = /^<!-- ailk:template id="([^"]*)"(?: sha256="([^"]*)")? -->$/;
|
|
32
|
+
const END_RE = /^<!-- \/ailk:template id="([^"]*)" -->$/;
|
|
33
|
+
const ID_RE = /^[a-z][a-z0-9-]*$/;
|
|
34
|
+
const SHA_RE = /^[0-9a-f]{64}$/;
|
|
35
|
+
|
|
36
|
+
function hashBody(body: string): string {
|
|
37
|
+
return createHash("sha256").update(body.replace(/\r\n/g, "\n"), "utf8").digest("hex");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Every finding for `text`, one line each; empty means the file passes. */
|
|
41
|
+
function check(text: string): { findings: string[]; sections: number } {
|
|
42
|
+
const faults: string[] = [];
|
|
43
|
+
const unhashed: string[] = [];
|
|
44
|
+
const edited: string[] = [];
|
|
45
|
+
const seen = new Set<string>();
|
|
46
|
+
let open: { id: string; sha256: string | undefined; bodyStart: number } | undefined;
|
|
47
|
+
let marked = false;
|
|
48
|
+
let site = false;
|
|
49
|
+
let sections = 0;
|
|
50
|
+
|
|
51
|
+
let pos = 0;
|
|
52
|
+
while (pos < text.length) {
|
|
53
|
+
const nl = text.indexOf("\n", pos);
|
|
54
|
+
const next = nl === -1 ? text.length : nl + 1;
|
|
55
|
+
const line = text.slice(pos, nl === -1 ? text.length : nl).replace(/\r$/, "");
|
|
56
|
+
|
|
57
|
+
if (line === "<!-- ailk:site -->") {
|
|
58
|
+
marked = true;
|
|
59
|
+
site = true;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
const begin = BEGIN_RE.exec(line);
|
|
63
|
+
const end = END_RE.exec(line);
|
|
64
|
+
if (begin) {
|
|
65
|
+
marked = true;
|
|
66
|
+
const id = begin[1] ?? "";
|
|
67
|
+
const sha = begin[2];
|
|
68
|
+
if (!ID_RE.test(id)) faults.push(`invalid section id "${id}"`);
|
|
69
|
+
if (sha !== undefined && !SHA_RE.test(sha)) faults.push(`section "${id}" has a malformed sha256`);
|
|
70
|
+
if (open) {
|
|
71
|
+
faults.push(`nested region: section "${id}" opens inside section "${open.id}"`);
|
|
72
|
+
} else {
|
|
73
|
+
if (seen.has(id)) faults.push(`duplicate section id "${id}"`);
|
|
74
|
+
seen.add(id);
|
|
75
|
+
open = { id, sha256: sha, bodyStart: next };
|
|
76
|
+
}
|
|
77
|
+
} else if (end) {
|
|
78
|
+
marked = true;
|
|
79
|
+
const id = end[1] ?? "";
|
|
80
|
+
if (!open) {
|
|
81
|
+
faults.push(`unbalanced marker: end of section "${id}" has no begin marker`);
|
|
82
|
+
} else if (open.id !== id) {
|
|
83
|
+
faults.push(`unbalanced marker: section "${open.id}" is closed by an end marker for "${id}"`);
|
|
84
|
+
open = undefined;
|
|
85
|
+
} else {
|
|
86
|
+
sections += 1;
|
|
87
|
+
const body = text.slice(open.bodyStart, pos);
|
|
88
|
+
if (open.sha256 === undefined) {
|
|
89
|
+
unhashed.push(`begin marker of section "${id}" has no sha256`);
|
|
90
|
+
} else if (SHA_RE.test(open.sha256) && open.sha256 !== hashBody(body)) {
|
|
91
|
+
edited.push(id);
|
|
92
|
+
}
|
|
93
|
+
open = undefined;
|
|
94
|
+
}
|
|
95
|
+
} else if (/^<!-- \/?ailk:template\b/.test(line)) {
|
|
96
|
+
marked = true;
|
|
97
|
+
faults.push(`malformed marker line: ${line}`);
|
|
98
|
+
}
|
|
99
|
+
pos = next;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (!marked) return { findings: [`CLAUDE.md: no ailk:template markers — ${SYNC}`], sections };
|
|
103
|
+
if (open) faults.push(`unbalanced marker: section "${open.id}" has no end marker`);
|
|
104
|
+
if (!site) faults.push("no ailk:site marker");
|
|
105
|
+
// Unhashed markers follow the structural faults, the order create-ailk's
|
|
106
|
+
// own findDrift reports them in.
|
|
107
|
+
return {
|
|
108
|
+
findings: [
|
|
109
|
+
...[...faults, ...unhashed].map((f) => `CLAUDE.md: ${f}`),
|
|
110
|
+
...edited.map(
|
|
111
|
+
(id) =>
|
|
112
|
+
`CLAUDE.md: template section "${id}" was edited by hand — move your change to Site notes, then ${SYNC}`,
|
|
113
|
+
),
|
|
114
|
+
],
|
|
115
|
+
sections,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const path = join(ROOT, "CLAUDE.md");
|
|
120
|
+
const { findings, sections } = existsSync(path)
|
|
121
|
+
? check(readFileSync(path, "utf8"))
|
|
122
|
+
: { findings: ["CLAUDE.md: missing"], sections: 0 };
|
|
123
|
+
|
|
124
|
+
if (findings.length > 0) {
|
|
125
|
+
for (const finding of findings) console.error(finding);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
console.log(`claude-md: OK (${sections} template sections)`);
|
package/versions.json
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
"@working-theory/admin-ui": "0.
|
|
3
|
-
"@working-theory/aeo": "0.
|
|
4
|
-
"@working-theory/agent-context": "0.
|
|
2
|
+
"@working-theory/admin-ui": "0.29.0",
|
|
3
|
+
"@working-theory/aeo": "0.29.0",
|
|
4
|
+
"@working-theory/agent-context": "0.29.0",
|
|
5
5
|
"@working-theory/agent-contract": "0.1.0",
|
|
6
6
|
"@working-theory/agent-memory": "0.0.0",
|
|
7
7
|
"@working-theory/ai": "0.1.0",
|
|
8
|
-
"@working-theory/analytics": "0.
|
|
9
|
-
"@working-theory/api-client": "0.
|
|
8
|
+
"@working-theory/analytics": "0.29.0",
|
|
9
|
+
"@working-theory/api-client": "0.29.0",
|
|
10
10
|
"@working-theory/cda-filesystem": "0.0.0",
|
|
11
|
-
"@working-theory/cli": "0.
|
|
12
|
-
"@working-theory/common": "0.
|
|
11
|
+
"@working-theory/cli": "0.29.0",
|
|
12
|
+
"@working-theory/common": "0.29.0",
|
|
13
13
|
"@working-theory/consent": "0.1.0",
|
|
14
|
-
"@working-theory/content-adapters": "0.
|
|
15
|
-
"@working-theory/content-projection": "0.
|
|
16
|
-
"@working-theory/email": "0.
|
|
14
|
+
"@working-theory/content-adapters": "0.29.0",
|
|
15
|
+
"@working-theory/content-projection": "0.29.0",
|
|
16
|
+
"@working-theory/email": "0.29.0",
|
|
17
17
|
"@working-theory/env": "0.0.0",
|
|
18
|
-
"@working-theory/eslint-config": "0.
|
|
19
|
-
"@working-theory/fumadocs-schema": "0.
|
|
18
|
+
"@working-theory/eslint-config": "0.29.0",
|
|
19
|
+
"@working-theory/fumadocs-schema": "0.29.0",
|
|
20
20
|
"@working-theory/ids": "0.8.0",
|
|
21
|
-
"@working-theory/jsonld": "0.
|
|
22
|
-
"@working-theory/license": "0.
|
|
23
|
-
"@working-theory/metadata": "0.
|
|
24
|
-
"@working-theory/observability": "0.
|
|
25
|
-
"@working-theory/page-renderer": "0.
|
|
26
|
-
"@working-theory/schema": "0.
|
|
27
|
-
"@working-theory/schema-pack-registry": "0.
|
|
28
|
-
"@working-theory/schema-validator": "0.
|
|
29
|
-
"@working-theory/sections-registry": "0.
|
|
30
|
-
"@working-theory/site-config": "0.
|
|
31
|
-
"@working-theory/stripe-client": "0.
|
|
32
|
-
"@working-theory/templates": "0.
|
|
33
|
-
"@working-theory/theme": "0.
|
|
34
|
-
"@working-theory/ui": "0.
|
|
35
|
-
"@working-theory/validation": "0.
|
|
36
|
-
"@working-theory/web-i18n": "0.
|
|
21
|
+
"@working-theory/jsonld": "0.29.0",
|
|
22
|
+
"@working-theory/license": "0.29.0",
|
|
23
|
+
"@working-theory/metadata": "0.29.0",
|
|
24
|
+
"@working-theory/observability": "0.29.0",
|
|
25
|
+
"@working-theory/page-renderer": "0.29.0",
|
|
26
|
+
"@working-theory/schema": "0.29.0",
|
|
27
|
+
"@working-theory/schema-pack-registry": "0.29.0",
|
|
28
|
+
"@working-theory/schema-validator": "0.29.0",
|
|
29
|
+
"@working-theory/sections-registry": "0.29.0",
|
|
30
|
+
"@working-theory/site-config": "0.29.0",
|
|
31
|
+
"@working-theory/stripe-client": "0.29.0",
|
|
32
|
+
"@working-theory/templates": "0.29.0",
|
|
33
|
+
"@working-theory/theme": "0.29.0",
|
|
34
|
+
"@working-theory/ui": "0.29.0",
|
|
35
|
+
"@working-theory/validation": "0.29.0",
|
|
36
|
+
"@working-theory/web-i18n": "0.29.0",
|
|
37
37
|
"@working-theory/billing-client": "0.0.0",
|
|
38
38
|
"@working-theory/branding": "0.0.0",
|
|
39
39
|
"@working-theory/license-client": "0.0.0",
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
"@working-theory/marketing-api-client": "0.0.0",
|
|
42
42
|
"@working-theory/partner-session": "0.0.0",
|
|
43
43
|
"@working-theory/preview-protocol": "0.0.0",
|
|
44
|
-
"@working-theory/ui-commerce": "0.23.
|
|
45
|
-
"@working-theory/ui-docs-blog": "0.23.
|
|
46
|
-
"@working-theory/ui-scheduling": "0.23.
|
|
47
|
-
"@working-theory/ui-signal-collectors": "0.24.
|
|
44
|
+
"@working-theory/ui-commerce": "0.23.6",
|
|
45
|
+
"@working-theory/ui-docs-blog": "0.23.6",
|
|
46
|
+
"@working-theory/ui-scheduling": "0.23.6",
|
|
47
|
+
"@working-theory/ui-signal-collectors": "0.24.4",
|
|
48
48
|
"@working-theory/web": "0.0.0",
|
|
49
49
|
"@working-theory/api": "1.0.0",
|
|
50
50
|
"@working-theory/mcp": "0.0.0",
|
|
51
|
-
"@working-theory/database": "0.
|
|
51
|
+
"@working-theory/database": "0.29.0"
|
|
52
52
|
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: "BookCall"
|
|
3
|
-
slug: "book-call"
|
|
4
|
-
title: "{Book a call: what a visitor gets from it}"
|
|
5
|
-
description: "{One sentence on who the call is for and what they leave with}"
|
|
6
|
-
placeholder: true
|
|
7
|
-
schema:
|
|
8
|
-
mainEntity:
|
|
9
|
-
"@type": "Offer"
|
|
10
|
-
name: "{Your call name}"
|
|
11
|
-
price: 0
|
|
12
|
-
priceCurrency: "USD"
|
|
13
|
-
sections:
|
|
14
|
-
[
|
|
15
|
-
{
|
|
16
|
-
"id": "hero",
|
|
17
|
-
"type": "hero",
|
|
18
|
-
"data":
|
|
19
|
-
{
|
|
20
|
-
"eyebrow": "Book a call",
|
|
21
|
-
"headline": "{Book a call: what a visitor gets from it}",
|
|
22
|
-
"subheadline": "{One sentence on who the call is for and what they leave with}",
|
|
23
|
-
"primaryCta": { "label": "Get in touch", "href": "/contact" },
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"id": "what-happens-on-the-call",
|
|
28
|
-
"type": "items",
|
|
29
|
-
"data":
|
|
30
|
-
{
|
|
31
|
-
"headline": "What happens on the call?",
|
|
32
|
-
"columns": 3,
|
|
33
|
-
"items":
|
|
34
|
-
[
|
|
35
|
-
{
|
|
36
|
-
"title": "{The first thing you cover}",
|
|
37
|
-
"description": "{One or two sentences on what the visitor learns or decides here}",
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"title": "{The second thing you cover}",
|
|
41
|
-
"description": "{One or two sentences on what the visitor learns or decides here}",
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"title": "{The next step you agree}",
|
|
45
|
-
"description": "{One or two sentences on what happens after the call}",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
]
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
{/* Rendered from frontmatter `sections[]` by the /book-a-call route. The call to action sends visitors to your contact page; a template that carries the scheduling module overrides this file to point it at the /meet booker. The `schema:` Offer is the page's JSON-LD main entity — a free call. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: "UseCase"
|
|
3
|
-
slug: "first-use-case"
|
|
4
|
-
title: "{First use case: the job a customer hires your product to do}"
|
|
5
|
-
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
|
-
placeholder: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## \{The situation\}
|
|
10
|
-
|
|
11
|
-
\{Describe the customer before they found your product: who they are, what
|
|
12
|
-
they were trying to get done, and what made it hard. Two or three sentences.\}
|
|
13
|
-
|
|
14
|
-
## \{How they use your product\}
|
|
15
|
-
|
|
16
|
-
- \{The first thing they do with your product\}
|
|
17
|
-
- \{The second thing they do with your product\}
|
|
18
|
-
- \{The third thing they do with your product\}
|
|
19
|
-
|
|
20
|
-
## \{The result\}
|
|
21
|
-
|
|
22
|
-
\{One paragraph on what changed for them, with one concrete number if you
|
|
23
|
-
have one. Placeholder copy — replace every brace before you launch.\}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: "UseCase"
|
|
3
|
-
slug: "second-use-case"
|
|
4
|
-
title: "{Second use case: the job a customer hires your product to do}"
|
|
5
|
-
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
|
-
placeholder: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## \{The situation\}
|
|
10
|
-
|
|
11
|
-
\{Describe the customer before they found your product: who they are, what
|
|
12
|
-
they were trying to get done, and what made it hard. Two or three sentences.\}
|
|
13
|
-
|
|
14
|
-
## \{How they use your product\}
|
|
15
|
-
|
|
16
|
-
- \{The first thing they do with your product\}
|
|
17
|
-
- \{The second thing they do with your product\}
|
|
18
|
-
- \{The third thing they do with your product\}
|
|
19
|
-
|
|
20
|
-
## \{The result\}
|
|
21
|
-
|
|
22
|
-
\{One paragraph on what changed for them, with one concrete number if you
|
|
23
|
-
have one. Placeholder copy — replace every brace before you launch.\}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: "UseCase"
|
|
3
|
-
slug: "third-use-case"
|
|
4
|
-
title: "{Third use case: the job a customer hires your product to do}"
|
|
5
|
-
description: "{Two sentences on who this customer is and the result they get}"
|
|
6
|
-
placeholder: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## \{The situation\}
|
|
10
|
-
|
|
11
|
-
\{Describe the customer before they found your product: who they are, what
|
|
12
|
-
they were trying to get done, and what made it hard. Two or three sentences.\}
|
|
13
|
-
|
|
14
|
-
## \{How they use your product\}
|
|
15
|
-
|
|
16
|
-
- \{The first thing they do with your product\}
|
|
17
|
-
- \{The second thing they do with your product\}
|
|
18
|
-
- \{The third thing they do with your product\}
|
|
19
|
-
|
|
20
|
-
## \{The result\}
|
|
21
|
-
|
|
22
|
-
\{One paragraph on what changed for them, with one concrete number if you
|
|
23
|
-
have one. Placeholder copy — replace every brace before you launch.\}
|