create-xani-agentic-app 1.0.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 (563) hide show
  1. package/README.md +237 -0
  2. package/index.js +219 -0
  3. package/package.json +46 -0
  4. package/template/.agents/skills/ai-sdk/SKILL.md +78 -0
  5. package/template/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
  6. package/template/.agents/skills/ai-sdk/references/common-errors.md +443 -0
  7. package/template/.agents/skills/ai-sdk/references/devtools.md +52 -0
  8. package/template/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
  9. package/template/.agents/skills/better-auth-best-practices/SKILL.md +175 -0
  10. package/template/.agents/skills/checkpoint/SKILL.md +82 -0
  11. package/template/.agents/skills/create-spec/SKILL.md +132 -0
  12. package/template/.agents/skills/create-spec/references/action-required-template.md +53 -0
  13. package/template/.agents/skills/create-spec/references/readme-template.md +53 -0
  14. package/template/.agents/skills/create-spec/references/requirements-template.md +54 -0
  15. package/template/.agents/skills/create-spec/references/task-template.md +79 -0
  16. package/template/.agents/skills/find-skills/SKILL.md +142 -0
  17. package/template/.agents/skills/frontend-design/LICENSE.txt +177 -0
  18. package/template/.agents/skills/frontend-design/SKILL.md +42 -0
  19. package/template/.agents/skills/implement-feature/SKILL.md +189 -0
  20. package/template/.agents/skills/implement-feature/references/coder-prompt-template.md +46 -0
  21. package/template/.agents/skills/implement-feature/references/fix-prompt-template.md +38 -0
  22. package/template/.agents/skills/implement-feature/references/review-prompt-template.md +50 -0
  23. package/template/.agents/skills/mcp-builder/LICENSE.txt +202 -0
  24. package/template/.agents/skills/mcp-builder/SKILL.md +236 -0
  25. package/template/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
  26. package/template/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  27. package/template/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  28. package/template/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  29. package/template/.agents/skills/mcp-builder/scripts/connections.py +151 -0
  30. package/template/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
  31. package/template/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  32. package/template/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
  33. package/template/.agents/skills/nextjs/SKILL.md +434 -0
  34. package/template/.agents/skills/nextjs/overlay.yaml +284 -0
  35. package/template/.agents/skills/nextjs/references/app-router-files.md +94 -0
  36. package/template/.agents/skills/nextjs/references/async-patterns.md +87 -0
  37. package/template/.agents/skills/nextjs/references/bundling.md +180 -0
  38. package/template/.agents/skills/nextjs/references/data-patterns.md +297 -0
  39. package/template/.agents/skills/nextjs/references/debug-tricks.md +105 -0
  40. package/template/.agents/skills/nextjs/references/directives.md +73 -0
  41. package/template/.agents/skills/nextjs/references/error-handling.md +227 -0
  42. package/template/.agents/skills/nextjs/references/file-conventions.md +140 -0
  43. package/template/.agents/skills/nextjs/references/font.md +245 -0
  44. package/template/.agents/skills/nextjs/references/functions.md +108 -0
  45. package/template/.agents/skills/nextjs/references/hydration-error.md +91 -0
  46. package/template/.agents/skills/nextjs/references/image.md +173 -0
  47. package/template/.agents/skills/nextjs/references/metadata.md +301 -0
  48. package/template/.agents/skills/nextjs/references/parallel-routes.md +287 -0
  49. package/template/.agents/skills/nextjs/references/route-handlers.md +146 -0
  50. package/template/.agents/skills/nextjs/references/rsc-boundaries.md +159 -0
  51. package/template/.agents/skills/nextjs/references/runtime-selection.md +39 -0
  52. package/template/.agents/skills/nextjs/references/scripts.md +141 -0
  53. package/template/.agents/skills/nextjs/references/self-hosting.md +371 -0
  54. package/template/.agents/skills/nextjs/references/suspense-boundaries.md +67 -0
  55. package/template/.agents/skills/nextjs/upstream/SKILL.md +153 -0
  56. package/template/.agents/skills/nextjs/upstream/references/app-router-files.md +94 -0
  57. package/template/.agents/skills/nextjs/upstream/references/async-patterns.md +87 -0
  58. package/template/.agents/skills/nextjs/upstream/references/bundling.md +180 -0
  59. package/template/.agents/skills/nextjs/upstream/references/data-patterns.md +297 -0
  60. package/template/.agents/skills/nextjs/upstream/references/debug-tricks.md +105 -0
  61. package/template/.agents/skills/nextjs/upstream/references/directives.md +73 -0
  62. package/template/.agents/skills/nextjs/upstream/references/error-handling.md +227 -0
  63. package/template/.agents/skills/nextjs/upstream/references/file-conventions.md +140 -0
  64. package/template/.agents/skills/nextjs/upstream/references/font.md +245 -0
  65. package/template/.agents/skills/nextjs/upstream/references/functions.md +108 -0
  66. package/template/.agents/skills/nextjs/upstream/references/hydration-error.md +91 -0
  67. package/template/.agents/skills/nextjs/upstream/references/image.md +173 -0
  68. package/template/.agents/skills/nextjs/upstream/references/metadata.md +301 -0
  69. package/template/.agents/skills/nextjs/upstream/references/parallel-routes.md +287 -0
  70. package/template/.agents/skills/nextjs/upstream/references/route-handlers.md +146 -0
  71. package/template/.agents/skills/nextjs/upstream/references/rsc-boundaries.md +159 -0
  72. package/template/.agents/skills/nextjs/upstream/references/runtime-selection.md +39 -0
  73. package/template/.agents/skills/nextjs/upstream/references/scripts.md +141 -0
  74. package/template/.agents/skills/nextjs/upstream/references/self-hosting.md +371 -0
  75. package/template/.agents/skills/nextjs/upstream/references/suspense-boundaries.md +67 -0
  76. package/template/.agents/skills/playwright-cli/SKILL.md +344 -0
  77. package/template/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
  78. package/template/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
  79. package/template/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
  80. package/template/.agents/skills/playwright-cli/references/running-code.md +231 -0
  81. package/template/.agents/skills/playwright-cli/references/session-management.md +169 -0
  82. package/template/.agents/skills/playwright-cli/references/storage-state.md +275 -0
  83. package/template/.agents/skills/playwright-cli/references/test-generation.md +88 -0
  84. package/template/.agents/skills/playwright-cli/references/tracing.md +139 -0
  85. package/template/.agents/skills/playwright-cli/references/video-recording.md +143 -0
  86. package/template/.agents/skills/review-pr/SKILL.md +97 -0
  87. package/template/.agents/skills/security-scanner/SKILL.md +157 -0
  88. package/template/.agents/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  89. package/template/.agents/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  90. package/template/.agents/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  91. package/template/.agents/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  92. package/template/.agents/skills/security-scanner/references/A05-injection.md +155 -0
  93. package/template/.agents/skills/security-scanner/references/A06-insecure-design.md +145 -0
  94. package/template/.agents/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  95. package/template/.agents/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  96. package/template/.agents/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  97. package/template/.agents/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  98. package/template/.agents/skills/security-scanner/references/report-template.md +148 -0
  99. package/template/.agents/skills/shadcn/SKILL.md +246 -0
  100. package/template/.agents/skills/shadcn/agents/openai.yml +5 -0
  101. package/template/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
  102. package/template/.agents/skills/shadcn/assets/shadcn.png +0 -0
  103. package/template/.agents/skills/shadcn/cli.md +276 -0
  104. package/template/.agents/skills/shadcn/customization.md +209 -0
  105. package/template/.agents/skills/shadcn/evals/evals.json +47 -0
  106. package/template/.agents/skills/shadcn/mcp.md +94 -0
  107. package/template/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
  108. package/template/.agents/skills/shadcn/rules/composition.md +195 -0
  109. package/template/.agents/skills/shadcn/rules/forms.md +192 -0
  110. package/template/.agents/skills/shadcn/rules/icons.md +101 -0
  111. package/template/.agents/skills/shadcn/rules/styling.md +162 -0
  112. package/template/.agents/skills/ship-it/SKILL.md +174 -0
  113. package/template/.agents/skills/skill-creator/LICENSE.txt +202 -0
  114. package/template/.agents/skills/skill-creator/SKILL.md +485 -0
  115. package/template/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  116. package/template/.agents/skills/skill-creator/agents/comparator.md +202 -0
  117. package/template/.agents/skills/skill-creator/agents/grader.md +223 -0
  118. package/template/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  119. package/template/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  120. package/template/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  121. package/template/.agents/skills/skill-creator/references/schemas.md +430 -0
  122. package/template/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  123. package/template/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  124. package/template/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  125. package/template/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  126. package/template/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  127. package/template/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  128. package/template/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  129. package/template/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  130. package/template/.agents/skills/skill-creator/scripts/utils.py +47 -0
  131. package/template/.agents/skills/vercel-react-best-practices/AGENTS.md +3750 -0
  132. package/template/.agents/skills/vercel-react-best-practices/README.md +123 -0
  133. package/template/.agents/skills/vercel-react-best-practices/SKILL.md +148 -0
  134. package/template/.agents/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  135. package/template/.agents/skills/vercel-react-best-practices/rules/_template.md +28 -0
  136. package/template/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  137. package/template/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  138. package/template/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  139. package/template/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  140. package/template/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  141. package/template/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  142. package/template/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  143. package/template/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  144. package/template/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  145. package/template/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  146. package/template/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  147. package/template/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  148. package/template/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  149. package/template/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  150. package/template/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  151. package/template/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  152. package/template/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  153. package/template/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  154. package/template/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  155. package/template/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  156. package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  157. package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  158. package/template/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  159. package/template/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  160. package/template/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  161. package/template/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  162. package/template/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  163. package/template/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  164. package/template/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  165. package/template/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  166. package/template/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  167. package/template/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  168. package/template/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  169. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  170. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  171. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  172. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  173. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  174. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  175. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  176. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  177. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  178. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  179. package/template/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  180. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  181. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  182. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  183. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  184. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  185. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  186. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  187. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  188. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  189. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  190. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  191. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  192. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  193. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  194. package/template/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  195. package/template/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  196. package/template/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  197. package/template/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  198. package/template/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  199. package/template/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  200. package/template/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  201. package/template/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  202. package/template/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  203. package/template/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  204. package/template/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  205. package/template/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  206. package/template/.claude/agents/better-auth-expert.md +189 -0
  207. package/template/.claude/agents/code-review.md +147 -0
  208. package/template/.claude/agents/coder.md +139 -0
  209. package/template/.claude/agents/deep-dive.md +133 -0
  210. package/template/.claude/agents/polar-payments-expert.md +140 -0
  211. package/template/.claude/agents/security-scanner.md +214 -0
  212. package/template/.claude/settings.local.json +15 -0
  213. package/template/.claude/skills/ai-sdk/SKILL.md +78 -0
  214. package/template/.claude/skills/ai-sdk/references/ai-gateway.md +66 -0
  215. package/template/.claude/skills/ai-sdk/references/common-errors.md +443 -0
  216. package/template/.claude/skills/ai-sdk/references/devtools.md +52 -0
  217. package/template/.claude/skills/ai-sdk/references/type-safe-agents.md +204 -0
  218. package/template/.claude/skills/better-auth-best-practices/SKILL.md +175 -0
  219. package/template/.claude/skills/caveman/SKILL.md +49 -0
  220. package/template/.claude/skills/checkpoint/SKILL.md +82 -0
  221. package/template/.claude/skills/create-spec/SKILL.md +132 -0
  222. package/template/.claude/skills/create-spec/references/action-required-template.md +53 -0
  223. package/template/.claude/skills/create-spec/references/readme-template.md +53 -0
  224. package/template/.claude/skills/create-spec/references/requirements-template.md +54 -0
  225. package/template/.claude/skills/create-spec/references/task-template.md +79 -0
  226. package/template/.claude/skills/d3-visualization/SKILL.md +62 -0
  227. package/template/.claude/skills/find-skills/SKILL.md +142 -0
  228. package/template/.claude/skills/frontend-design/LICENSE.txt +177 -0
  229. package/template/.claude/skills/frontend-design/SKILL.md +42 -0
  230. package/template/.claude/skills/grill-me/SKILL.md +10 -0
  231. package/template/.claude/skills/grill-with-docs/ADR-FORMAT.md +47 -0
  232. package/template/.claude/skills/grill-with-docs/CONTEXT-FORMAT.md +63 -0
  233. package/template/.claude/skills/grill-with-docs/SKILL.md +88 -0
  234. package/template/.claude/skills/gsap-core/SKILL.md +267 -0
  235. package/template/.claude/skills/implement-feature/SKILL.md +189 -0
  236. package/template/.claude/skills/implement-feature/references/coder-prompt-template.md +46 -0
  237. package/template/.claude/skills/implement-feature/references/fix-prompt-template.md +38 -0
  238. package/template/.claude/skills/implement-feature/references/review-prompt-template.md +50 -0
  239. package/template/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  240. package/template/.claude/skills/mcp-builder/SKILL.md +236 -0
  241. package/template/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  242. package/template/.claude/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  243. package/template/.claude/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  244. package/template/.claude/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  245. package/template/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  246. package/template/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  247. package/template/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  248. package/template/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  249. package/template/.claude/skills/nextjs/SKILL.md +434 -0
  250. package/template/.claude/skills/nextjs/overlay.yaml +284 -0
  251. package/template/.claude/skills/nextjs/references/app-router-files.md +94 -0
  252. package/template/.claude/skills/nextjs/references/async-patterns.md +87 -0
  253. package/template/.claude/skills/nextjs/references/bundling.md +180 -0
  254. package/template/.claude/skills/nextjs/references/data-patterns.md +297 -0
  255. package/template/.claude/skills/nextjs/references/debug-tricks.md +105 -0
  256. package/template/.claude/skills/nextjs/references/directives.md +73 -0
  257. package/template/.claude/skills/nextjs/references/error-handling.md +227 -0
  258. package/template/.claude/skills/nextjs/references/file-conventions.md +140 -0
  259. package/template/.claude/skills/nextjs/references/font.md +245 -0
  260. package/template/.claude/skills/nextjs/references/functions.md +108 -0
  261. package/template/.claude/skills/nextjs/references/hydration-error.md +91 -0
  262. package/template/.claude/skills/nextjs/references/image.md +173 -0
  263. package/template/.claude/skills/nextjs/references/metadata.md +301 -0
  264. package/template/.claude/skills/nextjs/references/parallel-routes.md +287 -0
  265. package/template/.claude/skills/nextjs/references/route-handlers.md +146 -0
  266. package/template/.claude/skills/nextjs/references/rsc-boundaries.md +159 -0
  267. package/template/.claude/skills/nextjs/references/runtime-selection.md +39 -0
  268. package/template/.claude/skills/nextjs/references/scripts.md +141 -0
  269. package/template/.claude/skills/nextjs/references/self-hosting.md +371 -0
  270. package/template/.claude/skills/nextjs/references/suspense-boundaries.md +67 -0
  271. package/template/.claude/skills/nextjs/upstream/SKILL.md +153 -0
  272. package/template/.claude/skills/nextjs/upstream/references/app-router-files.md +94 -0
  273. package/template/.claude/skills/nextjs/upstream/references/async-patterns.md +87 -0
  274. package/template/.claude/skills/nextjs/upstream/references/bundling.md +180 -0
  275. package/template/.claude/skills/nextjs/upstream/references/data-patterns.md +297 -0
  276. package/template/.claude/skills/nextjs/upstream/references/debug-tricks.md +105 -0
  277. package/template/.claude/skills/nextjs/upstream/references/directives.md +73 -0
  278. package/template/.claude/skills/nextjs/upstream/references/error-handling.md +227 -0
  279. package/template/.claude/skills/nextjs/upstream/references/file-conventions.md +140 -0
  280. package/template/.claude/skills/nextjs/upstream/references/font.md +245 -0
  281. package/template/.claude/skills/nextjs/upstream/references/functions.md +108 -0
  282. package/template/.claude/skills/nextjs/upstream/references/hydration-error.md +91 -0
  283. package/template/.claude/skills/nextjs/upstream/references/image.md +173 -0
  284. package/template/.claude/skills/nextjs/upstream/references/metadata.md +301 -0
  285. package/template/.claude/skills/nextjs/upstream/references/parallel-routes.md +287 -0
  286. package/template/.claude/skills/nextjs/upstream/references/route-handlers.md +146 -0
  287. package/template/.claude/skills/nextjs/upstream/references/rsc-boundaries.md +159 -0
  288. package/template/.claude/skills/nextjs/upstream/references/runtime-selection.md +39 -0
  289. package/template/.claude/skills/nextjs/upstream/references/scripts.md +141 -0
  290. package/template/.claude/skills/nextjs/upstream/references/self-hosting.md +371 -0
  291. package/template/.claude/skills/nextjs/upstream/references/suspense-boundaries.md +67 -0
  292. package/template/.claude/skills/playwright-cli/SKILL.md +344 -0
  293. package/template/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  294. package/template/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  295. package/template/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  296. package/template/.claude/skills/playwright-cli/references/running-code.md +231 -0
  297. package/template/.claude/skills/playwright-cli/references/session-management.md +169 -0
  298. package/template/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  299. package/template/.claude/skills/playwright-cli/references/test-generation.md +88 -0
  300. package/template/.claude/skills/playwright-cli/references/tracing.md +139 -0
  301. package/template/.claude/skills/playwright-cli/references/video-recording.md +143 -0
  302. package/template/.claude/skills/react-three-fiber/SKILL.md +180 -0
  303. package/template/.claude/skills/remotion/SKILL.md +43 -0
  304. package/template/.claude/skills/review-pr/SKILL.md +97 -0
  305. package/template/.claude/skills/security-scanner/SKILL.md +157 -0
  306. package/template/.claude/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  307. package/template/.claude/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  308. package/template/.claude/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  309. package/template/.claude/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  310. package/template/.claude/skills/security-scanner/references/A05-injection.md +155 -0
  311. package/template/.claude/skills/security-scanner/references/A06-insecure-design.md +145 -0
  312. package/template/.claude/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  313. package/template/.claude/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  314. package/template/.claude/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  315. package/template/.claude/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  316. package/template/.claude/skills/security-scanner/references/report-template.md +148 -0
  317. package/template/.claude/skills/shadcn/SKILL.md +246 -0
  318. package/template/.claude/skills/shadcn/agents/openai.yml +5 -0
  319. package/template/.claude/skills/shadcn/assets/shadcn-small.png +0 -0
  320. package/template/.claude/skills/shadcn/assets/shadcn.png +0 -0
  321. package/template/.claude/skills/shadcn/cli.md +276 -0
  322. package/template/.claude/skills/shadcn/customization.md +209 -0
  323. package/template/.claude/skills/shadcn/evals/evals.json +47 -0
  324. package/template/.claude/skills/shadcn/mcp.md +94 -0
  325. package/template/.claude/skills/shadcn/rules/base-vs-radix.md +306 -0
  326. package/template/.claude/skills/shadcn/rules/composition.md +195 -0
  327. package/template/.claude/skills/shadcn/rules/forms.md +192 -0
  328. package/template/.claude/skills/shadcn/rules/icons.md +101 -0
  329. package/template/.claude/skills/shadcn/rules/styling.md +162 -0
  330. package/template/.claude/skills/ship-it/SKILL.md +174 -0
  331. package/template/.claude/skills/skill-creator/LICENSE.txt +202 -0
  332. package/template/.claude/skills/skill-creator/SKILL.md +485 -0
  333. package/template/.claude/skills/skill-creator/agents/analyzer.md +274 -0
  334. package/template/.claude/skills/skill-creator/agents/comparator.md +202 -0
  335. package/template/.claude/skills/skill-creator/agents/grader.md +223 -0
  336. package/template/.claude/skills/skill-creator/assets/eval_review.html +146 -0
  337. package/template/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  338. package/template/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  339. package/template/.claude/skills/skill-creator/references/schemas.md +430 -0
  340. package/template/.claude/skills/skill-creator/scripts/__init__.py +0 -0
  341. package/template/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  342. package/template/.claude/skills/skill-creator/scripts/generate_report.py +326 -0
  343. package/template/.claude/skills/skill-creator/scripts/improve_description.py +247 -0
  344. package/template/.claude/skills/skill-creator/scripts/package_skill.py +136 -0
  345. package/template/.claude/skills/skill-creator/scripts/quick_validate.py +103 -0
  346. package/template/.claude/skills/skill-creator/scripts/run_eval.py +310 -0
  347. package/template/.claude/skills/skill-creator/scripts/run_loop.py +328 -0
  348. package/template/.claude/skills/skill-creator/scripts/utils.py +47 -0
  349. package/template/.claude/skills/svelte/SKILL.md +284 -0
  350. package/template/.claude/skills/tdd/SKILL.md +109 -0
  351. package/template/.claude/skills/tdd/deep-modules.md +33 -0
  352. package/template/.claude/skills/tdd/interface-design.md +31 -0
  353. package/template/.claude/skills/tdd/mocking.md +59 -0
  354. package/template/.claude/skills/tdd/refactoring.md +10 -0
  355. package/template/.claude/skills/tdd/tests.md +61 -0
  356. package/template/.claude/skills/threejs/SKILL.md +43 -0
  357. package/template/.claude/skills/to-issues/SKILL.md +83 -0
  358. package/template/.claude/skills/to-prd/SKILL.md +76 -0
  359. package/template/.claude/skills/vercel-react-best-practices/AGENTS.md +3750 -0
  360. package/template/.claude/skills/vercel-react-best-practices/README.md +123 -0
  361. package/template/.claude/skills/vercel-react-best-practices/SKILL.md +148 -0
  362. package/template/.claude/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  363. package/template/.claude/skills/vercel-react-best-practices/rules/_template.md +28 -0
  364. package/template/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  365. package/template/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  366. package/template/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  367. package/template/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  368. package/template/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  369. package/template/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  370. package/template/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  371. package/template/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  372. package/template/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  373. package/template/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  374. package/template/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  375. package/template/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  376. package/template/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  377. package/template/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  378. package/template/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  379. package/template/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  380. package/template/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  381. package/template/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  382. package/template/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  383. package/template/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  384. package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  385. package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  386. package/template/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  387. package/template/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  388. package/template/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  389. package/template/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  390. package/template/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  391. package/template/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  392. package/template/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  393. package/template/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  394. package/template/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  395. package/template/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  396. package/template/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  397. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  398. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  399. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  400. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  401. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  402. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  403. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  404. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  405. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  406. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  407. package/template/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  408. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  409. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  410. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  411. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  412. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  413. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  414. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  415. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  416. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  417. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  418. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  419. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  420. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  421. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  422. package/template/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  423. package/template/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  424. package/template/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  425. package/template/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  426. package/template/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  427. package/template/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  428. package/template/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  429. package/template/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  430. package/template/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  431. package/template/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  432. package/template/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  433. package/template/.claude/skills/video-downloader/SKILL.md +42 -0
  434. package/template/.claude/skills/web-design-guidelines/SKILL.md +39 -0
  435. package/template/.claude/skills/webgpu-threejs-tsl/REFERENCE.md +371 -0
  436. package/template/.claude/skills/webgpu-threejs-tsl/SKILL.md +93 -0
  437. package/template/.claude/skills/webgpu-threejs-tsl/docs/compute-shaders.md +578 -0
  438. package/template/.claude/skills/webgpu-threejs-tsl/docs/core-concepts.md +497 -0
  439. package/template/.claude/skills/webgpu-threejs-tsl/docs/device-loss.md +359 -0
  440. package/template/.claude/skills/webgpu-threejs-tsl/docs/limits-and-features.md +133 -0
  441. package/template/.claude/skills/webgpu-threejs-tsl/docs/materials.md +353 -0
  442. package/template/.claude/skills/webgpu-threejs-tsl/docs/post-processing.md +515 -0
  443. package/template/.claude/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +324 -0
  444. package/template/.claude/skills/webgpu-threejs-tsl/examples/basic-setup.js +87 -0
  445. package/template/.claude/skills/webgpu-threejs-tsl/examples/custom-material.js +170 -0
  446. package/template/.claude/skills/webgpu-threejs-tsl/examples/earth-shader.js +292 -0
  447. package/template/.claude/skills/webgpu-threejs-tsl/examples/particle-system.js +259 -0
  448. package/template/.claude/skills/webgpu-threejs-tsl/examples/post-processing.js +199 -0
  449. package/template/.claude/skills/webgpu-threejs-tsl/templates/compute-shader.js +343 -0
  450. package/template/.claude/skills/webgpu-threejs-tsl/templates/webgpu-project.js +276 -0
  451. package/template/.claude/skills/zoom-out/SKILL.md +7 -0
  452. package/template/.mcp.json +5 -0
  453. package/template/.nvmrc +1 -0
  454. package/template/.prettierignore +25 -0
  455. package/template/.prettierrc +11 -0
  456. package/template/.vscode/settings.json +1 -0
  457. package/template/.vscode/tasks.json.example +85 -0
  458. package/template/AGENTS.md +37 -0
  459. package/template/CLAUDE.md +75 -0
  460. package/template/CONTEXT.md +29 -0
  461. package/template/DESIGN.md +451 -0
  462. package/template/README.md +394 -0
  463. package/template/_gitignore +48 -0
  464. package/template/components.json +21 -0
  465. package/template/docker-compose.yml +9 -0
  466. package/template/docs/business/starter-prompt.md +94 -0
  467. package/template/docs/technical/ai/streaming.md +520 -0
  468. package/template/docs/technical/ai/structured-data.md +409 -0
  469. package/template/docs/technical/betterauth/polar.md +476 -0
  470. package/template/docs/technical/react-markdown.md +123 -0
  471. package/template/drizzle/0000_chilly_the_phantom.sql +50 -0
  472. package/template/drizzle/0001_last_warpath.sql +5 -0
  473. package/template/drizzle/meta/0000_snapshot.json +326 -0
  474. package/template/drizzle/meta/0001_snapshot.json +410 -0
  475. package/template/drizzle/meta/_journal.json +20 -0
  476. package/template/drizzle.config.ts +10 -0
  477. package/template/env.example +26 -0
  478. package/template/eslint.config.mjs +75 -0
  479. package/template/next-env.d.ts +6 -0
  480. package/template/next.config.ts +57 -0
  481. package/template/package.json +79 -0
  482. package/template/postcss.config.mjs +5 -0
  483. package/template/public/file.svg +1 -0
  484. package/template/public/globe.svg +1 -0
  485. package/template/public/next.svg +1 -0
  486. package/template/public/vercel.svg +1 -0
  487. package/template/public/window.svg +1 -0
  488. package/template/scripts/setup.ts +277 -0
  489. package/template/skills-lock.json +61 -0
  490. package/template/specs/ui-polish-responsive/README.md +59 -0
  491. package/template/specs/ui-polish-responsive/action-required.md +3 -0
  492. package/template/specs/ui-polish-responsive/requirements.md +53 -0
  493. package/template/specs/ui-polish-responsive/tasks/task-01-globals-css.md +144 -0
  494. package/template/specs/ui-polish-responsive/tasks/task-02-layout.md +66 -0
  495. package/template/specs/ui-polish-responsive/tasks/task-03-site-header.md +79 -0
  496. package/template/specs/ui-polish-responsive/tasks/task-04-site-footer.md +63 -0
  497. package/template/specs/ui-polish-responsive/tasks/task-05-home-page.md +215 -0
  498. package/template/specs/ui-polish-responsive/tasks/task-06-dashboard.md +222 -0
  499. package/template/specs/ui-polish-responsive/tasks/task-07-chat-page.md +225 -0
  500. package/template/specs/ui-polish-responsive/tasks/task-08-profile-page.md +192 -0
  501. package/template/specs/ui-polish-responsive/tasks/task-09-auth-pages.md +97 -0
  502. package/template/specs/ui-polish-responsive/tasks/task-10-setup-checklist.md +120 -0
  503. package/template/specs/ui-polish-responsive/tasks/task-11-starter-prompt-modal.md +87 -0
  504. package/template/src/app/(auth)/forgot-password/page.tsx +35 -0
  505. package/template/src/app/(auth)/layout.tsx +7 -0
  506. package/template/src/app/(auth)/login/page.tsx +44 -0
  507. package/template/src/app/(auth)/register/page.tsx +33 -0
  508. package/template/src/app/(auth)/reset-password/page.tsx +36 -0
  509. package/template/src/app/api/auth/[...all]/route.ts +4 -0
  510. package/template/src/app/api/chat/route.ts +80 -0
  511. package/template/src/app/api/diagnostics/route.ts +162 -0
  512. package/template/src/app/chat/error.tsx +46 -0
  513. package/template/src/app/chat/loading.tsx +42 -0
  514. package/template/src/app/chat/page.tsx +348 -0
  515. package/template/src/app/dashboard/loading.tsx +63 -0
  516. package/template/src/app/dashboard/page.tsx +79 -0
  517. package/template/src/app/error.tsx +44 -0
  518. package/template/src/app/favicon.ico +0 -0
  519. package/template/src/app/globals.css +175 -0
  520. package/template/src/app/layout.tsx +108 -0
  521. package/template/src/app/manifest.ts +21 -0
  522. package/template/src/app/not-found.tsx +28 -0
  523. package/template/src/app/page.tsx +152 -0
  524. package/template/src/app/profile/page.tsx +416 -0
  525. package/template/src/app/robots.ts +16 -0
  526. package/template/src/app/sitemap.ts +26 -0
  527. package/template/src/components/auth/forgot-password-form.tsx +83 -0
  528. package/template/src/components/auth/reset-password-form.tsx +107 -0
  529. package/template/src/components/auth/sign-in-button.tsx +97 -0
  530. package/template/src/components/auth/sign-out-button.tsx +31 -0
  531. package/template/src/components/auth/sign-up-form.tsx +121 -0
  532. package/template/src/components/auth/user-profile.tsx +91 -0
  533. package/template/src/components/setup-checklist.tsx +180 -0
  534. package/template/src/components/site-footer.tsx +24 -0
  535. package/template/src/components/site-header.tsx +46 -0
  536. package/template/src/components/starter-prompt-modal.tsx +202 -0
  537. package/template/src/components/theme-provider.tsx +11 -0
  538. package/template/src/components/ui/avatar.tsx +52 -0
  539. package/template/src/components/ui/badge.tsx +35 -0
  540. package/template/src/components/ui/button.tsx +58 -0
  541. package/template/src/components/ui/card.tsx +78 -0
  542. package/template/src/components/ui/dialog.tsx +142 -0
  543. package/template/src/components/ui/dropdown-menu.tsx +256 -0
  544. package/template/src/components/ui/github-stars.tsx +53 -0
  545. package/template/src/components/ui/input.tsx +20 -0
  546. package/template/src/components/ui/label.tsx +23 -0
  547. package/template/src/components/ui/mode-toggle.tsx +38 -0
  548. package/template/src/components/ui/separator.tsx +23 -0
  549. package/template/src/components/ui/skeleton.tsx +13 -0
  550. package/template/src/components/ui/sonner.tsx +42 -0
  551. package/template/src/components/ui/spinner.tsx +21 -0
  552. package/template/src/components/ui/textarea.tsx +17 -0
  553. package/template/src/hooks/use-diagnostics.ts +86 -0
  554. package/template/src/lib/auth-client.ts +16 -0
  555. package/template/src/lib/auth.ts +25 -0
  556. package/template/src/lib/db.ts +12 -0
  557. package/template/src/lib/env.ts +117 -0
  558. package/template/src/lib/schema.ts +82 -0
  559. package/template/src/lib/session.ts +48 -0
  560. package/template/src/lib/storage.ts +225 -0
  561. package/template/src/lib/utils.ts +6 -0
  562. package/template/src/proxy.ts +25 -0
  563. package/template/tsconfig.json +48 -0
