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.
- package/.agents/skills/agent-browser/SKILL.md +55 -0
- package/.agents/skills/agentmail/SKILL.md +282 -0
- package/.agents/skills/agentmail/references/webhooks.md +220 -0
- package/.agents/skills/agentmail/references/websockets.md +263 -0
- package/.agents/skills/ai-elements/SKILL.md +160 -0
- package/.agents/skills/ai-elements/references/agent.md +134 -0
- package/.agents/skills/ai-elements/references/artifact.md +84 -0
- package/.agents/skills/ai-elements/references/attachments.md +190 -0
- package/.agents/skills/ai-elements/references/audio-player.md +134 -0
- package/.agents/skills/ai-elements/references/canvas.md +34 -0
- package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
- package/.agents/skills/ai-elements/references/code-block.md +170 -0
- package/.agents/skills/ai-elements/references/commit.md +177 -0
- package/.agents/skills/ai-elements/references/confirmation.md +262 -0
- package/.agents/skills/ai-elements/references/connection.md +34 -0
- package/.agents/skills/ai-elements/references/context.md +126 -0
- package/.agents/skills/ai-elements/references/controls.md +32 -0
- package/.agents/skills/ai-elements/references/conversation.md +224 -0
- package/.agents/skills/ai-elements/references/edge.md +52 -0
- package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
- package/.agents/skills/ai-elements/references/file-tree.md +72 -0
- package/.agents/skills/ai-elements/references/image.md +146 -0
- package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
- package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
- package/.agents/skills/ai-elements/references/message.md +237 -0
- package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
- package/.agents/skills/ai-elements/references/model-selector.md +112 -0
- package/.agents/skills/ai-elements/references/node.md +73 -0
- package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
- package/.agents/skills/ai-elements/references/package-info.md +95 -0
- package/.agents/skills/ai-elements/references/panel.md +33 -0
- package/.agents/skills/ai-elements/references/persona.md +166 -0
- package/.agents/skills/ai-elements/references/plan.md +79 -0
- package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
- package/.agents/skills/ai-elements/references/queue.md +172 -0
- package/.agents/skills/ai-elements/references/reasoning.md +238 -0
- package/.agents/skills/ai-elements/references/sandbox.md +129 -0
- package/.agents/skills/ai-elements/references/schema-display.md +102 -0
- package/.agents/skills/ai-elements/references/shimmer.md +48 -0
- package/.agents/skills/ai-elements/references/snippet.md +64 -0
- package/.agents/skills/ai-elements/references/sources.md +209 -0
- package/.agents/skills/ai-elements/references/speech-input.md +163 -0
- package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
- package/.agents/skills/ai-elements/references/suggestion.md +124 -0
- package/.agents/skills/ai-elements/references/task.md +222 -0
- package/.agents/skills/ai-elements/references/terminal.md +103 -0
- package/.agents/skills/ai-elements/references/test-results.md +157 -0
- package/.agents/skills/ai-elements/references/tool.md +285 -0
- package/.agents/skills/ai-elements/references/toolbar.md +32 -0
- package/.agents/skills/ai-elements/references/transcription.md +120 -0
- package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
- package/.agents/skills/ai-elements/references/web-preview.md +200 -0
- package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
- package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
- package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
- package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
- package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
- package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
- package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
- package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
- package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
- package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
- package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
- package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
- package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
- package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
- package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
- package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
- package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
- package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
- package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
- package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
- package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
- package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
- package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
- package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
- package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
- package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
- package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
- package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
- package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
- package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
- package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
- package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
- package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
- package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
- package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
- package/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
- package/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/.agents/skills/chat-sdk/SKILL.md +240 -0
- package/.agents/skills/composio/AGENTS.md +404 -0
- package/.agents/skills/composio/SKILL.md +55 -0
- package/.agents/skills/composio/rules/_template.md +38 -0
- package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
- package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
- package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
- package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
- package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
- package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
- package/.agents/skills/composio/rules/app-modifiers.md +148 -0
- package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
- package/.agents/skills/composio/rules/app-toolkits.md +184 -0
- package/.agents/skills/composio/rules/app-user-context.md +222 -0
- package/.agents/skills/composio/rules/building-with-composio.md +134 -0
- package/.agents/skills/composio/rules/composio-cli.md +223 -0
- package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
- package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
- package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
- package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
- package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
- package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
- package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
- package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
- package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
- package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
- package/.agents/skills/composio/rules/tr-session-config.md +172 -0
- package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
- package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
- package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
- package/.agents/skills/composio/rules/triggers-create.md +246 -0
- package/.agents/skills/composio/rules/triggers-manage.md +275 -0
- package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
- package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
- package/.agents/skills/create-auth-skill/SKILL.md +321 -0
- package/.agents/skills/design-md/README.md +34 -0
- package/.agents/skills/design-md/SKILL.md +172 -0
- package/.agents/skills/design-md/examples/DESIGN.md +154 -0
- package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/.agents/skills/find-skills/SKILL.md +142 -0
- package/.agents/skills/firecrawl/SKILL.md +321 -0
- package/.agents/skills/firecrawl/rules/install.md +85 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/.agents/skills/frontend-design/SKILL.md +55 -0
- package/.agents/skills/linkup-search/SKILL.md +298 -0
- package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agents/skills/mobile-android-design/SKILL.md +101 -0
- package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
- package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
- package/.agents/skills/mobile-android-design/references/details.md +337 -0
- package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
- package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
- package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
- package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
- package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
- package/.agents/skills/neon-drizzle/SKILL.md +81 -0
- package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
- package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
- package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
- package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
- package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
- package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
- package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
- package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
- package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
- package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
- package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
- package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
- package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
- package/.agents/skills/neon-postgres/SKILL.md +376 -0
- package/.agents/skills/next-best-practices/SKILL.md +152 -0
- package/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/.agents/skills/next-best-practices/bundling.md +180 -0
- package/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/.agents/skills/next-best-practices/directives.md +73 -0
- package/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/.agents/skills/next-best-practices/font.md +245 -0
- package/.agents/skills/next-best-practices/functions.md +108 -0
- package/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/.agents/skills/next-best-practices/image.md +173 -0
- package/.agents/skills/next-best-practices/metadata.md +301 -0
- package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/.agents/skills/next-best-practices/scripts.md +141 -0
- package/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
- package/.agents/skills/playwright-cli/SKILL.md +404 -0
- package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/.agents/skills/playwright-cli/references/running-code.md +241 -0
- package/.agents/skills/playwright-cli/references/session-management.md +225 -0
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
- package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
- package/.agents/skills/playwright-cli/references/tracing.md +139 -0
- package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
- package/.agents/skills/prisma-client-api/SKILL.md +216 -0
- package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
- package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
- package/.agents/skills/prisma-client-api/references/filters.md +256 -0
- package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
- package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
- package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
- package/.agents/skills/prisma-client-api/references/relations.md +308 -0
- package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
- package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
- package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
- package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
- package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
- package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
- package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
- package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
- package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
- package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
- package/.agents/skills/prisma-postgres/SKILL.md +127 -0
- package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
- package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
- package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
- package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
- package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
- package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
- package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
- package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
- package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
- package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
- package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
- package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
- package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
- package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
- package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
- package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/.agents/skills/remotion-render/SKILL.md +212 -0
- package/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/.agents/skills/skill-creator/SKILL.md +485 -0
- package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
- package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
- package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
- package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
- package/.agents/skills/stripe-best-practices/references/security.md +109 -0
- package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
- package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.agents/skills/stripe-projects/SKILL.md +132 -0
- package/.agents/skills/supabase/CHANGELOG.md +35 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/supermemory/LICENSE +201 -0
- package/.agents/skills/supermemory/README.md +221 -0
- package/.agents/skills/supermemory/SKILL.md +172 -0
- package/.agents/skills/supermemory/references/api-reference.md +591 -0
- package/.agents/skills/supermemory/references/architecture.md +557 -0
- package/.agents/skills/supermemory/references/quickstart.md +293 -0
- package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
- package/.agents/skills/supermemory/references/use-cases.md +1033 -0
- package/.agents/skills/supermemory-cli/SKILL.md +490 -0
- package/.agents/skills/tdd/SKILL.md +108 -0
- package/.agents/skills/tdd/mocking.md +59 -0
- package/.agents/skills/tdd/refactoring.md +10 -0
- package/.agents/skills/tdd/tests.md +61 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
- package/.agents/skills/ui-ux-pro-max/data +1 -0
- package/.agents/skills/ui-ux-pro-max/scripts +1 -0
- package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
- package/.agents/skills/vercel-react-native-skills/README.md +165 -0
- package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
- package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
- package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
- package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +19 -4
- package/dist/cli/update.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/daytona-browser.tool.js +1 -1
- package/dist/tools/daytona-browser.tool.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Using Composio with Mastra Framework
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Use Tool Router for native tool integration and MCP for multi-tenant scenarios with Mastra agents
|
|
5
|
+
tags: [tool-router, mastra, framework, native-tools, mcp, integration]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Using Composio with Mastra Framework
|
|
9
|
+
|
|
10
|
+
Composio integrates with Mastra using **Tool Router sessions**. Use **native tools** (recommended) via `session.tools()`, or **MCP tools** when MCP protocol compliance is required.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @mastra/core@latest @ai-sdk/openai @composio/core@latest @composio/mastra@latest
|
|
16
|
+
|
|
17
|
+
# For MCP (optional)
|
|
18
|
+
npm install @mastra/mcp@latest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## ✅ Correct - Native Tools (Recommended)
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { Agent } from '@mastra/core/agent';
|
|
25
|
+
import { openai } from '@ai-sdk/openai';
|
|
26
|
+
import { Composio } from '@composio/core';
|
|
27
|
+
import { MastraProvider } from '@composio/mastra';
|
|
28
|
+
|
|
29
|
+
const composio = new Composio({
|
|
30
|
+
apiKey: process.env.COMPOSIO_API_KEY,
|
|
31
|
+
provider: new MastraProvider()
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
async function createAgent(userId: string, message: string) {
|
|
35
|
+
// Create Tool Router session
|
|
36
|
+
const session = await composio.create(userId, {
|
|
37
|
+
toolkits: ['gmail', 'slack'],
|
|
38
|
+
manageConnections: true
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const tools = await session.tools();
|
|
42
|
+
|
|
43
|
+
const agent = new Agent({
|
|
44
|
+
id: 'composio-agent',
|
|
45
|
+
name: 'Assistant',
|
|
46
|
+
instructions: `You have access to Gmail and Slack tools to assist the user with their query`,
|
|
47
|
+
model: openai('gpt-5.2'),
|
|
48
|
+
tools: tools
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return await agent.generate([{ role: 'user', content: message }]);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Key Points:**
|
|
56
|
+
- Create new sessions per request/conversation
|
|
57
|
+
- Use `session.tools()` for native Mastra tools
|
|
58
|
+
- Import `Composio` from `@composio/core` and `MastraProvider` from `@composio/mastra`
|
|
59
|
+
- Use `openai('gpt-5.2')` from `@ai-sdk/openai`
|
|
60
|
+
|
|
61
|
+
## ✅ Correct - MCP Tools
|
|
62
|
+
|
|
63
|
+
When MCP protocol compliance is required, expose Tool Router sessions as MCP servers:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { Agent } from '@mastra/core/agent';
|
|
67
|
+
import { openai } from '@ai-sdk/openai';
|
|
68
|
+
import { MCPClient } from '@mastra/mcp';
|
|
69
|
+
import { Composio } from '@composio/core';
|
|
70
|
+
import { MastraProvider } from '@composio/mastra';
|
|
71
|
+
|
|
72
|
+
const composio = new Composio({
|
|
73
|
+
apiKey: process.env.COMPOSIO_API_KEY,
|
|
74
|
+
provider: new MastraProvider()
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
async function createAgentWithMcp(userId: string, message: string) {
|
|
78
|
+
// 1. Create Tool Router session
|
|
79
|
+
const session = await composio.create(userId, {
|
|
80
|
+
toolkits: ['gmail', 'slack'],
|
|
81
|
+
manageConnections: true
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// 2. Create MCP client with session URL and headers
|
|
85
|
+
const mcpClient = new MCPClient({
|
|
86
|
+
id: `composio-${session.sessionId}`,
|
|
87
|
+
servers: {
|
|
88
|
+
composio: {
|
|
89
|
+
url: session.mcp.url,
|
|
90
|
+
requestInit: {
|
|
91
|
+
headers: session.mcp.headers
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// 3. Get tools via MCPClient
|
|
98
|
+
const tools = await mcpClient.listTools();
|
|
99
|
+
|
|
100
|
+
const agent = new Agent({
|
|
101
|
+
id: 'mcp-agent',
|
|
102
|
+
name: 'MCP Assistant',
|
|
103
|
+
instructions: 'You have access to Composio tools via MCP.',
|
|
104
|
+
model: openai('gpt-5.2'),
|
|
105
|
+
tools: tools
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
return await agent.generate([{ role: 'user', content: message }]);
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**For dynamic toolsets (multi-tenant):**
|
|
113
|
+
```typescript
|
|
114
|
+
// Create agent without tools in constructor
|
|
115
|
+
const agent = new Agent({
|
|
116
|
+
id: 'dynamic-agent',
|
|
117
|
+
model: openai('gpt-5.2'),
|
|
118
|
+
instructions: 'You help users with tasks.'
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Pass toolsets per request
|
|
122
|
+
const toolsets = await mcpClient.listToolsets();
|
|
123
|
+
const response = await agent.generate(message, { toolsets });
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## ❌ Incorrect Patterns
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// ❌ Don't bypass Tool Router sessions
|
|
130
|
+
const mcpClient = new MCPClient({
|
|
131
|
+
servers: { composio: { url: 'https://mcp.composio.dev' } }
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// ❌ Don't use non-existent methods
|
|
135
|
+
const tools = await session.mcpTools(); // Doesn't exist
|
|
136
|
+
const url = session.getMcpServerUrl(); // Doesn't exist
|
|
137
|
+
|
|
138
|
+
// ❌ Don't cache tools across users
|
|
139
|
+
const cachedTools = await session.tools();
|
|
140
|
+
// Reusing for different users...
|
|
141
|
+
|
|
142
|
+
// ❌ Don't forget MastraProvider
|
|
143
|
+
const composio = new Composio({ apiKey: key }); // Missing provider
|
|
144
|
+
|
|
145
|
+
// ❌ Don't use string format for model
|
|
146
|
+
model: 'openai/gpt-5.2' // Wrong - use openai('gpt-5.2')
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Key Principles
|
|
150
|
+
|
|
151
|
+
**Native Tools:**
|
|
152
|
+
- Use `session.tools()` - best performance, type-safe
|
|
153
|
+
- Recommended for most use cases
|
|
154
|
+
|
|
155
|
+
**MCP Tools:**
|
|
156
|
+
- Use `session.mcp.url` + `MCPClient` + `listTools()`/`listToolsets()`
|
|
157
|
+
- Only when MCP protocol compliance is required
|
|
158
|
+
- Still uses Tool Router sessions
|
|
159
|
+
|
|
160
|
+
**Session Management:**
|
|
161
|
+
- Always create sessions via `composio.create()`
|
|
162
|
+
- Create new sessions per request/conversation
|
|
163
|
+
- Don't cache tools or sessions across users
|
|
164
|
+
- Use `manageConnections: true`
|
|
165
|
+
|
|
166
|
+
**Setup:**
|
|
167
|
+
- Import `Composio` from `@composio/core`
|
|
168
|
+
- Import `MastraProvider` from `@composio/mastra`
|
|
169
|
+
- Use `openai('gpt-5.2')` from `@ai-sdk/openai`
|
|
170
|
+
- Mention tools in agent instructions
|
|
171
|
+
|
|
172
|
+
## When to Use
|
|
173
|
+
|
|
174
|
+
| Use Case | Approach | Method |
|
|
175
|
+
|----------|----------|--------|
|
|
176
|
+
| Most scenarios | Native Tools | `session.tools()` |
|
|
177
|
+
| MCP protocol required | MCP Tools | MCP client + `listTools()` |
|
|
178
|
+
| Multi-tenant dynamic auth | MCP Tools | MCP client + `listToolsets()` |
|
|
179
|
+
|
|
180
|
+
## Reference
|
|
181
|
+
|
|
182
|
+
- [Mastra Agents](https://mastra.ai/docs/agents/overview)
|
|
183
|
+
- [Mastra MCP](https://mastra.ai/docs/mcp/overview)
|
|
184
|
+
- [Composio Tool Router](https://docs.composio.dev/sdk/typescript/api/tool-router)
|
|
185
|
+
- [Tool Router Sessions](tr-session-lifecycle.md)
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use Native Tools for Performance and Control
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Prefer native tools over MCP for faster execution, full control, and modifier support
|
|
5
|
+
tags: [tool-router, mcp, integration, providers, performance]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Use Native Tools for Performance and Control
|
|
9
|
+
|
|
10
|
+
Tool Router supports two approaches: **Native tools (recommended)** for performance and control, or MCP clients for framework independence.
|
|
11
|
+
|
|
12
|
+
## ❌ Incorrect
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// DON'T: Use MCP when you need logging, modifiers, or performance
|
|
16
|
+
const composio = new Composio(); // No provider
|
|
17
|
+
const { mcp } = await composio.create('user_123', {
|
|
18
|
+
toolkits: ['gmail']
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const client = await createMCPClient({
|
|
22
|
+
transport: { type: 'http', url: mcp.url }
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// ❌ No control over tool execution
|
|
26
|
+
// ❌ No modifier support
|
|
27
|
+
// ❌ Extra API calls via MCP server
|
|
28
|
+
// ❌ Slower execution
|
|
29
|
+
const tools = await client.tools();
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
# DON'T: Use MCP when you need logging, modifiers, or performance
|
|
34
|
+
composio = Composio() # No provider
|
|
35
|
+
session = composio.create(user_id="user_123")
|
|
36
|
+
|
|
37
|
+
# ❌ No control over tool execution
|
|
38
|
+
# ❌ No modifier support
|
|
39
|
+
# ❌ Extra API calls via MCP server
|
|
40
|
+
# ❌ Slower execution
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## ✅ Correct - Use Native Tools (Recommended)
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// DO: Use native tools for performance and control
|
|
47
|
+
import { Composio } from '@composio/core';
|
|
48
|
+
import { VercelProvider } from '@composio/vercel';
|
|
49
|
+
|
|
50
|
+
// Add provider for native tools
|
|
51
|
+
const composio = new Composio({
|
|
52
|
+
provider: new VercelProvider()
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const session = await composio.create('user_123', {
|
|
56
|
+
toolkits: ['gmail', 'slack']
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// ✅ Direct tool execution (no MCP overhead)
|
|
60
|
+
// ✅ Full modifier support
|
|
61
|
+
// ✅ Logging and telemetry
|
|
62
|
+
// ✅ Faster performance
|
|
63
|
+
const tools = await session.tools();
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
# DO: Use native tools for performance and control
|
|
68
|
+
from composio import Composio
|
|
69
|
+
from composio_openai import OpenAIProvider
|
|
70
|
+
|
|
71
|
+
# Add provider for native tools
|
|
72
|
+
composio = Composio(provider=OpenAIProvider())
|
|
73
|
+
|
|
74
|
+
session = composio.create(
|
|
75
|
+
user_id="user_123",
|
|
76
|
+
toolkits=["gmail", "slack"]
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# ✅ Direct tool execution (no MCP overhead)
|
|
80
|
+
# ✅ Full modifier support
|
|
81
|
+
# ✅ Logging and telemetry
|
|
82
|
+
# ✅ Faster performance
|
|
83
|
+
tools = session.tools()
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## ✅ Correct - Native Tools with Modifiers
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// DO: Use modifiers for logging and control
|
|
90
|
+
import { Composio } from '@composio/core';
|
|
91
|
+
import { VercelProvider } from '@composio/vercel';
|
|
92
|
+
import { SessionExecuteMetaModifiers } from '@composio/core';
|
|
93
|
+
|
|
94
|
+
const composio = new Composio({
|
|
95
|
+
provider: new VercelProvider()
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const session = await composio.create('user_123', {
|
|
99
|
+
toolkits: ['gmail']
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Add modifiers for logging during execution
|
|
103
|
+
const modifiers: SessionExecuteMetaModifiers = {
|
|
104
|
+
beforeExecute: ({ toolSlug, sessionId, params }) => {
|
|
105
|
+
console.log(`[${sessionId}] Executing ${toolSlug}`);
|
|
106
|
+
console.log('Parameters:', JSON.stringify(params, null, 2));
|
|
107
|
+
return params;
|
|
108
|
+
},
|
|
109
|
+
afterExecute: ({ toolSlug, sessionId, result }) => {
|
|
110
|
+
console.log(`[${sessionId}] Completed ${toolSlug}`);
|
|
111
|
+
console.log('Success:', result.successful);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const tools = await session.tools(modifiers);
|
|
117
|
+
|
|
118
|
+
// Now when agent executes tools, you see:
|
|
119
|
+
// [session_abc123] Executing GMAIL_FETCH_EMAILS
|
|
120
|
+
// Parameters: { "maxResults": 10, "query": "from:user@example.com" }
|
|
121
|
+
// [session_abc123] Completed GMAIL_FETCH_EMAILS
|
|
122
|
+
// Success: true
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// Advanced: Add telemetry and schema customization
|
|
127
|
+
const advancedModifiers: SessionExecuteMetaModifiers = {
|
|
128
|
+
beforeExecute: ({ toolSlug, sessionId, params }) => {
|
|
129
|
+
// Send to analytics
|
|
130
|
+
analytics.track('tool_execution_started', {
|
|
131
|
+
tool: toolSlug,
|
|
132
|
+
session: sessionId,
|
|
133
|
+
params
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// Validate parameters
|
|
137
|
+
if (!params) {
|
|
138
|
+
throw new Error(`Missing parameters for ${toolSlug}`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return params;
|
|
142
|
+
},
|
|
143
|
+
afterExecute: ({ toolSlug, sessionId, result }) => {
|
|
144
|
+
// Track completion and duration
|
|
145
|
+
analytics.track('tool_execution_completed', {
|
|
146
|
+
tool: toolSlug,
|
|
147
|
+
session: sessionId,
|
|
148
|
+
success: result.successful
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Handle errors
|
|
152
|
+
if (!result.successful) {
|
|
153
|
+
console.error(`Tool ${toolSlug} failed:`, result.error);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return result;
|
|
157
|
+
},
|
|
158
|
+
modifySchema: ({ toolSlug, schema }) => {
|
|
159
|
+
// Simplify schemas for better AI understanding
|
|
160
|
+
if (toolSlug === 'GMAIL_SEND_EMAIL') {
|
|
161
|
+
// Remove optional fields for simpler usage
|
|
162
|
+
delete schema.parameters.properties.cc;
|
|
163
|
+
delete schema.parameters.properties.bcc;
|
|
164
|
+
}
|
|
165
|
+
return schema;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
# DO: Use modifiers for logging, validation, and telemetry
|
|
172
|
+
from composio import Composio
|
|
173
|
+
from composio_openai import OpenAIProvider
|
|
174
|
+
|
|
175
|
+
composio = Composio(provider=OpenAIProvider())
|
|
176
|
+
|
|
177
|
+
session = composio.create(
|
|
178
|
+
user_id="user_123",
|
|
179
|
+
toolkits=["gmail"]
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
# Add modifiers for full control over tool execution
|
|
183
|
+
def before_execute(context):
|
|
184
|
+
print(f"[{context['session_id']}] Executing {context['tool_slug']}")
|
|
185
|
+
print(f"Parameters: {context['params']}")
|
|
186
|
+
# Add custom validation, logging, telemetry
|
|
187
|
+
return context['params']
|
|
188
|
+
|
|
189
|
+
def after_execute(context):
|
|
190
|
+
print(f"[{context['session_id']}] Completed {context['tool_slug']}")
|
|
191
|
+
print(f"Result: {context['result']}")
|
|
192
|
+
# Transform results, handle errors, track metrics
|
|
193
|
+
return context['result']
|
|
194
|
+
|
|
195
|
+
tools = session.tools(
|
|
196
|
+
modifiers={
|
|
197
|
+
"before_execute": before_execute,
|
|
198
|
+
"after_execute": after_execute
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Performance Comparison
|
|
204
|
+
|
|
205
|
+
| Feature | Native Tools | MCP |
|
|
206
|
+
|---------|-------------|-----|
|
|
207
|
+
| Execution Speed | **Fast** (direct) | Slower (extra HTTP calls) |
|
|
208
|
+
| API Overhead | **Minimal** | Additional MCP server roundtrips |
|
|
209
|
+
| Modifier Support | **✅ Full support** | ❌ Not available |
|
|
210
|
+
| Logging & Telemetry | **✅ beforeExecute/afterExecute** | ❌ Limited visibility |
|
|
211
|
+
| Schema Customization | **✅ modifySchema** | ❌ Not available |
|
|
212
|
+
| Framework Lock-in | Yes (provider-specific) | No (universal) |
|
|
213
|
+
|
|
214
|
+
## When to Use Each
|
|
215
|
+
|
|
216
|
+
### ✅ Use Native Tools (Recommended) When:
|
|
217
|
+
- **Performance matters**: Direct execution, no MCP overhead
|
|
218
|
+
- **Need logging**: Track tool execution, parameters, results
|
|
219
|
+
- **Need control**: Validate inputs, transform outputs, handle errors
|
|
220
|
+
- **Production apps**: Telemetry, monitoring, debugging
|
|
221
|
+
- **Single framework**: You're committed to one AI framework
|
|
222
|
+
|
|
223
|
+
### Use MCP Only When:
|
|
224
|
+
- **Multiple frameworks**: Switching between Claude, Vercel AI, LangChain
|
|
225
|
+
- **Framework flexibility**: Not committed to one provider yet
|
|
226
|
+
- **Prototyping**: Quick testing across different AI tools
|
|
227
|
+
|
|
228
|
+
## Modifier Use Cases
|
|
229
|
+
|
|
230
|
+
With native tools, modifiers enable:
|
|
231
|
+
|
|
232
|
+
1. **Logging**: Track every tool execution with parameters and results
|
|
233
|
+
2. **Telemetry**: Send metrics to Datadog, New Relic, etc.
|
|
234
|
+
3. **Validation**: Check parameters before execution
|
|
235
|
+
4. **Error Handling**: Catch and transform errors
|
|
236
|
+
5. **Rate Limiting**: Control tool execution frequency
|
|
237
|
+
6. **Caching**: Cache results for repeated calls
|
|
238
|
+
7. **Schema Customization**: Simplify schemas for specific AI models
|
|
239
|
+
|
|
240
|
+
## Key Insight
|
|
241
|
+
|
|
242
|
+
**Native tools eliminate the MCP server middleman**, resulting in faster execution and giving you full control over the tool execution lifecycle. The only trade-off is framework lock-in, which is acceptable in production applications where you've already chosen your AI framework.
|
|
243
|
+
|
|
244
|
+
## Reference
|
|
245
|
+
|
|
246
|
+
- [Session Modifiers](https://docs.composio.dev/sdk/typescript/api/tool-router#using-modifiers)
|
|
247
|
+
- [SessionExecuteMetaModifiers](https://docs.composio.dev/sdk/typescript/api/tool-router#sessionexecutemetamodifiers-v040)
|
|
248
|
+
- [Tool Router Performance](https://docs.composio.dev/sdk/typescript/api/tool-router#best-practices)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Create Basic Tool Router Sessions
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Essential pattern for initializing Tool Router sessions with proper user isolation
|
|
5
|
+
tags: [tool-router, session, initialization, agents]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Create Basic Tool Router Sessions
|
|
9
|
+
|
|
10
|
+
Always create isolated Tool Router sessions per user to ensure proper data isolation and scoped tool access.
|
|
11
|
+
|
|
12
|
+
> 📖 **Before you begin:** Make sure you have set up your API keys. See [Setting Up API Keys](./setup-api-keys.md) for instructions.
|
|
13
|
+
|
|
14
|
+
> **⚠️ IMPORTANT:** Do NOT make up or guess toolkit names. Always verify toolkit slugs before using them:
|
|
15
|
+
> - Use `composio manage toolkits list` to discover and `composio manage toolkits info "..."` to view toolkit details (CLI)
|
|
16
|
+
> - Use `composio.toolkits.get()` to discover toolkits programmatically (SDK)
|
|
17
|
+
>
|
|
18
|
+
> See [Composio CLI Reference](./composio-cli.md) for discovery commands.
|
|
19
|
+
|
|
20
|
+
## ❌ Incorrect
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
// DON'T: Using shared session for multiple users
|
|
24
|
+
const sharedSession = await composio.create('default', {
|
|
25
|
+
toolkits: ['gmail']
|
|
26
|
+
});
|
|
27
|
+
// All users share the same session - security risk!
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
# DON'T: Using shared session for multiple users
|
|
32
|
+
shared_session = composio.create(
|
|
33
|
+
user_id="default",
|
|
34
|
+
toolkits=["gmail"]
|
|
35
|
+
)
|
|
36
|
+
# All users share the same session - security risk!
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## ✅ Correct
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
// DO: Create per-user sessions for isolation
|
|
43
|
+
import { Composio } from '@composio/core';
|
|
44
|
+
|
|
45
|
+
const composio = new Composio();
|
|
46
|
+
|
|
47
|
+
// Each user gets their own isolated session
|
|
48
|
+
const session = await composio.create('user_123', {
|
|
49
|
+
toolkits: ['gmail', 'slack']
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
console.log('Session ID:', session.sessionId);
|
|
53
|
+
console.log('MCP URL:', session.mcp.url);
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
# DO: Create per-user sessions for isolation
|
|
58
|
+
from composio import Composio
|
|
59
|
+
|
|
60
|
+
composio = Composio()
|
|
61
|
+
|
|
62
|
+
# Each user gets their own isolated session
|
|
63
|
+
session = composio.create(
|
|
64
|
+
user_id="user_123",
|
|
65
|
+
toolkits=["gmail", "slack"]
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
print(f"Session ID: {session.session_id}")
|
|
69
|
+
print(f"MCP URL: {session.mcp.url}")
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Key Points
|
|
73
|
+
|
|
74
|
+
- **User Isolation**: Each user must have their own session
|
|
75
|
+
- **Toolkit Scoping**: Specify which toolkits the session can access
|
|
76
|
+
- **Session ID**: Store the session ID to retrieve it later
|
|
77
|
+
- **MCP URL**: Use this URL with any MCP-compatible AI framework
|
|
78
|
+
|
|
79
|
+
## Reference
|
|
80
|
+
|
|
81
|
+
- [Tool Router API Docs](https://docs.composio.dev/sdk/typescript/api/tool-router)
|
|
82
|
+
- [Creating Sessions](https://docs.composio.dev/sdk/typescript/api/tool-router#creating-sessions)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Configure Tool Router Sessions Properly
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
description: Use session configuration options to control toolkit access, tools, and behavior
|
|
5
|
+
tags: [tool-router, configuration, toolkits, tools, session]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Configure Tool Router Sessions Properly
|
|
9
|
+
|
|
10
|
+
Tool Router sessions support rich configuration for fine-grained control over toolkit and tool access.
|
|
11
|
+
|
|
12
|
+
> **⚠️ IMPORTANT:** Do NOT make up or guess toolkit or tool names. Always verify slugs before using them:
|
|
13
|
+
> - Use `composio manage toolkits list` / `composio manage toolkits info "..."` to discover and view toolkit details (CLI)
|
|
14
|
+
> - Use `composio manage tools list --toolkits "..."` / `composio manage tools info "..."` to discover and view tool schemas (CLI)
|
|
15
|
+
> - Use `composio.tools.get()` to discover tools programmatically (SDK)
|
|
16
|
+
>
|
|
17
|
+
> See [Composio CLI Reference](./composio-cli.md) for discovery commands.
|
|
18
|
+
|
|
19
|
+
## ❌ Incorrect
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// DON'T: Enable all toolkits without restrictions
|
|
23
|
+
const session = await composio.create('user_123', {
|
|
24
|
+
// No toolkit restrictions - exposes everything!
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// DON'T: Mix incompatible configuration patterns
|
|
28
|
+
const session = await composio.create('user_123', {
|
|
29
|
+
toolkits: { enable: ['gmail'] },
|
|
30
|
+
toolkits: ['slack'] // This will override the first one!
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
# DON'T: Enable all toolkits without restrictions
|
|
36
|
+
session = composio.create(
|
|
37
|
+
user_id="user_123"
|
|
38
|
+
# No toolkit restrictions - exposes everything!
|
|
39
|
+
)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## ✅ Correct - Basic Configuration
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// DO: Explicitly specify toolkits
|
|
46
|
+
import { Composio } from '@composio/core';
|
|
47
|
+
|
|
48
|
+
const composio = new Composio();
|
|
49
|
+
|
|
50
|
+
// Simple toolkit list
|
|
51
|
+
const session = await composio.create('user_123', {
|
|
52
|
+
toolkits: ['gmail', 'slack', 'github']
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Explicit enable
|
|
56
|
+
const session2 = await composio.create('user_123', {
|
|
57
|
+
toolkits: { enable: ['gmail', 'slack'] }
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Disable specific toolkits (enable all others)
|
|
61
|
+
const session3 = await composio.create('user_123', {
|
|
62
|
+
toolkits: { disable: ['calendar'] }
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
# DO: Explicitly specify toolkits
|
|
68
|
+
from composio import Composio
|
|
69
|
+
|
|
70
|
+
composio = Composio()
|
|
71
|
+
|
|
72
|
+
# Simple toolkit list
|
|
73
|
+
session = composio.create(
|
|
74
|
+
user_id="user_123",
|
|
75
|
+
toolkits=["gmail", "slack", "github"]
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# Explicit enable
|
|
79
|
+
session2 = composio.create(
|
|
80
|
+
user_id="user_123",
|
|
81
|
+
toolkits={"enable": ["gmail", "slack"]}
|
|
82
|
+
)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## ✅ Correct - Fine-Grained Tool Control
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
// DO: Control specific tools per toolkit
|
|
89
|
+
const session = await composio.create('user_123', {
|
|
90
|
+
toolkits: ['gmail', 'slack'],
|
|
91
|
+
tools: {
|
|
92
|
+
// Only allow reading emails, not sending
|
|
93
|
+
gmail: ['GMAIL_FETCH_EMAILS', 'GMAIL_SEARCH_EMAILS'],
|
|
94
|
+
|
|
95
|
+
// Or use enable/disable
|
|
96
|
+
slack: {
|
|
97
|
+
disable: ['SLACK_DELETE_MESSAGE'] // Safety: prevent deletions
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
# DO: Control specific tools per toolkit
|
|
105
|
+
session = composio.create(
|
|
106
|
+
user_id="user_123",
|
|
107
|
+
toolkits=["gmail", "slack"],
|
|
108
|
+
tools={
|
|
109
|
+
# Only allow reading emails, not sending
|
|
110
|
+
"gmail": ["GMAIL_FETCH_EMAILS", "GMAIL_SEARCH_EMAILS"],
|
|
111
|
+
|
|
112
|
+
# Or use enable/disable
|
|
113
|
+
"slack": {
|
|
114
|
+
"disable": ["SLACK_DELETE_MESSAGE"] # Safety: prevent deletions
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## ✅ Correct - Tag-Based Filtering
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
// DO: Use tags to filter by behavior
|
|
124
|
+
const session = await composio.create('user_123', {
|
|
125
|
+
toolkits: ['gmail', 'github'],
|
|
126
|
+
// Global tags: only read-only tools
|
|
127
|
+
tags: ['readOnlyHint'],
|
|
128
|
+
|
|
129
|
+
// Override tags per toolkit
|
|
130
|
+
tools: {
|
|
131
|
+
github: {
|
|
132
|
+
tags: ['readOnlyHint', 'idempotentHint']
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
# DO: Use tags to filter by behavior
|
|
140
|
+
session = composio.create(
|
|
141
|
+
user_id="user_123",
|
|
142
|
+
toolkits=["gmail", "github"],
|
|
143
|
+
# Global tags: only read-only tools
|
|
144
|
+
tags=["readOnlyHint"],
|
|
145
|
+
|
|
146
|
+
# Override tags per toolkit
|
|
147
|
+
tools={
|
|
148
|
+
"github": {
|
|
149
|
+
"tags": ["readOnlyHint", "idempotentHint"]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Available Tags
|
|
156
|
+
|
|
157
|
+
- `readOnlyHint` - Tools that only read data
|
|
158
|
+
- `destructiveHint` - Tools that modify or delete data
|
|
159
|
+
- `idempotentHint` - Tools safe to retry
|
|
160
|
+
- `openWorldHint` - Tools operating in open contexts
|
|
161
|
+
|
|
162
|
+
## Configuration Best Practices
|
|
163
|
+
|
|
164
|
+
1. **Least Privilege**: Only enable toolkits/tools needed
|
|
165
|
+
2. **Tag Filtering**: Use tags to restrict dangerous operations
|
|
166
|
+
3. **Per-Toolkit Tools**: Fine-tune access per toolkit
|
|
167
|
+
4. **Auth Configs**: Map toolkits to specific auth configurations
|
|
168
|
+
|
|
169
|
+
## Reference
|
|
170
|
+
|
|
171
|
+
- [Configuration Options](https://docs.composio.dev/sdk/typescript/api/tool-router#configuration-options)
|
|
172
|
+
- [Tool Tags](https://docs.composio.dev/sdk/typescript/api/tool-router#tags)
|