create-ailk 0.6.1 → 0.7.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.
Files changed (232) hide show
  1. package/README.md +43 -4
  2. package/component-catalog.json +146 -21
  3. package/component-catalog.md +9 -6
  4. package/dist/add-module-core.d.ts +22 -0
  5. package/dist/add-module-core.js +50 -0
  6. package/dist/add-module.d.ts +89 -0
  7. package/dist/add-module.js +334 -0
  8. package/dist/category-profile.d.ts +126 -0
  9. package/dist/category-profile.js +262 -0
  10. package/dist/cli.js +73 -11
  11. package/dist/index.d.ts +4 -2
  12. package/dist/index.js +6 -1
  13. package/dist/lib/extract-module-bundle.d.ts +56 -1
  14. package/dist/lib/extract-module-bundle.js +165 -13
  15. package/dist/lib/license-key-files.d.ts +15 -0
  16. package/dist/lib/license-key-files.js +102 -0
  17. package/dist/lib/pro-callout.d.ts +16 -10
  18. package/dist/lib/pro-callout.js +26 -3
  19. package/dist/license-set.d.ts +34 -0
  20. package/dist/license-set.js +194 -0
  21. package/dist/module-architecture.d.ts +20 -0
  22. package/dist/module-architecture.js +77 -19
  23. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  24. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  25. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  26. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  27. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  28. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  29. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  30. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  31. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  32. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  33. package/dist/parse-args.d.ts +7 -0
  34. package/dist/parse-args.js +23 -1
  35. package/dist/programmatic.d.ts +46 -0
  36. package/dist/programmatic.js +130 -9
  37. package/dist/site-chrome.d.ts +18 -7
  38. package/dist/site-chrome.js +32 -14
  39. package/dist/site-roster.d.ts +127 -0
  40. package/dist/site-roster.js +494 -0
  41. package/dist/surfaces.d.ts +20 -7
  42. package/dist/surfaces.js +149 -28
  43. package/dist/sync-routes.d.ts +9 -0
  44. package/dist/sync-routes.js +2 -2
  45. package/dist/template-manifest.d.ts +58 -2
  46. package/dist/template-manifest.js +196 -69
  47. package/package.json +6 -4
  48. package/site-templates/_base/content/en/BookCall/book-call.mdx +53 -0
  49. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +66 -0
  50. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +68 -0
  51. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  52. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +2 -3
  53. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  54. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +23 -0
  55. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +23 -0
  56. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +23 -0
  57. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  58. package/site-templates/designs/standard/DESIGN.md +162 -0
  59. package/site-templates/marketing-site/DESIGN.md +55 -41
  60. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +312 -57
  61. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +209 -90
  62. package/site-templates/marketing-site/ailk-template.json +1 -0
  63. package/site-templates/marketing-site-free/DESIGN.md +55 -41
  64. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +260 -66
  65. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +294 -114
  66. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  67. package/site-templates/minimalism-site/DESIGN.md +54 -40
  68. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  69. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +185 -51
  70. package/site-templates/minimalism-site/ailk-template.json +3 -2
  71. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +53 -0
  72. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  73. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  74. package/site-templates/saas-product/DESIGN.md +55 -41
  75. package/site-templates/simple-service/DESIGN.md +55 -41
  76. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +135 -26
  77. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +114 -59
  78. package/site-templates/simple-service/ailk-template.json +4 -3
  79. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +53 -0
  80. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +1 -36
  81. package/site-templates/simple-service/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  82. package/templates/.claude/settings.json +15 -0
  83. package/templates/.claude/skills/README.md +8 -8
  84. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  85. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  86. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  87. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  88. package/templates/.claude/skills/add-page/references/page-types.md +111 -0
  89. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  90. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  91. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  92. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  93. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  94. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  95. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  96. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  97. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  98. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +8 -8
  99. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +2 -2
  100. package/templates/.claude/skills/{provision-config → setup-deploy}/references/runbook-template.md +8 -8
  101. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  102. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  103. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  104. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  105. package/templates/.github/workflows/ci.yml +5 -0
  106. package/templates/CLAUDE.md +8 -2
  107. package/templates/DESIGN.md +52 -45
  108. package/templates/README.md +108 -46
  109. package/templates/apps/api/.env.example +2 -1
  110. package/templates/apps/api/package.json +1 -1
  111. package/templates/apps/api/src/config/__tests__/index.test.ts +37 -2
  112. package/templates/apps/api/src/config/index.ts +19 -6
  113. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  114. package/templates/apps/api/src/lib/site.ts +5 -3
  115. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  116. package/templates/apps/api/src/middleware/auth.ts +9 -0
  117. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  118. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  119. package/templates/apps/api/src/server.ts +6 -0
  120. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  121. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  122. package/templates/apps/mcp/package.json +2 -1
  123. package/templates/apps/mcp/src/index.ts +7 -0
  124. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  125. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  126. package/templates/apps/web/__tests__/setup.ts +18 -0
  127. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  128. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  129. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  130. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  131. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  132. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  133. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  134. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  135. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  136. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  137. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  138. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  139. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +94 -33
  140. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +53 -23
  141. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +96 -0
  142. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +84 -2
  143. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +5 -6
  144. package/templates/apps/web/app/[locale]/contact/page.tsx +25 -7
  145. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  146. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  147. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  148. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  149. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  150. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  151. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  152. package/templates/apps/web/app/[locale]/layout.tsx +113 -51
  153. package/templates/apps/web/app/[locale]/newsletter/page.tsx +50 -0
  154. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  155. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  156. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  157. package/templates/apps/web/app/[locale]/{shipping → purchase-policy}/page.tsx +15 -10
  158. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  159. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  160. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  161. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  162. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  163. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  164. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  165. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  166. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +48 -0
  167. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  168. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  169. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  170. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  171. package/templates/apps/web/app/error-fallback.tsx +17 -45
  172. package/templates/apps/web/app/not-found.tsx +14 -38
  173. package/templates/apps/web/app/og/route.tsx +6 -0
  174. package/templates/apps/web/eslint.config.mjs +3 -0
  175. package/templates/apps/web/instrumentation.ts +14 -0
  176. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  177. package/templates/apps/web/lib/license-key-store.ts +52 -0
  178. package/templates/apps/web/lib/nav-config.ts +64 -12
  179. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  180. package/templates/apps/web/lib/site-brand.tsx +1 -1
  181. package/templates/apps/web/lib/site-chrome.ts +3 -3
  182. package/templates/apps/web/lib/site-identity.ts +134 -0
  183. package/templates/apps/web/lib/site-theme.ts +11 -0
  184. package/templates/apps/web/messages/en.json +52 -37
  185. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  186. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  187. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  188. package/templates/apps/web/public/favicon-16x16.png +0 -0
  189. package/templates/apps/web/public/favicon-32x32.png +0 -0
  190. package/templates/apps/web/public/favicon.ico +0 -0
  191. package/templates/apps/web/public/favicon.svg +3 -3
  192. package/templates/apps/web/public/logomark.svg +6 -3
  193. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  194. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  195. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  196. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  197. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  198. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  199. package/templates/apps/web/public/site.webmanifest +4 -4
  200. package/templates/apps/web/public/wordmark-light.svg +4 -0
  201. package/templates/apps/web/public/wordmark.svg +3 -3
  202. package/templates/apps/web/security-headers.config.ts +5 -1
  203. package/templates/content/_site.mdx +23 -0
  204. package/templates/content/en/AboutPage/about.mdx +150 -144
  205. package/templates/content/en/BlogList/blog.mdx +105 -0
  206. package/templates/content/en/ContactPage/contact.mdx +44 -85
  207. package/templates/content/en/FAQPage/faq.mdx +86 -57
  208. package/templates/content/en/HomePage/home.mdx +276 -217
  209. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +182 -0
  210. package/templates/content/en/SoftwareProduct/product.mdx +175 -0
  211. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  212. package/templates/database/CHANGELOG.md +7 -0
  213. package/templates/database/package.json +1 -1
  214. package/templates/package.json +3 -1
  215. package/templates/tools/lint-architecture.ts +315 -0
  216. package/templates/tools/tsconfig.json +14 -0
  217. package/versions.json +33 -33
  218. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  219. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  220. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  221. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  222. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  223. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  224. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  225. package/templates/apps/web/app/[locale]/cancellation/page.tsx +0 -44
  226. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  227. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  228. package/templates/content/en/LandingPage/blog.mdx +0 -83
  229. package/templates/content/en/LandingPage/features.mdx +0 -103
  230. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  231. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  232. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: provision-config
