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
@@ -0,0 +1,140 @@
1
+ # File Conventions
2
+
3
+ Next.js App Router uses file-based routing with special file conventions.
4
+
5
+ ## Project Structure
6
+
7
+ Reference: https://nextjs.org/docs/app/getting-started/project-structure
8
+
9
+ ```
10
+ app/
11
+ ├── layout.tsx # Root layout (required)
12
+ ├── page.tsx # Home page (/)
13
+ ├── loading.tsx # Loading UI
14
+ ├── error.tsx # Error UI
15
+ ├── not-found.tsx # 404 UI
16
+ ├── global-error.tsx # Global error UI
17
+ ├── route.ts # API endpoint
18
+ ├── template.tsx # Re-rendered layout
19
+ ├── default.tsx # Parallel route fallback
20
+ ├── blog/
21
+ │ ├── page.tsx # /blog
22
+ │ └── [slug]/
23
+ │ └── page.tsx # /blog/:slug
24
+ └── (group)/ # Route group (no URL impact)
25
+ └── page.tsx
26
+ ```
27
+
28
+ ## Special Files
29
+
30
+ | File | Purpose |
31
+ |------|---------|
32
+ | `page.tsx` | UI for a route segment |
33
+ | `layout.tsx` | Shared UI for segment and children |
34
+ | `loading.tsx` | Loading UI (Suspense boundary) |
35
+ | `error.tsx` | Error UI (Error boundary) |
36
+ | `not-found.tsx` | 404 UI |
37
+ | `route.ts` | API endpoint |
38
+ | `template.tsx` | Like layout but re-renders on navigation |
39
+ | `default.tsx` | Fallback for parallel routes |
40
+
41
+ ## Route Segments
42
+
43
+ ```
44
+ app/
45
+ ├── blog/ # Static segment: /blog
46
+ ├── [slug]/ # Dynamic segment: /:slug
47
+ ├── [...slug]/ # Catch-all: /a/b/c
48
+ ├── [[...slug]]/ # Optional catch-all: / or /a/b/c
49
+ └── (marketing)/ # Route group (ignored in URL)
50
+ ```
51
+
52
+ ## Parallel Routes
53
+
54
+ ```
55
+ app/
56
+ ├── @analytics/
57
+ │ └── page.tsx
58
+ ├── @sidebar/
59
+ │ └── page.tsx
60
+ └── layout.tsx # Receives { analytics, sidebar } as props
61
+ ```
62
+
63
+ ## Intercepting Routes
64
+
65
+ ```
66
+ app/
67
+ ├── feed/
68
+ │ └── page.tsx
69
+ ├── @modal/
70
+ │ └── (.)photo/[id]/ # Intercepts /photo/[id] from /feed
71
+ │ └── page.tsx
72
+ └── photo/[id]/
73
+ └── page.tsx
74
+ ```
75
+
76
+ Conventions:
77
+ - `(.)` - same level
78
+ - `(..)` - one level up
79
+ - `(..)(..)` - two levels up
80
+ - `(...)` - from root
81
+
82
+ ## Private Folders
83
+
84
+ ```
85
+ app/
86
+ ├── _components/ # Private folder (not a route)
87
+ │ └── Button.tsx
88
+ └── page.tsx
89
+ ```
90
+
91
+ Prefix with `_` to exclude from routing.
92
+
93
+ ## Middleware / Proxy
94
+
95
+ ### Next.js 14-15: `middleware.ts`
96
+
97
+ ```ts
98
+ // middleware.ts (root of project)
99
+ import { NextResponse } from 'next/server';
100
+ import type { NextRequest } from 'next/server';
101
+
102
+ export function middleware(request: NextRequest) {
103
+ // Auth, redirects, rewrites, etc.
104
+ return NextResponse.next();
105
+ }
106
+
107
+ export const config = {
108
+ matcher: ['/dashboard/:path*', '/api/:path*'],
109
+ };
110
+ ```
111
+
112
+ ### Next.js 16+: `proxy.ts`
113
+
114
+ Renamed for clarity - same capabilities, different names:
115
+
116
+ ```ts
117
+ // proxy.ts (root of project)
118
+ import { NextResponse } from 'next/server';
119
+ import type { NextRequest } from 'next/server';
120
+
121
+ export function proxy(request: NextRequest) {
122
+ // Same logic as middleware
123
+ return NextResponse.next();
124
+ }
125
+
126
+ export const proxyConfig = {
127
+ matcher: ['/dashboard/:path*', '/api/:path*'],
128
+ };
129
+ ```
130
+
131
+ | Version | File | Export | Config |
132
+ |---------|------|--------|--------|
133
+ | v14-15 | `middleware.ts` | `middleware()` | `config` |
134
+ | v16+ | `proxy.ts` | `proxy()` | `proxyConfig` |
135
+
136
+ **Migration**: Run `npx @next/codemod@latest upgrade` to auto-rename.
137
+
138
+ ## File Conventions Reference
139
+
140
+ Reference: https://nextjs.org/docs/app/api-reference/file-conventions
@@ -0,0 +1,245 @@
1
+ # Font Optimization
2
+
3
+ Use `next/font` for automatic font optimization with zero layout shift.
4
+
5
+ ## Google Fonts
6
+
7
+ ```tsx
8
+ // app/layout.tsx
9
+ import { Inter } from 'next/font/google'
10
+
11
+ const inter = Inter({ subsets: ['latin'] })
12
+
13
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
14
+ return (
15
+ <html lang="en" className={inter.className}>
16
+ <body>{children}</body>
17
+ </html>
18
+ )
19
+ }
20
+ ```
21
+
22
+ ## Multiple Fonts
23
+
24
+ ```tsx
25
+ import { Inter, Roboto_Mono } from 'next/font/google'
26
+
27
+ const inter = Inter({
28
+ subsets: ['latin'],
29
+ variable: '--font-inter',
30
+ })
31
+
32
+ const robotoMono = Roboto_Mono({
33
+ subsets: ['latin'],
34
+ variable: '--font-roboto-mono',
35
+ })
36
+
37
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
38
+ return (
39
+ <html lang="en" className={`${inter.variable} ${robotoMono.variable}`}>
40
+ <body>{children}</body>
41
+ </html>
42
+ )
43
+ }
44
+ ```
45
+
46
+ Use in CSS:
47
+ ```css
48
+ body {
49
+ font-family: var(--font-inter);
50
+ }
51
+
52
+ code {
53
+ font-family: var(--font-roboto-mono);
54
+ }
55
+ ```
56
+
57
+ ## Font Weights and Styles
58
+
59
+ ```tsx
60
+ // Single weight
61
+ const inter = Inter({
62
+ subsets: ['latin'],
63
+ weight: '400',
64
+ })
65
+
66
+ // Multiple weights
67
+ const inter = Inter({
68
+ subsets: ['latin'],
69
+ weight: ['400', '500', '700'],
70
+ })
71
+
72
+ // Variable font (recommended) - includes all weights
73
+ const inter = Inter({
74
+ subsets: ['latin'],
75
+ // No weight needed - variable fonts support all weights
76
+ })
77
+
78
+ // With italic
79
+ const inter = Inter({
80
+ subsets: ['latin'],
81
+ style: ['normal', 'italic'],
82
+ })
83
+ ```
84
+
85
+ ## Local Fonts
86
+
87
+ ```tsx
88
+ import localFont from 'next/font/local'
89
+
90
+ const myFont = localFont({
91
+ src: './fonts/MyFont.woff2',
92
+ })
93
+
94
+ // Multiple files for different weights
95
+ const myFont = localFont({
96
+ src: [
97
+ {
98
+ path: './fonts/MyFont-Regular.woff2',
99
+ weight: '400',
100
+ style: 'normal',
101
+ },
102
+ {
103
+ path: './fonts/MyFont-Bold.woff2',
104
+ weight: '700',
105
+ style: 'normal',
106
+ },
107
+ ],
108
+ })
109
+
110
+ // Variable font
111
+ const myFont = localFont({
112
+ src: './fonts/MyFont-Variable.woff2',
113
+ variable: '--font-my-font',
114
+ })
115
+ ```
116
+
117
+ ## Tailwind CSS Integration
118
+
119
+ ```tsx
120
+ // app/layout.tsx
121
+ import { Inter } from 'next/font/google'
122
+
123
+ const inter = Inter({
124
+ subsets: ['latin'],
125
+ variable: '--font-inter',
126
+ })
127
+
128
+ export default function RootLayout({ children }) {
129
+ return (
130
+ <html lang="en" className={inter.variable}>
131
+ <body>{children}</body>
132
+ </html>
133
+ )
134
+ }
135
+ ```
136
+
137
+ ```js
138
+ // tailwind.config.js
139
+ module.exports = {
140
+ theme: {
141
+ extend: {
142
+ fontFamily: {
143
+ sans: ['var(--font-inter)'],
144
+ },
145
+ },
146
+ },
147
+ }
148
+ ```
149
+
150
+ ## Preloading Subsets
151
+
152
+ Only load needed character subsets:
153
+
154
+ ```tsx
155
+ // Latin only (most common)
156
+ const inter = Inter({ subsets: ['latin'] })
157
+
158
+ // Multiple subsets
159
+ const inter = Inter({ subsets: ['latin', 'latin-ext', 'cyrillic'] })
160
+ ```
161
+
162
+ ## Display Strategy
163
+
164
+ Control font loading behavior:
165
+
166
+ ```tsx
167
+ const inter = Inter({
168
+ subsets: ['latin'],
169
+ display: 'swap', // Default - shows fallback, swaps when loaded
170
+ })
171
+
172
+ // Options:
173
+ // 'auto' - browser decides
174
+ // 'block' - short block period, then swap
175
+ // 'swap' - immediate fallback, swap when ready (recommended)
176
+ // 'fallback' - short block, short swap, then fallback
177
+ // 'optional' - short block, no swap (use if font is optional)
178
+ ```
179
+
180
+ ## Don't Use Manual Font Links
181
+
182
+ Always use `next/font` instead of `<link>` tags for Google Fonts.
183
+
184
+ ```tsx
185
+ // Bad: Manual link tag (blocks rendering, no optimization)
186
+ <link href="https://fonts.googleapis.com/css2?family=Inter" rel="stylesheet" />
187
+
188
+ // Bad: Missing display and preconnect
189
+ <link href="https://fonts.googleapis.com/css2?family=Inter" rel="stylesheet" />
190
+
191
+ // Good: Use next/font (self-hosted, zero layout shift)
192
+ import { Inter } from 'next/font/google'
193
+
194
+ const inter = Inter({ subsets: ['latin'] })
195
+ ```
196
+
197
+ ## Common Mistakes
198
+
199
+ ```tsx
200
+ // Bad: Importing font in every component
201
+ // components/Button.tsx
202
+ import { Inter } from 'next/font/google'
203
+ const inter = Inter({ subsets: ['latin'] }) // Creates new instance each time!
204
+
205
+ // Good: Import once in layout, use CSS variable
206
+ // app/layout.tsx
207
+ const inter = Inter({ subsets: ['latin'], variable: '--font-inter' })
208
+
209
+ // Bad: Using @import in CSS (blocks rendering)
210
+ /* globals.css */
211
+ @import url('https://fonts.googleapis.com/css2?family=Inter');
212
+
213
+ // Good: Use next/font (self-hosted, no network request)
214
+ import { Inter } from 'next/font/google'
215
+
216
+ // Bad: Loading all weights when only using a few
217
+ const inter = Inter({ subsets: ['latin'] }) // Loads all weights
218
+
219
+ // Good: Specify only needed weights (for non-variable fonts)
220
+ const inter = Inter({ subsets: ['latin'], weight: ['400', '700'] })
221
+
222
+ // Bad: Missing subset - loads all characters
223
+ const inter = Inter({})
224
+
225
+ // Good: Always specify subset
226
+ const inter = Inter({ subsets: ['latin'] })
227
+ ```
228
+
229
+ ## Font in Specific Components
230
+
231
+ ```tsx
232
+ // For component-specific fonts, export from a shared file
233
+ // lib/fonts.ts
234
+ import { Inter, Playfair_Display } from 'next/font/google'
235
+
236
+ export const inter = Inter({ subsets: ['latin'], variable: '--font-inter' })
237
+ export const playfair = Playfair_Display({ subsets: ['latin'], variable: '--font-playfair' })
238
+
239
+ // components/Heading.tsx
240
+ import { playfair } from '@/lib/fonts'
241
+
242
+ export function Heading({ children }) {
243
+ return <h1 className={playfair.className}>{children}</h1>
244
+ }
245
+ ```
@@ -0,0 +1,108 @@
1
+ # Functions
2
+
3
+ Next.js function APIs.
4
+
5
+ Reference: https://nextjs.org/docs/app/api-reference/functions
6
+
7
+ ## Navigation Hooks (Client)
8
+
9
+ | Hook | Purpose | Reference |
10
+ |------|---------|-----------|
11
+ | `useRouter` | Programmatic navigation (`push`, `replace`, `back`, `refresh`) | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-router) |
12
+ | `usePathname` | Get current pathname | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-pathname) |
13
+ | `useSearchParams` | Read URL search parameters | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-search-params) |
14
+ | `useParams` | Access dynamic route parameters | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-params) |
15
+ | `useSelectedLayoutSegment` | Active child segment (one level) | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment) |
16
+ | `useSelectedLayoutSegments` | All active segments below layout | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments) |
17
+ | `useLinkStatus` | Check link prefetch status | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-link-status) |
18
+ | `useReportWebVitals` | Report Core Web Vitals metrics | [Docs](https://nextjs.org/docs/app/api-reference/functions/use-report-web-vitals) |
19
+
20
+ ## Server Functions
21
+
22
+ | Function | Purpose | Reference |
23
+ |----------|---------|-----------|
24
+ | `cookies` | Read/write cookies | [Docs](https://nextjs.org/docs/app/api-reference/functions/cookies) |
25
+ | `headers` | Read request headers | [Docs](https://nextjs.org/docs/app/api-reference/functions/headers) |
26
+ | `draftMode` | Enable preview of unpublished CMS content | [Docs](https://nextjs.org/docs/app/api-reference/functions/draft-mode) |
27
+ | `after` | Run code after response finishes streaming | [Docs](https://nextjs.org/docs/app/api-reference/functions/after) |
28
+ | `connection` | Wait for connection before dynamic rendering | [Docs](https://nextjs.org/docs/app/api-reference/functions/connection) |
29
+ | `userAgent` | Parse User-Agent header | [Docs](https://nextjs.org/docs/app/api-reference/functions/userAgent) |
30
+
31
+ ## Generate Functions
32
+
33
+ | Function | Purpose | Reference |
34
+ |----------|---------|-----------|
35
+ | `generateStaticParams` | Pre-render dynamic routes at build time | [Docs](https://nextjs.org/docs/app/api-reference/functions/generate-static-params) |
36
+ | `generateMetadata` | Dynamic metadata | [Docs](https://nextjs.org/docs/app/api-reference/functions/generate-metadata) |
37
+ | `generateViewport` | Dynamic viewport config | [Docs](https://nextjs.org/docs/app/api-reference/functions/generate-viewport) |
38
+ | `generateSitemaps` | Multiple sitemaps for large sites | [Docs](https://nextjs.org/docs/app/api-reference/functions/generate-sitemaps) |
39
+ | `generateImageMetadata` | Multiple OG images per route | [Docs](https://nextjs.org/docs/app/api-reference/functions/generate-image-metadata) |
40
+
41
+ ## Request/Response
42
+
43
+ | Function | Purpose | Reference |
44
+ |----------|---------|-----------|
45
+ | `NextRequest` | Extended Request with helpers | [Docs](https://nextjs.org/docs/app/api-reference/functions/next-request) |
46
+ | `NextResponse` | Extended Response with helpers | [Docs](https://nextjs.org/docs/app/api-reference/functions/next-response) |
47
+ | `ImageResponse` | Generate OG images | [Docs](https://nextjs.org/docs/app/api-reference/functions/image-response) |
48
+
49
+ ## Common Examples
50
+
51
+ ### Navigation
52
+
53
+ Use `next/link` for internal navigation instead of `<a>` tags.
54
+
55
+ ```tsx
56
+ // Bad: Plain anchor tag
57
+ <a href="/about">About</a>
58
+
59
+ // Good: Next.js Link
60
+ import Link from 'next/link'
61
+
62
+ <Link href="/about">About</Link>
63
+ ```
64
+
65
+ Active link styling:
66
+
67
+ ```tsx
68
+ 'use client'
69
+
70
+ import Link from 'next/link'
71
+ import { usePathname } from 'next/navigation'
72
+
73
+ export function NavLink({ href, children }) {
74
+ const pathname = usePathname()
75
+
76
+ return (
77
+ <Link href={href} className={pathname === href ? 'active' : ''}>
78
+ {children}
79
+ </Link>
80
+ )
81
+ }
82
+ ```
83
+
84
+ ### Static Generation
85
+
86
+ ```tsx
87
+ // app/blog/[slug]/page.tsx
88
+ export async function generateStaticParams() {
89
+ const posts = await getPosts()
90
+ return posts.map((post) => ({ slug: post.slug }))
91
+ }
92
+ ```
93
+
94
+ ### After Response
95
+
96
+ ```tsx
97
+ import { after } from 'next/server'
98
+
99
+ export async function POST(request: Request) {
100
+ const data = await processRequest(request)
101
+
102
+ after(async () => {
103
+ await logAnalytics(data)
104
+ })
105
+
106
+ return Response.json({ success: true })
107
+ }
108
+ ```
@@ -0,0 +1,91 @@
1
+ # Hydration Errors
2
+
3
+ Diagnose and fix React hydration mismatch errors.
4
+
5
+ ## Error Signs
6
+
7
+ - "Hydration failed because the initial UI does not match"
8
+ - "Text content does not match server-rendered HTML"
9
+
10
+ ## Debugging
11
+
12
+ In development, click the hydration error to see the server/client diff.
13
+
14
+ ## Common Causes and Fixes
15
+
16
+ ### Browser-only APIs
17
+
18
+ ```tsx
19
+ // Bad: Causes mismatch - window doesn't exist on server
20
+ <div>{window.innerWidth}</div>
21
+
22
+ // Good: Use client component with mounted check
23
+ 'use client'
24
+ import { useState, useEffect } from 'react'
25
+
26
+ export function ClientOnly({ children }: { children: React.ReactNode }) {
27
+ const [mounted, setMounted] = useState(false)
28
+ useEffect(() => setMounted(true), [])
29
+ return mounted ? children : null
30
+ }
31
+ ```
32
+
33
+ ### Date/Time Rendering
34
+
35
+ Server and client may be in different timezones:
36
+
37
+ ```tsx
38
+ // Bad: Causes mismatch
39
+ <span>{new Date().toLocaleString()}</span>
40
+
41
+ // Good: Render on client only
42
+ 'use client'
43
+ const [time, setTime] = useState<string>()
44
+ useEffect(() => setTime(new Date().toLocaleString()), [])
45
+ ```
46
+
47
+ ### Random Values or IDs
48
+
49
+ ```tsx
50
+ // Bad: Random values differ between server and client
51
+ <div id={Math.random().toString()}>
52
+
53
+ // Good: Use useId hook
54
+ import { useId } from 'react'
55
+
56
+ function Input() {
57
+ const id = useId()
58
+ return <input id={id} />
59
+ }
60
+ ```
61
+
62
+ ### Invalid HTML Nesting
63
+
64
+ ```tsx
65
+ // Bad: Invalid - div inside p
66
+ <p><div>Content</div></p>
67
+
68
+ // Bad: Invalid - p inside p
69
+ <p><p>Nested</p></p>
70
+
71
+ // Good: Valid nesting
72
+ <div><p>Content</p></div>
73
+ ```
74
+
75
+ ### Third-party Scripts
76
+
77
+ Scripts that modify DOM during hydration.
78
+
79
+ ```tsx
80
+ // Good: Use next/script with afterInteractive
81
+ import Script from 'next/script'
82
+
83
+ export default function Page() {
84
+ return (
85
+ <Script
86
+ src="https://example.com/script.js"
87
+ strategy="afterInteractive"
88
+ />
89
+ )
90
+ }
91
+ ```