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
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
# Page-Type → schema.org Mapping
|
|
2
|
-
|
|
3
|
-
The lookup table the `scaffold-page` skill reads at runtime to
|
|
4
|
-
resolve a slug or page-purpose hint to a primary schema.org `@type`
|
|
5
|
-
plus the matching `@working-theory/schema` builder name.
|
|
6
|
-
|
|
7
|
-
The skill resolves in this order:
|
|
8
|
-
|
|
9
|
-
1. **Exact slug match** — `pricing` → `Service`.
|
|
10
|
-
2. **Slug-prefix match** — `blog/<anything>` → `BlogPosting`.
|
|
11
|
-
3. **Free-text hint match** — "company story" / "team" → `AboutPage`.
|
|
12
|
-
4. **Ask** — if nothing matches, ask the consumer rather than
|
|
13
|
-
guessing.
|
|
14
|
-
|
|
15
|
-
This file's table must agree with the entries
|
|
16
|
-
`suggest-site-pages` (#361) emits in `categories.md`. When new types
|
|
17
|
-
land in `@working-theory/schema`, both files update in the same follow-up PR.
|
|
18
|
-
|
|
19
|
-
## Identity / surface pages
|
|
20
|
-
|
|
21
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
22
|
-
| ------- | --------------- | ---------------- | --------------------------------------------------------------------- |
|
|
23
|
-
| `home` | `HomePage` | `buildHomePage` | The site's root landing page. Anchors hero, value prop, primary CTAs. |
|
|
24
|
-
| `about` | `AboutPage` | `buildAboutPage` | Company story / team / founders. Trust + narrative. |
|
|
25
|
-
|
|
26
|
-
## Conversion pages
|
|
27
|
-
|
|
28
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
29
|
-
| --------- | --------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
-
| `pricing` | `Service` | `buildService` | Public price tiers and feature comparison. (Or `Product` if the consumer sells discrete physical/digital products with SKUs.) |
|
|
31
|
-
| `contact` | `ContactPage` | `buildContactPage` | Sales / support entry point. Form, address, hours. |
|
|
32
|
-
| `book` | `Reservation` | _consumer-defined_ | Service businesses with appointment booking (salon, contractor, restaurant table). Requires consumer to wire the reservation flow. |
|
|
33
|
-
|
|
34
|
-
## Trust pages
|
|
35
|
-
|
|
36
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
37
|
-
| --------- | --------------- | ------------------ | ----------------- |
|
|
38
|
-
| `privacy` | `PrivacyPage` | `buildPrivacyPage` | Privacy policy. |
|
|
39
|
-
| `terms` | `TermsPage` | `buildTermsPage` | Terms of service. |
|
|
40
|
-
|
|
41
|
-
## Editorial / blog
|
|
42
|
-
|
|
43
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
44
|
-
| ------------- | --------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------- |
|
|
45
|
-
| `blog` | `Blog` | _consumer-defined_ | Blog index page. Lists posts. |
|
|
46
|
-
| `blog/<slug>` | `BlogPosting` | _consumer-defined_ | Individual blog post. The skill's chained input handles the per-post case naturally — ask `scaffold-page` per post. |
|
|
47
|
-
|
|
48
|
-
> Builder availability for editorial types depends on `@working-theory/schema`
|
|
49
|
-
> exports at the consumer's installed version. If
|
|
50
|
-
> `buildBlogPosting` is missing, fall back to manually authoring
|
|
51
|
-
> the JSON-LD via `<JsonLd schema={{...}} />`.
|
|
52
|
-
|
|
53
|
-
## Catalog / commerce
|
|
54
|
-
|
|
55
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
56
|
-
| ----------------- | --------------- | ------------------ | ----------------------------------------------------- |
|
|
57
|
-
| `products` | `ItemList` | _consumer-defined_ | Product index. Lists products. |
|
|
58
|
-
| `products/<slug>` | `Product` | _consumer-defined_ | Individual product page. |
|
|
59
|
-
| `services` | `ServicesList` | _consumer-defined_ | Service index for service-business consumer profiles. |
|
|
60
|
-
| `services/<slug>` | `Service` | `buildService` | Individual service page. |
|
|
61
|
-
|
|
62
|
-
> For commerce wiring (Stripe products + lookup_keys), use
|
|
63
|
-
> `scaffold-commerce` (#363). This skill emits the page; commerce
|
|
64
|
-
> wires it.
|
|
65
|
-
|
|
66
|
-
## Q&A / how-to
|
|
67
|
-
|
|
68
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
69
|
-
| --------------- | --------------- | ------------------ | -------------------------------- |
|
|
70
|
-
| `faq` | `FAQPage` | _consumer-defined_ | Frequently-asked-questions page. |
|
|
71
|
-
| `how-to/<slug>` | `HowTo` | _consumer-defined_ | Step-by-step instructions page. |
|
|
72
|
-
|
|
73
|
-
## Real estate / listings
|
|
74
|
-
|
|
75
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
76
|
-
| ----------------- | ------------------- | ------------------ | ----------------------------- |
|
|
77
|
-
| `listings` | `ItemList` | _consumer-defined_ | Property index. |
|
|
78
|
-
| `listings/<slug>` | `RealEstateListing` | _consumer-defined_ | Individual listing. |
|
|
79
|
-
| `agent` | `RealEstateAgent` | _consumer-defined_ | Solo realtor / agent profile. |
|
|
80
|
-
|
|
81
|
-
## Healthcare / medical
|
|
82
|
-
|
|
83
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
84
|
-
| ----------------- | ------------------------------ | ------------------ | ------------------------------------------------- |
|
|
85
|
-
| `practice` | `MedicalBusiness` | _consumer-defined_ | Practice / clinic landing. |
|
|
86
|
-
| `provider` | `Physician` / `Dentist` / etc. | _consumer-defined_ | Solo provider profile. Type depends on specialty. |
|
|
87
|
-
| `services/<slug>` | `MedicalProcedure` | _consumer-defined_ | Procedure / treatment page. |
|
|
88
|
-
|
|
89
|
-
## Course / education
|
|
90
|
-
|
|
91
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
92
|
-
| ---------------- | ------------------ | ------------------ | --------------------- |
|
|
93
|
-
| `courses` | `ItemList` | _consumer-defined_ | Course catalog. |
|
|
94
|
-
| `courses/<slug>` | `Course` | _consumer-defined_ | Individual course. |
|
|
95
|
-
| `lesson/<slug>` | `LearningResource` | _consumer-defined_ | Free / sample lesson. |
|
|
96
|
-
|
|
97
|
-
## Nonprofit / org
|
|
98
|
-
|
|
99
|
-
| Slug | Primary `@type` | Builder | When to pick |
|
|
100
|
-
| ----------------- | --------------- | ------------------ | -------------------------------- |
|
|
101
|
-
| `mission` | `AboutPage` | `buildAboutPage` | Mission statement / what we do. |
|
|
102
|
-
| `donate` | `DonateAction` | _consumer-defined_ | Donation page. |
|
|
103
|
-
| `programs/<slug>` | `Program` | _consumer-defined_ | Individual program / initiative. |
|
|
104
|
-
|
|
105
|
-
## Identity entity (Organization vs Person)
|
|
106
|
-
|
|
107
|
-
The site's **identity entity** is emitted on `home` (or in a layout
|
|
108
|
-
component). Two flavors:
|
|
109
|
-
|
|
110
|
-
| Site profile | Identity `@type` | Builder |
|
|
111
|
-
| ------------------ | ---------------- | ------------------- |
|
|
112
|
-
| Business / company | `Organization` | `buildOrganization` |
|
|
113
|
-
| Solo individual | `Person` | `buildPerson` |
|
|
114
|
-
|
|
115
|
-
For categories that admit both (real estate, healthcare,
|
|
116
|
-
professional services, course/education), `suggest-site-pages`
|
|
117
|
-
(#361) disambiguates Person vs Organization based on the consumer's
|
|
118
|
-
free-text. This skill receives the resolved type as part of the
|
|
119
|
-
chained input or asks if free-text is ambiguous.
|
|
120
|
-
|
|
121
|
-
## When a slug doesn't match anything above
|
|
122
|
-
|
|
123
|
-
Don't guess. Ask the consumer:
|
|
124
|
-
|
|
125
|
-
> "I don't have a default schema.org type mapped for `/<slug>`. Two
|
|
126
|
-
> options:
|
|
127
|
-
>
|
|
128
|
-
> - Tell me which schema.org `@type` to use (e.g., `WebPage`,
|
|
129
|
-
> `Article`, `Event`).
|
|
130
|
-
> - Skip JSON-LD on this page; I emit a vanilla route + MDX stub
|
|
131
|
-
> and you wire schema later via `add-schema` (#366).
|
|
132
|
-
>
|
|
133
|
-
> Which?"
|
|
134
|
-
|
|
135
|
-
## Generic fallbacks
|
|
136
|
-
|
|
137
|
-
For pages that don't match a specific category, two safe fallbacks:
|
|
138
|
-
|
|
139
|
-
- `WebPage` — the most generic schema.org `@type`. Always valid, low
|
|
140
|
-
citation value.
|
|
141
|
-
- `Article` — for editorial / longform content that isn't a blog
|
|
142
|
-
post specifically.
|
|
143
|
-
|
|
144
|
-
The `WebPage` fallback is the implicit default if the consumer
|
|
145
|
-
explicitly says "no schema" — emit the route + MDX without an
|
|
146
|
-
emitted `<JsonLd>` block; consumer can add later via #366.
|
|
147
|
-
|
|
148
|
-
## When `@working-theory/schema` doesn't yet export the builder
|
|
149
|
-
|
|
150
|
-
Some types in this table say `_consumer-defined_` for the builder
|
|
151
|
-
column. That means `@working-theory/schema` doesn't export a typed builder
|
|
152
|
-
for that type yet. The skill's behavior:
|
|
153
|
-
|
|
154
|
-
1. Surface the gap to the consumer:
|
|
155
|
-
|
|
156
|
-
> "`@working-theory/schema` doesn't export `build<Type>` yet. I can:
|
|
157
|
-
>
|
|
158
|
-
> - Emit the route with an inline JSON-LD object literal (less
|
|
159
|
-
> type-safe but works).
|
|
160
|
-
> - Skip JSON-LD on this page; you wire it via `add-schema`
|
|
161
|
-
> (#366) once the builder ships upstream.
|
|
162
|
-
> - File an upstream issue requesting the builder.
|
|
163
|
-
>
|
|
164
|
-
> Which?"
|
|
165
|
-
|
|
166
|
-
2. Wait for the consumer's choice. Don't fabricate a builder.
|
|
167
|
-
|
|
168
|
-
The fallback to inline literals is documented in `add-schema`
|
|
169
|
-
(#366) too — both skills handle this case the same way.
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: suggest-site-pages
|
|
3
|
-
description: Recommend a starter set of website pages — each tagged with the schema.org type to use — from a free-text business description. Use when the user is opening a new AI Launch Kit project, asks "what pages should this site have?", "help me plan my pages", "what should I build first" for a website, or describes a business in plain language and wants a page plan back. The output is shaped so each line can be passed straight to the `scaffold-page` skill.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# suggest-site-pages
|
|
7
|
-
|
|
8
|
-
Turn a free-text business description into an ordered list of pages, with the
|
|
9
|
-
right schema.org type per page, that the user can build with `scaffold-page`.
|
|
10
|
-
|
|
11
|
-
## When to use
|
|
12
|
-
|
|
13
|
-
The user is in a fresh `pnpm create ailk` project (or any AI Launch Kit
|
|
14
|
-
project that has no pages yet) and needs a plan for what to build. They
|
|
15
|
-
describe their business — "I'm building a SaaS for accountants", "I'm
|
|
16
|
-
opening a pizza restaurant", "I'm launching my law firm" — and want a
|
|
17
|
-
page list back, not a generic site-builder questionnaire.
|
|
18
|
-
|
|
19
|
-
Skip this skill when:
|
|
20
|
-
|
|
21
|
-
- The user already has a page list and just wants one more page added
|
|
22
|
-
(use `scaffold-page` directly).
|
|
23
|
-
- The user is asking about page _content_, not page _structure_ (answer
|
|
24
|
-
conversationally; this skill is about which pages exist, not what
|
|
25
|
-
goes inside them).
|
|
26
|
-
- The user wants schema added to an _existing_ page (use `add-schema`).
|
|
27
|
-
|
|
28
|
-
## What you produce
|
|
29
|
-
|
|
30
|
-
An ordered list, one line per page, in this exact format:
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
<slug> — <Schema.orgType> — <one-sentence purpose>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Example for a SaaS for accountants:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
home — HomePage — top-of-funnel landing with the headline value prop
|
|
40
|
-
about — AboutPage — company story and team
|
|
41
|
-
pricing — Product — public price tiers and feature comparison
|
|
42
|
-
features — ServicesList — what the product does, broken into capabilities
|
|
43
|
-
contact — ContactPage — sales and support entry point
|
|
44
|
-
privacy — PrivacyPage — privacy policy
|
|
45
|
-
terms — TermsPage — terms of service
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Each line is a copy-paste plan: the user (or you, on their next turn)
|
|
49
|
-
can hand any line to `scaffold-page` and the chain works because the
|
|
50
|
-
schema type is the input contract `scaffold-page` expects.
|
|
51
|
-
|
|
52
|
-
## The mechanic
|
|
53
|
-
|
|
54
|
-
### Step 1 — Identify the category
|
|
55
|
-
|
|
56
|
-
Match the user's description to one of the **10 v1 categories**:
|
|
57
|
-
|
|
58
|
-
1. SaaS
|
|
59
|
-
2. E-commerce
|
|
60
|
-
3. Service business (restaurant / salon / contractor / gym)
|
|
61
|
-
4. Professional services (law / accounting / consulting / agency)
|
|
62
|
-
5. Marketplace
|
|
63
|
-
6. Content / Blog
|
|
64
|
-
7. Course / Education
|
|
65
|
-
8. Real estate
|
|
66
|
-
9. Healthcare / Medical
|
|
67
|
-
10. Nonprofit / Org
|
|
68
|
-
|
|
69
|
-
The full corpus — each category's entity tag, page list, and schemas —
|
|
70
|
-
lives in `references/categories.md`. **Read that file** before producing
|
|
71
|
-
the page list. Don't try to remember it.
|
|
72
|
-
|
|
73
|
-
If the description doesn't match any of the 10, do **not** invent a
|
|
74
|
-
category. Say:
|
|
75
|
-
|
|
76
|
-
> "That's not in the v1 catalog. The closest matches are **\<X\>** and
|
|
77
|
-
> **\<Y\>**. Would you like to use one of those, or describe your business
|
|
78
|
-
> differently?"
|
|
79
|
-
|
|
80
|
-
The two closest matches come from `references/categories.md` — pick
|
|
81
|
-
whichever categories share the most surface area with the user's
|
|
82
|
-
description (e.g., "research consortium" → Professional services and
|
|
83
|
-
Nonprofit / Org).
|
|
84
|
-
|
|
85
|
-
### Step 2 — Disambiguate Person vs Organization (when needed)
|
|
86
|
-
|
|
87
|
-
Each category in `references/categories.md` carries an **entity tag**:
|
|
88
|
-
`organization`, `person`, or `both`. The tag drives the next step.
|
|
89
|
-
|
|
90
|
-
- **`organization`** — skip the question. Marketplaces are always
|
|
91
|
-
organizations, SaaS is always an organization. Proceed to Step 3.
|
|
92
|
-
- **`person`** — skip the question. A "personal poetry blog" is always
|
|
93
|
-
a Person. Proceed to Step 3.
|
|
94
|
-
- **`both`** — the consumer could be either. This is where the
|
|
95
|
-
disambiguation matters: a solo lawyer's home page anchors on `Person`,
|
|
96
|
-
a law firm's anchors on `Organization`, and the page recommendations
|
|
97
|
-
shift accordingly.
|
|
98
|
-
|
|
99
|
-
For `both`-tagged categories, first check whether the user's free-text
|
|
100
|
-
**already settles it**. Phrases like:
|
|
101
|
-
|
|
102
|
-
- "my brokerage", "our firm", "the company", "we're a clinic" → Organization
|
|
103
|
-
- "I'm a solo \<role\>", "as an independent \<role\>", "my personal", "I'm a freelance" → Person
|
|
104
|
-
|
|
105
|
-
If the description settles it, **infer and confirm** rather than ask blind:
|
|
106
|
-
|
|
107
|
-
> "Got it — sounds like you're operating as an individual. I'll plan
|
|
108
|
-
> the pages around a Person identity. Does that match?"
|
|
109
|
-
|
|
110
|
-
If it's genuinely ambiguous, **ask once**:
|
|
111
|
-
|
|
112
|
-
> "Are you operating as an individual practitioner or as a business
|
|
113
|
-
> entity (firm / company / organization)? It changes which schemas
|
|
114
|
-
> anchor your home, about, and contact pages."
|
|
115
|
-
|
|
116
|
-
Then proceed to Step 3 with the answer.
|
|
117
|
-
|
|
118
|
-
### Step 3 — Emit the page list
|
|
119
|
-
|
|
120
|
-
Look up the category in `references/categories.md`. Use:
|
|
121
|
-
|
|
122
|
-
- The **page list** for that category, in the listed order.
|
|
123
|
-
- The **primary schema.org type** for each page, adjusted for the
|
|
124
|
-
Person-vs-Organization choice from Step 2 where the corpus calls it
|
|
125
|
-
out (typically the home, about, and contact pages).
|
|
126
|
-
|
|
127
|
-
Format every line as `<slug> — <Schema.orgType> — <one-sentence purpose>`.
|
|
128
|
-
The slugs come from the corpus; don't invent new ones. The one-sentence
|
|
129
|
-
purpose can be lifted from the corpus or rephrased — keep it short.
|
|
130
|
-
|
|
131
|
-
After the list, add one line:
|
|
132
|
-
|
|
133
|
-
> "Pass any of these to `scaffold-page` to generate the page."
|
|
134
|
-
|
|
135
|
-
## Person vs Organization — how it actually maps
|
|
136
|
-
|
|
137
|
-
The Person/Organization choice cascades into the **identity attached to
|
|
138
|
-
the page**, not into a different per-page type. `HomePage`, `AboutPage`,
|
|
139
|
-
and `ContactPage` are entity-agnostic; only the `Organization` vs
|
|
140
|
-
`Person` identity inside the JSON-LD changes.
|
|
141
|
-
|
|
142
|
-
`@working-theory/schema` does **not** ship narrower types like `Attorney`,
|
|
143
|
-
`Physician`, `RealEstateAgent`, `LegalService`, `MedicalBusiness`, or
|
|
144
|
-
`EducationalOrganization` at v1. If the user mentions a category whose
|
|
145
|
-
"natural" schema is one of those, fall back to the closest type from
|
|
146
|
-
the supported catalog — typically `ServicesList` / `Service` for
|
|
147
|
-
service-shaped categories. The corpus already does this for you.
|
|
148
|
-
|
|
149
|
-
## Invocation contract
|
|
150
|
-
|
|
151
|
-
This skill is **conversational only**. It is not a CLI command, not an
|
|
152
|
-
MCP tool. The user invokes it by talking to Claude in plain language.
|
|
153
|
-
|
|
154
|
-
## The `references/` convention
|
|
155
|
-
|
|
156
|
-
This skill establishes a pattern: **`SKILL.md` holds the mechanic; the
|
|
157
|
-
knowledge corpus lives in `references/<corpus>.md`**.
|
|
158
|
-
|
|
159
|
-
- `SKILL.md` describes how to invoke the skill, the steps to run, the
|
|
160
|
-
output format, and pointers into the corpus. It stays short — under
|
|
161
|
-
500 lines is the budget — so the whole skill is auditable in under
|
|
162
|
-
ten minutes.
|
|
163
|
-
- `references/<corpus>.md` holds the data the skill operates on. For
|
|
164
|
-
this skill, that's `references/categories.md`: 10 categories, each
|
|
165
|
-
with entity tag, page list, and primary schema per page. Editing the
|
|
166
|
-
corpus is a single-file change; the mechanic stays untouched.
|
|
167
|
-
|
|
168
|
-
Other OSS skills that need a knowledge corpus (`add-schema` for
|
|
169
|
-
primary/supplementary tagging, `provision-config` for persistence
|
|
170
|
-
options) should adopt the same shape.
|
|
171
|
-
|
|
172
|
-
## Worked examples
|
|
173
|
-
|
|
174
|
-
**Example 1 — SaaS (unambiguous Organization)**
|
|
175
|
-
|
|
176
|
-
User: "I'm building a SaaS for dental practices to manage appointments."
|
|
177
|
-
|
|
178
|
-
You:
|
|
179
|
-
|
|
180
|
-
1. Category → SaaS
|
|
181
|
-
2. Entity tag → `organization`. No question.
|
|
182
|
-
3. Read `references/categories.md` § SaaS, emit:
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
home — HomePage — top-of-funnel landing with the headline value prop
|
|
186
|
-
about — AboutPage — company story and team
|
|
187
|
-
pricing — Product — public price tiers and feature comparison
|
|
188
|
-
features — ServicesList — what the product does, broken into capabilities
|
|
189
|
-
contact — ContactPage — sales and support entry point
|
|
190
|
-
privacy — PrivacyPage — privacy policy
|
|
191
|
-
terms — TermsPage — terms of service
|
|
192
|
-
|
|
193
|
-
Pass any of these to scaffold-page to generate the page.
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Example 2 — Law firm (ambiguous, asks)**
|
|
197
|
-
|
|
198
|
-
User: "What pages should I have for my law firm?"
|
|
199
|
-
|
|
200
|
-
You: "Are you operating as an individual lawyer or as a law firm
|
|
201
|
-
entity? It changes which schemas anchor your home, about, and contact
|
|
202
|
-
pages."
|
|
203
|
-
|
|
204
|
-
User: "It's a firm with five attorneys."
|
|
205
|
-
|
|
206
|
-
You: read `references/categories.md` § Professional services, render
|
|
207
|
-
the list with `Organization` as the home/about/contact identity.
|
|
208
|
-
|
|
209
|
-
**Example 3 — Real estate (free-text settles it)**
|
|
210
|
-
|
|
211
|
-
User: "What pages should I have for a real estate brokerage?"
|
|
212
|
-
|
|
213
|
-
You: "Got it — 'brokerage' tells me you're operating as an organization,
|
|
214
|
-
not a solo agent. I'll plan around an Organization identity. Does that
|
|
215
|
-
match?" Then proceed.
|
|
216
|
-
|
|
217
|
-
**Example 4 — Personal blog (unambiguous Person)**
|
|
218
|
-
|
|
219
|
-
User: "What pages should I have for my personal poetry blog?"
|
|
220
|
-
|
|
221
|
-
You:
|
|
222
|
-
|
|
223
|
-
1. Category → Content / Blog
|
|
224
|
-
2. Entity tag → `person` (the corpus tags personal blogs as Person). No
|
|
225
|
-
question.
|
|
226
|
-
3. Render the blog page list with `Person` as the home/about identity.
|
|
227
|
-
|
|
228
|
-
**Example 5 — Out of catalog**
|
|
229
|
-
|
|
230
|
-
User: "What pages should I have for a quantum-computing research
|
|
231
|
-
consortium?"
|
|
232
|
-
|
|
233
|
-
You: "That's not in the v1 catalog. The closest matches are
|
|
234
|
-
**Professional services** and **Nonprofit / Org**. Would you like to use
|
|
235
|
-
one of those, or describe your business differently?"
|
|
236
|
-
|
|
237
|
-
## When the user pushes back
|
|
238
|
-
|
|
239
|
-
The corpus is opinionated, not authoritative. If the user disputes a
|
|
240
|
-
schema choice, explain why the corpus tagged it that way, then offer
|
|
241
|
-
to override — `scaffold-page` accepts any type from the supported
|
|
242
|
-
catalog. Don't argue.
|