2
+ name: setup-deploy
3
3
  description: Emit deploy configuration for an AILK consumer site — `vercel.json`, `.env.example`, and `RUNBOOK.md`. Vercel-only at v1; other platforms reject with a clear "not yet supported" message. Use when the user asks "set up Vercel", "provision deploy config", "what env vars do I need for production?", "I'm ready to ship to Vercel", or otherwise asks about pre-deploy file setup. The RUNBOOK includes the three named persistence-upgrade paths for leads.jsonl (Vercel KV / Supabase / Postgres-via-`@working-theory/database`).
4
4
  ---
5
5
 
6
- # provision-config
6
+ # setup-deploy
7
7
 
8
8
  Emit `vercel.json`, `.env.example`, and `RUNBOOK.md` at the consumer's
9
9
  project root, ready for a Vercel deploy. Vercel is the only valid
@@ -64,7 +64,7 @@ Skip this skill when:
64
64
  Default platform is `vercel`. If the consumer asks for any other
65
65
  platform, respond:
66
66
 
67
- > "`provision-config` is Vercel-only at v1. Netlify / Cloudflare /
67
+ > "`setup-deploy` is Vercel-only at v1. Netlify / Cloudflare /
68
68
  > Render / Fly / self-host support are tracked at the upstream repo —
