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,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Generate a new page on an AILK consumer site — App Router route + MDX content stub + typed JSON-LD attachment — in a single confirm-before-write pass. Use when the user says "scaffold me a /pricing page", "add an about page", "create a /contact route", or
|
|
2
|
+
name: add-page
|
|
3
|
+
description: Generate a new page on an AILK consumer site — App Router route + MDX content stub + typed JSON-LD attachment — in a single confirm-before-write pass. Use when the user says "scaffold me a /pricing page", "add an about page", "create a /contact route", or hands over a structured triple (e.g., "add home — Organization — anchor with hero, value prop, CTA"). Both invocation shapes flow through the same pipeline. MDX-only at v1; refuses on existing routes and points at the `schema:` frontmatter override for adding structured data to a page that already exists.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# add-page
|
|
7
7
|
|
|
8
8
|
Generate a new page in one pass. Three artifacts emit together:
|
|
9
9
|
|
|
@@ -20,31 +20,29 @@ The consumer wants a new page on their AILK site. Triggers:
|
|
|
20
20
|
|
|
21
21
|
- "scaffold me a /pricing page" / "create a /contact route"
|
|
22
22
|
- "add an about page" / "I need a /privacy page"
|
|
23
|
-
- A
|
|
24
|
-
|
|
25
|
-
- "scaffold that one" referring to a specific row from prior chat output
|
|
23
|
+
- A structured triple: `home — Organization — anchor with hero, value prop, CTA`
|
|
24
|
+
- "add that one" referring to a specific row from prior chat output
|
|
26
25
|
|
|
27
26
|
Skip this skill when:
|
|
28
27
|
|
|
29
|
-
- The consumer wants to **add schema to an existing
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
input contract.
|
|
28
|
+
- The consumer wants to **add supplementary schema to an existing
|
|
29
|
+
page** — that's the `schema:` frontmatter override (see
|
|
30
|
+
[Adding schema to an existing page](#adding-schema-to-an-existing-page)
|
|
31
|
+
below), not a separate skill. This skill refuses on existing routes
|
|
32
|
+
and points there.
|
|
35
33
|
- The consumer's content backend is **not MDX**. v1 is MDX-only —
|
|
36
34
|
other adapters (Sanity, Payload, additional adapters) are additive
|
|
37
35
|
future PRs. Refuse with a clear message.
|
|
38
36
|
|
|
39
37
|
## What this skill does
|
|
40
38
|
|
|
41
|
-
1. Parses the consumer's input —
|
|
39
|
+
1. Parses the consumer's input — structured triple
|
|
42
40
|
(`<slug> — <Schema.orgType> — <purpose>`) OR free-text.
|
|
43
41
|
2. Resolves the **primary schema.org type** for the page using
|
|
44
|
-
`references/page-types.md` (about → AboutPage, pricing →
|
|
42
|
+
`references/page-types.md` (about → AboutPage, pricing → Pricing,
|
|
45
43
|
etc.). Confirms the choice before writing.
|
|
46
44
|
3. Detects existing routes and refuses if `app/<slug>/page.tsx`
|
|
47
|
-
already exists, pointing at `
|
|
45
|
+
already exists, pointing at the `schema:` frontmatter override.
|
|
48
46
|
4. Detects content adapter — only MDX is supported at v1; refuses
|
|
49
47
|
on any other adapter with a clear message.
|
|
50
48
|
5. Emits three files via `templates/route.tsx.tmpl` and
|
|
@@ -52,12 +50,13 @@ Skip this skill when:
|
|
|
52
50
|
typed builder import from `@working-theory/schema`.
|
|
53
51
|
6. Shows the consumer a **single diff** of all three files and waits
|
|
54
52
|
for one confirmation. After approval, writes all files.
|
|
55
|
-
7. Closing summary: pointer at `
|
|
56
|
-
schema, pointer at `
|
|
53
|
+
7. Closing summary: pointer at the `schema:` frontmatter override for
|
|
54
|
+
additional schema, pointer at `check-site` for citation-readiness check.
|
|
57
55
|
|
|
58
56
|
## What this skill does NOT do
|
|
59
57
|
|
|
60
|
-
- Modify an existing route. Refuses + points at `
|
|
58
|
+
- Modify an existing route. Refuses + points at the `schema:`
|
|
59
|
+
frontmatter override.
|
|
61
60
|
- Run `pnpm dev` or rebuild content. The consumer does that.
|
|
62
61
|
- Detect content-adapter type beyond "is it MDX?". v1 ships MDX
|
|
63
62
|
only; other adapters are out of scope.
|
|
@@ -74,12 +73,12 @@ Skip this skill when:
|
|
|
74
73
|
|
|
75
74
|
The consumer's request can arrive in either shape:
|
|
76
75
|
|
|
77
|
-
**
|
|
76
|
+
**Structured triple:**
|
|
78
77
|
|
|
79
78
|
```
|
|
80
79
|
home — Organization — anchor with hero, value prop, CTA
|
|
81
80
|
about — AboutPage — company story and team
|
|
82
|
-
pricing —
|
|
81
|
+
pricing — Pricing — public price tiers and feature comparison
|
|
83
82
|
```
|
|
84
83
|
|
|
85
84
|
Three em-dash-separated fields: `<slug>` `<Schema.orgType>` `<purpose>`.
|
|
@@ -113,7 +112,7 @@ backend?
|
|
|
113
112
|
|
|
114
113
|
If neither exists, refuse:
|
|
115
114
|
|
|
116
|
-
> "
|
|
115
|
+
> "add-page only supports the MDX content backend at v1. Your
|
|
117
116
|
> project doesn't appear to have one — file an issue at the upstream
|
|
118
117
|
> repo if you'd like Sanity / Payload / additional adapter support."
|
|
119
118
|
|
|
@@ -126,10 +125,11 @@ depending on the consumer's structure).
|
|
|
126
125
|
|
|
127
126
|
If it exists, refuse:
|
|
128
127
|
|
|
129
|
-
> "A route at `/<slug>` already exists. To **add
|
|
130
|
-
> existing page,
|
|
131
|
-
>
|
|
132
|
-
>
|
|
128
|
+
> "A route at `/<slug>` already exists. To **add structured data** to
|
|
129
|
+
> an existing page, use the `schema:` frontmatter override (see this
|
|
130
|
+
> skill's [Adding schema to an existing page](#adding-schema-to-an-existing-page)
|
|
131
|
+
> section) instead. To **replace** the page entirely, delete the
|
|
132
|
+
> existing files first and re-run this skill."
|
|
133
133
|
|
|
134
134
|
Stop. No writes.
|
|
135
135
|
|
|
@@ -187,57 +187,71 @@ Print:
|
|
|
187
187
|
- The two paths written.
|
|
188
188
|
- Reminder: `pnpm dev` to see the page, `pnpm build` to confirm it
|
|
189
189
|
compiles.
|
|
190
|
-
- Pointer at `
|
|
191
|
-
(FAQPage
|
|
192
|
-
|
|
190
|
+
- Pointer at the `schema:` frontmatter override for adding
|
|
191
|
+
supplementary schema (FAQPage-shaped Q&A, a `Review`, a richer
|
|
192
|
+
`mainEntity`, etc.) to this page later.
|
|
193
|
+
- Pointer at `check-site` for citation-readiness check after
|
|
193
194
|
adding pages.
|
|
194
195
|
|
|
195
|
-
##
|
|
196
|
+
## Adding schema to an existing page
|
|
196
197
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
There is no separate skill for this — a page's MDX frontmatter
|
|
199
|
+
already carries an escape hatch. `page.schema` is a
|
|
200
|
+
`Record<string, unknown>`, opaque to the typed builder, that the
|
|
201
|
+
builder merges on top of its derived fields after deriving them
|
|
202
|
+
(frontmatter wins on conflict). Use it to add structured sub-entities,
|
|
203
|
+
enrich a page with additional fields, or override any derived field
|
|
204
|
+
— without re-scaffolding the route.
|
|
200
205
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
206
|
+
```yaml
|
|
207
|
+
# in an existing page's MDX frontmatter
|
|
208
|
+
---
|
|
209
|
+
type: BlogPosting
|
|
210
|
+
slug: hello-world
|
|
211
|
+
title: Hello, World
|
|
212
|
+
description: First post.
|
|
213
|
+
schema:
|
|
214
|
+
author:
|
|
215
|
+
"@type": Person
|
|
216
|
+
name: Jane Doe
|
|
217
|
+
---
|
|
218
|
+
```
|
|
207
219
|
|
|
208
|
-
|
|
220
|
+
Where an override key lands depends on the builder's shape — a
|
|
221
|
+
two-layer builder (a `WebPage`-family envelope wrapping a described
|
|
222
|
+
`mainEntity`, e.g. `BlogPosting`, `Service`, `Product`, `JobPosting`)
|
|
223
|
+
routes most keys to the entity and a known few to the envelope; every
|
|
224
|
+
other builder shallow-merges `page.schema` onto the top level. The
|
|
225
|
+
full routing table is `packages/schema/README.md` § `schema` field
|
|
226
|
+
override — read it before guiding a consumer through a non-obvious
|
|
227
|
+
placement (e.g. `mainEntity` object merges, `@type` retyping).
|
|
209
228
|
|
|
210
|
-
|
|
211
|
-
|
|
229
|
+
This is also how a page picks up a **supplementary** schema type that
|
|
230
|
+
has no builder of its own — an `Offer`, a `Review`, an `AggregateRating`
|
|
231
|
+
— since those are expressed as plain objects inside `schema:`, not as
|
|
232
|
+
a distinct AILK page type.
|
|
212
233
|
|
|
213
|
-
|
|
234
|
+
## What lives in `references/page-types.md`
|
|
214
235
|
|
|
215
|
-
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
236
|
+
The type-to-schema mapping is data, not logic. Read the references
|
|
237
|
+
file at runtime — don't try to remember the table. It is generated
|
|
238
|
+
from `packages/schema/src/registry/entries.ts` by
|
|
239
|
+
`packages/create-ailk/scripts/generate-page-types-reference.ts` —
|
|
240
|
+
never hand-edit it; regenerate it instead (`pnpm page-types:build` from
|
|
241
|
+
`packages/create-ailk`) whenever a registry key changes.
|
|
221
242
|
|
|
222
|
-
The
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
prompt to ask the consumer rather than guessing.
|
|
243
|
+
The mapping covers every registered AILK page type — family, chassis,
|
|
244
|
+
schema.org `@type`, and the route convention — with list/detail pairs
|
|
245
|
+
(e.g. `ServicesList` / `Service`) shown together.
|
|
226
246
|
|
|
227
247
|
## Coordination
|
|
228
248
|
|
|
229
|
-
- **`
|
|
230
|
-
input. The two skills' references corpora (`categories.md` and
|
|
231
|
-
`page-types.md`) must agree on schema-type names.
|
|
232
|
-
- **`add-schema` (#366)** — modifies existing pages. The
|
|
233
|
-
`<JsonLd schema={build<Type>(...)} />` attachment pattern is
|
|
234
|
-
shared with this skill (canonical pattern landed in #389 /
|
|
235
|
-
`@working-theory/jsonld`).
|
|
236
|
-
- **`audit-site` (#365)** — citation-readiness check. Runs after
|
|
249
|
+
- **`check-site`** — citation-readiness check. Runs after
|
|
237
250
|
pages exist; not invoked from inside this skill.
|
|
238
|
-
- **`@working-theory/jsonld`**
|
|
251
|
+
- **`@working-theory/jsonld`** — the React component for JSON-LD
|
|
239
252
|
rendering. Single source of truth for the attachment pattern.
|
|
240
253
|
- **`@working-theory/schema`** — typed builders (`buildHomePage`,
|
|
241
|
-
`buildAboutPage`, etc.). The skill's emit imports from here
|
|
254
|
+
`buildAboutPage`, etc.). The skill's emit imports from here, and its
|
|
255
|
+
README documents the `schema` frontmatter override in full.
|
|
242
256
|
- **`@working-theory/content-adapters`** (MDX) — the content backend. v1 is
|
|
243
257
|
MDX-only; other adapters are deferred.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- GENERATED — do not hand-edit. Regenerate with:
|
|
2
|
+
cd packages/create-ailk && pnpm page-types:build
|
|
3
|
+
Source: packages/schema/src/registry/entries.ts
|
|
4
|
+
Generator: packages/create-ailk/scripts/generate-page-types-reference.ts
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# Page-Type → schema.org Registry Reference
|
|
8
|
+
|
|
9
|
+
The full page-type catalog the `add-page` skill reads at runtime to
|
|
10
|
+
resolve a slug or page-purpose hint to a family, chassis, schema.org
|
|
11
|
+
`@type`, and route convention. Generated from
|
|
12
|
+
`packages/schema/src/registry/entries.ts` — every registered page type
|
|
13
|
+
appears exactly once, list/detail pairs are shown together, and no row
|
|
14
|
+
here can name a type the registry doesn't have.
|
|
15
|
+
|
|
16
|
+
The skill resolves in this order:
|
|
17
|
+
|
|
18
|
+
1. **Exact slug match** — `pricing` → `Pricing`.
|
|
19
|
+
2. **Slug-prefix match** — `blog/<anything>` → `BlogPosting`.
|
|
20
|
+
3. **Free-text hint match** — "company story" / "team" → `AboutPage`.
|
|
21
|
+
4. **Ask** — if nothing matches, ask the consumer rather than guessing.
|
|
22
|
+
|
|
23
|
+
`<slug>` in a route below is the page's own slug (e.g. `hello-world`);
|
|
24
|
+
`<Type>` families using two-layer builders route supplementary schema
|
|
25
|
+
through the `schema:` frontmatter override — see this skill's
|
|
26
|
+
[Adding schema to an existing page](../SKILL.md#adding-schema-to-an-existing-page) section, or `packages/schema/README.md` for the full
|
|
27
|
+
override contract.
|
|
28
|
+
|
|
29
|
+
## Core
|
|
30
|
+
|
|
31
|
+
| Key | `@type` | Family | Chassis | Route |
|
|
32
|
+
| --- | --- | --- | --- | --- |
|
|
33
|
+
| `HomePage` | `HomePage` | core | home | / |
|
|
34
|
+
| `AboutPage` | `AboutPage` | core | detail | /about |
|
|
35
|
+
| `ContactPage` | `ContactPage` | core | detail | /contact |
|
|
36
|
+
| `PrivacyPage` | `WebPage` | core | detail | /privacy |
|
|
37
|
+
| `TermsPage` | `WebPage` | core | detail | /terms |
|
|
38
|
+
| `PurchasePolicyPage` | `WebPage` | core | detail | /purchase-policy |
|
|
39
|
+
| `WorkingAgreementPage` | `WebPage` | core | detail | /working-agreement |
|
|
40
|
+
| `LandingPage` | `WebPage` | core | home | /<slug> |
|
|
41
|
+
| `ThankYouPage` | `WebPage` | core | detail | /thanks/<slug> |
|
|
42
|
+
| `BookCall` | `WebPage` | core | home | /book-a-call |
|
|
43
|
+
| `NewsletterSignup` | `WebPage` | core | home | /newsletter |
|
|
44
|
+
| `DemoRequest` | `WebPage` | core | home | /demo-request |
|
|
45
|
+
| `TrialSignup` | `WebPage` | core | home | /trial-signup |
|
|
46
|
+
| `Waitlist` | `WebPage` | core | home | /waitlist |
|
|
47
|
+
| `Assessment` | `WebApplication` | core | home | /assessment |
|
|
48
|
+
| `Calculator` | `WebApplication` | core | home | /calculator |
|
|
49
|
+
| `CampaignLP` | `WebPage` | core | home | /<slug> |
|
|
50
|
+
|
|
51
|
+
## Identity
|
|
52
|
+
|
|
53
|
+
| Key | `@type` | Family | Chassis | Route |
|
|
54
|
+
| --- | --- | --- | --- | --- |
|
|
55
|
+
| `Organization` | `Organization` | identity | detail | — site-wide identity — emitted on the home page or in a layout |
|
|
56
|
+
| `Person` | `Person` | identity | detail | — site-wide identity — emitted on the home page or in a layout |
|
|
57
|
+
| `BreadcrumbList` | `BreadcrumbList` | identity | detail | — site-wide — attached alongside another page's own schema |
|
|
58
|
+
| `ContactPoint` | `ContactPoint` | identity | detail | — site-wide — embedded in `Organization` or `Person` |
|
|
59
|
+
|
|
60
|
+
## Canonical
|
|
61
|
+
|
|
62
|
+
| Key | `@type` | Family | Chassis | Route |
|
|
63
|
+
| --- | --- | --- | --- | --- |
|
|
64
|
+
| `ServicesList` | `CollectionPage` | canonical-list | list | /services |
|
|
65
|
+
| `Service` | `Service` | canonical-detail | detail | /services/<slug> |
|
|
66
|
+
| `ProductsList` | `CollectionPage` | canonical-list | list | /products |
|
|
67
|
+
| `Product` | `Product` | canonical-detail | detail | /products/<slug> |
|
|
68
|
+
| `ProjectsList` | `CollectionPage` | canonical-list | list | /projects |
|
|
69
|
+
| `Project` | `CreativeWork` | canonical-detail | detail | /projects/<slug> |
|
|
70
|
+
| `FAQPage` | `FAQPage` | canonical-list | list | /faq |
|
|
71
|
+
| `CareersList` | `CollectionPage` | canonical-list | list | /careers |
|
|
72
|
+
| `JobPosting` | `JobPosting` | canonical-detail | detail | /careers/<slug> |
|
|
73
|
+
| `UseCasesList` | `CollectionPage` | canonical-list | list | /use-cases |
|
|
74
|
+
| `UseCase` | `WebPage` | canonical-detail | detail | /use-cases/<slug> |
|
|
75
|
+
| `PortfolioList` | `CollectionPage` | canonical-list | list | /portfolio |
|
|
76
|
+
| `PortfolioItem` | `WebPage` | canonical-detail | detail | /portfolio/<slug> |
|
|
77
|
+
| `FeaturesList` | `CollectionPage` | canonical-list | list | /features |
|
|
78
|
+
| `Feature` | `WebPage` | canonical-detail | detail | /features/<slug> |
|
|
79
|
+
| `TestimonialsList` | `CollectionPage` | canonical-list | list | /testimonials |
|
|
80
|
+
| `ClientsList` | `CollectionPage` | canonical-list | list | /clients |
|
|
81
|
+
| `DownloadsList` | `CollectionPage` | canonical-list | list | /downloads |
|
|
82
|
+
| `EventsList` | `CollectionPage` | canonical-list | list | /events |
|
|
83
|
+
| `Event` | `Event` | canonical-detail | detail | /events/<slug> |
|
|
84
|
+
| `CoursesList` | `CollectionPage` | canonical-list | list | /courses |
|
|
85
|
+
| `Course` | `Course` | canonical-detail | detail | /courses/<slug> |
|
|
86
|
+
| `TeamList` | `CollectionPage` | canonical-list | list | /team |
|
|
87
|
+
| `TeamMember` | `ProfilePage` | canonical-detail | detail | /team/<slug> |
|
|
88
|
+
| `PartnersList` | `CollectionPage` | canonical-list | list | /partners |
|
|
89
|
+
| `Partner` | `AboutPage` | canonical-detail | detail | /partners/<slug> |
|
|
90
|
+
| `IntegrationsList` | `CollectionPage` | canonical-list | list | /integrations |
|
|
91
|
+
| `Integration` | `WebPage` | canonical-detail | detail | /integrations/<slug> |
|
|
92
|
+
| `GlossaryList` | `CollectionPage` | canonical-list | list | /glossary |
|
|
93
|
+
| `LocationsList` | `CollectionPage` | canonical-list | list | /locations |
|
|
94
|
+
| `Location` | `Place` | canonical-detail | detail | /locations/<slug> |
|
|
95
|
+
| `DocsList` | `CollectionPage` | canonical-list | list | /docs |
|
|
96
|
+
| `SoftwareProduct` | `WebPage` | canonical-detail | detail | /software/<slug> |
|
|
97
|
+
| `ServiceAreaPage` | `WebPage` | canonical-detail | detail | /service-areas/<slug> |
|
|
98
|
+
| `Pricing` | `WebPage` | canonical-detail | detail | /pricing |
|
|
99
|
+
| `ComparisonPage` | `WebPage` | canonical-detail | detail | /comparisons/<slug> |
|
|
100
|
+
| `ReportPage` | `Report` | canonical-detail | detail | /reports/<slug> |
|
|
101
|
+
|
|
102
|
+
## Editorial
|
|
103
|
+
|
|
104
|
+
| Key | `@type` | Family | Chassis | Route |
|
|
105
|
+
| --- | --- | --- | --- | --- |
|
|
106
|
+
| `BlogList` | `Blog` | editorial-list | list | /blog |
|
|
107
|
+
| `BlogPosting` | `BlogPosting` | editorial-detail | detail | /blog/<slug> |
|
|
108
|
+
| `ResourcesHub` | `CollectionPage` | editorial-list | list | /resources |
|
|
109
|
+
| `ResourceDetail` | `Article` | editorial-detail | detail | /resources/<slug> |
|
|
110
|
+
| `CaseStudiesList` | `CollectionPage` | editorial-list | list | /case-studies |
|
|
111
|
+
| `CaseStudy` | `Article` | editorial-detail | detail | /case-studies/<slug> |
|
|
112
|
+
| `HowTo` | `HowTo` | editorial-detail | detail | /how-to/<slug> |
|
|
113
|
+
| `Whitepaper` | `Article` | editorial-detail | detail | /whitepapers/<slug> |
|
|
114
|
+
| `TechArticle` | `TechArticle` | editorial-detail | detail | /tech-articles/<slug> |
|
|
115
|
+
| `DocsDetail` | `TechArticle` | editorial-detail | detail | /docs/<slug> |
|
|
@@ -10,7 +10,7 @@ description: {{DESCRIPTION}}
|
|
|
10
10
|
{{DESCRIPTION}}
|
|
11
11
|
|
|
12
12
|
<!--
|
|
13
|
-
This is the MDX content stub emitted by `
|
|
13
|
+
This is the MDX content stub emitted by `add-page`.
|
|
14
14
|
The frontmatter is the source of truth for JSON-LD — the
|
|
15
15
|
`{{BUILDER}}(page)` call in `app/{{SLUG}}/page.tsx` reads it.
|
|
16
16
|
|
|
@@ -21,8 +21,8 @@ description: {{DESCRIPTION}}
|
|
|
21
21
|
- Don't change `type` unless you also update the route's import
|
|
22
22
|
to match a different `@working-theory/schema` builder.
|
|
23
23
|
|
|
24
|
-
When you're happy with the page, run `
|
|
25
|
-
how it scores on citation-readiness. Use `
|
|
26
|
-
add supplementary schema (FAQPage, HowTo, etc.) without
|
|
24
|
+
When you're happy with the page, run `check-site` to see
|
|
25
|
+
how it scores on citation-readiness. Use the `schema:` frontmatter
|
|
26
|
+
override to add supplementary schema (FAQPage, HowTo, etc.) without
|
|
27
27
|
re-scaffolding.
|
|
28
28
|
-->
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Emitted by `
|
|
1
|
+
// Emitted by `add-page` at `app/{{SLUG}}/page.tsx`. Substitutions:
|
|
2
2
|
// {{SLUG}} — page slug (e.g., "pricing")
|
|
3
3
|
// {{TYPE}} — schema.org @type (e.g., "Service")
|
|
4
4
|
// {{BUILDER}} — typed builder name (e.g., "buildService")
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: check-site
|
|
3
3
|
description: Run `ailk-audit --json` on the consumer's AILK site, parse the JSON report, and explain the score and findings in plain language. Use when the user asks "how is my site doing?", "audit my site", "what's my score?", "is my JSON-LD valid?", "do I have all the schema I need?", or otherwise wants a citation-readiness check on their AILK content. The skill never edits files — it reports and points at fix tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# check-site
|
|
7
7
|
|
|
8
8
|
Shell out to `ailk-audit --json`, parse the JSON, and turn it into a
|
|
9
9
|
conversational summary the consumer can act on. Pure explain-only —
|
|
10
|
-
the skill names fix tools (like `
|
|
11
|
-
them.
|
|
10
|
+
the skill names fix tools (like the `schema:` frontmatter override)
|
|
11
|
+
but does not invoke them.
|
|
12
12
|
|
|
13
13
|
## When to use
|
|
14
14
|
|
|
@@ -24,7 +24,7 @@ citation-readiness audit (AEO Layer 1). Triggers:
|
|
|
24
24
|
Skip this skill when:
|
|
25
25
|
|
|
26
26
|
- The consumer wants to _fix_ a finding — point them at the fix
|
|
27
|
-
tool (usually `add-
|
|
27
|
+
tool (usually `add-page`'s `schema:` frontmatter override) and stop. This skill reports;
|
|
28
28
|
fix tools fix.
|
|
29
29
|
- The consumer is asking about deploy-time monitoring or continuous
|
|
30
30
|
audits — those are Pro features (`ailk pro` for details). Mention
|
|
@@ -131,18 +131,17 @@ themselves on a subsequent turn.
|
|
|
131
131
|
|
|
132
132
|
| Rule | Fix tool |
|
|
133
133
|
| --------------------- | ---------------------------------------------------------------------------------------- |
|
|
134
|
-
| `schema-coverage` | `add-
|
|
135
|
-
| `jsonld-validity` | `add-
|
|
134
|
+
| `schema-coverage` | `add-page`'s `schema:` frontmatter override — add the missing schema type to the named page |
|
|
135
|
+
| `jsonld-validity` | `add-page`'s `schema:` frontmatter override — replace the invalid block; or hand-fix the MDX |
|
|
136
136
|
| `entity-markup` | Manual edit — ensure `Organization` (or `Person`) JSON-LD is emitted somewhere site-wide |
|
|
137
|
-
| `faq-howto-incentive` | `add-
|
|
137
|
+
| `faq-howto-incentive` | `add-page`'s `schema:` frontmatter override — add an `FAQPage` or `HowTo` block to a relevant page |
|
|
138
138
|
|
|
139
139
|
Phrase the pointer as a single sentence:
|
|
140
140
|
|
|
141
|
-
> "Missing `Product` schema on `/pricing` —
|
|
142
|
-
>
|
|
141
|
+
> "Missing `Product` schema on `/pricing` — add it via `add-page`'s
|
|
142
|
+
> `schema:` frontmatter override."
|
|
143
143
|
|
|
144
|
-
Never
|
|
145
|
-
consumer's repo from inside this skill.
|
|
144
|
+
Never write to the consumer's repo from inside this skill.
|
|
146
145
|
|
|
147
146
|
### Step 8 — Soft Pro mention
|
|
148
147
|
|
|
@@ -187,8 +186,8 @@ Never recommend "weekly" / "monthly" / a date.
|
|
|
187
186
|
## What this skill does NOT do
|
|
188
187
|
|
|
189
188
|
- Edit any file in the consumer's repo.
|
|
190
|
-
- Add JSON-LD to pages (that's `add-
|
|
191
|
-
- Create new pages (that's `
|
|
189
|
+
- Add JSON-LD to pages (that's the `schema:` frontmatter override, documented in `add-page`).
|
|
190
|
+
- Create new pages (that's `add-page`).
|
|
192
191
|
- Cache results between runs.
|
|
193
192
|
- Track score history or trends.
|
|
194
193
|
- Auto-invoke fix tools.
|
|
@@ -202,9 +201,9 @@ Never recommend "weekly" / "monthly" / a date.
|
|
|
202
201
|
|
|
203
202
|
## Coordination
|
|
204
203
|
|
|
205
|
-
- **`add-
|
|
206
|
-
Never auto-invoked.
|
|
207
|
-
- **`
|
|
204
|
+
- **`add-page`'s `schema:` frontmatter override** — primary fix
|
|
205
|
+
mechanism the skill points at. Never auto-invoked.
|
|
206
|
+
- **`add-page`** — new-page creation; not a fix-tool
|
|
208
207
|
for audit findings (audit reports on existing pages).
|
|
209
208
|
- **`packages/aeo`** — owner of the `ailk-audit` CLI and rule set.
|
|
210
209
|
This skill depends only on the CLI's `--json` output schema, not
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Common Errors — Plain-Language Translations
|
|
2
2
|
|
|
3
3
|
The three most common ways `ailk-audit` fails on a real consumer
|
|
4
|
-
setup, with translations the `
|
|
4
|
+
setup, with translations the `check-site` skill emits instead of
|
|
5
5
|
the raw stderr. Errors not matching any of these signatures pass
|
|
6
6
|
through verbatim with a one-line `` `ailk-audit` failed — `` prefix
|
|
7
7
|
(see SKILL.md Step 2).
|
|
@@ -56,8 +56,8 @@ mis-translate an unfamiliar error into a familiar fix path.
|
|
|
56
56
|
>
|
|
57
57
|
> - Your content lives elsewhere — pass `--content-root <path>`
|
|
58
58
|
> to point at the right directory.
|
|
59
|
-
> - You haven't authored any pages yet — run `
|
|
60
|
-
>
|
|
59
|
+
> - You haven't authored any pages yet — run `add-page` to generate
|
|
60
|
+
> them.
|
|
61
61
|
> - The MDX files exist but aren't in the format the AILK content
|
|
62
62
|
> adapter expects — make sure each page has frontmatter with at
|
|
63
63
|
> least `title` and `type`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
What each AEO rule means in plain language, what its `pass: false`
|
|
4
4
|
result indicates, and what the consumer can do about it. Used by the
|
|
5
|
-
`
|
|
5
|
+
`check-site` skill in Step 6 (drill-down) and Step 7 (fix-tool
|
|
6
6
|
pointer).
|
|
7
7
|
|
|
8
8
|
The structure deliberately matches `perRule[].id` from the audit
|
|
@@ -30,9 +30,10 @@ SGE, Perplexity, ChatGPT search) read to understand your pages. A
|
|
|
30
30
|
page with no schema is invisible to citation; a page with the
|
|
31
31
|
wrong schema gets miscategorized.
|
|
32
32
|
|
|
33
|
-
**Fix tool:** `add-
|
|
34
|
-
|
|
35
|
-
The
|
|
33
|
+
**Fix tool:** `add-page`'s `schema:` frontmatter override — set the
|
|
34
|
+
schema type the registry expects (the audit names it) on the page's
|
|
35
|
+
frontmatter. The typed builder emits a `<JsonLd>` block matching the
|
|
36
|
+
page's content.
|
|
36
37
|
|
|
37
38
|
---
|
|
38
39
|
|
|
@@ -52,10 +53,10 @@ invalid blocks. The page exists, the JSON-LD exists, but the
|
|
|
52
53
|
citation surface is broken because the block doesn't parse as
|
|
53
54
|
valid schema.org.
|
|
54
55
|
|
|
55
|
-
**Fix tool:** `add-
|
|
56
|
-
For one-off edits to MDX, the consumer can also
|
|
57
|
-
JSON-LD inline;
|
|
58
|
-
typed builders.
|
|
56
|
+
**Fix tool:** `add-page`'s `schema:` frontmatter override — replace
|
|
57
|
+
the malformed block. For one-off edits to MDX, the consumer can also
|
|
58
|
+
hand-edit the JSON-LD inline; the frontmatter override is the safer
|
|
59
|
+
path because it uses typed builders.
|
|
59
60
|
|
|
60
61
|
---
|
|
61
62
|
|
|
@@ -81,8 +82,9 @@ have nothing to anchor to.
|
|
|
81
82
|
layout component rendered on every page) emits an
|
|
82
83
|
`Organization` (or `Person`) JSON-LD block. The `<JsonLd
|
|
83
84
|
schema={OrganizationSchema(...)} />` pattern from `@working-theory/schema`
|
|
84
|
-
is the one this is going to ship as. `add-
|
|
85
|
-
the block on a specific page if you'd
|
|
85
|
+
is the one this is going to ship as. `add-page`'s `schema:`
|
|
86
|
+
frontmatter override can land the block on a specific page if you'd
|
|
87
|
+
rather; but typically
|
|
86
88
|
identity goes in a layout, not a leaf page.
|
|
87
89
|
|
|
88
90
|
---
|
|
@@ -105,10 +107,10 @@ explicit Q&A or step-by-step content because those are easier to
|
|
|
105
107
|
quote directly into a generated response. Adding an FAQ or HowTo
|
|
106
108
|
block to relevant pages is a low-effort score boost.
|
|
107
109
|
|
|
108
|
-
**Fix tool:** `add-
|
|
109
|
-
your `/pricing` or `/contact` page (anywhere your
|
|
110
|
-
predictable questions), or a `HowTo` block to any
|
|
111
|
-
process/instructions content. `
|
|
110
|
+
**Fix tool:** `add-page`'s `schema:` frontmatter override — add an
|
|
111
|
+
`FAQPage` block to your `/pricing` or `/contact` page (anywhere your
|
|
112
|
+
customers ask predictable questions), or a `HowTo` block to any
|
|
113
|
+
process/instructions content. `check-site` will surface this as
|
|
112
114
|
an _incentive_ in drill-down, not a finding to "fix."
|
|
113
115
|
|
|
114
116
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Severity Levels — Score Banding + Severity Mapping
|
|
2
2
|
|
|
3
3
|
The AEO audit JSON does **not** include explicit severity fields.
|
|
4
|
-
Severity is **derived** by the `
|
|
4
|
+
Severity is **derived** by the `check-site` skill from each rule's
|
|
5
5
|
`weight` and `pass`. This file is the source of truth for that
|
|
6
6
|
mapping.
|
|
7
7
|
|