create-ailk 0.6.0 → 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 (248) hide show
  1. package/README.md +44 -5
  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 +124 -13
  11. package/dist/copy.d.ts +14 -0
  12. package/dist/copy.js +38 -1
  13. package/dist/index.d.ts +4 -2
  14. package/dist/index.js +6 -1
  15. package/dist/lib/extract-module-bundle.d.ts +76 -2
  16. package/dist/lib/extract-module-bundle.js +219 -8
  17. package/dist/lib/license-key-files.d.ts +15 -0
  18. package/dist/lib/license-key-files.js +102 -0
  19. package/dist/lib/module-license-gate.d.ts +6 -1
  20. package/dist/lib/module-license-gate.js +6 -1
  21. package/dist/lib/pro-callout.d.ts +16 -10
  22. package/dist/lib/pro-callout.js +27 -4
  23. package/dist/license-set.d.ts +34 -0
  24. package/dist/license-set.js +194 -0
  25. package/dist/module-architecture.d.ts +20 -0
  26. package/dist/module-architecture.js +77 -19
  27. package/dist/modules/commerce/0.6.0.tar.gz +0 -0
  28. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  29. package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
  30. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  31. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  32. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  33. package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
  34. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  35. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  36. package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
  37. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  38. package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
  39. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  40. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  41. package/dist/modules/workspace/0.6.0.tar.gz +0 -0
  42. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  43. package/dist/parse-args.d.ts +7 -0
  44. package/dist/parse-args.js +23 -1
  45. package/dist/programmatic.d.ts +46 -0
  46. package/dist/programmatic.js +144 -19
  47. package/dist/site-chrome.d.ts +18 -7
  48. package/dist/site-chrome.js +32 -14
  49. package/dist/site-roster.d.ts +127 -0
  50. package/dist/site-roster.js +494 -0
  51. package/dist/surfaces.d.ts +20 -7
  52. package/dist/surfaces.js +149 -28
  53. package/dist/sync-routes.d.ts +9 -0
  54. package/dist/sync-routes.js +2 -2
  55. package/dist/template-manifest.d.ts +58 -2
  56. package/dist/template-manifest.js +196 -69
  57. package/package.json +6 -4
  58. package/site-templates/_base/content/en/BookCall/book-call.mdx +53 -0
  59. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +66 -0
  60. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +68 -0
  61. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  62. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +2 -3
  63. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  64. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +23 -0
  65. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +23 -0
  66. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +23 -0
  67. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  68. package/site-templates/designs/standard/DESIGN.md +162 -0
  69. package/site-templates/marketing-site/DESIGN.md +162 -0
  70. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +312 -57
  71. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +209 -90
  72. package/site-templates/marketing-site/ailk-template.json +1 -0
  73. package/site-templates/marketing-site-free/DESIGN.md +162 -0
  74. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +260 -66
  75. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +294 -114
  76. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  77. package/site-templates/minimalism-site/DESIGN.md +162 -0
  78. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  79. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +185 -51
  80. package/site-templates/minimalism-site/ailk-template.json +3 -2
  81. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +53 -0
  82. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  83. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  84. package/site-templates/saas-product/DESIGN.md +162 -0
  85. package/site-templates/simple-service/DESIGN.md +162 -0
  86. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +135 -26
  87. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +114 -59
  88. package/site-templates/simple-service/ailk-template.json +4 -3
  89. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +53 -0
  90. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +1 -36
  91. package/site-templates/simple-service/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  92. package/templates/.claude/settings.json +15 -0
  93. package/templates/.claude/skills/README.md +8 -8
  94. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  95. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  96. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  97. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  98. package/templates/.claude/skills/add-page/references/page-types.md +111 -0
  99. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  100. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  101. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  102. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  103. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  104. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  105. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  106. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  107. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  108. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +8 -8
  109. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +2 -2
  110. package/templates/.claude/skills/{provision-config → setup-deploy}/references/runbook-template.md +8 -8
  111. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  112. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  113. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  114. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  115. package/templates/.github/workflows/ci.yml +5 -0
  116. package/templates/CLAUDE.md +10 -5
  117. package/templates/DESIGN.md +162 -0
  118. package/templates/README.md +134 -38
  119. package/templates/apps/api/.env.example +2 -1
  120. package/templates/apps/api/package.json +1 -1
  121. package/templates/apps/api/src/config/__tests__/index.test.ts +37 -2
  122. package/templates/apps/api/src/config/index.ts +19 -6
  123. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  124. package/templates/apps/api/src/lib/site.ts +5 -3
  125. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  126. package/templates/apps/api/src/middleware/auth.ts +9 -0
  127. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  128. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  129. package/templates/apps/api/src/server.ts +6 -0
  130. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  131. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  132. package/templates/apps/mcp/package.json +2 -1
  133. package/templates/apps/mcp/src/index.ts +7 -0
  134. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  135. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  136. package/templates/apps/web/PRODUCT.md +86 -0
  137. package/templates/apps/web/__tests__/setup.ts +18 -0
  138. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  139. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  140. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  141. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  142. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  143. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  144. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  145. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  146. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  147. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  148. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  149. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  150. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +94 -33
  151. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +53 -23
  152. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +96 -0
  153. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +84 -2
  154. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +5 -6
  155. package/templates/apps/web/app/[locale]/contact/page.tsx +25 -7
  156. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  157. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  158. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  159. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  160. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  161. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  162. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  163. package/templates/apps/web/app/[locale]/layout.tsx +113 -51
  164. package/templates/apps/web/app/[locale]/newsletter/page.tsx +50 -0
  165. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  166. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  167. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  168. package/templates/apps/web/app/[locale]/{shipping → purchase-policy}/page.tsx +15 -10
  169. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  170. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  171. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  172. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  173. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  174. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  175. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  176. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  177. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +48 -0
  178. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  179. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  180. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  181. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  182. package/templates/apps/web/app/error-fallback.tsx +17 -45
  183. package/templates/apps/web/app/not-found.tsx +14 -38
  184. package/templates/apps/web/app/og/route.tsx +6 -0
  185. package/templates/apps/web/eslint.config.mjs +3 -0
  186. package/templates/apps/web/instrumentation.ts +14 -0
  187. package/templates/apps/web/lib/__tests__/site-theme.test.ts +135 -20
  188. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  189. package/templates/apps/web/lib/license-key-store.ts +52 -0
  190. package/templates/apps/web/lib/nav-config.ts +64 -12
  191. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  192. package/templates/apps/web/lib/site-brand.tsx +4 -8
  193. package/templates/apps/web/lib/site-chrome.ts +3 -3
  194. package/templates/apps/web/lib/site-identity.ts +134 -0
  195. package/templates/apps/web/lib/site-theme.ts +11 -0
  196. package/templates/apps/web/messages/en.json +52 -37
  197. package/templates/apps/web/middleware.ts +1 -1
  198. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  199. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  200. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  201. package/templates/apps/web/public/favicon-16x16.png +0 -0
  202. package/templates/apps/web/public/favicon-32x32.png +0 -0
  203. package/templates/apps/web/public/favicon.ico +0 -0
  204. package/templates/apps/web/public/favicon.svg +3 -3
  205. package/templates/apps/web/public/logomark.svg +6 -3
  206. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  207. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  208. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  209. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  210. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  211. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  212. package/templates/apps/web/public/site.webmanifest +4 -4
  213. package/templates/apps/web/public/wordmark-light.svg +4 -0
  214. package/templates/apps/web/public/wordmark.svg +3 -3
  215. package/templates/apps/web/security-headers.config.ts +5 -1
  216. package/templates/apps/web/src/lib/commerce-sections.ts +35 -3
  217. package/templates/content/_site.mdx +41 -3
  218. package/templates/content/en/AboutPage/about.mdx +150 -144
  219. package/templates/content/en/BlogList/blog.mdx +105 -0
  220. package/templates/content/en/ContactPage/contact.mdx +44 -85
  221. package/templates/content/en/FAQPage/faq.mdx +86 -57
  222. package/templates/content/en/HomePage/home.mdx +276 -217
  223. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +182 -0
  224. package/templates/content/en/SoftwareProduct/product.mdx +175 -0
  225. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  226. package/templates/database/CHANGELOG.md +14 -0
  227. package/templates/database/package.json +3 -2
  228. package/templates/package.json +3 -1
  229. package/templates/tools/lint-architecture.ts +315 -0
  230. package/templates/tools/tsconfig.json +14 -0
  231. package/versions.json +33 -33
  232. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  233. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  234. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  235. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  236. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  237. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  238. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  239. package/templates/apps/web/app/[locale]/cancellation/page.tsx +0 -44
  240. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  241. package/templates/apps/web/public/logo-dark.svg +0 -21
  242. package/templates/apps/web/public/logo-light.svg +0 -21
  243. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  244. package/templates/content/en/LandingPage/blog.mdx +0 -83
  245. package/templates/content/en/LandingPage/features.mdx +0 -103
  246. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  247. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  248. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -0,0 +1,182 @@
