create-ailk 0.6.1 → 0.8.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 +87 -14
- package/component-catalog.json +735 -95
- package/component-catalog.md +13 -7
- package/dist/add-module-core.d.ts +22 -0
- package/dist/add-module-core.js +50 -0
- package/dist/add-module.d.ts +89 -0
- package/dist/add-module.js +334 -0
- package/dist/category-profile.d.ts +126 -0
- package/dist/category-profile.js +262 -0
- package/dist/cli.js +89 -29
- package/dist/index.d.ts +4 -2
- package/dist/index.js +6 -1
- package/dist/lib/extract-module-bundle.d.ts +56 -1
- package/dist/lib/extract-module-bundle.js +170 -14
- package/dist/lib/license-key-files.d.ts +15 -0
- package/dist/lib/license-key-files.js +102 -0
- package/dist/lib/module-license-gate.d.ts +79 -0
- package/dist/lib/module-license-gate.js +160 -12
- package/dist/lib/module-tier.d.ts +45 -16
- package/dist/lib/module-tier.js +76 -0
- package/dist/lib/pro-callout.d.ts +16 -10
- package/dist/lib/pro-callout.js +34 -3
- package/dist/license-set.d.ts +34 -0
- package/dist/license-set.js +194 -0
- package/dist/module-architecture.d.ts +20 -0
- package/dist/module-architecture.js +77 -19
- package/dist/modules/commerce/0.6.1.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
- package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
- package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
- package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
- package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
- package/dist/modules/workspace/0.6.1.tar.gz +0 -0
- package/dist/parse-args.d.ts +85 -10
- package/dist/parse-args.js +227 -15
- package/dist/programmatic.d.ts +81 -5
- package/dist/programmatic.js +291 -32
- package/dist/site-chrome.d.ts +18 -7
- package/dist/site-chrome.js +32 -14
- package/dist/site-roster.d.ts +127 -0
- package/dist/site-roster.js +499 -0
- package/dist/starter-grid.d.ts +216 -0
- package/dist/starter-grid.js +449 -0
- package/dist/surfaces.d.ts +20 -7
- package/dist/surfaces.js +204 -24
- package/dist/sync-routes.d.ts +9 -0
- package/dist/sync-routes.js +2 -2
- package/dist/template-manifest.d.ts +94 -19
- package/dist/template-manifest.js +170 -289
- package/dist/template-names.d.ts +14 -12
- package/dist/template-names.js +13 -17
- package/package.json +6 -4
- package/site-templates/_base/content/en/BookCall/book-call.mdx +52 -0
- 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 +65 -0
- package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +67 -0
- 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/Pricing/pricing.mdx +71 -62
- package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +17 -3
- package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +69 -0
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +69 -0
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +69 -0
- package/site-templates/designs/minimalism/DESIGN.md +162 -0
- package/site-templates/designs/standard/DESIGN.md +167 -0
- package/site-templates/marketing-site/DESIGN.md +59 -40
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +376 -57
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +230 -90
- package/site-templates/marketing-site/ailk-template.json +1 -0
- package/site-templates/marketing-site-free/DESIGN.md +59 -40
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +323 -63
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +323 -113
- package/site-templates/marketing-site-free/ailk-template.json +3 -2
- 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/minimalism-site/DESIGN.md +54 -40
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +173 -51
- package/site-templates/minimalism-site/ailk-template.json +3 -2
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +52 -0
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
- package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/saas-product/DESIGN.md +59 -40
- package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +369 -0
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +302 -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/shapes/local-business-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- 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 +362 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +300 -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/shapes/organization-service/content/en/Service/first-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/ServicesList/services.mdx +72 -0
- package/site-templates/shapes/organization-service/provenance.json +4 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +369 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +299 -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 +169 -0
- package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- 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/settings.json +15 -0
- package/templates/.claude/skills/README.md +10 -9
- package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
- package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
- package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
- package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
- package/templates/.claude/skills/add-page/references/page-types.md +115 -0
- package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
- package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
- package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
- package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
- package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
- package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
- package/templates/.claude/skills/fill-page/SKILL.md +180 -0
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
- package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
- 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/{provision-config → setup-deploy}/SKILL.md +73 -41
- package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +21 -30
- package/templates/.claude/skills/setup-deploy/references/runbook-template.md +204 -0
- package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
- package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
- package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
- package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
- package/templates/.github/workflows/ci.yml +5 -0
- package/templates/CLAUDE.md +8 -2
- package/templates/DESIGN.md +56 -44
- package/templates/README.md +116 -46
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/CLAUDE.md +3 -2
- package/templates/apps/api/package.json +1 -1
- package/templates/apps/api/src/config/__tests__/index.test.ts +146 -10
- package/templates/apps/api/src/config/index.ts +46 -14
- 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/license-key-store.ts +45 -0
- package/templates/apps/api/src/lib/site.ts +5 -3
- package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
- package/templates/apps/api/src/middleware/auth.ts +9 -0
- package/templates/apps/api/src/openapi/spec.ts +63 -12
- package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
- package/templates/apps/api/src/routes/content/get-page.ts +86 -2
- 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/server.ts +13 -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/lead-routing.ts +140 -30
- package/templates/apps/api/src/services/leads-inbox.ts +48 -11
- package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
- package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
- package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
- package/templates/apps/mcp/package.json +2 -1
- package/templates/apps/mcp/src/index.ts +7 -0
- package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
- package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
- package/templates/apps/mcp/src/tools/create_project.ts +21 -6
- package/templates/apps/web/__tests__/setup.ts +18 -0
- package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
- package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
- package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
- package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
- package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
- package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
- package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +67 -29
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +94 -11
- 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 +228 -86
- 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 +115 -7
- package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
- package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
- 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]/glossary/page.tsx +50 -0
- package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/layout.tsx +146 -52
- 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 +142 -0
- package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
- package/templates/apps/web/app/[locale]/portfolio/page.tsx +49 -0
- package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
- package/templates/apps/web/app/[locale]/{cancellation → purchase-policy}/page.tsx +15 -10
- package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
- package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
- package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +63 -0
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
- package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
- package/templates/apps/web/app/error-fallback.tsx +17 -45
- package/templates/apps/web/app/not-found.tsx +14 -38
- package/templates/apps/web/app/og/route.tsx +6 -0
- package/templates/apps/web/eslint.config.mjs +3 -0
- package/templates/apps/web/instrumentation.ts +14 -0
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
- package/templates/apps/web/lib/license-key-store.ts +52 -0
- package/templates/apps/web/lib/nav-config.ts +82 -18
- package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
- package/templates/apps/web/lib/site-brand.tsx +1 -1
- package/templates/apps/web/lib/site-chrome.ts +3 -3
- package/templates/apps/web/lib/site-identity.ts +148 -0
- package/templates/apps/web/lib/site-theme.ts +11 -0
- package/templates/apps/web/messages/en.json +78 -37
- package/templates/apps/web/public/android-chrome-192x192.png +0 -0
- package/templates/apps/web/public/android-chrome-512x512.png +0 -0
- package/templates/apps/web/public/apple-touch-icon.png +0 -0
- package/templates/apps/web/public/favicon-16x16.png +0 -0
- package/templates/apps/web/public/favicon-32x32.png +0 -0
- package/templates/apps/web/public/favicon.ico +0 -0
- package/templates/apps/web/public/favicon.svg +3 -3
- package/templates/apps/web/public/logomark.svg +6 -3
- package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
- package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
- package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
- package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
- package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
- package/templates/apps/web/public/logos/salessmyth.svg +4 -0
- package/templates/apps/web/public/site.webmanifest +4 -4
- package/templates/apps/web/public/wordmark-light.svg +4 -0
- package/templates/apps/web/public/wordmark.svg +3 -3
- package/templates/apps/web/security-headers.config.ts +5 -1
- package/templates/content/_site.mdx +25 -0
- package/templates/content/en/AboutPage/about.mdx +150 -144
- package/templates/content/en/BlogList/blog.mdx +126 -0
- package/templates/content/en/ContactPage/contact.mdx +21 -92
- package/templates/content/en/FAQPage/faq.mdx +86 -57
- package/templates/content/en/HomePage/home.mdx +268 -217
- package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +181 -0
- package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
- package/templates/database/CHANGELOG.md +14 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +3 -1
- package/templates/tools/lint-architecture.ts +315 -0
- package/templates/tools/tsconfig.json +14 -0
- package/versions.json +33 -33
- package/site-templates/simple-service/DESIGN.md +0 -148
- package/site-templates/simple-service/TEMPLATE-MANIFEST.json +0 -240
- package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -278
- package/site-templates/simple-service/ailk-template.json +0 -10
- package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -67
- 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-schema/SKILL.md +0 -277
- package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
- package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
- package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
- package/templates/.claude/skills/provision-config/references/runbook-template.md +0 -248
- package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
- package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
- package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -150
- package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
- package/templates/apps/web/app/[locale]/shipping/page.tsx +0 -44
- package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
- package/templates/content/en/LandingPage/blog.mdx +0 -83
- package/templates/content/en/LandingPage/features.mdx +0 -103
- package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
- package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
- package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "PortfolioList"
|
|
3
|
+
slug: "portfolio"
|
|
4
|
+
title: "{Before and after, compared} | {Your Name}"
|
|
5
|
+
description: "{Every project shown as a comparison — what the client had, what they have now, and what changed in between.}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "cases-hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"variant": "default",
|
|
14
|
+
"size": "display",
|
|
15
|
+
"surface": "wash-secondary",
|
|
16
|
+
"gapBelow": "tight",
|
|
17
|
+
"eyebrow": "{Portfolio}",
|
|
18
|
+
"eyebrowTone": "brand",
|
|
19
|
+
"headline": "{My work, before and after.}",
|
|
20
|
+
"subheadline": "{Two or three sentences on why the comparison is the honest proof — what the before cost the client, what the after changed, and how a reader can check it.}",
|
|
21
|
+
"subtitleSize": "lead",
|
|
22
|
+
"ctaSize": "xl",
|
|
23
|
+
"primaryCta": { "label": "{Book a call}", "href": "/book-a-call" },
|
|
24
|
+
"secondaryCta": { "label": "{Get in touch}", "href": "/contact" },
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "cases-tiles",
|
|
29
|
+
"type": "items",
|
|
30
|
+
"data":
|
|
31
|
+
{
|
|
32
|
+
"variant": "tile",
|
|
33
|
+
"tileHover": "outline",
|
|
34
|
+
"columns": 2,
|
|
35
|
+
"surface": "none",
|
|
36
|
+
"items":
|
|
37
|
+
[
|
|
38
|
+
{
|
|
39
|
+
"title": "{Example one}: before and after",
|
|
40
|
+
"description": "{One sentence on what example one had, and what they have now}",
|
|
41
|
+
"rows":
|
|
42
|
+
[
|
|
43
|
+
{
|
|
44
|
+
"label": "THE CLIENT",
|
|
45
|
+
"body": "{Who they are and the market they sell into}",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"label": "WHAT CHANGED",
|
|
49
|
+
"body": "{The one thing the after does that the before could not}",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
"link":
|
|
53
|
+
{
|
|
54
|
+
"label": "See the comparison →",
|
|
55
|
+
"href": "/portfolio/sample-one",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"title": "{Example two}: before and after",
|
|
60
|
+
"description": "{One sentence on what example two had, and what they have now}",
|
|
61
|
+
"rows":
|
|
62
|
+
[
|
|
63
|
+
{
|
|
64
|
+
"label": "THE CLIENT",
|
|
65
|
+
"body": "{Who they are and the market they sell into}",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"label": "WHAT CHANGED",
|
|
69
|
+
"body": "{The one thing the after does that the before could not}",
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
"link":
|
|
73
|
+
{
|
|
74
|
+
"label": "See the comparison →",
|
|
75
|
+
"href": "/portfolio/sample-two",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"title": "{Example three}: before and after",
|
|
80
|
+
"description": "{One sentence on what example three had, and what they have now}",
|
|
81
|
+
"rows":
|
|
82
|
+
[
|
|
83
|
+
{
|
|
84
|
+
"label": "THE CLIENT",
|
|
85
|
+
"body": "{Who they are and the market they sell into}",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"label": "WHAT CHANGED",
|
|
89
|
+
"body": "{The one thing the after does that the before could not}",
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
"link":
|
|
93
|
+
{
|
|
94
|
+
"label": "See the comparison →",
|
|
95
|
+
"href": "/portfolio/sample-three",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"title": "{Example four}: before and after",
|
|
100
|
+
"description": "{One sentence on what example four had, and what they have now}",
|
|
101
|
+
"rows":
|
|
102
|
+
[
|
|
103
|
+
{
|
|
104
|
+
"label": "THE CLIENT",
|
|
105
|
+
"body": "{Who they are and the market they sell into}",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"label": "WHAT CHANGED",
|
|
109
|
+
"body": "{The one thing the after does that the before could not}",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
"link":
|
|
113
|
+
{
|
|
114
|
+
"label": "See the comparison →",
|
|
115
|
+
"href": "/portfolio/sample-four",
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "cases-close",
|
|
123
|
+
"type": "cta",
|
|
124
|
+
"data":
|
|
125
|
+
{
|
|
126
|
+
"variant": "beam",
|
|
127
|
+
"headline": "{Is your project the before or the after?}",
|
|
128
|
+
"description": "{One line offering the reader the same comparison for their own project.}",
|
|
129
|
+
"primaryCta": { "label": "{Book a call}", "href": "/book-a-call" },
|
|
130
|
+
"secondaryCta": { "label": "{Get in touch}", "href": "/contact" },
|
|
131
|
+
"chips":
|
|
132
|
+
[
|
|
133
|
+
"{Proof you can check}",
|
|
134
|
+
"{Every project shown both ways}",
|
|
135
|
+
"{Re-checked every quarter}",
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "cases-faq",
|
|
141
|
+
"type": "faq",
|
|
142
|
+
"data":
|
|
143
|
+
{
|
|
144
|
+
"headline": "Frequently Asked Questions",
|
|
145
|
+
"variant": "centered",
|
|
146
|
+
"presentation": "accordion",
|
|
147
|
+
"questionSize": "body-lg",
|
|
148
|
+
"initialOpen": "first",
|
|
149
|
+
"containerWidth": "default",
|
|
150
|
+
"surface": "gray-100",
|
|
151
|
+
"items":
|
|
152
|
+
[
|
|
153
|
+
{
|
|
154
|
+
"question": "{How do you pick which projects to show?}",
|
|
155
|
+
"answer": "{Two or three sentences.}",
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"question": "{Are the before screenshots real?}",
|
|
159
|
+
"answer": "{Two or three sentences.}",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"question": "{Can I see the numbers behind a comparison?}",
|
|
163
|
+
"answer": "{Two or three sentences.}",
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
]
|
|
169
|
+
---
|
package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "PurchasePolicyPage"
|
|
3
|
+
slug: "purchase-policy"
|
|
4
|
+
title: "Purchase Policy"
|
|
5
|
+
description: "How cancellations, reschedules and refunds work for engagements booked on this site. Placeholder policy — replace every section before you launch."
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "purchase-policy-document",
|
|
10
|
+
"type": "document-chassis",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"headline": "Purchase Policy",
|
|
14
|
+
"layout": "article",
|
|
15
|
+
"updated": "Last updated {Month Day, Year}",
|
|
16
|
+
"navGroupLabel": "Contents",
|
|
17
|
+
"sections":
|
|
18
|
+
[
|
|
19
|
+
{
|
|
20
|
+
"id": "cancellation",
|
|
21
|
+
"heading": "Cancellation",
|
|
22
|
+
"blocks":
|
|
23
|
+
[
|
|
24
|
+
{
|
|
25
|
+
"kind": "paragraph",
|
|
26
|
+
"text": "This page is starter content that shipped with your site. It is not a purchase policy, it makes no commitment on behalf of Your Name, and it is not legal advice. Replace every section with the policy you actually operate, and have someone qualified read it before you publish.",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"kind": "paragraph",
|
|
30
|
+
"text": "This section explains how cancellations and reschedules work for engagements booked on this site. The headings are the ones a client and an agent both look for, so keep them and fill in your own terms.",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
"subsections":
|
|
34
|
+
[
|
|
35
|
+
{
|
|
36
|
+
"id": "notice",
|
|
37
|
+
"heading": "How much notice is required",
|
|
38
|
+
"blocks":
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
"kind": "paragraph",
|
|
42
|
+
"text": "State the notice period in hours before the session, and say how it is measured. A client reading at midnight should be able to work out, without arithmetic you have not shown them, whether they are still inside it.",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "how-to-cancel",
|
|
48
|
+
"heading": "How to cancel or reschedule",
|
|
49
|
+
"blocks":
|
|
50
|
+
[
|
|
51
|
+
{
|
|
52
|
+
"kind": "paragraph",
|
|
53
|
+
"text": "Give one route to cancel and one to reschedule, and say whether a reschedule inside the notice period counts as a cancellation. If a booking confirmation carries a self-service link, name it here.",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "fees",
|
|
59
|
+
"heading": "Late cancellations and no-shows",
|
|
60
|
+
"blocks":
|
|
61
|
+
[
|
|
62
|
+
{
|
|
63
|
+
"kind": "paragraph",
|
|
64
|
+
"text": "Say what a late cancellation costs and what a no-show costs, as a figure or a share of the engagement, and when each is charged. If you hold a deposit, say what happens to it in each case.",
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "our-cancellations",
|
|
70
|
+
"heading": "If I cancel",
|
|
71
|
+
"blocks":
|
|
72
|
+
[
|
|
73
|
+
{
|
|
74
|
+
"kind": "paragraph",
|
|
75
|
+
"text": "Set out what a client gets if you cancel or move a session — a full refund, a rebooking, or both — and how quickly you tell them. A policy that only binds one side reads as one.",
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "exceptions",
|
|
81
|
+
"heading": "Exceptions",
|
|
82
|
+
"blocks":
|
|
83
|
+
[
|
|
84
|
+
{
|
|
85
|
+
"kind": "paragraph",
|
|
86
|
+
"text": "Name the circumstances in which you waive a fee — illness, bereavement, severe weather — and say what you need from the client to apply the waiver. Vague discretion is worse for you than a short written list.",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "refunds",
|
|
94
|
+
"heading": "Refunds",
|
|
95
|
+
"blocks":
|
|
96
|
+
[
|
|
97
|
+
{
|
|
98
|
+
"kind": "paragraph",
|
|
99
|
+
"text": "Say what a client gets back after a cancellation — the session price, the deposit, or both, and how long the refund takes to reach the payment method it came from. If you offer credit toward a future engagement instead, describe when that applies.",
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
"subsections":
|
|
103
|
+
[
|
|
104
|
+
{
|
|
105
|
+
"id": "questions",
|
|
106
|
+
"heading": "Questions about a refund",
|
|
107
|
+
"blocks":
|
|
108
|
+
[
|
|
109
|
+
{
|
|
110
|
+
"kind": "paragraph",
|
|
111
|
+
"text": "Point to the one place a client should write, and say roughly how quickly you answer. A policy nobody can ask a question about is a policy that generates disputes.",
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
]
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
{/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Service shape (#6646): cancellation and refunds — this template's override of the `_base` product-shape seed. The JSON-LD — a WebPage, wrapping a MerchantReturnPolicy when a returns section is present — is emitted by `buildPurchasePolicyPage` (#6646), not hand-rolled here. */}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Service"
|
|
3
|
+
slug: "first-engagement"
|
|
4
|
+
title: "{First engagement}"
|
|
5
|
+
description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
|
|
6
|
+
schema:
|
|
7
|
+
serviceType: "{First engagement}"
|
|
8
|
+
provider:
|
|
9
|
+
"@type": Person
|
|
10
|
+
name: "Your Name"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# {First engagement}
|
|
14
|
+
|
|
15
|
+
{Open with the situation a reader is in when they come looking for this. Two or
|
|
16
|
+
three sentences, no more — the detail belongs under the headings below.}
|
|
17
|
+
|
|
18
|
+
## What it covers
|
|
19
|
+
|
|
20
|
+
- {The first thing you actually do}
|
|
21
|
+
- {The second thing you actually do}
|
|
22
|
+
- {The third thing you actually do}
|
|
23
|
+
|
|
24
|
+
## How it runs
|
|
25
|
+
|
|
26
|
+
{One paragraph on the shape of the engagement: how it starts, how long it runs,
|
|
27
|
+
who is involved, and what a week looks like.}
|
|
28
|
+
|
|
29
|
+
## What you end up with
|
|
30
|
+
|
|
31
|
+
{One paragraph on the deliverable. Be concrete — name the artefact, not the
|
|
32
|
+
feeling.}
|
|
33
|
+
|
|
34
|
+
## What it costs
|
|
35
|
+
|
|
36
|
+
{One line on the pricing shape — fixed fee, retainer, day rate — and what it
|
|
37
|
+
excludes. Replace with your real numbers, or delete this section and let the
|
|
38
|
+
call do it.}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Service"
|
|
3
|
+
slug: "second-engagement"
|
|
4
|
+
title: "{Second engagement}"
|
|
5
|
+
description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
|
|
6
|
+
schema:
|
|
7
|
+
serviceType: "{Second engagement}"
|
|
8
|
+
provider:
|
|
9
|
+
"@type": Person
|
|
10
|
+
name: "Your Name"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# {Second engagement}
|
|
14
|
+
|
|
15
|
+
{Open with the situation a reader is in when they come looking for this. Two or
|
|
16
|
+
three sentences, no more — the detail belongs under the headings below.}
|
|
17
|
+
|
|
18
|
+
## What it covers
|
|
19
|
+
|
|
20
|
+
- {The first thing you actually do}
|
|
21
|
+
- {The second thing you actually do}
|
|
22
|
+
- {The third thing you actually do}
|
|
23
|
+
|
|
24
|
+
## How it runs
|
|
25
|
+
|
|
26
|
+
{One paragraph on the shape of the engagement: how it starts, how long it runs,
|
|
27
|
+
who is involved, and what a week looks like.}
|
|
28
|
+
|
|
29
|
+
## What you end up with
|
|
30
|
+
|
|
31
|
+
{One paragraph on the deliverable. Be concrete — name the artefact, not the
|
|
32
|
+
feeling.}
|
|
33
|
+
|
|
34
|
+
## What it costs
|
|
35
|
+
|
|
36
|
+
{One line on the pricing shape — fixed fee, retainer, day rate — and what it
|
|
37
|
+
excludes. Replace with your real numbers, or delete this section and let the
|
|
38
|
+
call do it.}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Service"
|
|
3
|
+
slug: "third-engagement"
|
|
4
|
+
title: "{Third engagement}"
|
|
5
|
+
description: "{One line on what this engagement is and who it suits. Replace before you launch.}"
|
|
6
|
+
schema:
|
|
7
|
+
serviceType: "{Third engagement}"
|
|
8
|
+
provider:
|
|
9
|
+
"@type": Person
|
|
10
|
+
name: "Your Name"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# {Third engagement}
|
|
14
|
+
|
|
15
|
+
{Open with the situation a reader is in when they come looking for this. Two or
|
|
16
|
+
three sentences, no more — the detail belongs under the headings below.}
|
|
17
|
+
|
|
18
|
+
## What it covers
|
|
19
|
+
|
|
20
|
+
- {The first thing you actually do}
|
|
21
|
+
- {The second thing you actually do}
|
|
22
|
+
- {The third thing you actually do}
|
|
23
|
+
|
|
24
|
+
## How it runs
|
|
25
|
+
|
|
26
|
+
{One paragraph on the shape of the engagement: how it starts, how long it runs,
|
|
27
|
+
who is involved, and what a week looks like.}
|
|
28
|
+
|
|
29
|
+
## What you end up with
|
|
30
|
+
|
|
31
|
+
{One paragraph on the deliverable. Be concrete — name the artefact, not the
|
|
32
|
+
feeling.}
|
|
33
|
+
|
|
34
|
+
## What it costs
|
|
35
|
+
|
|
36
|
+
{One line on the pricing shape — fixed fee, retainer, day rate — and what it
|
|
37
|
+
excludes. Replace with your real numbers, or delete this section and let the
|
|
38
|
+
call do it.}
|
package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
type: "ServicesList"
|
|
3
3
|
slug: "services"
|
|
4
4
|
title: "Services"
|
|
5
|
-
description: "The three
|
|
5
|
+
description: "The three engagements {Your Name} offers. Placeholder copy — replace before you launch."
|
|
6
6
|
sections:
|
|
7
7
|
[
|
|
8
8
|
{
|
|
@@ -12,44 +12,44 @@ sections:
|
|
|
12
12
|
{
|
|
13
13
|
"variant": "centered",
|
|
14
14
|
"eyebrow": "Services",
|
|
15
|
-
"headline": "Three
|
|
15
|
+
"headline": "Three ways to work together",
|
|
16
16
|
"subheadline": "{One line on how to choose between them. Name the question a reader is actually asking.}",
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
"id": "
|
|
20
|
+
"id": "engagements",
|
|
21
21
|
"type": "items",
|
|
22
22
|
"data":
|
|
23
23
|
{
|
|
24
|
-
"headline": "
|
|
24
|
+
"headline": "Engagements",
|
|
25
25
|
"columns": 3,
|
|
26
26
|
"items":
|
|
27
27
|
[
|
|
28
28
|
{
|
|
29
|
-
"title": "{
|
|
30
|
-
"description": "{One line on
|
|
29
|
+
"title": "{First engagement}",
|
|
30
|
+
"description": "{One line on what it is and who it suits.}",
|
|
31
31
|
"link":
|
|
32
32
|
{
|
|
33
33
|
"label": "Read more",
|
|
34
|
-
"href": "/services/
|
|
34
|
+
"href": "/services/first-engagement",
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
"title": "{
|
|
39
|
-
"description": "{One line on
|
|
38
|
+
"title": "{Second engagement}",
|
|
39
|
+
"description": "{One line on what it is and who it suits.}",
|
|
40
40
|
"link":
|
|
41
41
|
{
|
|
42
42
|
"label": "Read more",
|
|
43
|
-
"href": "/services/
|
|
43
|
+
"href": "/services/second-engagement",
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
-
"title": "{
|
|
48
|
-
"description": "{One line on
|
|
47
|
+
"title": "{Third engagement}",
|
|
48
|
+
"description": "{One line on what it is and who it suits.}",
|
|
49
49
|
"link":
|
|
50
50
|
{
|
|
51
51
|
"label": "Read more",
|
|
52
|
-
"href": "/services/
|
|
52
|
+
"href": "/services/third-engagement",
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
],
|
|
@@ -62,11 +62,11 @@ sections:
|
|
|
62
62
|
{
|
|
63
63
|
"variant": "minimal",
|
|
64
64
|
"headline": "Not sure which one?",
|
|
65
|
-
"description": "{One line inviting the reader to
|
|
66
|
-
"primaryCta": { "label": "Book a
|
|
65
|
+
"description": "{One line inviting the reader to ask instead of guessing.}",
|
|
66
|
+
"primaryCta": { "label": "Book a call", "href": "/book-a-call" },
|
|
67
67
|
},
|
|
68
68
|
},
|
|
69
69
|
]
|
|
70
70
|
---
|
|
71
71
|
|
|
72
|
-
Placeholder copy. The three detail pages under `content/en/Service/` carry the long form
|
|
72
|
+
Placeholder copy. The three detail pages under `content/en/Service/` carry the long form; this page is the chooser.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PostToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Edit|Write",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "cd \"$CLAUDE_PROJECT_DIR\" && [ -x node_modules/.bin/tsx ] || exit 0; pnpm --silent architecture >&2 || exit 2"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -4,19 +4,20 @@ Skills are reusable Claude Code workflows scoped to this project. Each
|
|
|
4
4
|
lives in its own subdirectory with a `SKILL.md` describing when to use
|
|
5
5
|
it and how it works.
|
|
6
6
|
|
|
7
|
-
The
|
|
7
|
+
The seven skills below ship with this project. Claude Code discovers
|
|
8
8
|
them automatically at session start — nothing to install or enable.
|
|
9
9
|
|
|
10
10
|
## Available skills
|
|
11
11
|
|
|
12
|
-
| Skill
|
|
13
|
-
|
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
12
|
+
| Skill | Purpose |
|
|
13
|
+
| -------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| `add-page` | Generate a new page: App Router route + MDX content stub + typed JSON-LD, in one confirm-before-write pass. Also documents the `schema:` frontmatter override for adding supplementary structured data to a page that already exists. |
|
|
15
|
+
| `add-auth` | Activate auth providers — magic-link via Resend, Google OAuth, GitHub OAuth. |
|
|
16
|
+
| `setup-deploy` | Emit deploy configuration — `vercel.json`, `.env.example`, and `RUNBOOK.md` — for a Vercel deploy. Asks where leads go (email or a database) and warns when neither is set. |
|
|
17
|
+
| `setup-database` | Take the site from no database to a working lead inbox: provision Postgres, create the tables, pin the owner, and verify one test message lands in `/leads`. |
|
|
18
|
+
| `check-site` | Run `ailk-audit --json` and explain the score and findings in plain language. |
|
|
19
|
+
| `fill-page` | Fill one page's section content from a category profile: labelled sample content (tier 1) or your own first draft from a short intake (tier 2). |
|
|
20
|
+
| `upgrade-plan` | Compare Free, Pro, Pro Plus, Agency and the commerce add-on side by side, with the prices the public pricing page publishes right now, and recommend one option for this site with a reason. |
|
|
20
21
|
|
|
21
22
|
`scaffold-commerce` is delivered with the commerce module (`--modules commerce`, licensed).
|
|
22
23
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: add-auth
|
|
3
3
|
description: Activate auth providers (magic-link via Resend, Google OAuth, GitHub OAuth) on an AILK consumer site. Use when the user says "wire up auth", "add login", "set up sign-in", "I need users to log in", or asks how to enable any of magic-link / Google / GitHub auth on their AILK site. The skill writes env vars for whichever subset of providers the consumer activates and prints (plus saves) an OAuth-app-setup runbook. It does NOT modify `auth.config.ts` and does NOT emit any pages.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# add-auth
|
|
7
7
|
|
|
8
8
|
Activate one or more auth providers on an AILK site by writing the env
|
|
9
9
|
vars NextAuth reads to detect them, plus a `RUNBOOK.md` that documents
|
|
@@ -24,14 +24,14 @@ Google / GitHub OAuth. Phrases that should trigger this skill:
|
|
|
24
24
|
Skip this skill when:
|
|
25
25
|
|
|
26
26
|
- The user wants a `/login` or `/account` _page_ — those are pages, not
|
|
27
|
-
auth wiring. Use `
|
|
27
|
+
auth wiring. Use `add-page` for that.
|
|
28
28
|
- The user is asking about a third-party provider that isn't in the
|
|
29
29
|
AILK locked set (Apple, Microsoft, Twitter, etc.). The locked set is
|
|
30
30
|
magic-link + Google + GitHub at v1; broader provider support is a
|
|
31
31
|
future PR. Acknowledge the request and stop.
|
|
32
32
|
- The user is in production and needs production callback URLs. v1
|
|
33
33
|
ships dev-mode callbacks (`http://localhost:3000`) only —
|
|
34
|
-
production callback setup is deferred to `
|
|
34
|
+
production callback setup is deferred to `setup-deploy`
|
|
35
35
|
or a future deploy skill. Note this and stop.
|
|
36
36
|
|
|
37
37
|
## What this skill does (and does not do)
|
|
@@ -207,7 +207,7 @@ Print:
|
|
|
207
207
|
- A reminder to set `AILK_AUTH_REQUIRED=1` in `.env.local` if they
|
|
208
208
|
want protected routes (default is auth-disabled / public).
|
|
209
209
|
- A pointer to `RUNBOOK.md` for future reference.
|
|
210
|
-
- A pointer to `
|
|
210
|
+
- A pointer to `setup-deploy` for production callback URL
|
|
211
211
|
setup when the consumer is ready to deploy.
|
|
212
212
|
|
|
213
213
|
## Re-invocation
|
|
@@ -252,9 +252,9 @@ This means the skill's job is purely env-var wiring + documentation.
|
|
|
252
252
|
|
|
253
253
|
## Coordination
|
|
254
254
|
|
|
255
|
-
- **`
|
|
255
|
+
- **`add-page`** — `/login` or `/account` pages. This skill
|
|
256
256
|
emits no pages.
|
|
257
|
-
- **`
|
|
257
|
+
- **`setup-deploy`** — production callback URL setup. v1
|
|
258
258
|
is dev-only.
|
|
259
259
|
- **`@working-theory/database`** — Prisma adapter detection. Install
|
|
260
260
|
`@working-theory/database` separately to upgrade from JWT-only to persistent
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Auth Env-Var Contract
|
|
2
2
|
|
|
3
3
|
Source of truth for which env vars activate which auth provider on
|
|
4
|
-
an AILK consumer site. Read by the `
|
|
4
|
+
an AILK consumer site. Read by the `add-auth` skill before
|
|
5
5
|
asking the consumer to paste secrets.
|
|
6
6
|
|
|
7
7
|
The activation logic lives in `apps/web/lib/auth-env.ts` →
|
|
@@ -32,7 +32,7 @@ them in the closing summary so the consumer is aware:
|
|
|
32
32
|
- `AILK_AUTH_REQUIRED` is the consumer's call (skill always defaults
|
|
33
33
|
to leaving it unset).
|
|
34
34
|
- `NEXTAUTH_URL` and `NEXTAUTH_SECRET` are deferred to production-time
|
|
35
|
-
setup (`
|
|
35
|
+
setup (`setup-deploy` or future deploy skill).
|
|
36
36
|
|
|
37
37
|
## Env-var formats — what valid values look like
|
|
38
38
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OAuth + Magic-Link Setup — RUNBOOK Template
|
|
2
2
|
|
|
3
|
-
The `
|
|
3
|
+
The `add-auth` skill writes (or merges into) `RUNBOOK.md` at the
|
|
4
4
|
consumer's repo root using the per-provider sections below. Only the
|
|
5
5
|
sections for providers actually activated this session are emitted.
|
|
6
6
|
|
|
@@ -85,7 +85,7 @@ The `localhost` callback above is dev-only. For production, you'll
|
|
|
85
85
|
need to add a second redirect URI to the same OAuth client (or
|
|
86
86
|
create a separate prod client) of the form
|
|
87
87
|
`https://<your-prod-domain>/api/auth/callback/google`. The
|
|
88
|
-
`
|
|
88
|
+
`setup-deploy` skill or your future deploy skill will help you
|
|
89
89
|
wire this when you're ready to ship.
|
|
90
90
|
|
|
91
91
|
### Rotating the client secret
|
|
@@ -133,7 +133,7 @@ GITHUB_CLIENT_SECRET=...
|
|
|
133
133
|
The `localhost` callback above is dev-only. For production, either
|
|
134
134
|
register a separate OAuth App with a `https://<your-prod-domain>/...`
|
|
135
135
|
callback, or update this app's callback (GitHub allows multiple).
|
|
136
|
-
The `
|
|
136
|
+
The `setup-deploy` skill or your future deploy skill will help
|
|
137
137
|
you wire this when you're ready to ship.
|
|
138
138
|
|
|
139
139
|
### Rotating the client secret
|