zilmate 1.7.8 → 1.8.1

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 (446) hide show
  1. package/.agents/skills/agent-browser/SKILL.md +55 -0
  2. package/.agents/skills/agentmail/SKILL.md +282 -0
  3. package/.agents/skills/agentmail/references/webhooks.md +220 -0
  4. package/.agents/skills/agentmail/references/websockets.md +263 -0
  5. package/.agents/skills/ai-elements/SKILL.md +160 -0
  6. package/.agents/skills/ai-elements/references/agent.md +134 -0
  7. package/.agents/skills/ai-elements/references/artifact.md +84 -0
  8. package/.agents/skills/ai-elements/references/attachments.md +190 -0
  9. package/.agents/skills/ai-elements/references/audio-player.md +134 -0
  10. package/.agents/skills/ai-elements/references/canvas.md +34 -0
  11. package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
  12. package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
  13. package/.agents/skills/ai-elements/references/code-block.md +170 -0
  14. package/.agents/skills/ai-elements/references/commit.md +177 -0
  15. package/.agents/skills/ai-elements/references/confirmation.md +262 -0
  16. package/.agents/skills/ai-elements/references/connection.md +34 -0
  17. package/.agents/skills/ai-elements/references/context.md +126 -0
  18. package/.agents/skills/ai-elements/references/controls.md +32 -0
  19. package/.agents/skills/ai-elements/references/conversation.md +224 -0
  20. package/.agents/skills/ai-elements/references/edge.md +52 -0
  21. package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
  22. package/.agents/skills/ai-elements/references/file-tree.md +72 -0
  23. package/.agents/skills/ai-elements/references/image.md +146 -0
  24. package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
  25. package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
  26. package/.agents/skills/ai-elements/references/message.md +237 -0
  27. package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
  28. package/.agents/skills/ai-elements/references/model-selector.md +112 -0
  29. package/.agents/skills/ai-elements/references/node.md +73 -0
  30. package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
  31. package/.agents/skills/ai-elements/references/package-info.md +95 -0
  32. package/.agents/skills/ai-elements/references/panel.md +33 -0
  33. package/.agents/skills/ai-elements/references/persona.md +166 -0
  34. package/.agents/skills/ai-elements/references/plan.md +79 -0
  35. package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
  36. package/.agents/skills/ai-elements/references/queue.md +172 -0
  37. package/.agents/skills/ai-elements/references/reasoning.md +238 -0
  38. package/.agents/skills/ai-elements/references/sandbox.md +129 -0
  39. package/.agents/skills/ai-elements/references/schema-display.md +102 -0
  40. package/.agents/skills/ai-elements/references/shimmer.md +48 -0
  41. package/.agents/skills/ai-elements/references/snippet.md +64 -0
  42. package/.agents/skills/ai-elements/references/sources.md +209 -0
  43. package/.agents/skills/ai-elements/references/speech-input.md +163 -0
  44. package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
  45. package/.agents/skills/ai-elements/references/suggestion.md +124 -0
  46. package/.agents/skills/ai-elements/references/task.md +222 -0
  47. package/.agents/skills/ai-elements/references/terminal.md +103 -0
  48. package/.agents/skills/ai-elements/references/test-results.md +157 -0
  49. package/.agents/skills/ai-elements/references/tool.md +285 -0
  50. package/.agents/skills/ai-elements/references/toolbar.md +32 -0
  51. package/.agents/skills/ai-elements/references/transcription.md +120 -0
  52. package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
  53. package/.agents/skills/ai-elements/references/web-preview.md +200 -0
  54. package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
  55. package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
  56. package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
  57. package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
  58. package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
  59. package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
  60. package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
  61. package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
  62. package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
  63. package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
  64. package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
  65. package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
  66. package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
  67. package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
  68. package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
  69. package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
  70. package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
  71. package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
  72. package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
  73. package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
  74. package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
  75. package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
  76. package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
  77. package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
  78. package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
  79. package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
  80. package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
  81. package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
  82. package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
  83. package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
  84. package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
  85. package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
  86. package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
  87. package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
  88. package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
  89. package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
  90. package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
  91. package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
  92. package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
  93. package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
  94. package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
  95. package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
  96. package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
  97. package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
  98. package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
  99. package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
  100. package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
  101. package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
  102. package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
  103. package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
  104. package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
  105. package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
  106. package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
  107. package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
  108. package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
  109. package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
  110. package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
  111. package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
  112. package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
  113. package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
  114. package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
  115. package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
  116. package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
  117. package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
  118. package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
  119. package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
  120. package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
  121. package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
  122. package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
  123. package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
  124. package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
  125. package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
  126. package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
  127. package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
  128. package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
  129. package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
  130. package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
  131. package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
  132. package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
  133. package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
  134. package/.agents/skills/ai-sdk/SKILL.md +78 -0
  135. package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
  136. package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
  137. package/.agents/skills/ai-sdk/references/devtools.md +52 -0
  138. package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
  139. package/.agents/skills/chat-sdk/SKILL.md +240 -0
  140. package/.agents/skills/composio/AGENTS.md +404 -0
  141. package/.agents/skills/composio/SKILL.md +55 -0
  142. package/.agents/skills/composio/rules/_template.md +38 -0
  143. package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
  144. package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
  145. package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
  146. package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
  147. package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
  148. package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
  149. package/.agents/skills/composio/rules/app-modifiers.md +148 -0
  150. package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
  151. package/.agents/skills/composio/rules/app-toolkits.md +184 -0
  152. package/.agents/skills/composio/rules/app-user-context.md +222 -0
  153. package/.agents/skills/composio/rules/building-with-composio.md +134 -0
  154. package/.agents/skills/composio/rules/composio-cli.md +223 -0
  155. package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
  156. package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
  157. package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
  158. package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
  159. package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
  160. package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
  161. package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
  162. package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
  163. package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
  164. package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
  165. package/.agents/skills/composio/rules/tr-session-config.md +172 -0
  166. package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
  167. package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
  168. package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
  169. package/.agents/skills/composio/rules/triggers-create.md +246 -0
  170. package/.agents/skills/composio/rules/triggers-manage.md +275 -0
  171. package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
  172. package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
  173. package/.agents/skills/create-auth-skill/SKILL.md +321 -0
  174. package/.agents/skills/design-md/README.md +34 -0
  175. package/.agents/skills/design-md/SKILL.md +172 -0
  176. package/.agents/skills/design-md/examples/DESIGN.md +154 -0
  177. package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
  178. package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
  179. package/.agents/skills/find-skills/SKILL.md +142 -0
  180. package/.agents/skills/firecrawl/SKILL.md +321 -0
  181. package/.agents/skills/firecrawl/rules/install.md +85 -0
  182. package/.agents/skills/firecrawl/rules/security.md +26 -0
  183. package/.agents/skills/frontend-design/LICENSE.txt +177 -0
  184. package/.agents/skills/frontend-design/SKILL.md +55 -0
  185. package/.agents/skills/linkup-search/SKILL.md +298 -0
  186. package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
  187. package/.agents/skills/mcp-builder/SKILL.md +236 -0
  188. package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
  189. package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  190. package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  191. package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  192. package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
  193. package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
  194. package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  195. package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
  196. package/.agents/skills/mobile-android-design/SKILL.md +101 -0
  197. package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
  198. package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
  199. package/.agents/skills/mobile-android-design/references/details.md +337 -0
  200. package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
  201. package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
  202. package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
  203. package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
  204. package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
  205. package/.agents/skills/neon-drizzle/SKILL.md +81 -0
  206. package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
  207. package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
  208. package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
  209. package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
  210. package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
  211. package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
  212. package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
  213. package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
  214. package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
  215. package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
  216. package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
  217. package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
  218. package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
  219. package/.agents/skills/neon-postgres/SKILL.md +376 -0
  220. package/.agents/skills/next-best-practices/SKILL.md +152 -0
  221. package/.agents/skills/next-best-practices/async-patterns.md +87 -0
  222. package/.agents/skills/next-best-practices/bundling.md +180 -0
  223. package/.agents/skills/next-best-practices/data-patterns.md +297 -0
  224. package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
  225. package/.agents/skills/next-best-practices/directives.md +73 -0
  226. package/.agents/skills/next-best-practices/error-handling.md +227 -0
  227. package/.agents/skills/next-best-practices/file-conventions.md +140 -0
  228. package/.agents/skills/next-best-practices/font.md +245 -0
  229. package/.agents/skills/next-best-practices/functions.md +108 -0
  230. package/.agents/skills/next-best-practices/hydration-error.md +91 -0
  231. package/.agents/skills/next-best-practices/image.md +173 -0
  232. package/.agents/skills/next-best-practices/metadata.md +301 -0
  233. package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
  234. package/.agents/skills/next-best-practices/route-handlers.md +146 -0
  235. package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
  236. package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
  237. package/.agents/skills/next-best-practices/scripts.md +141 -0
  238. package/.agents/skills/next-best-practices/self-hosting.md +371 -0
  239. package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
  240. package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
  241. package/.agents/skills/playwright-cli/SKILL.md +404 -0
  242. package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
  243. package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
  244. package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
  245. package/.agents/skills/playwright-cli/references/running-code.md +241 -0
  246. package/.agents/skills/playwright-cli/references/session-management.md +225 -0
  247. package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
  248. package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
  249. package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
  250. package/.agents/skills/playwright-cli/references/tracing.md +139 -0
  251. package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
  252. package/.agents/skills/prisma-client-api/SKILL.md +216 -0
  253. package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
  254. package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
  255. package/.agents/skills/prisma-client-api/references/filters.md +256 -0
  256. package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
  257. package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
  258. package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
  259. package/.agents/skills/prisma-client-api/references/relations.md +308 -0
  260. package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
  261. package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
  262. package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
  263. package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
  264. package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
  265. package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
  266. package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
  267. package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
  268. package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
  269. package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
  270. package/.agents/skills/prisma-postgres/SKILL.md +127 -0
  271. package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
  272. package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
  273. package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
  274. package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
  275. package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
  276. package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
  277. package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  278. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  279. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  280. package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  281. package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
  282. package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  283. package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
  284. package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
  285. package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
  286. package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  287. package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  288. package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  289. package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
  290. package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
  291. package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
  292. package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
  293. package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  294. package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  295. package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
  296. package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
  297. package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
  298. package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  299. package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  300. package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
  301. package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
  302. package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
  303. package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
  304. package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
  305. package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
  306. package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
  307. package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
  308. package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  309. package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
  310. package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  311. package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
  312. package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
  313. package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
  314. package/.agents/skills/remotion-render/SKILL.md +212 -0
  315. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  316. package/.agents/skills/skill-creator/SKILL.md +485 -0
  317. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  318. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  319. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  320. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  321. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  322. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  323. package/.agents/skills/skill-creator/references/schemas.md +430 -0
  324. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  325. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  326. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  327. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  328. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  329. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  330. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  331. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  332. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  333. package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
  334. package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
  335. package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
  336. package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
  337. package/.agents/skills/stripe-best-practices/references/security.md +109 -0
  338. package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
  339. package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
  340. package/.agents/skills/stripe-projects/SKILL.md +132 -0
  341. package/.agents/skills/supabase/CHANGELOG.md +35 -0
  342. package/.agents/skills/supabase/SKILL.md +135 -0
  343. package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
  344. package/.agents/skills/supabase/references/skill-feedback.md +17 -0
  345. package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
  346. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  347. package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  348. package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  349. package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
  350. package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  351. package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  352. package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  353. package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  354. package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  355. package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  356. package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  357. package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  358. package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  359. package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  360. package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  361. package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  362. package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  363. package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  364. package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  365. package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  366. package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  367. package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  368. package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  369. package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  370. package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  371. package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  372. package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  373. package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  374. package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  375. package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  376. package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  377. package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  378. package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  379. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  380. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
  381. package/.agents/skills/supermemory/LICENSE +201 -0
  382. package/.agents/skills/supermemory/README.md +221 -0
  383. package/.agents/skills/supermemory/SKILL.md +172 -0
  384. package/.agents/skills/supermemory/references/api-reference.md +591 -0
  385. package/.agents/skills/supermemory/references/architecture.md +557 -0
  386. package/.agents/skills/supermemory/references/quickstart.md +293 -0
  387. package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
  388. package/.agents/skills/supermemory/references/use-cases.md +1033 -0
  389. package/.agents/skills/supermemory-cli/SKILL.md +490 -0
  390. package/.agents/skills/tdd/SKILL.md +108 -0
  391. package/.agents/skills/tdd/mocking.md +59 -0
  392. package/.agents/skills/tdd/refactoring.md +10 -0
  393. package/.agents/skills/tdd/tests.md +61 -0
  394. package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
  395. package/.agents/skills/ui-ux-pro-max/data +1 -0
  396. package/.agents/skills/ui-ux-pro-max/scripts +1 -0
  397. package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
  398. package/.agents/skills/vercel-react-native-skills/README.md +165 -0
  399. package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
  400. package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
  401. package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
  402. package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
  403. package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
  404. package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  405. package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
  406. package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
  407. package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
  408. package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
  409. package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
  410. package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
  411. package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
  412. package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
  413. package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  414. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  415. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
  416. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
  417. package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
  418. package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  419. package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  420. package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
  421. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  422. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  423. package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
  424. package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
  425. package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
  426. package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  427. package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  428. package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
  429. package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
  430. package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
  431. package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
  432. package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
  433. package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
  434. package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
  435. package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
  436. package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  437. package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  438. package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
  439. package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  440. package/dist/cli/update.d.ts.map +1 -1
  441. package/dist/cli/update.js +19 -4
  442. package/dist/cli/update.js.map +1 -1
  443. package/dist/index.js +1 -1
  444. package/dist/tools/daytona-browser.tool.js +1 -1
  445. package/dist/tools/daytona-browser.tool.js.map +1 -1
  446. package/package.json +3 -2