1
+ ---
2
+ type: "PurchasePolicyPage"
3
+ slug: "purchase-policy"
4
+ title: "Purchase Policy"
5
+ description: "How returns, shipping and refunds work for orders placed on this site. Placeholder policy — replace every section before you launch."
6
+ placeholder: true
7
+ sections:
8
+ [
9
+ {
10
+ "id": "purchase-policy-document",
11
+ "type": "document-chassis",
12
+ "data":
13
+ {
14
+ "headline": "Purchase Policy",
15
+ "layout": "article",
16
+ "updated": "Last updated {Month Day, Year}",
17
+ "navGroupLabel": "Contents",
18
+ "sections":
19
+ [
20
+ {
21
+ "id": "returns",
22
+ "heading": "Returns",
23
+ "blocks":
24
+ [
25
+ {
26
+ "kind": "paragraph",
27
+ "text": "This page is starter content that shipped with your site. It is not a purchase policy, it makes no commitment on behalf of Your Company, and it is not legal advice. Replace every section with the policy you actually operate, and have someone qualified read it before you publish.",
28
+ },
29
+ {
30
+ "kind": "paragraph",
31
+ "text": "This section explains how returns work on this site. The headings are the ones a customer and an agent both look for, so keep them and fill in your own terms.",
32
+ },
33
+ ],
34
+ "subsections":
35
+ [
36
+ {
37
+ "id": "return-window",
38
+ "heading": "How long you have",
39
+ "blocks":
40
+ [
41
+ {
42
+ "kind": "paragraph",
43
+ "text": "State the return window in days, counted from a date a customer can verify — delivery, not dispatch. If different products carry different windows, say which, and say plainly which items cannot be returned at all.",
44
+ },
45
+ ],
46
+ },
47
+ {
48
+ "id": "condition",
49
+ "heading": "What condition an item must be in",
50
+ "blocks":
51
+ [
52
+ {
53
+ "kind": "paragraph",
54
+ "text": "Describe the condition an item must come back in — unused, original packaging, tags attached, or whatever your standard is. Name anything that voids a return, such as a removed seal on a digital product or a personalised item.",
55
+ },
56
+ ],
57
+ },
58
+ {
59
+ "id": "how-to-return",
60
+ "heading": "How to start a return",
61
+ "blocks":
62
+ [
63
+ {
64
+ "kind": "paragraph",
65
+ "text": "Give the customer one route to start a return and the information they need to hand: an order number, the item, and the reason. If you issue a return label, say who pays for it; if you do not, say that too.",
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ "id": "exchanges",
71
+ "heading": "Exchanges and faulty items",
72
+ "blocks":
73
+ [
74
+ {
75
+ "kind": "paragraph",
76
+ "text": "A faulty or incorrectly shipped item is usually not an ordinary return. Set out how those are handled, and say whether the return window above applies to them.",
77
+ },
78
+ ],
79
+ },
80
+ ],
81
+ },
82
+ {
83
+ "id": "shipping",
84
+ "heading": "Shipping",
85
+ "blocks":
86
+ [
87
+ {
88
+ "kind": "paragraph",
89
+ "text": "This section explains how orders from this site are shipped.",
90
+ },
91
+ ],
92
+ "subsections":
93
+ [
94
+ {
95
+ "id": "destinations",
96
+ "heading": "Where we ship",
97
+ "blocks":
98
+ [
99
+ {
100
+ "kind": "paragraph",
101
+ "text": "List the countries or regions you ship to, and say plainly where you do not. If some products are restricted to a subset of those destinations, say which.",
102
+ },
103
+ ],
104
+ },
105
+ {
106
+ "id": "processing-and-transit",
107
+ "heading": "How long it takes",
108
+ "blocks":
109
+ [
110
+ {
111
+ "kind": "paragraph",
112
+ "text": "Give processing time and transit time as two separate figures, in business days, per shipping option. A single blended estimate is the one thing customers most often read as a promise you did not make.",
113
+ },
114
+ ],
115
+ },
116
+ {
117
+ "id": "costs",
118
+ "heading": "What shipping costs",
119
+ "blocks":
120
+ [
121
+ {
122
+ "kind": "paragraph",
123
+ "text": "Set out the cost of each shipping option and any threshold above which it is free. Say whether the figure shown at checkout is final, and whether duties and import taxes are included or collected on delivery.",
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ "id": "tracking",
129
+ "heading": "Tracking your order",
130
+ "blocks":
131
+ [
132
+ {
133
+ "kind": "paragraph",
134
+ "text": "Say when tracking information is sent, where it comes from, and what a customer should do if it has not updated for a while.",
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ "id": "lost-or-damaged",
140
+ "heading": "Lost or damaged parcels",
141
+ "blocks":
142
+ [
143
+ {
144
+ "kind": "paragraph",
145
+ "text": "Describe how long a parcel must be missing before you treat it as lost, what you do then, and what you need from the customer — photographs for damage, a written report for a loss. Returns of damaged goods belong under Returns above.",
146
+ },
147
+ ],
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ "id": "refunds",
153
+ "heading": "Refunds",
154
+ "blocks":
155
+ [
156
+ {
157
+ "kind": "paragraph",
158
+ "text": "Say what a customer gets back after a return — the item price, the original shipping, or both, and how long the refund takes to reach the payment method it came from. If you offer store credit or a rebooking instead, describe when each applies.",
159
+ },
160
+ ],
161
+ "subsections":
162
+ [
163
+ {
164
+ "id": "questions",
165
+ "heading": "Questions about a refund",
166
+ "blocks":
167
+ [
168
+ {
169
+ "kind": "paragraph",
170
+ "text": "Point to the one place a customer should write, and say roughly how quickly you answer. A policy nobody can ask a question about is a policy that generates disputes.",
171
+ },
172
+ ],
173
+ },
174
+ ],
175
+ },
176
+ ],
177
+ },
178
+ },
179
+ ]
180
+ ---
181
+
182
+ {/* Rendered from frontmatter `sections[]`; the MDX body is not read by the section-catalog renderer. Product shape (#6646): returns, shipping and refunds. A service-shape template overrides this seed with its own cancellation and refunds file. The JSON-LD — a WebPage, wrapping a MerchantReturnPolicy when a returns section is present — is emitted by `buildPurchasePolicyPage` (#6646), not hand-rolled here. */}
@@ -0,0 +1,175 @@
1
+ ---
2
+ type: "SoftwareProduct"
3
+ slug: "product"
4
+ title: "{Your product name}"
5
+ description: "{One sentence on what your product does and who it is for}"
6
+ placeholder: true
7
+ sections:
8
+ [
9
+ {
10
+ "id": "hero",
11
+ "type": "hero",
12
+ "data":
13
+ {
14
+ "eyebrow": "Product",
15
+ "headline": "{Your product name}",
16
+ "subheadline": "{One sentence on what your product does and who it is for}",
17
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
18
+ "secondaryCta":
19
+ {
20
+ "label": "{Secondary CTA}",
21
+ "href": "/pricing",
22
+ "variant": "outline",
23
+ },
24
+ },
25
+ },
26
+ {
27
+ "id": "core-features",
28
+ "type": "feature",
29
+ "data":
30
+ {
31
+ "variant": "default",
32
+ "itemStyle": "plain",
33
+ "eyebrow": "{Section label}",
34
+ "headline": "{Section heading: the outcome this section promises}",
35
+ "description": "{Two sentences on what these features let your customers do}",
36
+ "features":
37
+ [
38
+ {
39
+ "title": "{Feature name}",
40
+ "description": "{Explain what this feature lets your customers do, in plain English with no jargon}",
41
+ "icon": "rocket",
42
+ "link":
43
+ {
44
+ "label": "Learn More",
45
+ "href": "#how-it-works",
46
+ "variant": "link",
47
+ },
48
+ },
49
+ {
50
+ "title": "{Feature name}",
51
+ "description": "{Explain what this feature lets your customers do, in plain English with no jargon}",
52
+ "icon": "zap",
53
+ "link":
54
+ {
55
+ "label": "Learn More",
56
+ "href": "#how-it-works",
57
+ "variant": "link",
58
+ },
59
+ },
60
+ {
61
+ "title": "{Feature name}",
62
+ "description": "{Explain what this feature lets your customers do, in plain English with no jargon}",
63
+ "icon": "sparkles",
64
+ "link":
65
+ {
66
+ "label": "Learn More",
67
+ "href": "#how-it-works",
68
+ "variant": "link",
69
+ },
70
+ },
71
+ {
72
+ "title": "{Feature name}",
73
+ "description": "{Explain what this feature lets your customers do, in plain English with no jargon}",
74
+ "icon": "gauge",
75
+ "link":
76
+ {
77
+ "label": "Learn More",
78
+ "href": "#how-it-works",
79
+ "variant": "link",
80
+ },
81
+ },
82
+ {
83
+ "title": "{Feature name}",
84
+ "description": "{Explain what this feature lets your customers do, in plain English with no jargon}",
85
+ "icon": "shield-check",
86
+ "link":
87
+ {
88
+ "label": "Learn More",
89
+ "href": "#how-it-works",
90
+ "variant": "link",
91
+ },
92
+ },
93
+ ],
94
+ },
95
+ },
96
+ {
97
+ "id": "how-it-works",
98
+ "type": "feature",
99
+ "data":
100
+ {
101
+ "variant": "steps",
102
+ "numbered": true,
103
+ "eyebrow": "How it works",
104
+ "headline": "{Get set up in number easy steps}",
105
+ "description": "{Summarize the setup process briefly, so it reads as approachable and quick}",
106
+ "features":
107
+ [
108
+ {
109
+ "title": "{The first thing they do to get the outcome they want}",
110
+ "description": "{Two sentences on what the customer does in this step and what they get}",
111
+ },
112
+ {
113
+ "title": "{The second thing they do to get the outcome they want}",
114
+ "description": "{Two sentences on what the customer does in this step and what they get}",
115
+ },
116
+ {
117
+ "title": "{The third thing they do to get the outcome they want}",
118
+ "description": "{Two sentences on what the customer does in this step and what they get}",
119
+ },
120
+ ],
121
+ },
122
+ },
123
+ {
124
+ "id": "integrations",
125
+ "type": "cta",
126
+ "data":
127
+ {
128
+ "variant": "minimal",
129
+ "eyebrow": "Integrations",
130
+ "headline": "Direct integrations with your favorite tools",
131
+ "description": "{Describe what these integrations help your customers do, with one impressive fact about how they work}",
132
+ "primaryCta":
133
+ {
134
+ "label": "Get Started",
135
+ "href": "/contact",
136
+ "variant": "outline",
137
+ },
138
+ "secondaryCta":
139
+ {
140
+ "label": "See all Integrations",
141
+ "href": "#integrations-media",
142
+ "variant": "link",
143
+ },
144
+ },
145
+ },
146
+ {
147
+ "id": "integrations-media",
148
+ "type": "media-band",
149
+ "data": { "imagerySlot": true },
150
+ },
151
+ {
152
+ "id": "switch",
153
+ "type": "cta",
154
+ "data":
155
+ {
156
+ "variant": "box",
157
+ "headline": "{Switch to your product in time amount or less}",
158
+ "description": "{You shouldn't have to experience a painful problem. With your product, you can finally achieve a value outcome or get a big improvement.}",
159
+ "checklist":
160
+ ["No credit card required", "Cancel any time", "Live chat support"],
161
+ "imagerySlot": true,
162
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
163
+ "secondaryCta":
164
+ {
165
+ "label": "{Secondary CTA}",
166
+ "href": "/pricing",
167
+ "variant": "outline",
168
+ },
169
+ "closingLine": "{Social Proof goes here}",
170
+ },
171
+ },
172
+ ]
173
+ ---
174
+
175
+ {/* Your product's own page, served at /software/product. Its JSON-LD is a WebPage whose main entity is a SoftwareApplication named by this page's title, and the feature titles below become the site's featureList. Placeholder copy — replace every {brace} with your own words before you launch. */}
@@ -0,0 +1,170 @@
1
+ ---
2
+ type: "UseCasesList"
3
+ slug: "use-cases"
4
+ title: "{Use cases: who your product is for}"
5
+ description: "{One sentence on the customers your product serves and the results they get}"
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "eyebrow": "Use cases",
14
+ "headline": "{Use cases: who your product is for}",
15
+ "subheadline": "{One sentence on the customers your product serves and the results they get}",
16
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
17
+ "secondaryCta":
18
+ {
19
+ "label": "{Secondary CTA}",
20
+ "href": "/pricing",
21
+ "variant": "outline",
22
+ },
23
+ },
24
+ },
25
+ {
26
+ "id": "use-case-list",
27
+ "type": "items",
28
+ "data":
29
+ {
30
+ "headline": "{The jobs customers hire your product to do}",
31
+ "description": "{One sentence that helps a visitor find the use case that sounds like them}",
32
+ "columns": 3,
33
+ "items":
34
+ [
35
+ {
36
+ "title": "{First use case: the job a customer hires your product to do}",
37
+ "description": "{Two sentences on who this customer is and the result they get}",
38
+ "link":
39
+ {
40
+ "label": "Read the use case",
41
+ "href": "/use-cases/first-use-case",
42
+ "variant": "link",
43
+ },
44
+ },
45
+ {
46
+ "title": "{Second use case: the job a customer hires your product to do}",
47
+ "description": "{Two sentences on who this customer is and the result they get}",
48
+ "link":
49
+ {
50
+ "label": "Read the use case",
51
+ "href": "/use-cases/second-use-case",
52
+ "variant": "link",
53
+ },
54
+ },
55
+ {
56
+ "title": "{Third use case: the job a customer hires your product to do}",
57
+ "description": "{Two sentences on who this customer is and the result they get}",
58
+ "link":
59
+ {
60
+ "label": "Read the use case",
61
+ "href": "/use-cases/third-use-case",
62
+ "variant": "link",
63
+ },
64
+ },
65
+ ],
66
+ },
67
+ },
68
+ {
69
+ "id": "logo-cloud",
70
+ "type": "logoCloud",
71
+ "data":
72
+ {
73
+ "headline": "Don’t just take our word for it",
74
+ "headlineStyle": "label",
75
+ "logos":
76
+ [
77
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
78
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
79
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
80
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
81
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
82
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
83
+ ],
84
+ "layout": "inline",
85
+ "treatment": "monochrome",
86
+ },
87
+ },
88
+ {
89
+ "id": "testimonial",
90
+ "type": "testimonials",
91
+ "data":
92
+ {
93
+ "variant": "quote",
94
+ "items":
95
+ [
96
+ {
97
+ "quote": "{A customer quote, in their own words, about the result they got}",
98
+ "author": "{Customer name}",
99
+ "role": "{Their title, their company}",
100
+ },
101
+ ],
102
+ },
103
+ },
104
+ {
105
+ "id": "switch",
106
+ "type": "cta",
107
+ "data":
108
+ {
109
+ "variant": "box",
110
+ "headline": "{Switch to your product in time amount or less}",
111
+ "description": "{You shouldn't have to experience a painful problem. With your product, you can finally achieve a value outcome or get a big improvement.}",
112
+ "checklist":
113
+ ["No credit card required", "Cancel any time", "Live chat support"],
114
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
115
+ "secondaryCta":
116
+ {
117
+ "label": "{Secondary CTA}",
118
+ "href": "/pricing",
119
+ "variant": "outline",
120
+ },
121
+ "closingLine": "{Social Proof goes here}",
122
+ },
123
+ },
124
+ {
125
+ "id": "faq",
126
+ "type": "faq",
127
+ "data":
128
+ {
129
+ "headline": "FAQs",
130
+ "description": "{One sentence that invites visitors to ask what this list does not answer}",
131
+ "actions":
132
+ [
133
+ {
134
+ "kind": "button",
135
+ "label": "Contact",
136
+ "href": "/contact",
137
+ "variant": "outline",
138
+ },
139
+ ],
140
+ "presentation": "accordion",
141
+ "initialOpen": "first",
142
+ "items":
143
+ [
144
+ {
145
+ "question": "{A question your customers actually ask}",
146
+ "answer": "{Answer the question in two or three plain sentences}",
147
+ },
148
+ {
149
+ "question": "{A question your customers actually ask}",
150
+ "answer": "{Answer the question in two or three plain sentences}",
151
+ },
152
+ {
153
+ "question": "{A question your customers actually ask}",
154
+ "answer": "{Answer the question in two or three plain sentences}",
155
+ },
156
+ {
157
+ "question": "{A question your customers actually ask}",
158
+ "answer": "{Answer the question in two or three plain sentences}",
159
+ },
160
+ {
161
+ "question": "{A question your customers actually ask}",
162
+ "answer": "{Answer the question in two or three plain sentences}",
163
+ },
164
+ ],
165
+ },
166
+ },
167
+ ]
168
+ ---
169
+
170
+ {/* Rendered from frontmatter `sections[]` by the /use-cases route. The three cards link the UseCase pages at /use-cases/<slug>, and their titles become the page's JSON-LD ItemList, so keep each card's title equal to its page's title. Placeholder copy — replace every {brace} with your own words before you launch. */}
@@ -1,5 +1,19 @@
1
1
  # @working-theory/database
2
2
 
3
+ ## 0.27.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`95287bd`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/95287bd24f4be6261f848e5228ccd18f47f06ebc), [`e4df16e`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/e4df16eafaf17657cdcacb950853b6e9e61315ca), [`72472c0`](https://github.com/Working-Theory-Labs/ai-launch-kit-internal/commit/72472c018cdd6263585c5cc1c653aebc487bb9e0)]:
8
+ - @working-theory/validation@0.27.0
9
+
10
+ ## 0.26.0
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies []:
15
+ - @working-theory/validation@0.26.0
16
+
3
17
  ## 0.25.0
4
18
 
5
19
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@working-theory/database",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -60,7 +60,8 @@
60
60
  "db:seed:test": "tsx seed-test.ts",
61
61
  "db:studio": "prisma studio",
62
62
  "test": "jest --config jest.config.cjs",
63
- "test:watch": "jest --config jest.config.cjs --watch"
63
+ "test:watch": "jest --config jest.config.cjs --watch",
64
+ "postinstall": "prisma generate"
64
65
  },
65
66
  "dependencies": {
66
67
  "@prisma/adapter-pg": "^7.8.0",
@@ -17,7 +17,9 @@
17
17
  "db:migrate": "pnpm --filter @working-theory/database run db:migrate",
18
18
  "db:migrate:deploy": "pnpm --filter @working-theory/database run db:migrate:deploy",
19
19
  "db:seed": "pnpm --filter @working-theory/database run db:seed",
20
- "db:studio": "pnpm --filter @working-theory/database run db:studio"
20
+ "db:studio": "pnpm --filter @working-theory/database run db:studio",
21
+ "architecture": "tsx tools/lint-architecture.ts",
22
+ "preflight": "pnpm architecture && pnpm type-check && pnpm lint && pnpm build"
21
23
  },
22
24
  "devDependencies": {
23
25
  "@changesets/changelog-github": "^0.7.0",