69
69
  > file an issue at <https://github.com/working-theory-labs/ai-launch-kit/issues>
70
70
  > if your platform is missing.
@@ -100,7 +100,7 @@ Wait for the consumer's choice per file. Do not blindly overwrite.
100
100
  **Merge logic — `.env.example`:** if a var listed in
101
101
  `references/env-vars-template.md` is **missing** from the existing
102
102
  file, append it (with comment) at the bottom under a "## Added by
103
- provision-config" section. Vars already present are not modified.
103
+ setup-deploy" section. Vars already present are not modified.
104
104
 
105
105
  **Merge logic — `RUNBOOK.md`:** if any of the three named
106
106
  persistence sections (Vercel KV, Supabase,
@@ -144,7 +144,7 @@ NextAuth secrets.
144
144
  After write, count the declared vars and confirm the count matches
145
145
  the template's expected count. If a var the consumer's site uses
146
146
  (grep `process.env.X` from a quick scan) is missing from the
147
- template, add it under "## Added by provision-config" — never silently
147
+ template, add it under "## Added by setup-deploy" — never silently
148
148
  omit a var the consumer needs.
149
149
 
150
150
  ### Step 6 — Emit `RUNBOOK.md`
@@ -168,7 +168,7 @@ runbook has these sections:
168
168
  RDS). When to pick.
169
169
  6. **Custom domain + DNS** — pointer at Vercel's domain docs.
170
170
  7. **Production callbacks for OAuth** — for consumers who used