@@ -0,0 +1,348 @@
1
+ ---
2
+ title: Building Chat UIs with Tool Router
3
+ impact: HIGH
4
+ description: Best practices for building chat applications with toolkit selection, connection management, and session handling
5
+ tags: [tool-router, chat-ui, vercel-ai-sdk, toolkit-selection, authentication, session]
6
+ ---
7
+
8
+ # Building Chat UIs with Tool Router
9
+
10
+ Build chat applications with Tool Router using **Vercel AI SDK**, create **sessions per message** with dynamic configuration, and provide **toolkit selection** and **connection management** UI.
11
+
12
+ > 📖 **Before you begin:** Make sure you have set up your API keys. See [Setting Up API Keys](./setup-api-keys.md) for instructions on configuring Composio and LLM provider API keys.
13
+
14
+ ## Recommended: Vercel AI SDK
15
+
16
+ - Native streaming support
17
+ - React hooks for chat interfaces
18
+ - Built-in UI components
19
+ - Excellent DX with Tool Router
20
+
21
+ ## ❌ Incorrect - Sharing Sessions Without Config
22
+
23
+ ```typescript
24
+ // DON'T: Reuse sessions without proper configuration
25
+ const globalSession = await composio.create('default', {
26
+ toolkits: ['gmail'] // Hard-coded toolkits
27
+ });
28
+
29
+ app.post('/api/chat', async (req, res) => {
30
+ // ❌ No user isolation
31
+ // ❌ No per-message configuration
32
+ // ❌ Can't change toolkits dynamically
33
+ const tools = await globalSession.tools();
34
+ });
35
+ ```
36
+
37
+ ## ✅ Correct - Session Per Message
38
+
39
+ ```typescript
40
+ // DO: Create sessions per message with proper config
41
+ import { Composio } from '@composio/core';
42
+ import { VercelProvider } from '@composio/vercel';
43
+ import { streamText } from 'ai';
44
+ import { openai } from '@ai-sdk/openai';
45
+
46
+ const composio = new Composio({ provider: new VercelProvider() });
47
+
48
+ app.post('/api/chat', async (req, res) => {
49
+ const { userId, message, selectedToolkits } = req.body;
50
+
51
+ // Create new session for this message
52
+ const session = await composio.create(userId, {
53
+ toolkits: selectedToolkits, // User-selected toolkits
54
+ manageConnections: true
55
+ });
56
+
57
+ const tools = await session.tools();
58
+
59
+ const stream = await streamText({
60
+ model: openai('gpt-5.2'),
61
+ messages: [{ role: 'user', content: message }],
62
+ tools,
63
+ maxSteps: 10
64
+ });
65
+
66
+ return stream.toDataStreamResponse();
67
+ });
68
+ ```
69
+
70
+ ## Toolkit Selection UI
71
+
72
+ ### List All Available Toolkits
73
+
74
+ Create a session **without toolkit filters** to show all available toolkits:
75
+
76
+ ```typescript
77
+ // API endpoint to list all toolkits
78
+ app.post('/api/toolkits', async (req, res) => {
79
+ const { userId } = req.body;
80
+
81
+ // No toolkits parameter = all toolkits available
82
+ const session = await composio.create(userId);
83
+ const toolkits = await session.toolkits();
84
+
85
+ res.json(toolkits.items.map(tk => ({
86
+ slug: tk.slug,
87
+ name: tk.name,
88
+ description: tk.description,
89
+ logo: tk.logo,
90
+ isConnected: tk.connectedAccounts.length > 0
91
+ })));
92
+ });
93
+ ```
94
+
95
+ ### React Component
96
+
97
+ ```typescript
98
+ export function ToolkitSelector({ userId, onSelect }: Props) {
99
+ const [toolkits, setToolkits] = useState<Toolkit[]>([]);
100
+ const [selected, setSelected] = useState<string[]>([]);
101
+
102
+ useEffect(() => {
103
+ fetch('/api/toolkits', {
104
+ method: 'POST',
105
+ body: JSON.stringify({ userId })
106
+ }).then(res => res.json()).then(setToolkits);
107
+ }, [userId]);
108
+
109
+ return (
110
+ <div className="toolkit-grid">
111
+ {toolkits.items.map(tk => (
112
+ <div
113
+ key={tk.slug}
114
+ className={selected.includes(tk.slug) ? 'selected' : ''}
115
+ onClick={() => setSelected(prev =>
116
+ prev.includes(tk.slug) ? prev.filter(s => s !== tk.slug) : [...prev, tk.slug]
117
+ )}
118
+ >
119
+ <img src={tk.logo} alt={tk.name} />
120
+ <h3>{tk.name}</h3>
121
+ {tk.isConnected && <span>✓ Connected</span>}
122
+ </div>
123
+ ))}
124
+ <button onClick={() => onSelect(selected)}>Use Selected</button>
125
+ </div>
126
+ );
127
+ }
128
+ ```
129
+
130
+ ## Connection Management UI
131
+
132
+ ### Authorize Toolkits
133
+
134
+ ```typescript
135
+ // API endpoint to start connection flow
136
+ app.post('/api/connect', async (req, res) => {
137
+ const { userId, toolkitSlug } = req.body;
138
+
139
+ const session = await composio.create(userId, {
140
+ toolkits: [toolkitSlug]
141
+ });
142
+
143
+ const auth = await session.authorize(toolkitSlug, {
144
+ callbackUrl: `${process.env.APP_URL}/auth/callback`
145
+ });
146
+
147
+ res.json({ redirectUrl: auth.redirectUrl });
148
+ });
149
+ ```
150
+
151
+ ### React Component
152
+
153
+ ```typescript
154
+ export function ConnectedAccounts({ userId }: Props) {
155
+ const [toolkits, setToolkits] = useState<Toolkit[]>([]);
156
+
157
+ const handleConnect = async (slug: string) => {
158
+ const res = await fetch('/api/connect', {
159
+ method: 'POST',
160
+ body: JSON.stringify({ userId, toolkitSlug: slug })
161
+ });
162
+ const { redirectUrl } = await res.json();
163
+ window.location.href = redirectUrl;
164
+ };
165
+
166
+ return (
167
+ <div>
168
+ {toolkits.items.map(tk => (
169
+ <div key={tk.slug}>
170
+ <h3>{tk.name}</h3>
171
+ {tk.isConnected ? (
172
+ <button onClick={() => handleDisconnect(tk.slug)}>Disconnect</button>
173
+ ) : (
174
+ <button onClick={() => handleConnect(tk.slug)}>Connect</button>
175
+ )}
176
+ </div>
177
+ ))}
178
+ </div>
179
+ );
180
+ }
181
+ ```
182
+
183
+ ## Connected Account Sharing
184
+
185
+ **Connected accounts are shared between sessions** (tied to user ID and auth configs, not individual sessions).
186
+
187
+ ```typescript
188
+ // Both sessions use the same Gmail connected account
189
+ const session1 = await composio.create('user_123', { toolkits: ['gmail'] });
190
+ const session2 = await composio.create('user_123', { toolkits: ['gmail', 'slack'] });
191
+
192
+ // ✅ Connected accounts shared across sessions
193
+ // ✅ No need to reconnect for each session
194
+ ```
195
+
196
+ ### Override Connected Accounts
197
+
198
+ ```typescript
199
+ // Override which connected account to use
200
+ const session = await composio.create('user_123', {
201
+ toolkits: ['gmail'],
202
+ connectedAccounts: {
203
+ gmail: 'conn_specific_account_id' // Use specific account
204
+ }
205
+ });
206
+ ```
207
+
208
+ ### Override Auth Config
209
+
210
+ ```typescript
211
+ // Override which auth config to use
212
+ const session = await composio.create('user_123', {
213
+ toolkits: ['gmail'],
214
+ authConfig: {
215
+ gmail: 'auth_config_custom_id' // Use custom auth config
216
+ }
217
+ });
218
+ ```
219
+
220
+ ## Complete Chat Application
221
+
222
+ ```typescript
223
+ // app/api/chat/route.ts
224
+ import { Composio } from '@composio/core';
225
+ import { VercelProvider } from '@composio/vercel';
226
+ import { streamText } from 'ai';
227
+ import { openai } from '@ai-sdk/openai';
228
+
229
+ const composio = new Composio({ provider: new VercelProvider() });
230
+
231
+ export async function POST(req: Request) {
232
+ const { userId, messages, selectedToolkits } = await req.json();
233
+
234
+ const session = await composio.create(userId, {
235
+ toolkits: selectedToolkits,
236
+ manageConnections: true
237
+ });
238
+
239
+ const tools = await session.tools();
240
+
241
+ const result = await streamText({
242
+ model: openai('gpt-5.2'),
243
+ messages,
244
+ tools,
245
+ maxSteps: 10
246
+ });
247
+
248
+ return result.toDataStreamResponse();
249
+ }
250
+ ```
251
+
252
+ ```typescript
253
+ // app/page.tsx - Chat UI
254
+ 'use client';
255
+ import { useChat } from 'ai/react';
256
+ import { useState } from 'react';
257
+
258
+ export default function ChatPage() {
259
+ const [selectedToolkits, setSelectedToolkits] = useState(['gmail']);
260
+
261
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
262
+ api: '/api/chat',
263
+ body: { userId: 'user_123', selectedToolkits }
264
+ });
265
+
266
+ return (
267
+ <div>
268
+ <ToolkitSelector
269
+ userId="user_123"
270
+ selected={selectedToolkits}
271
+ onSelect={setSelectedToolkits}
272
+ />
273
+ <div className="messages">
274
+ {messages.map(m => (
275
+ <div key={m.id} className={m.role}>{m.content}</div>
276
+ ))}
277
+ </div>
278
+ <form onSubmit={handleSubmit}>
279
+ <input value={input} onChange={handleInputChange} />
280
+ <button type="submit">Send</button>
281
+ </form>
282
+ </div>
283
+ );
284
+ }
285
+ ```
286
+
287
+ ## Manual Tool Operations (Advanced)
288
+
289
+ For custom workflows, you can manually fetch and execute tools instead of using sessions.
290
+
291
+ ### Manual Tool Fetching
292
+
293
+ ```typescript
294
+ // Fetch raw tool metadata
295
+ const tools = await composio.tools.getRawComposioTools({
296
+ toolkits: ['gmail', 'slack'],
297
+ important: true
298
+ });
299
+ ```
300
+
301
+ ### Manual Tool Execution
302
+
303
+ ```typescript
304
+ // Execute tools directly
305
+ const result = await composio.tools.execute('GMAIL_SEND_EMAIL', {
306
+ userId: 'user_123',
307
+ arguments: { to: 'test@example.com', subject: 'Hello' },
308
+ version: '15082025_00' // Version REQUIRED for manual execution
309
+ });
310
+
311
+ if (!result.successful) {
312
+ console.error('Failed:', result.error);
313
+ }
314
+ ```
315
+
316
+ ### When to Use Manual Approach
317
+
318
+ | Use Case | Recommended Approach |
319
+ |----------|---------------------|
320
+ | Chat UIs, agents, streaming | ✅ `session.tools()` |
321
+ | Custom workflows, catalogs | ✅ Manual fetch/execute |
322
+
323
+ **Reference:** See [Fetching Tools](./app-fetch-tools.md) and [Tool Execution](./app-execute-tools.md) for detailed manual operation guides.
324
+
325
+ ## Best Practices
326
+
327
+ 1. **Create Sessions Per Message** - Fresh session with config for each interaction
328
+ 2. **Let Users Select Toolkits** - Dynamic toolkit configuration via UI
329
+ 3. **Show Connection Status** - Display which toolkits are connected
330
+ 4. **Handle Authorization** - Use `session.authorize()` for auth flows
331
+ 5. **Enable Connection Management** - Set `manageConnections: true`
332
+
333
+ ## Key Principles
334
+
335
+ 1. **Vercel AI SDK** - Best framework for chat UIs
336
+ 2. **Session per message** - Fresh sessions with config
337
+ 3. **No toolkit filter** - List all by creating session without toolkits
338
+ 4. **Shared connections** - Connected accounts shared across sessions
339
+ 5. **Override when needed** - Use `connectedAccounts` or `authConfig` for special cases
340
+
341
+ ## Reference
342
+
343
+ - [Vercel AI SDK](https://sdk.vercel.ai)
344
+ - [Tool Router Sessions](https://docs.composio.dev/sdk/typescript/api/tool-router#creating-sessions)
345
+ - [Session Authorization](https://docs.composio.dev/sdk/typescript/api/tool-router#authorization)
346
+ - [Fetching Tools](./app-fetch-tools.md)
347
+ - [Tool Execution](./app-execute-tools.md)
348
+ - [Tool Versions](./app-tool-versions.md)
@@ -0,0 +1,240 @@
1
+ ---
2
+ title: Using Composio with Vercel AI SDK
3
+ impact: HIGH
4
+ description: Use Tool Router for native tool integration and MCP for protocol-compliant scenarios with Vercel AI SDK
5
+ tags: [tool-router, ai-sdk, vercel, framework, native-tools, mcp, integration]
6
+ ---
7
+
8
+ # Using Composio with Vercel AI SDK
9
+
10
+ Composio integrates with Vercel AI SDK using **Tool Router sessions**. Use **native tools** (recommended) via `session.tools()` with `VercelProvider`, or **MCP tools** when MCP protocol compliance is required.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ npm install @composio/core @composio/vercel ai @ai-sdk/openai
16
+
17
+ # For MCP (optional)
18
+ npm install @ai-sdk/mcp
19
+ ```
20
+
21
+ ## ✅ Correct - Native Tools (Recommended)
22
+
23
+ ```typescript
24
+ import { openai } from '@ai-sdk/openai';
25
+ import { generateText, streamText } from 'ai';
26
+ import { Composio } from '@composio/core';
27
+ import { VercelProvider } from '@composio/vercel';
28
+
29
+ const composio = new Composio({
30
+ apiKey: process.env.COMPOSIO_API_KEY,
31
+ provider: new VercelProvider()
32
+ });
33
+
34
+ async function runAgent(userId: string, prompt: string) {
35
+ // Create Tool Router session
36
+ const session = await composio.create(userId, {
37
+ toolkits: ['gmail', 'slack'],
38
+ manageConnections: true
39
+ });
40
+
41
+ const tools = await session.tools();
42
+
43
+ // Use with generateText or streamText
44
+ const result = await generateText({
45
+ model: openai('gpt-5.2'),
46
+ tools: tools,
47
+ maxSteps: 5,
48
+ prompt: prompt
49
+ });
50
+
51
+ return result.text;
52
+ }
53
+ ```
54
+
55
+ **For streaming:**
56
+ ```typescript
57
+ const stream = await streamText({
58
+ model: openai('gpt-5.2'),
59
+ tools: await session.tools(),
60
+ maxSteps: 5,
61
+ prompt: prompt
62
+ });
63
+
64
+ return stream.toDataStreamResponse();
65
+ ```
66
+
67
+ **Key Points:**
68
+ - Create new sessions per request/conversation
69
+ - Use `session.tools()` with `VercelProvider`
70
+ - Always set `maxSteps` for multi-step tool calling
71
+ - Works with `generateText` and `streamText`
72
+
73
+ ## ✅ Correct - MCP Tools
74
+
75
+ Use `createMCPClient` with Tool Router sessions for MCP protocol compliance:
76
+
77
+ ```typescript
78
+ import { openai } from '@ai-sdk/openai';
79
+ import { generateText } from 'ai';
80
+ import { createMCPClient } from '@ai-sdk/mcp';
81
+ import { Composio } from '@composio/core';
82
+ import { VercelProvider } from '@composio/vercel';
83
+
84
+ const composio = new Composio({
85
+ apiKey: process.env.COMPOSIO_API_KEY,
86
+ provider: new VercelProvider()
87
+ });
88
+
89
+ async function runAgentWithMcp(userId: string, prompt: string) {
90
+ // 1. Create Tool Router session
91
+ const session = await composio.create(userId, {
92
+ toolkits: ['gmail', 'slack'],
93
+ manageConnections: true
94
+ });
95
+
96
+ // 2. Create MCP client with HTTP transport
97
+ const client = await createMCPClient({
98
+ transport: {
99
+ type: 'http',
100
+ url: session.mcp.url,
101
+ headers: session.mcp.headers
102
+ }
103
+ });
104
+
105
+ // 3. Get tools and use with generateText
106
+ const tools = await client.getTools();
107
+
108
+ const result = await generateText({
109
+ model: openai('gpt-5.2'),
110
+ tools: tools,
111
+ maxSteps: 5,
112
+ prompt: prompt
113
+ });
114
+
115
+ return result.text;
116
+ }
117
+ ```
118
+
119
+ ## ✅ Correct - React Integration
120
+
121
+ **API Route (app/api/chat/route.ts):**
122
+ ```typescript
123
+ import { openai } from '@ai-sdk/openai';
124
+ import { streamText } from 'ai';
125
+ import { Composio } from '@composio/core';
126
+ import { VercelProvider } from '@composio/vercel';
127
+
128
+ const composio = new Composio({
129
+ apiKey: process.env.COMPOSIO_API_KEY,
130
+ provider: new VercelProvider()
131
+ });
132
+
133
+ export async function POST(req: Request) {
134
+ const { messages, userId } = await req.json();
135
+
136
+ const session = await composio.create(userId, {
137
+ toolkits: ['gmail', 'slack'],
138
+ manageConnections: true
139
+ });
140
+
141
+ const stream = await streamText({
142
+ model: openai('gpt-5.2'),
143
+ tools: await session.tools(),
144
+ maxSteps: 5,
145
+ messages: messages
146
+ });
147
+
148
+ return stream.toDataStreamResponse();
149
+ }
150
+ ```
151
+
152
+ **Client Component:**
153
+ ```typescript
154
+ 'use client';
155
+ import { useChat } from 'ai/react';
156
+
157
+ export default function Chat({ userId }: { userId: string }) {
158
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
159
+ api: '/api/chat',
160
+ body: { userId }
161
+ });
162
+
163
+ return (
164
+ <div>
165
+ {messages.map(m => <div key={m.id}>{m.role}: {m.content}</div>)}
166
+ <form onSubmit={handleSubmit}>
167
+ <input value={input} onChange={handleInputChange} />
168
+ </form>
169
+ </div>
170
+ );
171
+ }
172
+ ```
173
+
174
+ ## ❌ Incorrect Patterns
175
+
176
+ ```typescript
177
+ // ❌ Don't forget VercelProvider
178
+ const composio = new Composio({ apiKey: key }); // Missing provider
179
+
180
+ // ❌ Don't bypass Tool Router for MCP
181
+ const client = await createMCPClient({
182
+ transport: { type: 'http', url: 'https://mcp.composio.dev' }
183
+ });
184
+
185
+ // ❌ Don't use stdio transport in production
186
+ const client = await createMCPClient({
187
+ transport: { type: 'stdio', command: 'npx', args: ['@composio/mcp'] }
188
+ });
189
+ // Use HTTP transport instead
190
+
191
+ // ❌ Don't forget maxSteps
192
+ await generateText({
193
+ model: openai('gpt-5.2'),
194
+ tools: tools
195
+ // Missing maxSteps - stops after first tool call
196
+ });
197
+
198
+ // ❌ Don't cache tools across users
199
+ const cachedTools = await session.tools();
200
+ // Reusing for different users...
201
+ ```
202
+
203
+ ## Key Principles
204
+
205
+ **Native Tools:**
206
+ - Use `session.tools()` with `VercelProvider`
207
+ - Works with `generateText` and `streamText`
208
+ - Best for most use cases
209
+
210
+ **MCP Tools:**
211
+ - Use `createMCPClient` with HTTP transport
212
+ - Get tools via `client.getTools()`
213
+ - Use `session.mcp.url` and `session.mcp.headers`
214
+ - Only when MCP protocol compliance is required
215
+
216
+ **Session Management:**
217
+ - Always create sessions via `composio.create()`
218
+ - Create new sessions per request/conversation
219
+ - Don't cache tools or sessions across users
220
+
221
+ **Multi-Step Agents:**
222
+ - Always set `maxSteps` for multi-step tool calling
223
+ - Use `onStepFinish` callback to monitor execution
224
+
225
+ ## When to Use
226
+
227
+ | Use Case | Approach | Method |
228
+ |----------|----------|--------|
229
+ | Most scenarios | Native Tools | `session.tools()` with VercelProvider |
230
+ | MCP protocol required | MCP Tools | `createMCPClient` + `getTools()` |
231
+ | React apps | Native Tools | `useChat` with API route |
232
+ | Type-safe MCP | MCP with schemas | Explicit tool definitions |
233
+
234
+ ## Reference
235
+
236
+ - [Vercel AI SDK Docs](https://ai-sdk.dev/docs)
237
+ - [AI SDK Tool Calling](https://ai-sdk.dev/docs/ai-sdk-core/tools-and-tool-calling)
238
+ - [AI SDK MCP](https://ai-sdk.dev/docs/ai-sdk-core/mcp-tools)
239
+ - [Composio Vercel Provider](https://docs.composio.dev/docs/providers/vercel)
240
+ - [Tool Router Sessions](tr-session-lifecycle.md)