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,275 @@
1
+ ---
2
+ title: Manage Trigger Lifecycle (Enable, Disable, Update)
3
+ impact: HIGH
4
+ description: Control trigger states, update configurations, and manage trigger instances
5
+ tags: [triggers, lifecycle, enable, disable, update, management]
6
+ ---
7
+
8
+ # Manage Trigger Lifecycle
9
+
10
+ Control trigger states and configurations without recreating triggers.
11
+
12
+ ## Enable/Disable Triggers
13
+
14
+ ```typescript
15
+ // Disable trigger (stop receiving events)
16
+ await composio.triggers.disable('trigger_id_123');
17
+
18
+ // Enable trigger (resume receiving events)
19
+ await composio.triggers.enable('trigger_id_123');
20
+ ```
21
+
22
+ **Use cases:**
23
+ - **Disable:** Pause events temporarily, user disconnects account, billing issues
24
+ - **Enable:** Resume after resolving issues, user reconnects account
25
+
26
+ ## Update Trigger Configuration
27
+
28
+ ```typescript
29
+ // Update trigger config
30
+ await composio.triggers.update('trigger_id_123', {
31
+ triggerConfig: {
32
+ labelIds: 'SENT', // Changed from 'INBOX'
33
+ interval: 120 // Changed from 60
34
+ }
35
+ });
36
+ ```
37
+
38
+ **Updateable fields:**
39
+ - `triggerConfig` - Trigger-specific configuration
40
+ - Cannot change trigger slug or connected account
41
+
42
+ ## Delete Triggers
43
+
44
+ ```typescript
45
+ await composio.triggers.delete('trigger_id_123');
46
+ ```
47
+
48
+ **Warning:** Permanent deletion. Creates new trigger if needed later.
49
+
50
+ ## List Active Triggers
51
+
52
+ ```typescript
53
+ // All active triggers
54
+ const triggers = await composio.triggers.getActiveTriggers();
55
+
56
+ // By trigger slug
57
+ const gmailTriggers = await composio.triggers.getActiveTriggers({
58
+ triggerSlugs: ['GMAIL_NEW_GMAIL_MESSAGE']
59
+ });
60
+
61
+ // By user
62
+ const userTriggers = await composio.triggers.getActiveTriggers({
63
+ userIds: ['user_123']
64
+ });
65
+
66
+ // By connected account
67
+ const accountTriggers = await composio.triggers.getActiveTriggers({
68
+ connectedAccountIds: ['conn_abc123']
69
+ });
70
+
71
+ // By status
72
+ const enabled = await composio.triggers.getActiveTriggers({
73
+ status: 'enabled'
74
+ });
75
+ const disabled = await composio.triggers.getActiveTriggers({
76
+ status: 'disabled'
77
+ });
78
+
79
+ // Combine filters
80
+ const filtered = await composio.triggers.getActiveTriggers({
81
+ triggerSlugs: ['SLACK_NEW_MESSAGE'],
82
+ userIds: ['user_123'],
83
+ status: 'enabled'
84
+ });
85
+ ```
86
+
87
+ **Response includes:**
88
+ - `triggerId` - Unique ID
89
+ - `triggerSlug` - Trigger type
90
+ - `userId` - User ID
91
+ - `connectedAccountId` - Account ID
92
+ - `status` - 'enabled' or 'disabled'
93
+ - `config` - Current configuration
94
+ - `createdAt`, `updatedAt` - Timestamps
95
+
96
+ ## Get Trigger Details
97
+
98
+ ```typescript
99
+ // Get specific trigger
100
+ const trigger = await composio.triggers.getTriggerById('trigger_id_123');
101
+
102
+ console.log(trigger.status); // 'enabled'
103
+ console.log(trigger.triggerSlug); // 'GMAIL_NEW_GMAIL_MESSAGE'
104
+ console.log(trigger.config.triggerConfig); // { labelIds: 'INBOX', ... }
105
+ ```
106
+
107
+ ## Common Patterns
108
+
109
+ ### Pause User's Triggers
110
+
111
+ ```typescript
112
+ async function pauseUserTriggers(userId: string) {
113
+ const triggers = await composio.triggers.getActiveTriggers({
114
+ userIds: [userId],
115
+ status: 'enabled'
116
+ });
117
+
118
+ for (const trigger of triggers.items) {
119
+ await composio.triggers.disable(trigger.triggerId);
120
+ }
121
+ }
122
+ ```
123
+
124
+ ### Resume User's Triggers
125
+
126
+ ```typescript
127
+ async function resumeUserTriggers(userId: string) {
128
+ const triggers = await composio.triggers.getActiveTriggers({
129
+ userIds: [userId],
130
+ status: 'disabled'
131
+ });
132
+
133
+ for (const trigger of triggers.items) {
134
+ await composio.triggers.enable(trigger.triggerId);
135
+ }
136
+ }
137
+ ```
138
+
139
+ ### Clean Up Disconnected Account Triggers
140
+
141
+ ```typescript
142
+ async function cleanupTriggers(connectedAccountId: string) {
143
+ const triggers = await composio.triggers.getActiveTriggers({
144
+ connectedAccountIds: [connectedAccountId]
145
+ });
146
+
147
+ for (const trigger of triggers.items) {
148
+ await composio.triggers.delete(trigger.triggerId);
149
+ }
150
+ }
151
+ ```
152
+
153
+ ### Update All User Gmail Triggers
154
+
155
+ ```typescript
156
+ async function updateGmailInterval(userId: string, newInterval: number) {
157
+ const triggers = await composio.triggers.getActiveTriggers({
158
+ userIds: [userId],
159
+ triggerSlugs: ['GMAIL_NEW_GMAIL_MESSAGE']
160
+ });
161
+
162
+ for (const trigger of triggers.items) {
163
+ await composio.triggers.update(trigger.triggerId, {
164
+ triggerConfig: {
165
+ ...trigger.config.triggerConfig,
166
+ interval: newInterval
167
+ }
168
+ });
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### Check Trigger Status
174
+
175
+ ```typescript
176
+ async function isTriggerActive(triggerId: string): Promise<boolean> {
177
+ try {
178
+ const trigger = await composio.triggers.getTriggerById(triggerId);
179
+ return trigger.status === 'enabled';
180
+ } catch (error) {
181
+ return false; // Trigger doesn't exist
182
+ }
183
+ }
184
+ ```
185
+
186
+ ### Get Trigger Count by User
187
+
188
+ ```typescript
189
+ async function getUserTriggerCount(userId: string) {
190
+ const triggers = await composio.triggers.getActiveTriggers({
191
+ userIds: [userId]
192
+ });
193
+
194
+ return {
195
+ total: triggers.items.length,
196
+ enabled: triggers.items.filter(t => t.status === 'enabled').length,
197
+ disabled: triggers.items.filter(t => t.status === 'disabled').length
198
+ };
199
+ }
200
+ ```
201
+
202
+ ## Lifecycle Management
203
+
204
+ ### Account Disconnection
205
+
206
+ ```typescript
207
+ // When user disconnects an account
208
+ async function handleAccountDisconnect(accountId: string) {
209
+ // Option 1: Disable triggers (can resume later)
210
+ const triggers = await composio.triggers.getActiveTriggers({
211
+ connectedAccountIds: [accountId]
212
+ });
213
+ for (const trigger of triggers.items) {
214
+ await composio.triggers.disable(trigger.triggerId);
215
+ }
216
+
217
+ // Option 2: Delete triggers (permanent)
218
+ for (const trigger of triggers.items) {
219
+ await composio.triggers.delete(trigger.triggerId);
220
+ }
221
+ }
222
+ ```
223
+
224
+ ### Account Reconnection
225
+
226
+ ```typescript
227
+ // When user reconnects
228
+ async function handleAccountReconnect(accountId: string) {
229
+ const triggers = await composio.triggers.getActiveTriggers({
230
+ connectedAccountIds: [accountId],
231
+ status: 'disabled'
232
+ });
233
+
234
+ for (const trigger of triggers.items) {
235
+ await composio.triggers.enable(trigger.triggerId);
236
+ }
237
+ }
238
+ ```
239
+
240
+ ### Subscription Management
241
+
242
+ ```typescript
243
+ // Downgrade: disable non-essential triggers
244
+ async function handleDowngrade(userId: string) {
245
+ const triggers = await composio.triggers.getActiveTriggers({
246
+ userIds: [userId],
247
+ triggerSlugs: ['NON_ESSENTIAL_TRIGGER']
248
+ });
249
+
250
+ for (const trigger of triggers.items) {
251
+ await composio.triggers.disable(trigger.triggerId);
252
+ }
253
+ }
254
+
255
+ // Upgrade: enable all triggers
256
+ async function handleUpgrade(userId: string) {
257
+ const triggers = await composio.triggers.getActiveTriggers({
258
+ userIds: [userId],
259
+ status: 'disabled'
260
+ });
261
+
262
+ for (const trigger of triggers.items) {
263
+ await composio.triggers.enable(trigger.triggerId);
264
+ }
265
+ }
266
+ ```
267
+
268
+ ## Key Points
269
+
270
+ - **Disable vs Delete** - Disable pauses events, delete is permanent
271
+ - **Update config** - Change trigger settings without recreating
272
+ - **Filter getActiveTriggers** - Use multiple filters to narrow results
273
+ - **Batch operations** - Loop through triggers for bulk enable/disable
274
+ - **Handle disconnects** - Disable or delete triggers when accounts disconnect
275
+ - **Status check** - Always verify trigger status before operations
@@ -0,0 +1,173 @@
1
+ ---
2
+ title: Subscribe to Trigger Events
3
+ impact: MEDIUM
4
+ description: Listen to real-time trigger events during development using subscribe()
5
+ tags: [triggers, events, subscribe, development, real-time]
6
+ ---
7
+
8
+ # Subscribe to Trigger Events
9
+
10
+ Use `subscribe()` to listen to trigger events in **development only**. For production, use webhooks via `listenToTriggers()`.
11
+
12
+ ## Development vs Production
13
+
14
+ **Development (subscribe):**
15
+ - Real-time event listening in CLI/local development
16
+ - Simple callback function
17
+ - No webhook URLs needed
18
+ - **Do NOT use in production**
19
+
20
+ **Production (webhooks):**
21
+ - Scalable webhook delivery
22
+ - Reliable event processing
23
+ - Use `listenToTriggers()` with Express/HTTP server
24
+ - See triggers-webhook.md
25
+
26
+ ## Basic Subscribe
27
+
28
+ ```typescript
29
+ import { Composio } from '@composio/core';
30
+
31
+ const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
32
+
33
+ // Subscribe to trigger events
34
+ const unsubscribe = await composio.triggers.subscribe((event) => {
35
+ console.log('Trigger received:', event.triggerSlug);
36
+ console.log('Payload:', event.payload);
37
+ console.log('User:', event.userId);
38
+ console.log('Account:', event.connectedAccountId);
39
+ });
40
+
41
+ // Keep process alive
42
+ console.log('Listening for events... Press Ctrl+C to stop');
43
+ ```
44
+
45
+ ## Subscribe with Filters
46
+
47
+ ```typescript
48
+ // Filter by trigger slug
49
+ await composio.triggers.subscribe(
50
+ (event) => {
51
+ console.log('Gmail message:', event.payload);
52
+ },
53
+ { triggerSlugs: ['GMAIL_NEW_GMAIL_MESSAGE'] }
54
+ );
55
+
56
+ // Filter by user ID
57
+ await composio.triggers.subscribe(
58
+ (event) => {
59
+ console.log('Event for user_123:', event.payload);
60
+ },
61
+ { userIds: ['user_123'] }
62
+ );
63
+
64
+ // Filter by connected account
65
+ await composio.triggers.subscribe(
66
+ (event) => {
67
+ console.log('Event from specific account:', event.payload);
68
+ },
69
+ { connectedAccountIds: ['conn_abc123'] }
70
+ );
71
+
72
+ // Combine filters
73
+ await composio.triggers.subscribe(
74
+ (event) => {
75
+ console.log('Filtered event:', event.payload);
76
+ },
77
+ {
78
+ triggerSlugs: ['SLACK_NEW_MESSAGE'],
79
+ userIds: ['user_123'],
80
+ connectedAccountIds: ['conn_def456']
81
+ }
82
+ );
83
+ ```
84
+
85
+ ## Event Payload Structure
86
+
87
+ ```typescript
88
+ interface TriggerEvent {
89
+ triggerSlug: string; // 'GMAIL_NEW_GMAIL_MESSAGE'
90
+ userId: string; // 'user_123'
91
+ connectedAccountId: string; // 'conn_abc123'
92
+ payload: {
93
+ // Trigger-specific data
94
+ // Example for Gmail:
95
+ // { id: 'msg_123', subject: 'Hello', from: 'user@example.com' }
96
+ };
97
+ metadata: {
98
+ triggerId: string;
99
+ timestamp: string;
100
+ };
101
+ }
102
+ ```
103
+
104
+ ## Unsubscribe
105
+
106
+ ```typescript
107
+ const unsubscribe = await composio.triggers.subscribe((event) => {
108
+ console.log('Event:', event);
109
+ });
110
+
111
+ // Stop listening
112
+ await unsubscribe();
113
+ console.log('Unsubscribed from all triggers');
114
+ ```
115
+
116
+ ## Development Pattern
117
+
118
+ ```typescript
119
+ async function devMode() {
120
+ console.log('Starting development mode...');
121
+
122
+ // Subscribe to events
123
+ const unsubscribe = await composio.triggers.subscribe((event) => {
124
+ console.log(`\n[${event.triggerSlug}]`);
125
+ console.log('User:', event.userId);
126
+ console.log('Payload:', JSON.stringify(event.payload, null, 2));
127
+ });
128
+
129
+ // Handle shutdown
130
+ process.on('SIGINT', async () => {
131
+ console.log('\nShutting down...');
132
+ await unsubscribe();
133
+ process.exit(0);
134
+ });
135
+
136
+ console.log('Listening for events. Press Ctrl+C to stop.');
137
+ }
138
+
139
+ devMode();
140
+ ```
141
+
142
+ ## Migration to Production
143
+
144
+ Development (subscribe):
145
+ ```typescript
146
+ // Development only
147
+ await composio.triggers.subscribe((event) => {
148
+ console.log(event);
149
+ });
150
+ ```
151
+
152
+ Production (webhooks):
153
+ ```typescript
154
+ // Production ready
155
+ import express from 'express';
156
+
157
+ const app = express();
158
+ const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
159
+
160
+ await composio.triggers.listenToTriggers(app, (event) => {
161
+ console.log('Webhook received:', event);
162
+ });
163
+
164
+ app.listen(3000);
165
+ ```
166
+
167
+ ## Key Points
168
+
169
+ - **Development only** - Never use subscribe() in production
170
+ - **Use webhooks for production** - More reliable and scalable
171
+ - **Filter events** - Reduce noise with triggerSlugs, userIds, connectedAccountIds
172
+ - **Cleanup** - Always call unsubscribe() when done
173
+ - **Long-running process** - Keep Node.js process alive to receive events
@@ -0,0 +1,227 @@
1
+ ---
2
+ title: Verify Webhooks for Production (Recommended)
3
+ impact: CRITICAL
4
+ description: Use webhook verification for reliable, scalable event delivery in production
5
+ tags: [triggers, webhooks, production, security, verification, hmac]
6
+ ---
7
+
8
+ # Webhook Verification for Production
9
+
10
+ Webhooks are the **production-ready** way to receive trigger events. Provides reliable delivery, automatic retries, and works with serverless.
11
+
12
+ ## Setup with listenToTriggers()
13
+
14
+ ```typescript
15
+ import express from 'express';
16
+ import { Composio } from '@composio/core';
17
+
18
+ const app = express();
19
+ const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
20
+
21
+ // Automatic webhook verification and handling
22
+ await composio.triggers.listenToTriggers(app, async (event) => {
23
+ console.log('Webhook:', event.triggerSlug);
24
+ console.log('User:', event.userId);
25
+ console.log('Payload:', event.payload);
26
+
27
+ await handleEvent(event);
28
+ });
29
+
30
+ app.listen(3000);
31
+ ```
32
+
33
+ **What it does:**
34
+ - Creates `/composio/triggers` endpoint
35
+ - Verifies webhook signatures automatically
36
+ - Parses and validates payloads
37
+ - Calls callback with verified events
38
+
39
+ ## Manual Verification
40
+
41
+ For custom endpoints:
42
+
43
+ ```typescript
44
+ import { verifyWebhookSignature } from '@composio/core';
45
+
46
+ app.post('/custom/webhook', express.raw({ type: 'application/json' }), (req, res) => {
47
+ const signature = req.headers['x-composio-signature'];
48
+ const payload = req.body;
49
+
50
+ const isValid = verifyWebhookSignature(
51
+ payload,
52
+ signature,
53
+ process.env.COMPOSIO_WEBHOOK_SECRET
54
+ );
55
+
56
+ if (!isValid) {
57
+ return res.status(401).json({ error: 'Invalid signature' });
58
+ }
59
+
60
+ const event = JSON.parse(payload);
61
+ handleEvent(event);
62
+ res.json({ success: true });
63
+ });
64
+ ```
65
+
66
+ ## Event Structure
67
+
68
+ ```typescript
69
+ interface WebhookEvent {
70
+ triggerSlug: string;
71
+ userId: string;
72
+ connectedAccountId: string;
73
+ payload: object;
74
+ metadata: {
75
+ triggerId: string;
76
+ timestamp: string;
77
+ webhookId: string;
78
+ };
79
+ }
80
+ ```
81
+
82
+ ## Processing Patterns
83
+
84
+ ### Route by Trigger Type
85
+
86
+ ```typescript
87
+ async function handleEvent(event: WebhookEvent) {
88
+ switch (event.triggerSlug) {
89
+ case 'GMAIL_NEW_GMAIL_MESSAGE':
90
+ await handleGmail(event.userId, event.payload);
91
+ break;
92
+ case 'GITHUB_COMMIT_EVENT':
93
+ await handleGithub(event.userId, event.payload);
94
+ break;
95
+ case 'SLACK_NEW_MESSAGE':
96
+ await handleSlack(event.userId, event.payload);
97
+ break;
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### With Error Handling
103
+
104
+ ```typescript
105
+ await composio.triggers.listenToTriggers(app, async (event) => {
106
+ try {
107
+ await processEvent(event);
108
+ } catch (error) {
109
+ console.error('Error:', error);
110
+ // Don't throw - acknowledge webhook received
111
+ }
112
+ });
113
+ ```
114
+
115
+ ### With Idempotency
116
+
117
+ ```typescript
118
+ await composio.triggers.listenToTriggers(app, async (event) => {
119
+ const webhookId = event.metadata.webhookId;
120
+
121
+ // Check if already processed
122
+ if (await isProcessed(webhookId)) {
123
+ console.log('Duplicate webhook, skipping');
124
+ return;
125
+ }
126
+
127
+ // Mark as processed
128
+ await markProcessed(webhookId);
129
+
130
+ // Process event
131
+ await handleEvent(event);
132
+ });
133
+ ```
134
+
135
+ ## Configuration
136
+
137
+ Set webhook URL in Composio dashboard:
138
+
139
+ 1. Go to [platform.composio.dev](https://platform.composio.dev)
140
+ 2. **Settings** > **Webhooks**
141
+ 3. Set URL: `https://your-app.com/composio/triggers`
142
+
143
+ **Requirements:**
144
+ - HTTPS URL (publicly accessible)
145
+ - Respond with 200 OK within 30 seconds
146
+ - Handle concurrent requests
147
+
148
+ ## Testing Locally
149
+
150
+ Use ngrok:
151
+
152
+ ```bash
153
+ ngrok http 3000
154
+ # Use https://abc123.ngrok.io/composio/triggers in dashboard
155
+ ```
156
+
157
+ ## Security
158
+
159
+ - **Always verify signatures** - Use `listenToTriggers()` or manual verification
160
+ - **HTTPS only** - Never HTTP in production
161
+ - **Keep secrets secure** - Environment variables only
162
+ - **Validate payloads** - Check required fields
163
+ - **Handle errors gracefully** - Log, don't throw
164
+ - **Implement idempotency** - Use webhookId to deduplicate
165
+
166
+ ## Common Issues
167
+
168
+ **401 Unauthorized:**
169
+ - Invalid signature - check webhook secret
170
+ - Wrong secret - verify environment variable
171
+
172
+ **Timeout:**
173
+ - Processing > 30 seconds - move to background queue
174
+ - Return 200 OK immediately
175
+
176
+ **Duplicates:**
177
+ - Webhooks may deliver multiple times
178
+ - Use webhookId for idempotency
179
+
180
+ ## Complete Example
181
+
182
+ ```typescript
183
+ import express from 'express';
184
+ import { Composio } from '@composio/core';
185
+
186
+ const app = express();
187
+ const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
188
+
189
+ await composio.triggers.listenToTriggers(app, async (event) => {
190
+ try {
191
+ // Idempotency check
192
+ if (await isProcessed(event.metadata.webhookId)) {
193
+ return;
194
+ }
195
+
196
+ // Process
197
+ switch (event.triggerSlug) {
198
+ case 'GMAIL_NEW_GMAIL_MESSAGE':
199
+ await sendNotification(event.userId, {
200
+ title: 'New Email',
201
+ body: event.payload.subject
202
+ });
203
+ break;
204
+ }
205
+
206
+ // Mark processed
207
+ await markProcessed(event.metadata.webhookId);
208
+ } catch (error) {
209
+ console.error('Error:', error);
210
+ }
211
+ });
212
+
213
+ app.get('/health', (req, res) => res.json({ status: 'ok' }));
214
+
215
+ app.listen(3000, () => {
216
+ console.log('Webhook server running on port 3000');
217
+ });
218
+ ```
219
+
220
+ ## Key Points
221
+
222
+ - **Production standard** - Use webhooks, not subscribe()
223
+ - **listenToTriggers()** - Handles verification automatically
224
+ - **HTTPS required** - Security requirement
225
+ - **Quick response** - Return 200 OK within 30s
226
+ - **Idempotency** - Handle duplicates with webhookId
227
+ - **Error handling** - Log but don't throw