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,205 @@
1
+ # Go
2
+
3
+ Statically-typed, compiled language for building fast, concurrent backend services.
4
+
5
+ ## Hello World
6
+
7
+ ```go
8
+ package main
9
+
10
+ import (
11
+ "fmt"
12
+ "net/http"
13
+ "log"
14
+ )
15
+
16
+ func main() {
17
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
18
+ fmt.Fprintf(w, "Hello, World!")
19
+ })
20
+
21
+ log.Println("Server listening on :8080")
22
+ log.Fatal(http.ListenAndServe(":8080", nil))
23
+ }
24
+ ```
25
+
26
+ ## HTTP Server with Chi Router
27
+
28
+ ```go
29
+ package main
30
+
31
+ import (
32
+ "github.com/go-chi/chi/v5"
33
+ "encoding/json"
34
+ "net/http"
35
+ )
36
+
37
+ type User struct {
38
+ ID int `json:"id"`
39
+ Name string `json:"name"`
40
+ Email string `json:"email"`
41
+ }
42
+
43
+ func main() {
44
+ r := chi.NewRouter()
45
+
46
+ r.Get("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
47
+ id := chi.URLParam(r, "id")
48
+ user := User{ID: 1, Name: "John", Email: "john@example.com"}
49
+ w.Header().Set("Content-Type", "application/json")
50
+ json.NewEncoder(w).Encode(user)
51
+ })
52
+
53
+ r.Post("/users", func(w http.ResponseWriter, r *http.Request) {
54
+ var user User
55
+ json.NewDecoder(r.Body).Decode(&user)
56
+ w.WriteHeader(http.StatusCreated)
57
+ json.NewEncoder(w).Encode(user)
58
+ })
59
+
60
+ http.ListenAndServe(":8080", r)
61
+ }
62
+ ```
63
+
64
+ ## Goroutines & Concurrency
65
+
66
+ ```go
67
+ package main
68
+
69
+ import (
70
+ "fmt"
71
+ "time"
72
+ "sync"
73
+ )
74
+
75
+ func worker(id int, jobs <-chan int, results chan<- int) {
76
+ for j := range jobs {
77
+ fmt.Println("Worker", id, "processing job", j)
78
+ results <- j * 2
79
+ }
80
+ }
81
+
82
+ func main() {
83
+ jobs := make(chan int, 100)
84
+ results := make(chan int, 100)
85
+
86
+ // Start workers
87
+ for w := 1; w <= 3; w++ {
88
+ go worker(w, jobs, results)
89
+ }
90
+
91
+ // Send jobs
92
+ for j := 1; j <= 9; j++ {
93
+ jobs <- j
94
+ }
95
+ close(jobs)
96
+
97
+ // Collect results
98
+ for a := 1; a <= 9; a++ {
99
+ <-results
100
+ }
101
+ }
102
+
103
+ // WaitGroup for synchronization
104
+ var wg sync.WaitGroup
105
+ wg.Add(1)
106
+ go func() {
107
+ defer wg.Done()
108
+ // work
109
+ }()
110
+ wg.Wait()
111
+ ```
112
+
113
+ ## Error Handling
114
+
115
+ ```go
116
+ package main
117
+
118
+ import (
119
+ "errors"
120
+ "fmt"
121
+ )
122
+
123
+ func divide(a, b float64) (float64, error) {
124
+ if b == 0 {
125
+ return 0, errors.New("division by zero")
126
+ }
127
+ return a / b, nil
128
+ }
129
+
130
+ func main() {
131
+ result, err := divide(10, 0)
132
+ if err != nil {
133
+ fmt.Println("Error:", err)
134
+ return
135
+ }
136
+ fmt.Println("Result:", result)
137
+ }
138
+ ```
139
+
140
+ ## Database with GORM
141
+
142
+ ```go
143
+ import "gorm.io/gorm"
144
+
145
+ type User struct {
146
+ ID uint
147
+ Name string
148
+ Email string
149
+ }
150
+
151
+ func main() {
152
+ db, _ := gorm.Open(postgres.Open("dsn"), &gorm.Config{})
153
+
154
+ // Create
155
+ db.Create(&User{Name: "John", Email: "john@example.com"})
156
+
157
+ // Read
158
+ var user User
159
+ db.First(&user, 1)
160
+
161
+ // Update
162
+ db.Model(&user).Update("Name", "Jane")
163
+
164
+ // Delete
165
+ db.Delete(&user)
166
+
167
+ // Query
168
+ var users []User
169
+ db.Where("email LIKE ?", "%example.com").Find(&users)
170
+ }
171
+ ```
172
+
173
+ ## Testing
174
+
175
+ ```go
176
+ package main
177
+
178
+ import "testing"
179
+
180
+ func TestDivide(t *testing.T) {
181
+ result, err := divide(10, 2)
182
+ if err != nil {
183
+ t.Fatalf("Expected no error, got %v", err)
184
+ }
185
+ if result != 5 {
186
+ t.Errorf("Expected 5, got %v", result)
187
+ }
188
+ }
189
+ ```
190
+
191
+ ## Best Practices
192
+
193
+ 1. **Handle errors explicitly**
194
+ 2. **Use goroutines for concurrency**
195
+ 3. **Leverage strong typing**
196
+ 4. **Use interfaces for flexibility**
197
+ 5. **Write idiomatic Go code**
198
+ 6. **Use context for cancellation**
199
+ 7. **Implement proper logging**
200
+
201
+ ## Resources
202
+
203
+ - [Go Official Docs](https://golang.org/doc/)
204
+ - [Effective Go](https://golang.org/doc/effective_go)
205
+ - [Go by Example](https://gobyexample.com/)
@@ -0,0 +1,149 @@
1
+ # GraphQL
2
+
3
+ Query language for APIs with strongly-typed schema and efficient data fetching.
4
+
5
+ ## Schema Definition
6
+
7
+ ```graphql
8
+ type User {
9
+ id: ID!
10
+ name: String!
11
+ email: String!
12
+ posts: [Post!]!
13
+ createdAt: DateTime!
14
+ }
15
+
16
+ type Post {
17
+ id: ID!
18
+ title: String!
19
+ content: String!
20
+ author: User!
21
+ createdAt: DateTime!
22
+ }
23
+
24
+ type Query {
25
+ user(id: ID!): User
26
+ users(limit: Int = 10): [User!]!
27
+ post(id: ID!): Post
28
+ }
29
+
30
+ type Mutation {
31
+ createUser(name: String!, email: String!): User!
32
+ createPost(title: String!, content: String!): Post!
33
+ }
34
+ ```
35
+
36
+ ## Resolvers (Node.js/Apollo)
37
+
38
+ ```javascript
39
+ const resolvers = {
40
+ Query: {
41
+ user(parent, args) {
42
+ return db.users.findById(args.id);
43
+ },
44
+ users(parent, args) {
45
+ return db.users.find().limit(args.limit);
46
+ },
47
+ },
48
+ User: {
49
+ posts(user) {
50
+ return db.posts.find({ authorId: user.id });
51
+ },
52
+ },
53
+ Mutation: {
54
+ createUser(parent, args) {
55
+ const user = { ...args, id: generateId() };
56
+ db.users.insert(user);
57
+ return user;
58
+ },
59
+ },
60
+ };
61
+
62
+ const server = new ApolloServer({ typeDefs, resolvers });
63
+ ```
64
+
65
+ ## Queries
66
+
67
+ ```graphql
68
+ # Simple query
69
+ query {
70
+ user(id: "1") {
71
+ name
72
+ email
73
+ }
74
+ }
75
+
76
+ # With nested data
77
+ query {
78
+ user(id: "1") {
79
+ name
80
+ posts {
81
+ title
82
+ content
83
+ }
84
+ }
85
+ }
86
+
87
+ # With variables
88
+ query GetUser($id: ID!) {
89
+ user(id: $id) {
90
+ name
91
+ email
92
+ }
93
+ }
94
+ ```
95
+
96
+ ## Mutations
97
+
98
+ ```graphql
99
+ mutation {
100
+ createUser(name: "John", email: "john@example.com") {
101
+ id
102
+ name
103
+ email
104
+ }
105
+ }
106
+
107
+ mutation CreatePost($title: String!, $content: String!) {
108
+ createPost(title: $title, content: $content) {
109
+ id
110
+ title
111
+ }
112
+ }
113
+ ```
114
+
115
+ ## Subscriptions (Real-time)
116
+
117
+ ```graphql
118
+ subscription {
119
+ userCreated {
120
+ id
121
+ name
122
+ email
123
+ }
124
+ }
125
+ ```
126
+
127
+ ## Best Practices
128
+
129
+ 1. **Design efficient schema**
130
+ 2. **Implement proper error handling**
131
+ 3. **Use DataLoader to prevent N+1 queries**
132
+ 4. **Implement authentication/authorization**
133
+ 5. **Cache resolved data**
134
+ 6. **Write tests for resolvers**
135
+ 7. **Version API thoughtfully**
136
+
137
+ ## Advantages
138
+
139
+ - Strongly typed schema
140
+ - Request exactly what you need
141
+ - Single endpoint
142
+ - Efficient data fetching
143
+ - Self-documenting via introspection
144
+
145
+ ## Resources
146
+
147
+ - [GraphQL Official](https://graphql.org/)
148
+ - [Apollo Documentation](https://www.apollographql.com/docs/)
149
+ - [GraphQL Best Practices](https://graphql.org/learn/best-practices/)
@@ -0,0 +1,382 @@
1
+ # gRPC
2
+
3
+ High-performance RPC framework using Protocol Buffers for efficient binary serialization.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ npm install @grpc/grpc-js @grpc/proto-loader
9
+
10
+ # Or with TypeScript
11
+ npm install -D typescript ts-node
12
+ npm install @grpc/grpc-js @grpc/proto-loader
13
+ ```
14
+
15
+ ## Protocol Buffer Definition (.proto)
16
+
17
+ ```protobuf
18
+ syntax = "proto3";
19
+
20
+ package user;
21
+
22
+ message User {
23
+ int32 id = 1;
24
+ string email = 2;
25
+ string name = 3;
26
+ int64 created_at = 4;
27
+ }
28
+
29
+ message GetUserRequest {
30
+ int32 id = 1;
31
+ }
32
+
33
+ message CreateUserRequest {
34
+ string email = 1;
35
+ string name = 2;
36
+ }
37
+
38
+ message Empty {}
39
+
40
+ service UserService {
41
+ rpc GetUser(GetUserRequest) returns (User);
42
+ rpc CreateUser(CreateUserRequest) returns (User);
43
+ rpc ListUsers(Empty) returns (stream User);
44
+ rpc DeleteUser(GetUserRequest) returns (Empty);
45
+ }
46
+ ```
47
+
48
+ ## Server Implementation
49
+
50
+ ```javascript
51
+ const grpc = require('@grpc/grpc-js');
52
+ const protoLoader = require('@grpc/proto-loader');
53
+ const path = require('path');
54
+
55
+ // Load .proto file
56
+ const packageDef = protoLoader.loadSync(path.join(__dirname, 'user.proto'), {
57
+ keepCase: true,
58
+ longs: String,
59
+ enums: String,
60
+ defaults: true,
61
+ oneofs: true
62
+ });
63
+
64
+ const userProto = grpc.loadPackageDefinition(packageDef);
65
+ const userService = userProto.user.UserService;
66
+
67
+ // In-memory user database (use real DB in production)
68
+ const users = new Map();
69
+ let userIdCounter = 1;
70
+
71
+ // Service implementation
72
+ const userServiceImpl = {
73
+ getUser: (call, callback) => {
74
+ const user = users.get(call.request.id);
75
+ if (!user) {
76
+ return callback({
77
+ code: grpc.status.NOT_FOUND,
78
+ message: 'User not found'
79
+ });
80
+ }
81
+ callback(null, user);
82
+ },
83
+
84
+ createUser: (call, callback) => {
85
+ const user = {
86
+ id: userIdCounter++,
87
+ email: call.request.email,
88
+ name: call.request.name,
89
+ created_at: Date.now()
90
+ };
91
+ users.set(user.id, user);
92
+ callback(null, user);
93
+ },
94
+
95
+ listUsers: (call) => {
96
+ // Stream all users
97
+ for (const user of users.values()) {
98
+ call.write(user);
99
+ }
100
+ call.end();
101
+ },
102
+
103
+ deleteUser: (call, callback) => {
104
+ const deleted = users.delete(call.request.id);
105
+ if (!deleted) {
106
+ return callback({
107
+ code: grpc.status.NOT_FOUND,
108
+ message: 'User not found'
109
+ });
110
+ }
111
+ callback(null, {});
112
+ }
113
+ };
114
+
115
+ // Create and start server
116
+ const server = new grpc.Server();
117
+ server.addService(userService.service, userServiceImpl);
118
+
119
+ const PORT = 50051;
120
+ server.bindAsync(`0.0.0.0:${PORT}`, grpc.ServerCredentials.createInsecure(), (err) => {
121
+ if (err) {
122
+ console.error(err);
123
+ process.exit(1);
124
+ }
125
+ console.log(`gRPC server listening on port ${PORT}`);
126
+ server.start();
127
+ });
128
+ ```
129
+
130
+ ## Client Implementation
131
+
132
+ ```javascript
133
+ const grpc = require('@grpc/grpc-js');
134
+ const protoLoader = require('@grpc/proto-loader');
135
+ const path = require('path');
136
+
137
+ // Load proto
138
+ const packageDef = protoLoader.loadSync(path.join(__dirname, 'user.proto'), {
139
+ keepCase: true,
140
+ longs: String,
141
+ enums: String,
142
+ defaults: true
143
+ });
144
+
145
+ const userProto = grpc.loadPackageDefinition(packageDef);
146
+ const UserService = userProto.user.UserService;
147
+
148
+ // Create client
149
+ const client = new UserService('localhost:50051', grpc.credentials.createInsecure());
150
+
151
+ // Get single user
152
+ client.getUser({ id: 1 }, (err, response) => {
153
+ if (err) {
154
+ console.error('Error:', err.message);
155
+ } else {
156
+ console.log('User:', response);
157
+ }
158
+ });
159
+
160
+ // Create user
161
+ client.createUser({ email: 'john@example.com', name: 'John' }, (err, response) => {
162
+ if (err) {
163
+ console.error('Error:', err.message);
164
+ } else {
165
+ console.log('Created:', response);
166
+ }
167
+ });
168
+
169
+ // Stream users
170
+ const stream = client.listUsers({});
171
+ stream.on('data', (user) => {
172
+ console.log('User:', user);
173
+ });
174
+ stream.on('error', (err) => {
175
+ console.error('Stream error:', err.message);
176
+ });
177
+ stream.on('end', () => {
178
+ console.log('Stream ended');
179
+ });
180
+
181
+ // Delete user
182
+ client.deleteUser({ id: 1 }, (err) => {
183
+ if (err) {
184
+ console.error('Error:', err.message);
185
+ } else {
186
+ console.log('Deleted');
187
+ }
188
+ });
189
+ ```
190
+
191
+ ## TypeScript Support
192
+
193
+ ```typescript
194
+ import * as grpc from '@grpc/grpc-js';
195
+ import * as protoLoader from '@grpc/proto-loader';
196
+
197
+ interface User {
198
+ id: number;
199
+ email: string;
200
+ name: string;
201
+ created_at: number;
202
+ }
203
+
204
+ interface GetUserRequest {
205
+ id: number;
206
+ }
207
+
208
+ // Type-safe service definition
209
+ const UserServiceDef: grpc.ServiceDefinition = {
210
+ getUser: {
211
+ path: '/user.UserService/GetUser',
212
+ requestStream: false,
213
+ responseStream: false,
214
+ requestSerialize: (obj: GetUserRequest) => Buffer.from(JSON.stringify(obj)),
215
+ requestDeserialize: (buf: Buffer) => JSON.parse(buf.toString()),
216
+ responseSerialize: (obj: User) => Buffer.from(JSON.stringify(obj)),
217
+ responseDeserialize: (buf: Buffer) => JSON.parse(buf.toString())
218
+ }
219
+ };
220
+
221
+ const server = new grpc.Server();
222
+ server.addService(UserServiceDef, {
223
+ getUser: (call: grpc.ServerUnaryCall<GetUserRequest, User>, callback: grpc.sendUnaryData<User>) => {
224
+ const user: User = {
225
+ id: call.request.id,
226
+ email: 'user@example.com',
227
+ name: 'John Doe',
228
+ created_at: Date.now()
229
+ };
230
+ callback(null, user);
231
+ }
232
+ });
233
+ ```
234
+
235
+ ## Error Handling
236
+
237
+ ```javascript
238
+ const handleError = (call, error) => {
239
+ call.emit('error', {
240
+ code: grpc.status.INTERNAL,
241
+ message: error.message
242
+ });
243
+ };
244
+
245
+ const userServiceImpl = {
246
+ getUser: (call, callback) => {
247
+ try {
248
+ const user = users.get(call.request.id);
249
+ if (!user) {
250
+ return callback({
251
+ code: grpc.status.NOT_FOUND,
252
+ message: 'User not found',
253
+ details: `No user with ID ${call.request.id}`
254
+ });
255
+ }
256
+ callback(null, user);
257
+ } catch (err) {
258
+ callback({
259
+ code: grpc.status.INTERNAL,
260
+ message: 'Internal server error'
261
+ });
262
+ }
263
+ }
264
+ };
265
+ ```
266
+
267
+ ## Bidirectional Streaming
268
+
269
+ ```protobuf
270
+ service ChatService {
271
+ rpc Chat(stream Message) returns (stream Message);
272
+ }
273
+
274
+ message Message {
275
+ string user = 1;
276
+ string text = 2;
277
+ int64 timestamp = 3;
278
+ }
279
+ ```
280
+
281
+ ```javascript
282
+ const chatServiceImpl = {
283
+ chat: (call) => {
284
+ call.on('data', (message) => {
285
+ console.log(`${message.user}: ${message.text}`);
286
+
287
+ // Echo back to client
288
+ call.write({
289
+ user: 'Server',
290
+ text: `Echo: ${message.text}`,
291
+ timestamp: Date.now()
292
+ });
293
+ });
294
+
295
+ call.on('end', () => {
296
+ call.end();
297
+ });
298
+
299
+ call.on('error', (err) => {
300
+ console.error('Stream error:', err);
301
+ });
302
+ }
303
+ };
304
+ ```
305
+
306
+ ## Metadata and Context
307
+
308
+ ```javascript
309
+ // Server: Access metadata
310
+ const userServiceImpl = {
311
+ getUser: (call, callback) => {
312
+ const metadata = call.metadata.getMap();
313
+ const authToken = metadata['authorization'];
314
+
315
+ if (!authToken) {
316
+ return callback({
317
+ code: grpc.status.UNAUTHENTICATED,
318
+ message: 'Missing authorization'
319
+ });
320
+ }
321
+
322
+ // Process request
323
+ callback(null, user);
324
+ }
325
+ };
326
+
327
+ // Client: Send metadata
328
+ const metadata = new grpc.Metadata();
329
+ metadata.add('authorization', 'Bearer token123');
330
+
331
+ client.getUser({ id: 1 }, metadata, (err, response) => {
332
+ console.log(response);
333
+ });
334
+ ```
335
+
336
+ ## Best Practices
337
+
338
+ ✅ **Use Protocol Buffers** - Efficient, versioning-friendly serialization
339
+ ✅ **Stream for large data** - Don't send huge responses in single RPC
340
+ ✅ **Implement deadlines** - Set timeout contexts for requests
341
+ ✅ **Use interceptors** - Logging, authentication, rate limiting
342
+ ✅ **Error codes** - Use appropriate gRPC error codes
343
+ ✅ **Connection pooling** - Reuse client connections
344
+ ✅ **Health checks** - Implement gRPC health checking protocol
345
+
346
+ ## Interceptors
347
+
348
+ ```javascript
349
+ const loggingInterceptor = (options, nextCall) => {
350
+ return new grpc.InterceptingCall(nextCall(options), {
351
+ start: (metadata, listener, next) => {
352
+ console.log(`RPC: ${options.method_definition.path}`);
353
+ next(metadata, listener);
354
+ }
355
+ });
356
+ };
357
+
358
+ const client = new UserService(
359
+ 'localhost:50051',
360
+ grpc.credentials.createInsecure(),
361
+ { interceptors: [loggingInterceptor] }
362
+ );
363
+ ```
364
+
365
+ ## When to Use gRPC
366
+
367
+ ✅ Microservices communication
368
+ ✅ Real-time bidirectional streaming
369
+ ✅ High-performance APIs
370
+ ✅ Mobile backends (reduced bandwidth)
371
+ ✅ Internal services (not public APIs)
372
+
373
+ ❌ Browser clients (use gRPC-Web)
374
+ ❌ Simple REST APIs
375
+ ❌ Legacy systems requiring HTTP/1.1
376
+
377
+ ## Resources
378
+
379
+ - [gRPC Documentation](https://grpc.io/docs/)
380
+ - [Protocol Buffers Guide](https://developers.google.com/protocol-buffers)
381
+ - [gRPC Node.js](https://grpc.io/docs/languages/node/)
382
+ - [gRPC Status Codes](https://grpc.io/docs/guides/status-codes/)