claudeinone-cli 1.0.1 → 1.0.3

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 (429) hide show
  1. package/dist/index.js +16 -1
  2. package/kit/.claude/.ck.json +9 -0
  3. package/kit/.claude/.ckignore +12 -0
  4. package/kit/.claude/agents/accessibility-auditor.md +46 -0
  5. package/kit/.claude/agents/api-designer.md +43 -0
  6. package/kit/.claude/agents/backend-developer.md +54 -0
  7. package/kit/.claude/agents/brainstormer.md +33 -0
  8. package/kit/.claude/agents/campaign-manager.md +36 -0
  9. package/kit/.claude/agents/code-reviewer.md +39 -0
  10. package/kit/.claude/agents/content-creator.md +38 -0
  11. package/kit/.claude/agents/copywriter.md +42 -0
  12. package/kit/.claude/agents/database-admin.md +37 -0
  13. package/kit/.claude/agents/debugger.md +46 -0
  14. package/kit/.claude/agents/devops-engineer.md +41 -0
  15. package/kit/.claude/agents/docs-manager.md +33 -0
  16. package/kit/.claude/agents/email-wizard.md +40 -0
  17. package/kit/.claude/agents/frontend-developer.md +52 -0
  18. package/kit/.claude/agents/fullstack-developer.md +55 -0
  19. package/kit/.claude/agents/git-manager.md +40 -0
  20. package/kit/.claude/agents/i18n-specialist.md +46 -0
  21. package/kit/.claude/agents/integration-specialist.md +48 -0
  22. package/kit/.claude/agents/journal-writer.md +39 -0
  23. package/kit/.claude/agents/mcp-manager.md +57 -0
  24. package/kit/.claude/agents/mobile-developer.md +38 -0
  25. package/kit/.claude/agents/performance-optimizer.md +38 -0
  26. package/kit/.claude/agents/planner.md +56 -0
  27. package/kit/.claude/agents/project-manager.md +34 -0
  28. package/kit/.claude/agents/refactorer.md +43 -0
  29. package/kit/.claude/agents/researcher.md +45 -0
  30. package/kit/.claude/agents/risk-analyst.md +33 -0
  31. package/kit/.claude/agents/scalability-consultant.md +39 -0
  32. package/kit/.claude/agents/scout.md +25 -0
  33. package/kit/.claude/agents/security-auditor.md +42 -0
  34. package/kit/.claude/agents/seo-specialist.md +44 -0
  35. package/kit/.claude/agents/skill-creator.md +64 -0
  36. package/kit/.claude/agents/social-media-manager.md +35 -0
  37. package/kit/.claude/agents/systems-designer.md +35 -0
  38. package/kit/.claude/agents/technology-strategist.md +43 -0
  39. package/kit/.claude/agents/tester.md +40 -0
  40. package/kit/.claude/agents/ui-ux-designer.md +40 -0
  41. package/kit/.claude/commands/co/ask.md +29 -0
  42. package/kit/.claude/commands/co/bootstrap-auto-fast.md +28 -0
  43. package/kit/.claude/commands/co/bootstrap-auto-parallel.md +29 -0
  44. package/kit/.claude/commands/co/bootstrap-auto.md +30 -0
  45. package/kit/.claude/commands/co/bootstrap.md +31 -0
  46. package/kit/.claude/commands/co/brainstorm.md +27 -0
  47. package/kit/.claude/commands/co/campaign.md +28 -0
  48. package/kit/.claude/commands/co/changelog.md +25 -0
  49. package/kit/.claude/commands/co/checkpoint.md +25 -0
  50. package/kit/.claude/commands/co/ci.md +26 -0
  51. package/kit/.claude/commands/co/ck-help.md +24 -0
  52. package/kit/.claude/commands/co/coding-level.md +24 -0
  53. package/kit/.claude/commands/co/content-cro.md +26 -0
  54. package/kit/.claude/commands/co/content-enhance.md +26 -0
  55. package/kit/.claude/commands/co/content-fast.md +24 -0
  56. package/kit/.claude/commands/co/content-good.md +26 -0
  57. package/kit/.claude/commands/co/cook.md +33 -0
  58. package/kit/.claude/commands/co/debug.md +26 -0
  59. package/kit/.claude/commands/co/deploy.md +25 -0
  60. package/kit/.claude/commands/co/design-3d.md +27 -0
  61. package/kit/.claude/commands/co/design-describe.md +25 -0
  62. package/kit/.claude/commands/co/design-fast.md +25 -0
  63. package/kit/.claude/commands/co/design-good.md +28 -0
  64. package/kit/.claude/commands/co/design-screenshot.md +26 -0
  65. package/kit/.claude/commands/co/design-video.md +26 -0
  66. package/kit/.claude/commands/co/docker.md +24 -0
  67. package/kit/.claude/commands/co/docs-api.md +25 -0
  68. package/kit/.claude/commands/co/docs-init.md +26 -0
  69. package/kit/.claude/commands/co/docs-readme.md +24 -0
  70. package/kit/.claude/commands/co/docs-summarize.md +25 -0
  71. package/kit/.claude/commands/co/docs-update.md +25 -0
  72. package/kit/.claude/commands/co/env-check.md +25 -0
  73. package/kit/.claude/commands/co/fix-ci.md +29 -0
  74. package/kit/.claude/commands/co/fix-fast.md +28 -0
  75. package/kit/.claude/commands/co/fix-hard.md +33 -0
  76. package/kit/.claude/commands/co/fix-logs.md +28 -0
  77. package/kit/.claude/commands/co/fix-types.md +28 -0
  78. package/kit/.claude/commands/co/fix-ui.md +28 -0
  79. package/kit/.claude/commands/co/fix.md +27 -0
  80. package/kit/.claude/commands/co/git-cm.md +26 -0
  81. package/kit/.claude/commands/co/git-cp.md +26 -0
  82. package/kit/.claude/commands/co/git-pr.md +26 -0
  83. package/kit/.claude/commands/co/index.md +24 -0
  84. package/kit/.claude/commands/co/integrate-polar.md +29 -0
  85. package/kit/.claude/commands/co/integrate-sepay.md +29 -0
  86. package/kit/.claude/commands/co/journal.md +27 -0
  87. package/kit/.claude/commands/co/k8s.md +24 -0
  88. package/kit/.claude/commands/co/kanban.md +25 -0
  89. package/kit/.claude/commands/co/lint-fix.md +24 -0
  90. package/kit/.claude/commands/co/load.md +25 -0
  91. package/kit/.claude/commands/co/migrate.md +28 -0
  92. package/kit/.claude/commands/co/mock.md +26 -0
  93. package/kit/.claude/commands/co/mode.md +24 -0
  94. package/kit/.claude/commands/co/monitor.md +25 -0
  95. package/kit/.claude/commands/co/new-feature.md +27 -0
  96. package/kit/.claude/commands/co/optimize.md +26 -0
  97. package/kit/.claude/commands/co/plan-archive.md +24 -0
  98. package/kit/.claude/commands/co/plan-ci.md +28 -0
  99. package/kit/.claude/commands/co/plan-cro.md +27 -0
  100. package/kit/.claude/commands/co/plan-fast.md +24 -0
  101. package/kit/.claude/commands/co/plan-hard.md +27 -0
  102. package/kit/.claude/commands/co/plan-parallel.md +25 -0
  103. package/kit/.claude/commands/co/plan-two.md +29 -0
  104. package/kit/.claude/commands/co/plan-validate.md +27 -0
  105. package/kit/.claude/commands/co/plan.md +27 -0
  106. package/kit/.claude/commands/co/pr.md +25 -0
  107. package/kit/.claude/commands/co/preview.md +26 -0
  108. package/kit/.claude/commands/co/refactor.md +25 -0
  109. package/kit/.claude/commands/co/release.md +25 -0
  110. package/kit/.claude/commands/co/review-a11y.md +24 -0
  111. package/kit/.claude/commands/co/review-codebase-parallel.md +27 -0
  112. package/kit/.claude/commands/co/review-codebase.md +27 -0
  113. package/kit/.claude/commands/co/review-perf.md +24 -0
  114. package/kit/.claude/commands/co/review-security.md +25 -0
  115. package/kit/.claude/commands/co/scaffold.md +25 -0
  116. package/kit/.claude/commands/co/scout.md +26 -0
  117. package/kit/.claude/commands/co/secure.md +26 -0
  118. package/kit/.claude/commands/co/seed.md +25 -0
  119. package/kit/.claude/commands/co/seo-audit.md +24 -0
  120. package/kit/.claude/commands/co/seo-keywords.md +25 -0
  121. package/kit/.claude/commands/co/skill-create.md +29 -0
  122. package/kit/.claude/commands/co/skill-fix-logs.md +28 -0
  123. package/kit/.claude/commands/co/slide-create.md +24 -0
  124. package/kit/.claude/commands/co/spawn.md +24 -0
  125. package/kit/.claude/commands/co/terraform.md +24 -0
  126. package/kit/.claude/commands/co/test-gen.md +24 -0
  127. package/kit/.claude/commands/co/test-ui.md +27 -0
  128. package/kit/.claude/commands/co/test.md +26 -0
  129. package/kit/.claude/commands/co/use-mcp.md +25 -0
  130. package/kit/.claude/commands/co/video-script.md +25 -0
  131. package/kit/.claude/commands/co/watzup.md +25 -0
  132. package/kit/.claude/commands/co/worktree.md +25 -0
  133. package/kit/.claude/commands/co/write-blog.md +25 -0
  134. package/kit/.claude/commands/co/write-copy.md +24 -0
  135. package/kit/.claude/commands/co/write-email.md +25 -0
  136. package/kit/.claude/commands/content/content-cro.md +26 -0
  137. package/kit/.claude/commands/content/content-enhance.md +26 -0
  138. package/kit/.claude/commands/content/content-fast.md +24 -0
  139. package/kit/.claude/commands/content/content-good.md +26 -0
  140. package/kit/.claude/commands/content/enhance.md +26 -0
  141. package/kit/.claude/commands/content/good.md +26 -0
  142. package/kit/.claude/commands/core/ask.md +29 -0
  143. package/kit/.claude/commands/core/bootstrap-auto-fast.md +28 -0
  144. package/kit/.claude/commands/core/bootstrap-auto-parallel.md +29 -0
  145. package/kit/.claude/commands/core/bootstrap-auto.md +30 -0
  146. package/kit/.claude/commands/core/bootstrap.md +31 -0
  147. package/kit/.claude/commands/core/ck-help.md +24 -0
  148. package/kit/.claude/commands/core/coding-level.md +24 -0
  149. package/kit/.claude/commands/core/cook.md +33 -0
  150. package/kit/.claude/commands/core/debug.md +26 -0
  151. package/kit/.claude/commands/core/journal.md +27 -0
  152. package/kit/.claude/commands/core/kanban.md +25 -0
  153. package/kit/.claude/commands/core/preview.md +26 -0
  154. package/kit/.claude/commands/core/scout.md +26 -0
  155. package/kit/.claude/commands/core/test-ui.md +27 -0
  156. package/kit/.claude/commands/core/test.md +26 -0
  157. package/kit/.claude/commands/core/use-mcp.md +25 -0
  158. package/kit/.claude/commands/core/watzup.md +25 -0
  159. package/kit/.claude/commands/core/worktree.md +25 -0
  160. package/kit/.claude/commands/design/3d.md +27 -0
  161. package/kit/.claude/commands/design/design-3d.md +27 -0
  162. package/kit/.claude/commands/design/design-describe.md +25 -0
  163. package/kit/.claude/commands/design/design-fast.md +25 -0
  164. package/kit/.claude/commands/design/design-good.md +28 -0
  165. package/kit/.claude/commands/design/design-screenshot.md +26 -0
  166. package/kit/.claude/commands/design/design-video.md +26 -0
  167. package/kit/.claude/commands/design/good.md +28 -0
  168. package/kit/.claude/commands/design/video.md +26 -0
  169. package/kit/.claude/commands/docs/docs-init.md +26 -0
  170. package/kit/.claude/commands/docs/docs-summarize.md +25 -0
  171. package/kit/.claude/commands/docs/docs-update.md +25 -0
  172. package/kit/.claude/commands/docs/init.md +26 -0
  173. package/kit/.claude/commands/docs/summarize.md +25 -0
  174. package/kit/.claude/commands/fix/ci.md +29 -0
  175. package/kit/.claude/commands/fix/fast.md +28 -0
  176. package/kit/.claude/commands/fix/fix-ci.md +29 -0
  177. package/kit/.claude/commands/fix/fix-fast.md +28 -0
  178. package/kit/.claude/commands/fix/fix-hard.md +33 -0
  179. package/kit/.claude/commands/fix/fix-logs.md +28 -0
  180. package/kit/.claude/commands/fix/fix-types.md +28 -0
  181. package/kit/.claude/commands/fix/fix-ui.md +28 -0
  182. package/kit/.claude/commands/fix/hard.md +33 -0
  183. package/kit/.claude/commands/fix/logs.md +28 -0
  184. package/kit/.claude/commands/fix/types.md +28 -0
  185. package/kit/.claude/commands/fix/ui.md +28 -0
  186. package/kit/.claude/commands/git/cp.md +26 -0
  187. package/kit/.claude/commands/git/git-cm.md +26 -0
  188. package/kit/.claude/commands/git/git-cp.md +26 -0
  189. package/kit/.claude/commands/git/git-pr.md +26 -0
  190. package/kit/.claude/commands/integrate/integrate-polar.md +29 -0
  191. package/kit/.claude/commands/integrate/integrate-sepay.md +29 -0
  192. package/kit/.claude/commands/integrate/sepay.md +29 -0
  193. package/kit/.claude/commands/plan/ci.md +28 -0
  194. package/kit/.claude/commands/plan/cro.md +27 -0
  195. package/kit/.claude/commands/plan/hard.md +27 -0
  196. package/kit/.claude/commands/plan/plan-archive.md +24 -0
  197. package/kit/.claude/commands/plan/plan-ci.md +28 -0
  198. package/kit/.claude/commands/plan/plan-cro.md +27 -0
  199. package/kit/.claude/commands/plan/plan-fast.md +24 -0
  200. package/kit/.claude/commands/plan/plan-hard.md +27 -0
  201. package/kit/.claude/commands/plan/plan-parallel.md +25 -0
  202. package/kit/.claude/commands/plan/plan-two.md +29 -0
  203. package/kit/.claude/commands/plan/plan-validate.md +27 -0
  204. package/kit/.claude/commands/plan/plan.md +27 -0
  205. package/kit/.claude/commands/plan/validate.md +27 -0
  206. package/kit/.claude/commands/skill/fix-logs.md +28 -0
  207. package/kit/.claude/commands/skill/skill-create.md +29 -0
  208. package/kit/.claude/commands/skill/skill-fix-logs.md +28 -0
  209. package/kit/.claude/settings.json +16 -0
  210. package/kit/.claude/skills/ai-anthropic.md +100 -0
  211. package/kit/.claude/skills/ai-context-engineering.md +113 -0
  212. package/kit/.claude/skills/ai-gemini.md +152 -0
  213. package/kit/.claude/skills/ai-langchain.md +93 -0
  214. package/kit/.claude/skills/ai-llamaindex.md +179 -0
  215. package/kit/.claude/skills/ai-mcp-builder.md +101 -0
  216. package/kit/.claude/skills/ai-openai.md +250 -0
  217. package/kit/.claude/skills/ai-prompt-engineering.md +173 -0
  218. package/kit/.claude/skills/ai-rag.md +91 -0
  219. package/kit/.claude/skills/ai-vectordb.md +215 -0
  220. package/kit/.claude/skills/analytics-segment.md +161 -0
  221. package/kit/.claude/skills/api-caching.md +103 -0
  222. package/kit/.claude/skills/api-documentation.md +50 -0
  223. package/kit/.claude/skills/api-graphql.md +234 -0
  224. package/kit/.claude/skills/api-openapi.md +116 -0
  225. package/kit/.claude/skills/api-pagination-filtering.md +239 -0
  226. package/kit/.claude/skills/api-rate-limiting.md +179 -0
  227. package/kit/.claude/skills/api-rest-advanced.md +50 -0
  228. package/kit/.claude/skills/api-rest.md +217 -0
  229. package/kit/.claude/skills/api-trpc.md +173 -0
  230. package/kit/.claude/skills/api-versioning.md +70 -0
  231. package/kit/.claude/skills/api-webhooks.md +226 -0
  232. package/kit/.claude/skills/arch-clean-code.md +226 -0
  233. package/kit/.claude/skills/arch-clean.md +91 -0
  234. package/kit/.claude/skills/arch-cqrs.md +229 -0
  235. package/kit/.claude/skills/arch-ddd.md +85 -0
  236. package/kit/.claude/skills/arch-event-driven.md +189 -0
  237. package/kit/.claude/skills/arch-microservices.md +80 -0
  238. package/kit/.claude/skills/arch-monorepo.md +87 -0
  239. package/kit/.claude/skills/arch-multi-tenant.md +81 -0
  240. package/kit/.claude/skills/arch-serverless.md +86 -0
  241. package/kit/.claude/skills/auth-clerk.md +97 -0
  242. package/kit/.claude/skills/auth-jwt.md +143 -0
  243. package/kit/.claude/skills/auth-lucia.md +93 -0
  244. package/kit/.claude/skills/auth-nextauth.md +446 -0
  245. package/kit/.claude/skills/auth-oauth.md +208 -0
  246. package/kit/.claude/skills/auth-oauth2.md +110 -0
  247. package/kit/.claude/skills/auth-passkeys.md +109 -0
  248. package/kit/.claude/skills/auth-session.md +88 -0
  249. package/kit/.claude/skills/backend-dotnet.md +414 -0
  250. package/kit/.claude/skills/backend-express.md +129 -0
  251. package/kit/.claude/skills/backend-fastify.md +104 -0
  252. package/kit/.claude/skills/backend-go.md +205 -0
  253. package/kit/.claude/skills/backend-graphql.md +149 -0
  254. package/kit/.claude/skills/backend-grpc.md +382 -0
  255. package/kit/.claude/skills/backend-hono.md +95 -0
  256. package/kit/.claude/skills/backend-java-spring.md +198 -0
  257. package/kit/.claude/skills/backend-nodejs-express.md +165 -0
  258. package/kit/.claude/skills/backend-nodejs.md +143 -0
  259. package/kit/.claude/skills/backend-php-laravel.md +156 -0
  260. package/kit/.claude/skills/backend-python-django.md +200 -0
  261. package/kit/.claude/skills/backend-python-fastapi.md +169 -0
  262. package/kit/.claude/skills/backend-ruby-rails.md +190 -0
  263. package/kit/.claude/skills/backend-rust.md +182 -0
  264. package/kit/.claude/skills/backend-websockets.md +392 -0
  265. package/kit/.claude/skills/cache-redis.md +195 -0
  266. package/kit/.claude/skills/caching-strategies.md +100 -0
  267. package/kit/.claude/skills/cloud-aws.md +165 -0
  268. package/kit/.claude/skills/cloud-azure.md +187 -0
  269. package/kit/.claude/skills/cloud-cloudflare.md +74 -0
  270. package/kit/.claude/skills/cloud-fly.md +94 -0
  271. package/kit/.claude/skills/cloud-gcp.md +160 -0
  272. package/kit/.claude/skills/cloud-railway.md +92 -0
  273. package/kit/.claude/skills/cloud-render.md +70 -0
  274. package/kit/.claude/skills/cloud-serverless.md +68 -0
  275. package/kit/.claude/skills/cloud-vercel.md +76 -0
  276. package/kit/.claude/skills/component-patterns.md +50 -0
  277. package/kit/.claude/skills/content-management.md +197 -0
  278. package/kit/.claude/skills/cors-security.md +50 -0
  279. package/kit/.claude/skills/data-csv-excel.md +210 -0
  280. package/kit/.claude/skills/database-optimization.md +196 -0
  281. package/kit/.claude/skills/databases-transactions.md +68 -0
  282. package/kit/.claude/skills/db-cassandra.md +89 -0
  283. package/kit/.claude/skills/db-drizzle.md +363 -0
  284. package/kit/.claude/skills/db-dynamodb.md +83 -0
  285. package/kit/.claude/skills/db-elasticsearch.md +105 -0
  286. package/kit/.claude/skills/db-firebase-firestore.md +191 -0
  287. package/kit/.claude/skills/db-mongodb.md +198 -0
  288. package/kit/.claude/skills/db-mysql.md +50 -0
  289. package/kit/.claude/skills/db-neon.md +72 -0
  290. package/kit/.claude/skills/db-planetscale.md +76 -0
  291. package/kit/.claude/skills/db-postgresql.md +50 -0
  292. package/kit/.claude/skills/db-prisma.md +414 -0
  293. package/kit/.claude/skills/db-redis.md +50 -0
  294. package/kit/.claude/skills/db-sqlite.md +149 -0
  295. package/kit/.claude/skills/db-supabase.md +445 -0
  296. package/kit/.claude/skills/devops-ci-cd.md +271 -0
  297. package/kit/.claude/skills/devops-database-backup.md +77 -0
  298. package/kit/.claude/skills/devops-docker.md +93 -0
  299. package/kit/.claude/skills/devops-github-actions.md +82 -0
  300. package/kit/.claude/skills/devops-health-checks.md +50 -0
  301. package/kit/.claude/skills/devops-kubernetes.md +109 -0
  302. package/kit/.claude/skills/devops-logging.md +163 -0
  303. package/kit/.claude/skills/devops-monitoring.md +203 -0
  304. package/kit/.claude/skills/devops-pulumi.md +94 -0
  305. package/kit/.claude/skills/devops-secrets.md +166 -0
  306. package/kit/.claude/skills/devops-terraform.md +226 -0
  307. package/kit/.claude/skills/error-boundaries.md +84 -0
  308. package/kit/.claude/skills/file-storage.md +50 -0
  309. package/kit/.claude/skills/frontend-angular.md +104 -0
  310. package/kit/.claude/skills/frontend-astro.md +94 -0
  311. package/kit/.claude/skills/frontend-bundle-analysis.md +147 -0
  312. package/kit/.claude/skills/frontend-forms.md +134 -0
  313. package/kit/.claude/skills/frontend-htmx.md +86 -0
  314. package/kit/.claude/skills/frontend-nextjs.md +188 -0
  315. package/kit/.claude/skills/frontend-pwa.md +105 -0
  316. package/kit/.claude/skills/frontend-react-hooks.md +238 -0
  317. package/kit/.claude/skills/frontend-react.md +129 -0
  318. package/kit/.claude/skills/frontend-remix-advanced.md +106 -0
  319. package/kit/.claude/skills/frontend-remix.md +101 -0
  320. package/kit/.claude/skills/frontend-solid.md +99 -0
  321. package/kit/.claude/skills/frontend-state-management.md +134 -0
  322. package/kit/.claude/skills/frontend-state.md +106 -0
  323. package/kit/.claude/skills/frontend-svelte.md +121 -0
  324. package/kit/.claude/skills/frontend-testing.md +100 -0
  325. package/kit/.claude/skills/frontend-vite.md +94 -0
  326. package/kit/.claude/skills/frontend-vue.md +133 -0
  327. package/kit/.claude/skills/frontend-webpack.md +93 -0
  328. package/kit/.claude/skills/functional-programming.md +50 -0
  329. package/kit/.claude/skills/hooks-custom.md +50 -0
  330. package/kit/.claude/skills/http-server.md +50 -0
  331. package/kit/.claude/skills/i18n-general.md +89 -0
  332. package/kit/.claude/skills/i18n-localization.md +191 -0
  333. package/kit/.claude/skills/i18n-nextjs.md +127 -0
  334. package/kit/.claude/skills/infrastructure-docker-compose.md +77 -0
  335. package/kit/.claude/skills/infrastructure-serverless.md +177 -0
  336. package/kit/.claude/skills/jwt-tokens.md +50 -0
  337. package/kit/.claude/skills/logging-winston.md +106 -0
  338. package/kit/.claude/skills/messaging-kafka.md +102 -0
  339. package/kit/.claude/skills/messaging-rabbitmq.md +50 -0
  340. package/kit/.claude/skills/mobile-capacitor.md +109 -0
  341. package/kit/.claude/skills/mobile-expo.md +101 -0
  342. package/kit/.claude/skills/mobile-flutter.md +259 -0
  343. package/kit/.claude/skills/mobile-react-native.md +238 -0
  344. package/kit/.claude/skills/monitoring-apm.md +50 -0
  345. package/kit/.claude/skills/monitoring-error-tracking.md +217 -0
  346. package/kit/.claude/skills/nodejs-streams.md +168 -0
  347. package/kit/.claude/skills/oauth-integration.md +50 -0
  348. package/kit/.claude/skills/patterns-dependency-injection.md +218 -0
  349. package/kit/.claude/skills/patterns-factory-singleton.md +209 -0
  350. package/kit/.claude/skills/patterns-observer-pubsub.md +210 -0
  351. package/kit/.claude/skills/payment-lemonsqueezy.md +101 -0
  352. package/kit/.claude/skills/payment-square.md +178 -0
  353. package/kit/.claude/skills/payment-stripe.md +206 -0
  354. package/kit/.claude/skills/perf-bundle.md +100 -0
  355. package/kit/.claude/skills/perf-web-vitals.md +102 -0
  356. package/kit/.claude/skills/performance-database-connection-pooling.md +67 -0
  357. package/kit/.claude/skills/performance-metrics.md +73 -0
  358. package/kit/.claude/skills/performance-optimization.md +208 -0
  359. package/kit/.claude/skills/performance-web-vitals.md +169 -0
  360. package/kit/.claude/skills/rate-limiting.md +77 -0
  361. package/kit/.claude/skills/reactive-programming.md +50 -0
  362. package/kit/.claude/skills/realtime-database.md +50 -0
  363. package/kit/.claude/skills/realtime-subscriptions.md +218 -0
  364. package/kit/.claude/skills/saas-ab-testing.md +90 -0
  365. package/kit/.claude/skills/saas-analytics.md +113 -0
  366. package/kit/.claude/skills/saas-billing.md +106 -0
  367. package/kit/.claude/skills/saas-email.md +88 -0
  368. package/kit/.claude/skills/saas-feature-flags.md +83 -0
  369. package/kit/.claude/skills/saas-onboarding.md +96 -0
  370. package/kit/.claude/skills/saas-user-onboarding.md +207 -0
  371. package/kit/.claude/skills/security-encryption.md +216 -0
  372. package/kit/.claude/skills/security-owasp.md +212 -0
  373. package/kit/.claude/skills/security-secrets-rotation.md +64 -0
  374. package/kit/.claude/skills/seo-content.md +94 -0
  375. package/kit/.claude/skills/seo-technical.md +101 -0
  376. package/kit/.claude/skills/serverless-framework.md +151 -0
  377. package/kit/.claude/skills/sharding-scaling.md +50 -0
  378. package/kit/.claude/skills/styling-css-modules.md +219 -0
  379. package/kit/.claude/skills/styling-styled-components.md +206 -0
  380. package/kit/.claude/skills/styling-tailwind.md +206 -0
  381. package/kit/.claude/skills/test-e2e.md +86 -0
  382. package/kit/.claude/skills/test-integration.md +216 -0
  383. package/kit/.claude/skills/test-performance.md +162 -0
  384. package/kit/.claude/skills/test-tdd.md +170 -0
  385. package/kit/.claude/skills/test-unit.md +301 -0
  386. package/kit/.claude/skills/testing-accessibility.md +117 -0
  387. package/kit/.claude/skills/testing-contract.md +75 -0
  388. package/kit/.claude/skills/testing-e2e-advanced.md +50 -0
  389. package/kit/.claude/skills/testing-load-stress.md +79 -0
  390. package/kit/.claude/skills/testing-mutation.md +92 -0
  391. package/kit/.claude/skills/testing-snapshot.md +50 -0
  392. package/kit/.claude/skills/testing-vitest.md +172 -0
  393. package/kit/.claude/skills/tooling-biome.md +91 -0
  394. package/kit/.claude/skills/tooling-build-tools.md +166 -0
  395. package/kit/.claude/skills/tooling-bun.md +94 -0
  396. package/kit/.claude/skills/tooling-eslint.md +103 -0
  397. package/kit/.claude/skills/tooling-git.md +79 -0
  398. package/kit/.claude/skills/tooling-monorepo.md +162 -0
  399. package/kit/.claude/skills/tooling-testing-frameworks.md +207 -0
  400. package/kit/.claude/skills/tooling-typescript.md +156 -0
  401. package/kit/.claude/skills/ui-a11y.md +106 -0
  402. package/kit/.claude/skills/ui-framer.md +106 -0
  403. package/kit/.claude/skills/ui-gsap.md +102 -0
  404. package/kit/.claude/skills/ui-radix.md +82 -0
  405. package/kit/.claude/skills/ui-shadcn.md +463 -0
  406. package/kit/.claude/skills/ui-tailwind.md +98 -0
  407. package/kit/.claude/skills/ui-threejs.md +110 -0
  408. package/kit/.claude/skills/ui-tokens.md +97 -0
  409. package/kit/.claude/skills/utilities-date-time.md +170 -0
  410. package/kit/.claude/skills/validation-schemas.md +110 -0
  411. package/kit/.claude/skills/version-control-git.md +144 -0
  412. package/kit/.claude/skills/web-accessibility-wcag.md +102 -0
  413. package/kit/.claude/skills/web-astro.md +197 -0
  414. package/kit/.claude/skills/web-html-css.md +224 -0
  415. package/kit/.claude/skills/web-htmx.md +99 -0
  416. package/kit/.claude/skills/web-nextjs-advanced.md +202 -0
  417. package/kit/.claude/skills/web-remix.md +194 -0
  418. package/kit/.claude/skills/web-seo.md +99 -0
  419. package/kit/.claude/skills/web-svelte.md +234 -0
  420. package/kit/.claude/skills/websocket-server.md +50 -0
  421. package/kit/.claude/skills/writing-marketing.md +89 -0
  422. package/kit/.claude/skills/writing-technical.md +119 -0
  423. package/kit/CLAUDE.md +206 -0
  424. package/kit/README.md +150 -0
  425. package/kit/SKILLS_INDEX.md +188 -0
  426. package/kit/docs/README.md +3 -0
  427. package/kit/journals/README.md +3 -0
  428. package/kit/plans/README.md +3 -0
  429. package/package.json +3 -1