package/README.md ADDED
@@ -0,0 +1,237 @@
1
+ # create-xani-agentic-app
2
+
3
+ Scaffold a new agentic AI application with Next.js, Better Auth, and AI SDK.
4
+
5
+ ## Usage
6
+
7
+ Create a new project in the current directory:
8
+
9
+ ```bash
10
+ npx create-xani-agentic-app@latest .
11
+ ```
12
+
13
+ Create a new project in a subdirectory:
14
+
15
+ ```bash
16
+ npx create-xani-agentic-app@latest my-app
17
+ ```
18
+
19
+ ### Non-Interactive Mode (for CI/CD and coding agents)
20
+
21
+ All prompts can be bypassed with CLI flags, enabling fully automated project scaffolding:
22
+
23
+ ```bash
24
+ # Full non-interactive setup
25
+ npx create-xani-agentic-app@latest my-app -y -p pnpm
26
+
27
+ # Skip install and git init for faster scaffolding
28
+ npx create-xani-agentic-app@latest my-app -y -p npm --skip-install --skip-git
29
+ ```
30
+
31
+ #### Available Flags
32
+
33
+ | Flag | Short | Description |
34
+ |------|-------|-------------|
35
+ | `--yes` | `-y` | Auto-confirm non-empty directory prompt |
36
+ | `--package-manager <manager>` | `-p` | Package manager to use: `pnpm`, `npm`, or `yarn` |
37
+ | `--skip-install` | | Skip dependency installation |
38
+ | `--skip-git` | | Skip git repository initialization |
39
+
40
+ ## What's Included
41
+
42
+ This starter kit includes:
43
+
44
+ - **Next.js 16** with App Router and Turbopack
45
+ - **Better Auth** for authentication (email/password, OAuth)
46
+ - **AI SDK** by Vercel for AI chat functionality
47
+ - **Drizzle ORM** with PostgreSQL database
48
+ - **Tailwind CSS** with shadcn/ui components
49
+ - **TypeScript** for type safety
50
+ - **Dark mode** support with next-themes
51
+
52
+ ## Next Steps
53
+
54
+ After creating your project:
55
+
56
+ 1. **Update environment variables**: Edit `.env` with your API keys and database credentials
57
+ 2. **Start the database**: `docker compose up -d`
58
+ 3. **Run migrations**: `pnpm run db:migrate` (or `npm`/`yarn`)
59
+ 4. **Start dev server**: `pnpm run dev`
60
+
61
+ Visit `http://localhost:3000` to see your app!
62
+
63
+ ## Publishing to npm
64
+
65
+ To publish this package to npm:
66
+
67
+ 1. **Update package.json**: Set your author, repository URL, and version in `create-xani-agentic-app/package.json`
68
+ 2. **Test locally** (optional): Test the package before publishing:
69
+ ```bash
70
+ cd create-xani-agentic-app
71
+ npm link
72
+ cd /path/to/test/directory
73
+ create-xani-agentic-app my-test-app
74
+ ```
75
+ 3. **Publish**: The sync happens automatically!
76
+ ```bash
77
+ cd create-xani-agentic-app
78
+ npm publish
79
+ ```
80
+ The `prepublishOnly` hook will automatically sync the template from the main project before publishing.
81
+
82
+ ## Maintainer Guide: Updating & Publishing
83
+
84
+ This section is for maintainers who need to update the npm package after making changes to the main project.
85
+
86
+ ### Complete Publishing Workflow
87
+
88
+ Follow these steps **every time** you make changes to the main project and want to publish them:
89
+
90
+ #### Step 1: Make Changes to Main Project
91
+
92
+ Edit any files in the main project (outside of `create-xani-agentic-app/` folder):
93
+ - `src/` components and pages
94
+ - `docker-compose.yml`
95
+ - `package.json`
96
+ - Configuration files
97
+ - etc.
98
+
99
+ #### Step 2: Navigate to create-xani-agentic-app Directory
100
+
101
+ ```bash
102
+ cd create-xani-agentic-app
103
+ ```
104
+
105
+ #### Step 3: Sync Template from Main Project
106
+
107
+ This copies all your changes from the main project into the template folder:
108
+
109
+ ```bash
110
+ npm run sync
111
+ ```
112
+
113
+ **What this does:**
114
+ - Deletes everything in `create-xani-agentic-app/template/`
115
+ - Copies ALL files from your main project into `template/`
116
+ - Excludes: `node_modules`, `.next`, `.git`, lock files, `.env`, and the `create-xani-agentic-app` folder itself
117
+ - Cleans up the template's `package.json` (removes `private` field and `sync-template` script)
118
+
119
+ #### Step 4: Bump the Version
120
+
121
+ Update the version number in `create-xani-agentic-app/package.json`:
122
+
123
+ **Option A - Using npm version command (recommended):**
124
+ ```bash
125
+ npm version patch # 1.1.3 → 1.1.4 (bug fixes)
126
+ # or
127
+ npm version minor # 1.1.3 → 1.2.0 (new features)
128
+ # or
129
+ npm version major # 1.1.3 → 2.0.0 (breaking changes)
130
+ ```
131
+
132
+ **Option B - Manual:**
133
+ Edit `create-xani-agentic-app/package.json` and change the version number.
134
+
135
+ #### Step 5: Verify Everything Looks Good (Optional)
136
+
137
+ Quick check to make sure your changes are in the package:
138
+
139
+ ```bash
140
+ npm pack --dry-run | grep "template/"
141
+ ```
142
+
143
+ This shows all files that will be published. Look for your changed files.
144
+
145
+ #### Step 6: Publish to npm
146
+
147
+ ```bash
148
+ npm publish
149
+ ```
150
+
151
+ **What happens:**
152
+ - The `prepublishOnly` hook automatically runs `npm run sync` again (safety check)
153
+ - Your package gets published to npm with the new version
154
+
155
+ #### Step 7: Test It
156
+
157
+ In a different directory, test that it works:
158
+
159
+ ```bash
160
+ cd /path/to/test-directory
161
+ npx create-xani-agentic-app@latest test-project
162
+ # or use the specific version
163
+ npx create-xani-agentic-app@1.1.4 test-project
164
+ ```
165
+
166
+ ### Quick Reference Commands
167
+
168
+ ```bash
169
+ # Complete workflow in 4 commands:
170
+ cd create-xani-agentic-app
171
+ npm run sync
172
+ npm version patch
173
+ npm publish
174
+ ```
175
+
176
+ ### Common Scenarios
177
+
178
+ **Scenario 1: You edited `docker-compose.yml` in the main project**
179
+ ```bash
180
+ cd create-xani-agentic-app
181
+ npm run sync # Copies docker-compose.yml to template/
182
+ npm version patch # Bumps to next version
183
+ npm publish # Publishes to npm
184
+ ```
185
+
186
+ **Scenario 2: You added a new component in `src/components/`**
187
+ ```bash
188
+ cd create-xani-agentic-app
189
+ npm run sync # Copies new component to template/
190
+ npm version patch # Bumps version
191
+ npm publish # Publishes
192
+ ```
193
+
194
+ **Scenario 3: You updated multiple files**
195
+ ```bash
196
+ cd create-xani-agentic-app
197
+ npm run sync # Copies ALL changes to template/
198
+ npm version patch # Bumps version
199
+ npm publish # Publishes
200
+ ```
201
+
202
+ ### What Gets Excluded from the Template
203
+
204
+ The sync script excludes these patterns (see `scripts/sync-templates.js`):
205
+ - `node_modules`
206
+ - `.next`
207
+ - `.git`
208
+ - `pnpm-lock.yaml`
209
+ - `package-lock.json`
210
+ - `yarn.lock`
211
+ - `tsconfig.tsbuildinfo`
212
+ - `.env`
213
+ - `create-xani-agentic-app` (the folder itself)
214
+
215
+ ### Troubleshooting
216
+
217
+ **Issue: npmjs.com shows old version after publishing**
218
+ - The npm website can take 5-10 minutes to update due to CDN caching
219
+ - Verify actual registry: `npm view create-xani-agentic-app version`
220
+ - The package is available to users immediately via `npx` even if the website hasn't updated
221
+
222
+ **Issue: Users getting old version with `npx`**
223
+ - Users may have cached versions. Tell them to:
224
+ ```bash
225
+ npx clear-npx-cache
226
+ npx create-xani-agentic-app@latest my-project
227
+ # or use specific version
228
+ npx create-xani-agentic-app@1.1.4 my-project
229
+ ```
230
+
231
+ **Issue: Forgot to run sync before publishing**
232
+ - No problem! The `prepublishOnly` hook runs it automatically
233
+ - But it's good practice to run manually first to verify changes
234
+
235
+ ## License
236
+
237
+ MIT
package/index.js ADDED
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { program } from 'commander';
4
+ import chalk from 'chalk';
5
+ import prompts from 'prompts';
6
+ import ora from 'ora';
7
+ import fs from 'fs-extra';
8
+ import path from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ import { execSync } from 'child_process';
11
+
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+
15
+ const TEMPLATE_DIR = path.join(__dirname, 'template');
16
+
17
+ async function main() {
18
+ console.log(chalk.bold.cyan('\n🤖 Create Xani Agentic App\n'));
19
+
20
+ program
21
+ .name('create-xani-agentic-app')
22
+ .description('Scaffold a new agentic AI application')
23
+ .argument('[project-directory]', 'Project directory name (use "." for current directory)')
24
+ .option('-y, --yes', 'Auto-confirm non-empty directory prompt')
25
+ .option('-p, --package-manager <manager>', 'Package manager to use: pnpm | npm | yarn')
26
+ .option('--skip-install', 'Skip dependency installation')
27
+ .option('--skip-git', 'Skip git repository initialization')
28
+ .parse(process.argv);
29
+
30
+ const args = program.args;
31
+ const opts = program.opts();
32
+ let projectDir = args[0] || '.';
33
+
34
+ // Validate --package-manager value if provided
35
+ const validPackageManagers = ['pnpm', 'npm', 'yarn'];
36
+ if (opts.packageManager && !validPackageManagers.includes(opts.packageManager)) {
37
+ console.log(chalk.red(`Invalid package manager: "${opts.packageManager}"`));
38
+ console.log(chalk.yellow(`Valid options: ${validPackageManagers.join(', ')}`));
39
+ process.exit(1);
40
+ }
41
+
42
+ // Resolve the target directory
43
+ const targetDir = path.resolve(process.cwd(), projectDir);
44
+ const projectName = projectDir === '.' ? path.basename(targetDir) : projectDir;
45
+
46
+ // Check if directory exists and is not empty
47
+ if (fs.existsSync(targetDir)) {
48
+ const files = fs.readdirSync(targetDir);
49
+ if (files.length > 0 && projectDir !== '.') {
50
+ if (opts.yes) {
51
+ console.log(chalk.yellow(`Directory "${projectDir}" is not empty. Proceeding (--yes).`));
52
+ } else {
53
+ const { proceed } = await prompts({
54
+ type: 'confirm',
55
+ name: 'proceed',
56
+ message: `Directory "${projectDir}" is not empty. Continue anyway?`,
57
+ initial: false
58
+ });
59
+
60
+ if (!proceed) {
61
+ console.log(chalk.yellow('Cancelled.'));
62
+ process.exit(0);
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ // Determine package manager
69
+ let packageManager;
70
+ if (opts.packageManager) {
71
+ packageManager = opts.packageManager;
72
+ } else {
73
+ const response = await prompts({
74
+ type: 'select',
75
+ name: 'packageManager',
76
+ message: 'Which package manager do you want to use?',
77
+ choices: [
78
+ { title: 'pnpm (recommended)', value: 'pnpm' },
79
+ { title: 'npm', value: 'npm' },
80
+ { title: 'yarn', value: 'yarn' }
81
+ ],
82
+ initial: 0
83
+ });
84
+ packageManager = response.packageManager;
85
+
86
+ if (!packageManager) {
87
+ console.log(chalk.yellow('Cancelled.'));
88
+ process.exit(0);
89
+ }
90
+ }
91
+
92
+ console.log();
93
+ const spinner = ora('Creating project...').start();
94
+
95
+ try {
96
+ // Create target directory if it doesn't exist
97
+ fs.ensureDirSync(targetDir);
98
+
99
+ // Copy template files
100
+ spinner.text = 'Copying template files...';
101
+ await fs.copy(TEMPLATE_DIR, targetDir, {
102
+ overwrite: false,
103
+ errorOnExist: false,
104
+ filter: (src) => {
105
+ // Skip node_modules, .next, and other build artifacts
106
+ const relativePath = path.relative(TEMPLATE_DIR, src);
107
+ return !relativePath.includes('node_modules') &&
108
+ !relativePath.includes('.next') &&
109
+ !relativePath.includes('.git') &&
110
+ !relativePath.includes('pnpm-lock.yaml') &&
111
+ !relativePath.includes('package-lock.json') &&
112
+ !relativePath.includes('yarn.lock') &&
113
+ !relativePath.includes('tsconfig.tsbuildinfo');
114
+ }
115
+ });
116
+
117
+ // Copy .env.example to .env if it doesn't exist
118
+ const envExamplePath = path.join(targetDir, 'env.example');
119
+ const envPath = path.join(targetDir, '.env');
120
+
121
+ if (fs.existsSync(envExamplePath) && !fs.existsSync(envPath)) {
122
+ spinner.text = 'Setting up environment file...';
123
+ await fs.copy(envExamplePath, envPath);
124
+ }
125
+
126
+ // Rename _gitignore to .gitignore (npm excludes .gitignore by default)
127
+ const gitignoreTemplatePath = path.join(targetDir, '_gitignore');
128
+ const gitignorePath = path.join(targetDir, '.gitignore');
129
+
130
+ if (fs.existsSync(gitignoreTemplatePath)) {
131
+ spinner.text = 'Setting up .gitignore file...';
132
+ await fs.move(gitignoreTemplatePath, gitignorePath, { overwrite: true });
133
+ }
134
+
135
+ // Update package.json name if not current directory
136
+ if (projectDir !== '.') {
137
+ const packageJsonPath = path.join(targetDir, 'package.json');
138
+ if (fs.existsSync(packageJsonPath)) {
139
+ const packageJson = await fs.readJson(packageJsonPath);
140
+ packageJson.name = projectName;
141
+ await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
142
+ }
143
+ }
144
+
145
+ spinner.succeed(chalk.green('Project created successfully!'));
146
+
147
+ // Install dependencies
148
+ if (opts.skipInstall) {
149
+ console.log(chalk.yellow('\nSkipping dependency installation (--skip-install).'));
150
+ } else {
151
+ console.log();
152
+ const installSpinner = ora(`Installing dependencies with ${packageManager}...`).start();
153
+
154
+ try {
155
+ const installCmd = packageManager === 'yarn' ? 'yarn install' : `${packageManager} install`;
156
+ execSync(installCmd, {
157
+ cwd: targetDir,
158
+ stdio: 'pipe'
159
+ });
160
+ installSpinner.succeed(chalk.green('Dependencies installed!'));
161
+ } catch (error) {
162
+ installSpinner.fail(chalk.red('Failed to install dependencies'));
163
+ console.log(chalk.yellow(`\nPlease run "${packageManager} install" manually.\n`));
164
+ }
165
+ }
166
+
167
+ // Initialize Git repository
168
+ if (opts.skipGit) {
169
+ console.log(chalk.yellow('\nSkipping git initialization (--skip-git).'));
170
+ } else {
171
+ console.log();
172
+ const gitSpinner = ora('Initializing Git repository...').start();
173
+
174
+ try {
175
+ // Check if git is available
176
+ execSync('git --version', { stdio: 'pipe' });
177
+
178
+ // Initialize git repo if not already initialized
179
+ if (!fs.existsSync(path.join(targetDir, '.git'))) {
180
+ execSync('git init', { cwd: targetDir, stdio: 'pipe' });
181
+ execSync('git add .', { cwd: targetDir, stdio: 'pipe' });
182
+ execSync('git commit -m "Initial commit from create-xani-agentic-app"', {
183
+ cwd: targetDir,
184
+ stdio: 'pipe'
185
+ });
186
+ gitSpinner.succeed(chalk.green('Git repository initialized!'));
187
+ } else {
188
+ gitSpinner.info(chalk.blue('Git repository already exists'));
189
+ }
190
+ } catch (error) {
191
+ gitSpinner.warn(chalk.yellow('Git not found - skipping repository initialization'));
192
+ }
193
+ }
194
+
195
+ // Display next steps
196
+ console.log();
197
+ console.log(chalk.bold.green('✨ Your agentic app is ready!\n'));
198
+ console.log(chalk.bold('Next steps:\n'));
199
+
200
+ if (projectDir !== '.') {
201
+ console.log(chalk.cyan(` cd ${projectDir}`));
202
+ }
203
+
204
+ console.log(chalk.cyan(' 1. Update the .env file with your API keys and database credentials'));
205
+ console.log(chalk.cyan(` 2. Start the database: docker compose up -d`));
206
+ console.log(chalk.cyan(` 3. Run database migrations: ${packageManager} run db:migrate`));
207
+ console.log(chalk.cyan(` 4. Start the development server: ${packageManager} run dev`));
208
+
209
+ console.log();
210
+ console.log(chalk.gray('For more information, check out the README.md file.\n'));
211
+
212
+ } catch (error) {
213
+ spinner.fail(chalk.red('Failed to create project'));
214
+ console.error(error);
215
+ process.exit(1);
216
+ }
217
+ }
218
+
219
+ main().catch(console.error);
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "create-xani-agentic-app",
3
+ "version": "1.0.0",
4
+ "description": "Scaffold a new agentic AI application with Next.js, Better Auth, and AI SDK",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-xani-agentic-app": "./index.js"
8
+ },
9
+ "files": [
10
+ "index.js",
11
+ "template"
12
+ ],
13
+ "scripts": {
14
+ "sync": "node scripts/sync-templates.js",
15
+ "prepublishOnly": "npm run sync",
16
+ "publish:token": "node scripts/publish-with-token.js"
17
+ },
18
+ "keywords": [
19
+ "ai",
20
+ "agents",
21
+ "nextjs",
22
+ "better-auth",
23
+ "starter-kit",
24
+ "boilerplate",
25
+ "scaffold",
26
+ "create-app"
27
+ ],
28
+ "author": "AlexandreXavier",
29
+ "license": "MIT",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/AlexandreXavier/xani-agentic-starter-kit.git",
33
+ "directory": "create-xani-agentic-app"
34
+ },
35
+ "homepage": "https://github.com/AlexandreXavier/xani-agentic-starter-kit#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/AlexandreXavier/xani-agentic-starter-kit/issues"
38
+ },
39
+ "dependencies": {
40
+ "chalk": "^5.3.0",
41
+ "commander": "^12.1.0",
42
+ "fs-extra": "^11.2.0",
43
+ "ora": "^8.1.1",
44
+ "prompts": "^2.4.2"
45
+ }
46
+ }
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: ai-sdk
3
+ description: 'Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".'
4
+ ---
5
+
6
+ ## Prerequisites
7
+
8
+ Before searching docs, check if `node_modules/ai/docs/` exists. If not, install **only** the `ai` package using the project's package manager (e.g., `pnpm add ai`).
9
+
10
+ Do not install other packages at this stage. Provider packages (e.g., `@ai-sdk/openai`) and client packages (e.g., `@ai-sdk/react`) should be installed later when needed based on user requirements.
11
+
12
+ ## Critical: Do Not Trust Internal Knowledge
13
+
14
+ Everything you know about the AI SDK is outdated or wrong. Your training data contains obsolete APIs, deprecated patterns, and incorrect usage.
15
+
16
+ **When working with the AI SDK:**
17
+
18
+ 1. Ensure `ai` package is installed (see Prerequisites)
19
+ 2. Search `node_modules/ai/docs/` and `node_modules/ai/src/` for current APIs
20
+ 3. If not found locally, search ai-sdk.dev documentation (instructions below)
21
+ 4. Never rely on memory - always verify against source code or docs
22
+ 5. **`useChat` has changed significantly** - check [Common Errors](references/common-errors.md) before writing client code
23
+ 6. When deciding which model and provider to use (e.g. OpenAI, Anthropic, Gemini), use the Vercel AI Gateway provider unless the user specifies otherwise. See [AI Gateway Reference](references/ai-gateway.md) for usage details.
24
+ 7. **Always fetch current model IDs** - Never use model IDs from memory. Before writing code that uses a model, run `curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '[.data[] | select(.id | startswith("provider/")) | .id] | reverse | .[]'` (replacing `provider` with the relevant provider like `anthropic`, `openai`, or `google`) to get the full list with newest models first. Use the model with the highest version number (e.g., `claude-sonnet-4-5` over `claude-sonnet-4` over `claude-3-5-sonnet`).
25
+ 8. Run typecheck after changes to ensure code is correct
26
+ 9. **Be minimal** - Only specify options that differ from defaults. When unsure of defaults, check docs or source rather than guessing or over-specifying.
27
+
28
+ If you cannot find documentation to support your answer, state that explicitly.
29
+
30
+ ## Finding Documentation
31
+
32
+ ### ai@6.0.34+
33
+
34
+ Search bundled docs and source in `node_modules/ai/`:
35
+
36
+ - **Docs**: `grep "query" node_modules/ai/docs/`
37
+ - **Source**: `grep "query" node_modules/ai/src/`
38
+
39
+ Provider packages include docs at `node_modules/@ai-sdk/<provider>/docs/`.
40
+
41
+ ### Earlier versions
42
+
43
+ 1. Search: `https://ai-sdk.dev/api/search-docs?q=your_query`
44
+ 2. Fetch `.md` URLs from results (e.g., `https://ai-sdk.dev/docs/agents/building-agents.md`)
45
+
46
+ ## When Typecheck Fails
47
+
48
+ **Before searching source code**, grep [Common Errors](references/common-errors.md) for the failing property or function name. Many type errors are caused by deprecated APIs documented there.
49
+
50
+ If not found in common-errors.md:
51
+
52
+ 1. Search `node_modules/ai/src/` and `node_modules/ai/docs/`
53
+ 2. Search ai-sdk.dev (for earlier versions or if not found locally)
54
+
55
+ ## Building and Consuming Agents
56
+
57
+ ### Creating Agents
58
+
59
+ Always use the `ToolLoopAgent` pattern. Search `node_modules/ai/docs/` for current agent creation APIs.
60
+
61
+ **File conventions**: See [type-safe-agents.md](references/type-safe-agents.md) for where to save agents and tools.
62
+
63
+ **Type Safety**: When consuming agents with `useChat`, always use `InferAgentUIMessage<typeof agent>` for type-safe tool results. See [reference](references/type-safe-agents.md).
64
+
65
+ ### Consuming Agents (Framework-Specific)
66
+
67
+ Before implementing agent consumption:
68
+
69
+ 1. Check `package.json` to detect the project's framework/stack
70
+ 2. Search documentation for the framework's quickstart guide
71
+ 3. Follow the framework-specific patterns for streaming, API routes, and client integration
72
+
73
+ ## References
74
+
75
+ - [Common Errors](references/common-errors.md) - Renamed parameters reference (parameters → inputSchema, etc.)
76
+ - [AI Gateway](references/ai-gateway.md) - Gateway setup and usage
77
+ - [Type-Safe Agents with useChat](references/type-safe-agents.md) - End-to-end type safety with InferAgentUIMessage
78
+ - [DevTools](references/devtools.md) - Set up local debugging and observability (development only)
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Vercel AI Gateway
3
+ description: Reference for using Vercel AI Gateway with the AI SDK.
4
+ ---
5
+
6
+ # Vercel AI Gateway
7
+
8
+ The Vercel AI Gateway is the fastest way to get started with the AI SDK. It provides access to models from OpenAI, Anthropic, Google, and other providers through a single API.
9
+
10
+ ## Authentication
11
+
12
+ Authenticate with OIDC (for Vercel deployments) or an [AI Gateway API key](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai-gateway%2Fapi-keys&title=AI+Gateway+API+Keys):
13
+
14
+ ```env filename=".env.local"
15
+ AI_GATEWAY_API_KEY=your_api_key_here
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ The AI Gateway is the default global provider, so you can access models using a simple string:
21
+
22
+ ```ts
23
+ import { generateText } from 'ai';
24
+
25
+ const { text } = await generateText({
26
+ model: 'anthropic/claude-sonnet-4.5',
27
+ prompt: 'What is love?',
28
+ });
29
+ ```
30
+
31
+ You can also explicitly import and use the gateway provider:
32
+
33
+ ```ts
34
+ // Option 1: Import from 'ai' package (included by default)
35
+ import { gateway } from 'ai';
36
+ model: gateway('anthropic/claude-sonnet-4.5');
37
+
38
+ // Option 2: Install and import from '@ai-sdk/gateway' package
39
+ import { gateway } from '@ai-sdk/gateway';
40
+ model: gateway('anthropic/claude-sonnet-4.5');
41
+ ```
42
+
43
+ ## Find Available Models
44
+
45
+ **Important**: Always fetch the current model list before writing code. Never use model IDs from memory - they may be outdated.
46
+
47
+ List all available models through the gateway API:
48
+
49
+ ```bash
50
+ curl https://ai-gateway.vercel.sh/v1/models
51
+ ```
52
+
53
+ Filter by provider using `jq`. **Do not truncate with `head`** - always fetch the full list to find the latest models:
54
+
55
+ ```bash
56
+ # Anthropic models
57
+ curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '[.data[] | select(.id | startswith("anthropic/")) | .id] | reverse | .[]'
58
+
59
+ # OpenAI models
60
+ curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '[.data[] | select(.id | startswith("openai/")) | .id] | reverse | .[]'
61
+
62
+ # Google models
63
+ curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '[.data[] | select(.id | startswith("google/")) | .id] | reverse | .[]'
64
+ ```
65
+
66
+ When multiple versions of a model exist, use the one with the highest version number (e.g., prefer `anthropic/claude-sonnet-4.6` over `anthropic/claude-sonnet-4.5` over `claude-sonnet-4`).