171
- `scaffold-auth` (#364) and need to register prod redirect URIs.
171
+ `add-auth` and need to register prod redirect URIs.
172
172
 
173
173
  After write, grep the RUNBOOK for the three named persistence
174
174
  section headings (Vercel KV, Supabase,
@@ -214,7 +214,7 @@ If any check fails, surface the failure to the consumer (not silent).
214
214
  `vercel deploy`'s job.
215
215
  - That env-var values in the consumer's Vercel dashboard are
216
216
  correct or live. The skill never reads dashboard state.
217
- - That OAuth callback URLs in `scaffold-auth`'s RUNBOOK are
217
+ - That OAuth callback URLs in `add-auth`'s RUNBOOK are
218
218
  registered in production OAuth apps. That's the consumer's job
219
219
  pre-launch.
220
220
 
@@ -228,7 +228,7 @@ If any check fails, surface the failure to the consumer (not silent).
228
228
 
229
229
  ## Coordination
230
230
 
231
- - **`scaffold-auth` (#364)** — produces its own `RUNBOOK.md`
231
+ - **`add-auth`** — produces its own `RUNBOOK.md`
232
232
  sections for OAuth setup (dev callback URLs). This skill's
233
233
  RUNBOOK adds production callback URLs and merges with any
234
234
  existing runbook content (not blindly overwrites).
@@ -1,6 +1,6 @@
1
1
  # `.env.example` Template
2
2
 
3
- The structure the `provision-config` skill emits at the consumer's
3
+ The structure the `setup-deploy` skill emits at the consumer's
4
4
  project root. Placeholder values only — the skill never echoes a
5
5
  real secret.
6
6
 
@@ -177,7 +177,7 @@ Step 3) offers merge / overwrite / skip. Merge logic:
177
177
  4. Vars **missing** are appended at the end of the existing file
178
178
  under a new section:
179
179
  ```
180
- # ── Added by provision-config ────────────────────────────────
180
+ # ── Added by setup-deploy ────────────────────────────────
181
181
  ```
182
182
 
183
183
  This avoids duplicating vars while still surfacing additions the
@@ -1,6 +1,6 @@
1
1
  # `RUNBOOK.md` Template
2
2
 
3
- The `provision-config` skill emits this runbook at the consumer's
3
+ The `setup-deploy` skill emits this runbook at the consumer's
4
4
  project root. It documents pre-deploy steps, the **critical**
5
5
  leads-persistence caveat, and the three named upgrade paths.
6
6
 
@@ -13,12 +13,12 @@ missing, the skill has a bug.
13
13
  ```markdown
14
14
  # RUNBOOK — Production Operations
15
15
 
16
- This runbook is generated by the `provision-config` skill. It covers
16
+ This runbook is generated by the `setup-deploy` skill. It covers
17
17
  what to do before and after deploying to Vercel, plus the
18
18
  operational caveats AILK ships with.
19
19
 
20
- If you re-run `provision-config`, new sections may be appended at
21
- the end under "## Added by provision-config." Existing sections are
20
+ If you re-run `setup-deploy`, new sections may be appended at
21
+ the end under "## Added by setup-deploy." Existing sections are
22
22
  not modified by the skill.
23
23
 
24
24
  ---
@@ -40,7 +40,7 @@ Before you click Deploy in Vercel:
40
40
  your site captures leads. AILK's default `leads.jsonl`
41
41
  fallback does not persist on Vercel's ephemeral filesystem.
42
42
  - [ ] **Register production OAuth callbacks** if you used
43
- `scaffold-auth` and activated Google or GitHub. Each provider
43
+ `add-auth` and activated Google or GitHub. Each provider
44
44
  needs the prod callback URL added to its OAuth app settings.
45
45
 
46
46
  ---
@@ -160,9 +160,9 @@ Domains → Add → DNS records → wait for verification.
160
160
 
161
161
  ---
162
162
 
163
- ## Production callbacks for OAuth (if you used `scaffold-auth`)
163
+ ## Production callbacks for OAuth (if you used `add-auth`)
164
164
 
165
- If you activated Google or GitHub OAuth via `scaffold-auth` (#364),
165
+ If you activated Google or GitHub OAuth via `add-auth`,
166
166
  those activations used dev callback URLs (`localhost:3000`). For
167
167
  production, add the prod callback URLs to each OAuth app:
168
168
 
@@ -240,7 +240,7 @@ Step 3) offers merge / overwrite / skip. Merge logic:
240
240
  3. Headings already present → not modified.
241
241
  4. Headings missing → append at the end of the existing file under:
242
242
  ```
243
- ## Added by provision-config
243
+ ## Added by setup-deploy
244
244
  ```
245
245
 
246
246
  The pre-deploy checklist, custom-domain, and OAuth-prod-callbacks
@@ -1,6 +1,6 @@
1
1
  # `vercel.json` Template
2
2
 
3
- The minimal viable Vercel config the `provision-config` skill emits.
3
+ The minimal viable Vercel config the `setup-deploy` skill emits.
4
4
  Customization beyond this template is the consumer's responsibility —
5
5
  the skill's job is to ship the consumer with a working baseline.
6
6
 
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: upgrade-plan
3
+ description: Explain the AI Launch Kit options — Free, Pro, Pro Plus, Agency and the commerce add-on's three rungs (Commerce, SaaS, SaaS with Usage) — side by side, with the prices the public pricing page publishes right now, read this site's own modules and shape, and recommend exactly one option with a reason. Use when the user asks "what does Pro get me?", "should I upgrade?", "compare plans", "which plan do I need?", "how much is commerce?", or types /upgrade-plan. The skill reads and explains only — it never buys, never installs, and never states a price from memory.
4
+ ---
5
+
6
+ # upgrade-plan
7
+
8
+ Answer "what does a paid level get me, and which one should I buy?" from two
9
+ live sources: the public pricing page (for prices) and this repository (for
10
+ what the site actually uses). A bundled helper does the reading and the
11
+ choosing; this skill runs it and explains the result in plain words.
12
+
13
+ ## When to use
14
+
15
+ - "what does Pro get me?" / "what's in Pro Plus?"
16
+ - "should I upgrade?" / "which plan do I need?"
17
+ - "compare the plans" / "how does Agency work?"
18
+ - "can I sell things on my site?" / "how much is the commerce add-on?"
19
+ - `/upgrade-plan`
20
+
21
+ Skip this skill when the user wants to actually buy or install something —
22
+ this skill explains and recommends; the purchase happens on the pricing
23
+ page, and installing a module is a separate step (see "What happens next").
24
+
25
+ ## The mechanic
26
+
27
+ ### Step 1 — Map the user's stated need (optional)
28
+
29
+ If the user said what they want to do, map it to one `--need` value:
30
+
31
+ | The user says… | `--need` |
32
+ | ------------------------------------------------- | -------------- |
33
+ | "I build sites for clients" | `agency` |
34
+ | "I want to sell / take payments" | `sell` |
35
+ | "my product bills its own customers on plans" | `saas` |
36
+ | "I bill my customers by usage / credits" | `usage` |
37
+ | "I need docs or a blog" | `docs` |
38
+ | "I need booking / scheduling" | `scheduling` |
39
+ | "I need organizations / teams / many workspaces" | `multi-tenant` |
40
+
41
+ If the need maps to none of these, omit `--need`, and tell the user which
42
+ need you could not map — the recommendation then comes from the site alone.
43
+
44
+ ### Step 2 — Run the helper
45
+
46
+ From the project root:
47
+
48
+ ```bash
49
+ pnpm exec tsx .claude/skills/upgrade-plan/scripts/upgrade-plan.ts [--need <value>]
50
+ ```
51
+
52
+ It prints one JSON object:
53
+
54
+ - `pricing.status` — `ok` (the page published prices), `unpublished` (the
55
+ page loaded but carries no machine-readable offers) or `unreachable`
56
+ (network error, timeout or error status). `pricing.url` is the link to give
57
+ the user.
58
+ - `options[]` — the seven options, always all seven, each with `adds`,
59
+ `requires`, and `prices[]` (empty, with `status: "not published on the
60
+ pricing page"`, when the page does not price it).
61
+ - `alsoPublished[]` — other offers on the pricing page that are none of the
62
+ seven (for example a one-off service), with their published price.
63
+ - `site` — this site's `modules`, `template`, `shape`, `design`, whether it
64
+ already prices something (`sellsSomething`), whether commerce is installed,
65
+ and whether `AILK_LICENSE_KEY` is set in this shell (`licenseKeySet` —
66
+ presence only, never the value).
67
+ - `recommendation` — one `option`, its `reason`, and its `link`.
68
+
69
+ Exit status 0 in all three pricing states. Exit 2 is a usage error — re-run
70
+ without the argument it names.
71
+
72
+ ### Step 3 — Explain it
73
+
74
+ Answer in this order, in plain words:
75
+
76
+ 1. **Your site.** State the shape and the modules from `site`, the template
77
+ and design when recorded, whether it already prices anything, and whether
78
+ a licence key is set in this shell. A `null` field is "not recorded —
79
+ scaffolded without `--template`"; never guess a shape. If the key is not
80
+ set, say "not set in this shell" (a key kept only in `.env` reads that way).
81
+ 2. **The options, side by side.** A table of all seven options: name, what it
82
+ adds, what it requires, and its price exactly as `prices[]` gives it
83
+ (figure, currency and unit text). An option with no price reads
84
+ "not published on the pricing page — see https://ailaunchkit.ai/pricing".
85
+ Then list `alsoPublished` under "Also on the pricing page".
86
+ 3. **The recommendation.** Exactly one option — `recommendation.option` —
87
+ with its reason, naming the module or need that decided it. Do not offer a
88
+ second recommendation; you may say what would change it (for example "if
89
+ you add multi-tenant later, that moves you to Pro Plus").
90
+ 4. **What happens next.** Link `recommendation.link`. After purchase the
91
+ licence key arrives by email; set it as `AILK_LICENSE_KEY` in your
92
+ environment. To install the module(s): run
93
+ `pnpm dlx create-ailk@latest --help`, and name `add-module` only if that
94
+ output lists it. Otherwise say: re-run `create-ailk` with
95
+ `--modules <module>` and the key set, into a new directory, and move your
96
+ content across.
97
+
98
+ ## Hard rules
99
+
100
+ - **Never state a price that is not in the helper's output for this run.**
101
+ Not from memory, not from an earlier run, not from another page, not as an
102
+ estimate or a range. A price appears in your answer only if it appears in
103
+ this run's `options[].prices` or `alsoPublished`.
104
+ - **Unreachable means no prices.** When `pricing.status` is `unreachable`,
105
+ say the pricing page could not be reached, give no price for any option,
106
+ and link https://ailaunchkit.ai/pricing. Still show the site and the
107
+ recommendation — neither depends on a price.
108
+ - **Unpublished means no prices.** When `pricing.status` is `unpublished`,
109
+ say the pricing page does not publish machine-readable prices yet and link
110
+ https://ailaunchkit.ai/pricing.
111
+ - **Read-only.** Write no file and install nothing. The only outside command
112
+ besides the helper is the `--help` probe in step 3.
113
+ - **Never print the licence key.** Report only whether it is set.
114
+
115
+ ## References
116
+
117
+ - `references/options.md` — the seven options in plain words.
@@ -0,0 +1,24 @@
1
+ # The options
2
+
3
+ What each option adds and what it requires, in plain words. Names and
4
+ structure only — prices come from https://ailaunchkit.ai/pricing at run time,
5
+ never from this file.
6
+
7
+ Source: the AI Launch Kit product vocabulary (Commerce; Packaging and
8
+ delivery). Levels are Free, Pro and Pro Plus; Agency is an agreement, not a
9
+ level; Commerce, SaaS and SaaS with Usage are the three rungs of the one
10
+ commerce add-on, bought on top of a level.
11
+
12
+ | Option | What it adds | Requires |
13
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------- |
14
+ | **Free** | The open-source base: the website, its API and MCP server, and the marketing module. Every site is agent-discoverable at this level. | Nothing — no licence key |
15
+ | **Pro** | The paid modules for one site — docs and blog, scheduling, signal collectors, the Admin app — kept current. | A licence key for the site |
16
+ | **Pro Plus** | Everything in Pro, plus the multi-tenant module: organizations, workspaces and members. | A licence key for the site |
17
+ | **Agency** | A reseller agreement for building sites for clients. Not a bigger level. | Each client site is licensed Pro or Pro Plus |
18
+ | **Commerce** | Checkout, payment links, hosted invoices, subscriptions and the customer portal, through your own Stripe account. | Any paid level (Pro or Pro Plus) |
19
+ | **SaaS** | Commerce plus plans, trials, coupons and entitlements mapped to feature flags — for a product that bills its tenants. | Pro Plus |
20
+ | **SaaS with Usage** | SaaS plus usage metering, prepaid credits, overage and spend limits. | Pro Plus |
21
+
22
+ Payment always happens on a Stripe-hosted page; the site never renders a card
23
+ form. Paid bookings (deposits, no-show holds) belong to the scheduling module,
24
+ not to Commerce.