@@ -0,0 +1,197 @@
1
+ # Content Management Systems
2
+
3
+ Building and managing content with headless CMS or self-hosted solutions.
4
+
5
+ ## Headless CMS with Strapi
6
+
7
+ ```bash
8
+ npm install strapi @strapi/strapi @strapi/plugin-users-permissions
9
+ npx strapi new my-cms
10
+ cd my-cms
11
+ npx strapi develop
12
+ ```
13
+
14
+ ```typescript
15
+ // Create content type via API
16
+ const strapiClient = axios.create({
17
+ baseURL: 'http://localhost:1337/api',
18
+ headers: {
19
+ Authorization: `Bearer ${process.env.STRAPI_TOKEN}`
20
+ }
21
+ });
22
+
23
+ // Create post
24
+ const response = await strapiClient.post('/posts', {
25
+ data: {
26
+ title: 'My Post',
27
+ content: 'Post content',
28
+ published: true
29
+ }
30
+ });
31
+
32
+ // Query posts
33
+ const posts = await strapiClient.get('/posts?populate=author');
34
+ ```
35
+
36
+ ## Contentful Integration
37
+
38
+ ```typescript
39
+ import { createClient } from 'contentful';
40
+
41
+ const client = createClient({
42
+ space: process.env.CONTENTFUL_SPACE_ID,
43
+ accessToken: process.env.CONTENTFUL_ACCESS_TOKEN
44
+ });
45
+
46
+ // Fetch content
47
+ const entries = await client.getEntries({
48
+ content_type: 'blogPost',
49
+ limit: 10,
50
+ order: '-sys.createdAt'
51
+ });
52
+
53
+ entries.items.forEach(item => {
54
+ console.log(item.fields.title);
55
+ console.log(item.fields.body);
56
+ });
57
+
58
+ // Fetch single entry
59
+ const entry = await client.getEntry(entryId);
60
+ ```
61
+
62
+ ## Next.js with Markdown
63
+
64
+ ```typescript
65
+ // pages/blog/[slug].tsx
66
+ import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote';
67
+ import { serialize } from 'next-mdx-remote/serialize';
68
+ import fs from 'fs';
69
+ import path from 'path';
70
+
71
+ interface PostProps {
72
+ source: MDXRemoteSerializeResult;
73
+ frontmatter: Record<string, any>;
74
+ }
75
+
76
+ export async function getStaticProps({ params }: any) {
77
+ const postPath = path.join(process.cwd(), 'posts', `${params.slug}.mdx`);
78
+ const source = fs.readFileSync(postPath, 'utf-8');
79
+
80
+ // Parse frontmatter
81
+ const { data: frontmatter, content } = matter(source);
82
+
83
+ // Serialize MDX
84
+ const mdxSource = await serialize(content);
85
+
86
+ return {
87
+ props: {
88
+ source: mdxSource,
89
+ frontmatter
90
+ }
91
+ };
92
+ }
93
+
94
+ export default function Post({ source, frontmatter }: PostProps) {
95
+ return (
96
+ <article>
97
+ <h1>{frontmatter.title}</h1>
98
+ <MDXRemote {...source} />
99
+ </article>
100
+ );
101
+ }
102
+ ```
103
+
104
+ ## Rich Text Editor
105
+
106
+ ```typescript
107
+ import { EditorState, convertToRaw, convertFromRaw } from 'draft-js';
108
+ import 'draft-js/dist/Draft.css';
109
+
110
+ function RichTextEditor({ content, onChange }: any) {
111
+ const [editorState, setEditorState] = useState(() => {
112
+ if (content) {
113
+ const contentState = convertFromRaw(content);
114
+ return EditorState.createWithContent(contentState);
115
+ }
116
+ return EditorState.createEmpty();
117
+ });
118
+
119
+ const handleChange = (state: EditorState) => {
120
+ setEditorState(state);
121
+
122
+ // Serialize to JSON
123
+ const contentState = state.getCurrentContent();
124
+ const raw = convertToRaw(contentState);
125
+ onChange(raw);
126
+ };
127
+
128
+ return (
129
+ <Editor
130
+ editorState={editorState}
131
+ onChange={handleChange}
132
+ />
133
+ );
134
+ }
135
+ ```
136
+
137
+ ## Blog Platform Features
138
+
139
+ ```typescript
140
+ // Full-text search
141
+ const SearchPosts = async (query: string) => {
142
+ return await db.posts.find({
143
+ $or: [
144
+ { title: { $regex: query, $options: 'i' } },
145
+ { content: { $regex: query, $options: 'i' } }
146
+ ]
147
+ });
148
+ };
149
+
150
+ // Category filtering
151
+ const PostsByCategory = async (category: string) => {
152
+ return await db.posts.find({ category });
153
+ };
154
+
155
+ // Pagination
156
+ const getPaginatedPosts = async (page: number, pageSize: number) => {
157
+ const skip = (page - 1) * pageSize;
158
+ return await db.posts
159
+ .find()
160
+ .skip(skip)
161
+ .limit(pageSize)
162
+ .sort({ publishedAt: -1 });
163
+ };
164
+
165
+ // Comments
166
+ interface Comment {
167
+ id: string;
168
+ postId: string;
169
+ userId: string;
170
+ content: string;
171
+ createdAt: Date;
172
+ parentId?: string; // For nested replies
173
+ }
174
+
175
+ const addComment = async (postId: string, userId: string, content: string) => {
176
+ return await db.comments.create({
177
+ postId,
178
+ userId,
179
+ content,
180
+ createdAt: new Date()
181
+ });
182
+ };
183
+ ```
184
+
185
+ ## Best Practices
186
+
187
+ ✅ **Markdown for content** - Version control friendly
188
+ ✅ **Caching** - Cache rendered content
189
+ ✅ **Search** - Full-text indexing
190
+ ✅ **Comments moderation** - Review before publishing
191
+ ✅ **Media storage** - Use CDN for images/videos
192
+
193
+ ## Resources
194
+
195
+ - [Strapi Documentation](https://docs.strapi.io/)
196
+ - [Contentful CMS](https://www.contentful.com/)
197
+ - [Next.js MDX](https://nextjs.org/docs/advanced-features/using-mdx)
@@ -0,0 +1,50 @@
1
+ # Production-Ready Skill Implementation
2
+
3
+ ## Setup & Installation
4
+
5
+ Detailed installation and configuration steps for the technology.
6
+
7
+ ## Core Concepts
8
+
9
+ Fundamental patterns and approaches.
10
+
11
+ ## Implementation Examples
12
+
13
+ ```typescript
14
+ // Real production code examples
15
+ // with error handling and best practices
16
+ ```
17
+
18
+ ## Advanced Patterns
19
+
20
+ Complex scenarios and optimization techniques.
21
+
22
+ ## Performance Optimization
23
+
24
+ Tips for maximizing efficiency and speed.
25
+
26
+ ## Security Considerations
27
+
28
+ Security best practices specific to this technology.
29
+
30
+ ## Testing
31
+
32
+ How to properly test this feature.
33
+
34
+ ## Monitoring & Debugging
35
+
36
+ Tools and techniques for production support.
37
+
38
+ ## Best Practices
39
+
40
+ ✅ Key recommendations
41
+ ✅ Common pitfalls to avoid
42
+ ✅ Performance considerations
43
+ ✅ Security measures
44
+ ✅ Production readiness
45
+
46
+ ## Resources
47
+
48
+ - Official documentation
49
+ - Community guides
50
+ - Performance benchmarks
@@ -0,0 +1,210 @@
1
+ # CSV & Excel Processing
2
+
3
+ Reading, writing, and manipulating spreadsheet files.
4
+
5
+ ## CSV Handling
6
+
7
+ ```typescript
8
+ import { parse } from 'csv-parse';
9
+ import { stringify } from 'csv-stringify';
10
+ import fs from 'fs';
11
+
12
+ // Read CSV
13
+ const parser = fs.createReadStream('data.csv')
14
+ .pipe(parse({
15
+ columns: true,
16
+ skip_empty_lines: true,
17
+ trim: true
18
+ }));
19
+
20
+ const records: any[] = [];
21
+ for await (const record of parser) {
22
+ records.push(record);
23
+ }
24
+
25
+ console.log(records);
26
+
27
+ // Write CSV
28
+ const output = fs.createWriteStream('output.csv');
29
+ const stringifier = stringify({
30
+ columns: ['id', 'name', 'email'],
31
+ header: true
32
+ });
33
+
34
+ stringifier.pipe(output);
35
+
36
+ records.forEach(record => {
37
+ stringifier.write({
38
+ id: record.id,
39
+ name: record.name,
40
+ email: record.email
41
+ });
42
+ });
43
+
44
+ stringifier.end();
45
+ ```
46
+
47
+ ## Excel Files (XLSX)
48
+
49
+ ```typescript
50
+ import ExcelJS from 'exceljs';
51
+
52
+ // Read Excel
53
+ const workbook = new ExcelJS.Workbook();
54
+ await workbook.xlsx.readFile('data.xlsx');
55
+
56
+ const worksheet = workbook.getWorksheet(1);
57
+ const rows: any[] = [];
58
+
59
+ worksheet.eachRow((row, rowNumber) => {
60
+ if (rowNumber > 1) { // Skip header
61
+ rows.push({
62
+ id: row.getCell(1).value,
63
+ name: row.getCell(2).value,
64
+ email: row.getCell(3).value
65
+ });
66
+ }
67
+ });
68
+
69
+ // Write Excel
70
+ const newWorkbook = new ExcelJS.Workbook();
71
+ const newWorksheet = newWorkbook.addWorksheet('Data');
72
+
73
+ // Add headers
74
+ newWorksheet.columns = [
75
+ { header: 'ID', key: 'id', width: 10 },
76
+ { header: 'Name', key: 'name', width: 30 },
77
+ { header: 'Email', key: 'email', width: 40 }
78
+ ];
79
+
80
+ // Add data
81
+ rows.forEach(row => {
82
+ newWorksheet.addRow(row);
83
+ });
84
+
85
+ // Style
86
+ newWorksheet.getRow(1).font = { bold: true };
87
+ newWorksheet.getRow(1).fill = {
88
+ type: 'pattern',
89
+ pattern: 'solid',
90
+ fgColor: { argb: 'FFD3D3D3' }
91
+ };
92
+
93
+ await newWorkbook.xlsx.writeFile('output.xlsx');
94
+ ```
95
+
96
+ ## Data Transformation
97
+
98
+ ```typescript
99
+ // Pipeline for data processing
100
+ async function processImport(filePath: string) {
101
+ const records = await readCSV(filePath);
102
+
103
+ // Transform
104
+ const transformed = records
105
+ .map(record => ({
106
+ ...record,
107
+ email: record.email.toLowerCase().trim(),
108
+ name: record.name.toUpperCase(),
109
+ createdAt: new Date()
110
+ }))
111
+ .filter(record => record.email.includes('@'))
112
+ .filter((record, index, arr) =>
113
+ arr.findIndex(r => r.email === record.email) === index
114
+ ); // Deduplicate
115
+
116
+ // Validate
117
+ const validated = transformed.filter(record => {
118
+ const errors: string[] = [];
119
+
120
+ if (!record.email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {
121
+ errors.push('Invalid email');
122
+ }
123
+
124
+ if (record.name.length < 2) {
125
+ errors.push('Name too short');
126
+ }
127
+
128
+ if (errors.length > 0) {
129
+ console.warn(`Row invalid: ${errors.join(', ')}`);
130
+ return false;
131
+ }
132
+
133
+ return true;
134
+ });
135
+
136
+ // Store in database
137
+ await db.users.createMany(validated);
138
+
139
+ return {
140
+ total: records.length,
141
+ valid: validated.length,
142
+ invalid: records.length - validated.length
143
+ };
144
+ }
145
+ ```
146
+
147
+ ## Streaming Large Files
148
+
149
+ ```typescript
150
+ import { createReadStream } from 'fs';
151
+ import { parse } from 'csv-parse';
152
+
153
+ // Stream processing for large files
154
+ async function processLargeCSV(filePath: string) {
155
+ const stream = createReadStream(filePath)
156
+ .pipe(parse({ columns: true, batchSize: 1000 }));
157
+
158
+ for await (const records of stream) {
159
+ // Process batch of 1000 records
160
+ await db.users.createMany(records);
161
+ console.log(`Processed ${records.length} records`);
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## Excel with Formulas
167
+
168
+ ```typescript
169
+ import ExcelJS from 'exceljs';
170
+
171
+ const workbook = new ExcelJS.Workbook();
172
+ const worksheet = workbook.addWorksheet('Summary');
173
+
174
+ // Data
175
+ worksheet.columns = [
176
+ { header: 'Item', key: 'item' },
177
+ { header: 'Price', key: 'price' },
178
+ { header: 'Quantity', key: 'quantity' },
179
+ { header: 'Total', key: 'total' }
180
+ ];
181
+
182
+ worksheet.addRows([
183
+ { item: 'Widget', price: 10, quantity: 5, total: '=B2*C2' },
184
+ { item: 'Gadget', price: 20, quantity: 3, total: '=B3*C3' }
185
+ ]);
186
+
187
+ // Add summary row
188
+ worksheet.addRow({
189
+ item: 'Total',
190
+ price: null,
191
+ quantity: '=SUM(C2:C3)',
192
+ total: '=SUM(D2:D3)'
193
+ });
194
+
195
+ await workbook.xlsx.writeFile('report.xlsx');
196
+ ```
197
+
198
+ ## Best Practices
199
+
200
+ ✅ **Stream large files** - Avoid loading entire file in memory
201
+ ✅ **Validate data** - Check before storing
202
+ ✅ **Batch operations** - Process in chunks
203
+ ✅ **Error handling** - Log invalid rows
204
+ ✅ **Consistent format** - Normalize data during import
205
+
206
+ ## Resources
207
+
208
+ - [csv-parse Documentation](https://csv.js.org/parse/)
209
+ - [ExcelJS](https://github.com/exceljs/exceljs)
210
+ - [SheetJS](https://sheetjs.com/)
@@ -0,0 +1,196 @@
1
+ # Database Query Optimization
2
+
3
+ Techniques for improving database performance.
4
+
5
+ ## Indexes
6
+
7
+ ```sql
8
+ -- Create indexes on frequently queried columns
9
+ CREATE INDEX idx_users_email ON users(email);
10
+ CREATE INDEX idx_posts_user_id ON posts(user_id);
11
+
12
+ -- Composite index for multi-column queries
13
+ CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC);
14
+
15
+ -- Full-text index
16
+ CREATE FULLTEXT INDEX idx_articles_content ON articles(title, content);
17
+
18
+ -- Check index usage
19
+ EXPLAIN ANALYZE
20
+ SELECT * FROM users WHERE email = 'user@example.com';
21
+ ```
22
+
23
+ ## Query Analysis
24
+
25
+ ```typescript
26
+ // Analyze slow queries
27
+ import { db } from './db';
28
+
29
+ // Enable query logging
30
+ db.logger.setLogLevel('query');
31
+
32
+ // Use explain to see execution plan
33
+ const plan = await db.connection.explain(`
34
+ SELECT u.*, COUNT(p.id) as post_count
35
+ FROM users u
36
+ LEFT JOIN posts p ON u.id = p.user_id
37
+ WHERE u.status = 'active'
38
+ GROUP BY u.id
39
+ `);
40
+
41
+ console.log('Query plan:', plan);
42
+ ```
43
+
44
+ ## N+1 Problem
45
+
46
+ ```typescript
47
+ // Bad: N+1 queries
48
+ const users = await db.users.find(); // 1 query
49
+ for (const user of users) {
50
+ user.posts = await db.posts.find({ userId: user.id }); // N queries
51
+ }
52
+
53
+ // Good: Single query with join
54
+ const users = await db.users.find({
55
+ include: { posts: true }
56
+ });
57
+
58
+ // Good: Use pagination
59
+ const users = await db.users.find({
60
+ include: {
61
+ posts: {
62
+ select: { id: true, title: true }, // Only needed fields
63
+ take: 5 // Limit related records
64
+ }
65
+ }
66
+ });
67
+ ```
68
+
69
+ ## Connection Pooling
70
+
71
+ ```typescript
72
+ import { Pool } from 'pg';
73
+
74
+ const pool = new Pool({
75
+ max: 20, // Maximum connections
76
+ min: 5, // Minimum connections
77
+ idleTimeoutMillis: 30000,
78
+ connectionTimeoutMillis: 2000
79
+ });
80
+
81
+ // Use pool for queries
82
+ const result = await pool.query('SELECT * FROM users WHERE id = $1', [userId]);
83
+ ```
84
+
85
+ ## Denormalization
86
+
87
+ ```typescript
88
+ // Normalized schema (slow queries)
89
+ users (id, email, name)
90
+ posts (id, user_id, content)
91
+ comments (id, post_id, user_id, text)
92
+
93
+ // Query requires 3 joins
94
+ SELECT u.name, COUNT(c.id) as comment_count
95
+ FROM users u
96
+ JOIN posts p ON u.id = p.user_id
97
+ LEFT JOIN comments c ON p.id = c.post_id
98
+ GROUP BY u.id
99
+
100
+ // Denormalized schema (faster queries)
101
+ posts (id, user_id, user_name, comment_count)
102
+
103
+ // Query is direct
104
+ SELECT user_name, comment_count FROM posts
105
+ ```
106
+
107
+ ## Query Caching
108
+
109
+ ```typescript
110
+ import { redis } from './redis';
111
+
112
+ async function getUserWithCache(userId: string) {
113
+ const cacheKey = `user:${userId}`;
114
+
115
+ // Check cache
116
+ let user = await redis.get(cacheKey);
117
+ if (user) return JSON.parse(user);
118
+
119
+ // Query database
120
+ user = await db.users.findById(userId);
121
+
122
+ // Store in cache (1 hour TTL)
123
+ await redis.setex(cacheKey, 3600, JSON.stringify(user));
124
+
125
+ return user;
126
+ }
127
+
128
+ // Invalidate on update
129
+ async function updateUser(userId: string, data: any) {
130
+ const user = await db.users.update(userId, data);
131
+
132
+ // Clear cache
133
+ await redis.del(`user:${userId}`);
134
+
135
+ return user;
136
+ }
137
+ ```
138
+
139
+ ## Batch Operations
140
+
141
+ ```typescript
142
+ // Bad: Individual inserts
143
+ for (const item of items) {
144
+ await db.items.create(item); // N queries
145
+ }
146
+
147
+ // Good: Batch insert
148
+ await db.items.createMany(items); // 1 query
149
+
150
+ // Good: Batch update
151
+ await db.items.updateMany(
152
+ { status: 'pending' },
153
+ { status: 'active' }
154
+ );
155
+
156
+ // Good: Upsert
157
+ await db.items.upsertMany(
158
+ items,
159
+ { upsertFields: ['externalId'] }
160
+ );
161
+ ```
162
+
163
+ ## Partitioning & Sharding
164
+
165
+ ```sql
166
+ -- Partition by date (time-series data)
167
+ CREATE TABLE logs (
168
+ id INT,
169
+ timestamp TIMESTAMP,
170
+ message TEXT
171
+ ) PARTITION BY RANGE (YEAR(timestamp)) (
172
+ PARTITION p2023 VALUES LESS THAN (2024),
173
+ PARTITION p2024 VALUES LESS THAN (2025),
174
+ PARTITION p_future VALUES LESS THAN MAXVALUE
175
+ );
176
+
177
+ -- Shard by user_id (horizontal scaling)
178
+ -- Each shard holds data for subset of users
179
+ -- Shard 1: users 1-1M
180
+ -- Shard 2: users 1M-2M
181
+ -- etc.
182
+ ```
183
+
184
+ ## Best Practices
185
+
186
+ ✅ **Index strategically** - Only on frequently queried columns
187
+ ✅ **Avoid N+1** - Eager load related data
188
+ ✅ **Monitor slow queries** - Log and analyze slow operations
189
+ ✅ **Use pagination** - Don't fetch all rows
190
+ ✅ **Denormalize carefully** - Trade consistency for performance
191
+
192
+ ## Resources
193
+
194
+ - [PostgreSQL Query Performance](https://www.postgresql.org/docs/current/performance.html)
195
+ - [MySQL Optimization](https://dev.mysql.com/doc/refman/8.0/en/optimization.html)
196
+ - [Database Design for Performance](https://www.sqlshack.com/query-optimization-performance-tuning/)
@@ -0,0 +1,68 @@
1
+ # Database Transactions
2
+
3
+ ## Overview
4
+ Transactions ensure ACID guarantees — multiple operations succeed together or roll back entirely.
5
+
6
+ ## Prisma Transactions
7
+
8
+ ```typescript
9
+ // Sequential transaction (use result of one in the next)
10
+ async function transferFunds(fromId: string, toId: string, amount: number) {
11
+ return prisma.$transaction(async (tx) => {
12
+ const from = await tx.account.findUniqueOrThrow({ where: { id: fromId } });
13
+ if (from.balance < amount) throw new Error('Insufficient funds');
14
+
15
+ await tx.account.update({ where: { id: fromId }, data: { balance: { decrement: amount } } });
16
+ await tx.account.update({ where: { id: toId }, data: { balance: { increment: amount } } });
17
+ await tx.transaction.create({ data: { fromId, toId, amount } });
18
+ });
19
+ }
20
+
21
+ // Batch transaction
22
+ const [user, profile] = await prisma.$transaction([
23
+ prisma.user.create({ data: { email, name } }),
24
+ prisma.profile.create({ data: { bio, userId: id } }),
25
+ ]);
26
+ ```
27
+
28
+ ## Raw SQL Transactions
29
+
30
+ ```typescript
31
+ import { Pool } from 'pg';
32
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
33
+
34
+ async function atomicOperation() {
35
+ const client = await pool.connect();
36
+ try {
37
+ await client.query('BEGIN');
38
+ await client.query('INSERT INTO orders (user_id, total) VALUES ($1, $2)', [userId, total]);
39
+ await client.query('UPDATE inventory SET qty = qty - $1 WHERE id = $2', [qty, productId]);
40
+ await client.query('COMMIT');
41
+ } catch (err) {
42
+ await client.query('ROLLBACK');
43
+ throw err;
44
+ } finally {
45
+ client.release();
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Optimistic Locking
51
+
52
+ ```typescript
53
+ // Use version field to detect concurrent updates
54
+ const updated = await prisma.post.updateMany({
55
+ where: { id: post.id, version: post.version },
56
+ data: { title: newTitle, version: { increment: 1 } }
57
+ });
58
+ if (updated.count === 0) throw new Error('Concurrent update — please retry');
59
+ ```
60
+
61
+ ## Best Practices
62
+ - Keep transactions short — long ones hold locks and block others
63
+ - Never do HTTP calls inside a transaction
64
+ - Use optimistic locking for high-contention data
65
+ - Set transaction timeout: `SET statement_timeout = '5s'`
66
+
67
+ ## Resources
68
+ - [Prisma transactions](https://www.prisma.io/docs/concepts/components/prisma-client/transactions)