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,476 @@
1
+ ---
2
+ title: Choose User IDs Carefully for Security and Isolation
3
+ impact: CRITICAL
4
+ description: Use proper user IDs to ensure data isolation, security, and correct session management
5
+ tags: [tool-router, user-id, security, authentication, multi-tenant]
6
+ ---
7
+
8
+ # Choose User IDs Carefully for Security and Isolation
9
+
10
+ User IDs are the **foundation of Composio's data isolation**. They determine which user's connections, data, and permissions are used for tool execution. Choose them carefully to ensure security and proper data isolation.
11
+
12
+ ## ❌ Incorrect
13
+
14
+ ```typescript
15
+ // DON'T: Use 'default' in production multi-user apps
16
+ async function handleUserRequest(req: Request) {
17
+ const session = await composio.create('default', {
18
+ toolkits: ['gmail', 'slack']
19
+ });
20
+
21
+ // ❌ All users share the same session
22
+ // ❌ No data isolation
23
+ // ❌ Security nightmare
24
+ // ❌ User A can access User B's emails!
25
+ }
26
+ ```
27
+
28
+ ```python
29
+ # DON'T: Use 'default' in production multi-user apps
30
+ async def handle_user_request(req):
31
+ session = composio.create(
32
+ user_id="default",
33
+ toolkits=["gmail", "slack"]
34
+ )
35
+
36
+ # ❌ All users share the same session
37
+ # ❌ No data isolation
38
+ # ❌ Security nightmare
39
+ # ❌ User A can access User B's emails!
40
+ ```
41
+
42
+ ```typescript
43
+ // DON'T: Use email addresses as user IDs
44
+ async function handleUserRequest(req: Request) {
45
+ const session = await composio.create(req.user.email, {
46
+ toolkits: ['github']
47
+ });
48
+
49
+ // ❌ Emails can change
50
+ // ❌ Breaks session continuity
51
+ // ❌ Historical data loss
52
+ }
53
+ ```
54
+
55
+ ## ✅ Correct - Use Database User IDs
56
+
57
+ ```typescript
58
+ // DO: Use your database user ID (UUID, primary key, etc.)
59
+ import { Composio } from '@composio/core';
60
+ import { VercelProvider } from '@composio/vercel';
61
+
62
+ const composio = new Composio({
63
+ provider: new VercelProvider()
64
+ });
65
+
66
+ async function handleUserRequest(req: Request) {
67
+ // Get user ID from your auth system
68
+ const userId = req.user.id; // e.g., "550e8400-e29b-41d4-a716-446655440000"
69
+
70
+ // Create isolated session for this user
71
+ const session = await composio.create(userId, {
72
+ toolkits: ['gmail', 'slack']
73
+ });
74
+
75
+ const tools = await session.tools();
76
+
77
+ // ✅ Each user gets their own session
78
+ // ✅ Complete data isolation
79
+ // ✅ User A cannot access User B's data
80
+ // ✅ Connections tied to correct user
81
+ return await agent.run(req.message, tools);
82
+ }
83
+ ```
84
+
85
+ ```python
86
+ # DO: Use your database user ID (UUID, primary key, etc.)
87
+ from composio import Composio
88
+ from composio_openai import OpenAIProvider
89
+
90
+ composio = Composio(provider=OpenAIProvider())
91
+
92
+ async def handle_user_request(req):
93
+ # Get user ID from your auth system
94
+ user_id = req.user.id # e.g., "550e8400-e29b-41d4-a716-446655440000"
95
+
96
+ # Create isolated session for this user
97
+ session = composio.create(
98
+ user_id=user_id,
99
+ toolkits=["gmail", "slack"]
100
+ )
101
+
102
+ tools = session.tools()
103
+
104
+ # ✅ Each user gets their own session
105
+ # ✅ Complete data isolation
106
+ # ✅ User A cannot access User B's data
107
+ # ✅ Connections tied to correct user
108
+ return await agent.run(req.message, tools)
109
+ ```
110
+
111
+ ## ✅ Correct - Use Auth Provider IDs
112
+
113
+ ```typescript
114
+ // DO: Use IDs from your auth provider
115
+ import { Composio } from '@composio/core';
116
+ import { VercelProvider } from '@composio/vercel';
117
+
118
+ const composio = new Composio({
119
+ provider: new VercelProvider()
120
+ });
121
+
122
+ async function handleClerkUser(userId: string) {
123
+ // Using Clerk user ID
124
+ // e.g., "user_2abc123def456"
125
+ const session = await composio.create(userId, {
126
+ toolkits: ['github']
127
+ });
128
+
129
+ return session;
130
+ }
131
+
132
+ async function handleAuth0User(userId: string) {
133
+ // Using Auth0 user ID
134
+ // e.g., "auth0|507f1f77bcf86cd799439011"
135
+ const session = await composio.create(userId, {
136
+ toolkits: ['gmail']
137
+ });
138
+
139
+ return session;
140
+ }
141
+
142
+ async function handleSupabaseUser(userId: string) {
143
+ // Using Supabase user UUID
144
+ // e.g., "d7f8b0c1-1234-5678-9abc-def012345678"
145
+ const session = await composio.create(userId, {
146
+ toolkits: ['slack']
147
+ });
148
+
149
+ return session;
150
+ }
151
+ ```
152
+
153
+ ```python
154
+ # DO: Use IDs from your auth provider
155
+ from composio import Composio
156
+ from composio_openai import OpenAIProvider
157
+
158
+ composio = Composio(provider=OpenAIProvider())
159
+
160
+ async def handle_clerk_user(user_id: str):
161
+ # Using Clerk user ID
162
+ # e.g., "user_2abc123def456"
163
+ session = composio.create(
164
+ user_id=user_id,
165
+ toolkits=["github"]
166
+ )
167
+ return session
168
+
169
+ async def handle_auth0_user(user_id: str):
170
+ # Using Auth0 user ID
171
+ # e.g., "auth0|507f1f77bcf86cd799439011"
172
+ session = composio.create(
173
+ user_id=user_id,
174
+ toolkits=["gmail"]
175
+ )
176
+ return session
177
+
178
+ async def handle_supabase_user(user_id: str):
179
+ # Using Supabase user UUID
180
+ # e.g., "d7f8b0c1-1234-5678-9abc-def012345678"
181
+ session = composio.create(
182
+ user_id=user_id,
183
+ toolkits=["slack"]
184
+ )
185
+ return session
186
+ ```
187
+
188
+ ## ✅ Correct - Organization-Level Applications
189
+
190
+ ```typescript
191
+ // DO: Use organization ID for org-level apps
192
+ import { Composio } from '@composio/core';
193
+ import { VercelProvider } from '@composio/vercel';
194
+
195
+ const composio = new Composio({
196
+ provider: new VercelProvider()
197
+ });
198
+
199
+ // When apps are connected at organization level (not individual users)
200
+ async function handleOrgLevelApp(req: Request) {
201
+ // Use organization ID, NOT individual user ID
202
+ const organizationId = req.user.organizationId;
203
+
204
+ const session = await composio.create(organizationId, {
205
+ toolkits: ['slack', 'github'], // Org-wide tools
206
+ manageConnections: true
207
+ });
208
+
209
+ // All users in the organization share these connections
210
+ // Perfect for team collaboration tools
211
+ const tools = await session.tools();
212
+ return await agent.run(req.message, tools);
213
+ }
214
+
215
+ // Example: Slack workspace integration
216
+ async function createWorkspaceSession(workspaceId: string) {
217
+ // Workspace ID as user ID
218
+ const session = await composio.create(`workspace_${workspaceId}`, {
219
+ toolkits: ['slack', 'notion', 'linear']
220
+ });
221
+
222
+ return session;
223
+ }
224
+ ```
225
+
226
+ ```python
227
+ # DO: Use organization ID for org-level apps
228
+ from composio import Composio
229
+ from composio_openai import OpenAIProvider
230
+
231
+ composio = Composio(provider=OpenAIProvider())
232
+
233
+ # When apps are connected at organization level (not individual users)
234
+ async def handle_org_level_app(req):
235
+ # Use organization ID, NOT individual user ID
236
+ organization_id = req.user.organization_id
237
+
238
+ session = composio.create(
239
+ user_id=organization_id,
240
+ toolkits=["slack", "github"], # Org-wide tools
241
+ manage_connections=True
242
+ )
243
+
244
+ # All users in the organization share these connections
245
+ # Perfect for team collaboration tools
246
+ tools = session.tools()
247
+ return await agent.run(req.message, tools)
248
+
249
+ # Example: Slack workspace integration
250
+ async def create_workspace_session(workspace_id: str):
251
+ # Workspace ID as user ID
252
+ session = composio.create(
253
+ user_id=f"workspace_{workspace_id}",
254
+ toolkits=["slack", "notion", "linear"]
255
+ )
256
+ return session
257
+ ```
258
+
259
+ ## When to Use 'default'
260
+
261
+ The `'default'` user ID should **ONLY** be used in these scenarios:
262
+
263
+ ### ✅ Development and Testing
264
+ ```typescript
265
+ // Testing locally
266
+ const session = await composio.create('default', {
267
+ toolkits: ['gmail']
268
+ });
269
+ ```
270
+
271
+ ### ✅ Single-User Applications
272
+ ```typescript
273
+ // Personal automation script
274
+ // Only YOU use this app
275
+ const session = await composio.create('default', {
276
+ toolkits: ['github', 'notion']
277
+ });
278
+ ```
279
+
280
+ ### ✅ Demos and Prototypes
281
+ ```typescript
282
+ // Quick demo for investors
283
+ const session = await composio.create('default', {
284
+ toolkits: ['hackernews']
285
+ });
286
+ ```
287
+
288
+ ### ❌ NEVER in Production Multi-User Apps
289
+ ```typescript
290
+ // Production API serving multiple users
291
+ // ❌ DON'T DO THIS
292
+ const session = await composio.create('default', {
293
+ toolkits: ['gmail']
294
+ });
295
+ ```
296
+
297
+ ## User ID Best Practices
298
+
299
+ ### 1. **Use Stable, Immutable Identifiers**
300
+
301
+ ✅ **Good:**
302
+ - Database primary keys (UUIDs)
303
+ - Auth provider user IDs
304
+ - Immutable user identifiers
305
+
306
+ ❌ **Bad:**
307
+ - Email addresses (can change)
308
+ - Usernames (can be modified)
309
+ - Phone numbers (can change)
310
+
311
+ ```typescript
312
+ // ✅ Good: Stable UUID
313
+ const userId = user.id; // "550e8400-e29b-41d4-a716-446655440000"
314
+
315
+ // ❌ Bad: Email (mutable)
316
+ const userId = user.email; // "john@example.com" -> changes to "john@newdomain.com"
317
+
318
+ // ❌ Bad: Username (mutable)
319
+ const userId = user.username; // "john_doe" -> changes to "john_smith"
320
+ ```
321
+
322
+ ### 2. **Ensure Uniqueness**
323
+
324
+ ```typescript
325
+ // ✅ Good: Guaranteed unique
326
+ const userId = database.users.findById(id).id;
327
+
328
+ // ✅ Good: Auth provider guarantees uniqueness
329
+ const userId = auth0.user.sub; // "auth0|507f1f77bcf86cd799439011"
330
+
331
+ // ❌ Bad: Not guaranteed unique
332
+ const userId = user.firstName; // Multiple "John"s exist
333
+ ```
334
+
335
+ ### 3. **Match Your Authentication System**
336
+
337
+ ```typescript
338
+ // Express.js with Passport
339
+ app.post('/api/agent', authenticateUser, async (req, res) => {
340
+ const userId = req.user.id; // From Passport
341
+ const session = await composio.create(userId, config);
342
+ });
343
+
344
+ // Next.js with Clerk
345
+ export async function POST(req: NextRequest) {
346
+ const { userId } = auth(); // From Clerk
347
+ const session = await composio.create(userId!, config);
348
+ }
349
+
350
+ // FastAPI with Auth0
351
+ @app.post("/api/agent")
352
+ async def agent_endpoint(user: User = Depends(get_current_user)):
353
+ user_id = user.id # From Auth0
354
+ session = composio.create(user_id=user_id, **config)
355
+ ```
356
+
357
+ ### 4. **Namespace for Multi-Tenancy**
358
+
359
+ ```typescript
360
+ // When you have multiple applications/workspaces per user
361
+ const userId = `app_${appId}_user_${user.id}`;
362
+ // e.g., "app_saas123_user_550e8400"
363
+
364
+ const session = await composio.create(userId, {
365
+ toolkits: ['gmail']
366
+ });
367
+
368
+ // Each app instance gets isolated connections
369
+ ```
370
+
371
+ ### 5. **Be Consistent Across Your Application**
372
+
373
+ ```typescript
374
+ // ✅ Good: Same user ID everywhere
375
+ async function handleRequest(req: Request) {
376
+ const userId = req.user.id;
377
+
378
+ // Use same ID for sessions
379
+ const session = await composio.create(userId, config);
380
+
381
+ // Use same ID for direct tool execution
382
+ await composio.tools.execute('GMAIL_SEND_EMAIL', {
383
+ userId: userId,
384
+ arguments: { to: 'user@example.com', subject: 'Test' }
385
+ });
386
+
387
+ // Use same ID for connected accounts
388
+ await composio.connectedAccounts.get(userId, 'gmail');
389
+ }
390
+ ```
391
+
392
+ ## Security Implications
393
+
394
+ ### ⚠️ User ID Leakage
395
+ ```typescript
396
+ // ❌ DON'T: Expose user IDs to client
397
+ app.get('/api/session', (req, res) => {
398
+ res.json({
399
+ sessionId: session.sessionId,
400
+ userId: req.user.id // ❌ Sensitive information
401
+ });
402
+ });
403
+
404
+ // ✅ DO: Keep user IDs server-side only
405
+ app.get('/api/session', (req, res) => {
406
+ res.json({
407
+ sessionId: session.sessionId
408
+ // Don't send userId to client
409
+ });
410
+ });
411
+ ```
412
+
413
+ ### ⚠️ User ID Validation
414
+ ```typescript
415
+ // ✅ Always validate user IDs match authenticated user
416
+ app.post('/api/agent/:userId', authenticateUser, async (req, res) => {
417
+ const requestedUserId = req.params.userId;
418
+ const authenticatedUserId = req.user.id;
419
+
420
+ // Validate user can only access their own data
421
+ if (requestedUserId !== authenticatedUserId) {
422
+ return res.status(403).json({ error: 'Forbidden' });
423
+ }
424
+
425
+ const session = await composio.create(authenticatedUserId, config);
426
+ });
427
+ ```
428
+
429
+ ## Common Patterns
430
+
431
+ ### Pattern 1: User-Level Isolation (Most Common)
432
+ ```typescript
433
+ // Each user has their own connections
434
+ // Use user ID from your database/auth system
435
+ const session = await composio.create(req.user.id, {
436
+ toolkits: ['gmail', 'github']
437
+ });
438
+ ```
439
+
440
+ ### Pattern 2: Organization-Level Sharing
441
+ ```typescript
442
+ // All org members share connections
443
+ // Use organization ID
444
+ const session = await composio.create(req.user.organizationId, {
445
+ toolkits: ['slack', 'notion']
446
+ });
447
+ ```
448
+
449
+ ### Pattern 3: Hybrid (User + Org)
450
+ ```typescript
451
+ // Personal tools use user ID
452
+ const personalSession = await composio.create(req.user.id, {
453
+ toolkits: ['gmail'] // Personal Gmail
454
+ });
455
+
456
+ // Team tools use org ID
457
+ const teamSession = await composio.create(req.user.organizationId, {
458
+ toolkits: ['slack', 'jira'] // Team Slack/Jira
459
+ });
460
+ ```
461
+
462
+ ## Key Principles
463
+
464
+ 1. **Never use 'default' in production multi-user apps**
465
+ 2. **Use stable, immutable identifiers** (UUIDs, not emails)
466
+ 3. **Match your authentication system's user IDs**
467
+ 4. **Validate user IDs server-side** for security
468
+ 5. **Be consistent** across sessions and direct tool usage
469
+ 6. **Use org IDs** for organization-level applications
470
+ 7. **Namespace when needed** for multi-tenancy
471
+
472
+ ## Reference
473
+
474
+ - [Composio Sessions](https://docs.composio.dev/sdk/typescript/api/tool-router#creating-sessions)
475
+ - [User ID Security](https://docs.composio.dev/sdk/typescript/core-concepts#user-ids)
476
+ - [Connected Accounts](https://docs.composio.dev/sdk/typescript/api/connected-accounts)
@@ -0,0 +1,246 @@
1
+ ---
2
+ title: Create Triggers for Real-Time Events
3
+ impact: HIGH
4
+ description: Set up trigger instances to receive real-time events from connected accounts
5
+ tags: [triggers, events, webhooks, real-time, notifications]
6
+ ---
7
+
8
+ # Create Triggers for Real-Time Events
9
+
10
+ Triggers receive real-time events from connected accounts (Gmail, GitHub, Slack, etc.). Create trigger instances to subscribe to specific events.
11
+
12
+ > **⚠️ IMPORTANT:** Do NOT make up or guess trigger names. Always verify trigger slugs before using them:
13
+ > - Use `composio manage triggers list` to discover and `composio manage triggers info "TRIGGER_NAME"` to see configuration schema (CLI)
14
+ > - Use `composio.triggers.list()` to discover available triggers programmatically (SDK)
15
+ >
16
+ > See [Composio CLI Reference](./composio-cli.md) for discovery commands.
17
+
18
+ ## Basic Usage
19
+
20
+ ```typescript
21
+ import { Composio } from '@composio/core';
22
+
23
+ const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
24
+
25
+ // Create trigger for specific connected account
26
+ const trigger = await composio.triggers.create(
27
+ 'user_123',
28
+ 'GMAIL_NEW_GMAIL_MESSAGE',
29
+ {
30
+ connectedAccountId: 'conn_abc123',
31
+ triggerConfig: {
32
+ labelIds: 'INBOX',
33
+ userId: 'me',
34
+ interval: 60
35
+ }
36
+ }
37
+ );
38
+
39
+ console.log('Trigger ID:', trigger.triggerId);
40
+ ```
41
+
42
+ ## SDK Auto-Discovery
43
+
44
+ Omit `connectedAccountId` to let SDK find the account automatically:
45
+
46
+ ```typescript
47
+ // SDK finds user's Gmail connection
48
+ const trigger = await composio.triggers.create(
49
+ 'user_123',
50
+ 'GMAIL_NEW_GMAIL_MESSAGE',
51
+ {
52
+ triggerConfig: { labelIds: 'INBOX', interval: 60 }
53
+ }
54
+ );
55
+ ```
56
+
57
+ ## Automatic Reuse
58
+
59
+ Triggers with identical configuration are automatically reused:
60
+
61
+ ```typescript
62
+ // First call creates trigger
63
+ const trigger1 = await composio.triggers.create(
64
+ 'user_123',
65
+ 'GMAIL_NEW_GMAIL_MESSAGE',
66
+ { triggerConfig: { labelIds: 'INBOX' } }
67
+ );
68
+
69
+ // Second call returns same trigger (no duplicate)
70
+ const trigger2 = await composio.triggers.create(
71
+ 'user_123',
72
+ 'GMAIL_NEW_GMAIL_MESSAGE',
73
+ { triggerConfig: { labelIds: 'INBOX' } }
74
+ );
75
+
76
+ console.log(trigger1.triggerId === trigger2.triggerId); // true
77
+ ```
78
+
79
+ ## Version Pinning
80
+
81
+ Pin trigger versions in production to prevent breaking changes:
82
+
83
+ ```typescript
84
+ const composio = new Composio({
85
+ apiKey: process.env.COMPOSIO_API_KEY,
86
+ triggerVersions: {
87
+ 'GMAIL_NEW_GMAIL_MESSAGE': '12082025_00',
88
+ 'GITHUB_COMMIT_EVENT': '12082025_00'
89
+ }
90
+ });
91
+
92
+ // Uses pinned version
93
+ const trigger = await composio.triggers.create(
94
+ 'user_123',
95
+ 'GMAIL_NEW_GMAIL_MESSAGE',
96
+ { triggerConfig: { labelIds: 'INBOX' } }
97
+ );
98
+ ```
99
+
100
+ **Why pin versions:**
101
+ - Prevents config schema changes
102
+ - Ensures production stability
103
+ - Updates on your schedule
104
+
105
+ ## Trigger Configuration Examples
106
+
107
+ ```typescript
108
+ // Gmail - New messages in specific label
109
+ await composio.triggers.create('user_123', 'GMAIL_NEW_GMAIL_MESSAGE', {
110
+ triggerConfig: {
111
+ labelIds: 'INBOX',
112
+ userId: 'me',
113
+ interval: 60
114
+ }
115
+ });
116
+
117
+ // GitHub - New commits
118
+ await composio.triggers.create('user_123', 'GITHUB_COMMIT_EVENT', {
119
+ triggerConfig: {
120
+ owner: 'composio',
121
+ repo: 'sdk',
122
+ branch: 'main'
123
+ }
124
+ });
125
+
126
+ // Slack - New messages in channel
127
+ await composio.triggers.create('user_123', 'SLACK_NEW_MESSAGE', {
128
+ triggerConfig: {
129
+ channelId: 'C123456',
130
+ botUserId: 'U123456'
131
+ }
132
+ });
133
+ ```
134
+
135
+ ## Error Handling
136
+
137
+ ```typescript
138
+ try {
139
+ const trigger = await composio.triggers.create(
140
+ 'user_123',
141
+ 'GMAIL_NEW_GMAIL_MESSAGE',
142
+ { triggerConfig: { labelIds: 'INBOX' } }
143
+ );
144
+ } catch (error) {
145
+ if (error.name === 'ComposioConnectedAccountNotFoundError') {
146
+ // User hasn't connected Gmail yet
147
+ console.log('Please connect your Gmail account');
148
+ } else if (error.name === 'ValidationError') {
149
+ // Invalid trigger config
150
+ console.error('Invalid configuration:', error.message);
151
+ } else {
152
+ throw error;
153
+ }
154
+ }
155
+ ```
156
+
157
+ ## Discover Available Triggers
158
+
159
+ ```typescript
160
+ // Get all triggers
161
+ const triggers = await composio.triggers.list();
162
+
163
+ // Search by keyword
164
+ const emailTriggers = await composio.triggers.list({ search: 'email' });
165
+
166
+ // Filter by toolkit
167
+ const slackTriggers = await composio.triggers.list({ toolkit: 'slack' });
168
+
169
+ // Get trigger details
170
+ const trigger = await composio.triggers.getTrigger('GMAIL_NEW_GMAIL_MESSAGE');
171
+ console.log(trigger.config); // Shows required config fields
172
+ ```
173
+
174
+ ## List Active Triggers
175
+
176
+ ```typescript
177
+ // All active triggers
178
+ const active = await composio.triggers.getActiveTriggers();
179
+
180
+ // By trigger slug
181
+ const gmailTriggers = await composio.triggers.getActiveTriggers({
182
+ triggerSlugs: ['GMAIL_NEW_GMAIL_MESSAGE']
183
+ });
184
+
185
+ // By connected account
186
+ const accountTriggers = await composio.triggers.getActiveTriggers({
187
+ connectedAccountIds: ['conn_abc123']
188
+ });
189
+
190
+ // Combine filters
191
+ const userSlackTriggers = await composio.triggers.getActiveTriggers({
192
+ triggerSlugs: ['SLACK_NEW_MESSAGE'],
193
+ connectedAccountIds: ['conn_def456']
194
+ });
195
+ ```
196
+
197
+ ## Common Patterns
198
+
199
+ ### Check Before Creating
200
+
201
+ ```typescript
202
+ async function ensureTrigger(userId: string, triggerSlug: string, config: any) {
203
+ // Check if trigger exists
204
+ const existing = await composio.triggers.getActiveTriggers({
205
+ triggerSlugs: [triggerSlug]
206
+ });
207
+
208
+ if (existing.items.length > 0) {
209
+ return existing.items[0];
210
+ }
211
+
212
+ // Create if doesn't exist
213
+ return await composio.triggers.create(userId, triggerSlug, {
214
+ triggerConfig: config
215
+ });
216
+ }
217
+ ```
218
+
219
+ ### Onboarding Flow
220
+
221
+ ```typescript
222
+ async function setupUserTriggers(userId: string) {
223
+ // Check connected accounts
224
+ const accounts = await composio.connectedAccounts.list({
225
+ userIds: [userId]
226
+ });
227
+
228
+ // Create triggers for each service
229
+ for (const account of accounts.items) {
230
+ if (account.toolkit.slug === 'gmail') {
231
+ await composio.triggers.create(userId, 'GMAIL_NEW_GMAIL_MESSAGE', {
232
+ connectedAccountId: account.id,
233
+ triggerConfig: { labelIds: 'INBOX' }
234
+ });
235
+ }
236
+ }
237
+ }
238
+ ```
239
+
240
+ ## Key Points
241
+
242
+ - **Use proper user IDs** - Never use 'default' in production
243
+ - **Requires connected account** - User must authenticate first
244
+ - **Automatic reuse** - Identical configs share same trigger instance
245
+ - **Pin versions** - Prevents breaking changes in production
246
+ - **Error handling** - Handle missing connections gracefully