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,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Creating Custom Tools
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
description: Build standalone and toolkit-based custom tools with proper authentication and validation
|
|
5
|
+
tags: [custom-tools, extensibility, authentication, zod, development]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Creating Custom Tools
|
|
9
|
+
|
|
10
|
+
Create your own tools that integrate with Composio:
|
|
11
|
+
- **Standalone tools** - No external authentication required
|
|
12
|
+
- **Toolkit-based tools** - Use toolkit credentials for API requests
|
|
13
|
+
|
|
14
|
+
> **⚠️ IMPORTANT:** When creating toolkit-based tools, do NOT make up or guess toolkit slugs. Always verify:
|
|
15
|
+
> - Use `composio manage toolkits list` to discover and `composio manage toolkits info "..."` to view toolkit details and auth schemes (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
|
+
## Standalone Tools
|
|
21
|
+
|
|
22
|
+
For tools that don't need external authentication:
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { z } from 'zod';
|
|
26
|
+
|
|
27
|
+
const tool = await composio.tools.createCustomTool({
|
|
28
|
+
slug: 'CALCULATE_SQUARE',
|
|
29
|
+
name: 'Calculate Square',
|
|
30
|
+
description: 'Calculates the square of a number',
|
|
31
|
+
inputParams: z.object({
|
|
32
|
+
number: z.number().describe('The number to calculate the square of'),
|
|
33
|
+
}),
|
|
34
|
+
execute: async (input) => {
|
|
35
|
+
return {
|
|
36
|
+
data: { result: input.number * input.number },
|
|
37
|
+
error: null,
|
|
38
|
+
successful: true,
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Use for:** Math, string operations, data transformations, internal logic.
|
|
45
|
+
|
|
46
|
+
## Toolkit-Based Tools
|
|
47
|
+
|
|
48
|
+
For tools that call authenticated APIs.
|
|
49
|
+
|
|
50
|
+
### Using executeToolRequest (Recommended)
|
|
51
|
+
|
|
52
|
+
Automatically handles authentication and baseURL:
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
const tool = await composio.tools.createCustomTool({
|
|
56
|
+
slug: 'GITHUB_STAR_REPOSITORY',
|
|
57
|
+
name: 'Star GitHub Repository',
|
|
58
|
+
toolkitSlug: 'github',
|
|
59
|
+
description: 'Star a repository under composiohq',
|
|
60
|
+
inputParams: z.object({
|
|
61
|
+
repository: z.string().describe('Repository name'),
|
|
62
|
+
page: z.number().optional().describe('Page number'),
|
|
63
|
+
}),
|
|
64
|
+
execute: async (input, connectionConfig, executeToolRequest) => {
|
|
65
|
+
return await executeToolRequest({
|
|
66
|
+
endpoint: `/user/starred/composiohq/${input.repository}`,
|
|
67
|
+
method: 'PUT',
|
|
68
|
+
parameters: [
|
|
69
|
+
{
|
|
70
|
+
name: 'page',
|
|
71
|
+
value: input.page?.toString() || '1',
|
|
72
|
+
in: 'query', // Adds ?page=1
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Using connectionConfig (Direct API Calls)
|
|
81
|
+
|
|
82
|
+
For custom HTTP requests:
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
const tool = await composio.tools.createCustomTool({
|
|
86
|
+
slug: 'GITHUB_DIRECT_API',
|
|
87
|
+
name: 'Direct GitHub API',
|
|
88
|
+
toolkitSlug: 'github',
|
|
89
|
+
inputParams: z.object({
|
|
90
|
+
repo: z.string().describe('Repository name'),
|
|
91
|
+
}),
|
|
92
|
+
execute: async (input, connectionConfig) => {
|
|
93
|
+
const response = await fetch(`https://api.github.com/repos/${input.repo}`, {
|
|
94
|
+
headers: {
|
|
95
|
+
Authorization: `Bearer ${connectionConfig.val?.access_token}`,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const data = await response.json();
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
data: data,
|
|
103
|
+
error: response.ok ? null : 'API request failed',
|
|
104
|
+
successful: response.ok,
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Input Validation with Zod
|
|
111
|
+
|
|
112
|
+
Define and validate parameters using Zod:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
inputParams: z.object({
|
|
116
|
+
// Required string
|
|
117
|
+
name: z.string().describe('User name'),
|
|
118
|
+
|
|
119
|
+
// Optional with default
|
|
120
|
+
count: z.number().optional().default(10).describe('Number of items'),
|
|
121
|
+
|
|
122
|
+
// With validation
|
|
123
|
+
email: z.string().email().describe('Email address'),
|
|
124
|
+
|
|
125
|
+
// Enum
|
|
126
|
+
status: z.enum(['active', 'inactive']).describe('Status'),
|
|
127
|
+
|
|
128
|
+
// Array
|
|
129
|
+
tags: z.array(z.string()).describe('Tags'),
|
|
130
|
+
|
|
131
|
+
// Nested object
|
|
132
|
+
metadata: z.object({
|
|
133
|
+
key: z.string(),
|
|
134
|
+
value: z.string(),
|
|
135
|
+
}).optional().describe('Metadata'),
|
|
136
|
+
})
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Always use `.describe()`** - helps AI understand parameter purpose.
|
|
140
|
+
|
|
141
|
+
## Headers and Query Parameters
|
|
142
|
+
|
|
143
|
+
Add headers and query params via `parameters` array:
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
execute: async (input, connectionConfig, executeToolRequest) => {
|
|
147
|
+
return await executeToolRequest({
|
|
148
|
+
endpoint: '/search/repositories',
|
|
149
|
+
method: 'GET',
|
|
150
|
+
parameters: [
|
|
151
|
+
// Query parameters
|
|
152
|
+
{
|
|
153
|
+
name: 'q',
|
|
154
|
+
value: input.query,
|
|
155
|
+
in: 'query', // ?q=value
|
|
156
|
+
},
|
|
157
|
+
// Headers
|
|
158
|
+
{
|
|
159
|
+
name: 'Accept',
|
|
160
|
+
value: 'application/vnd.github.v3+json',
|
|
161
|
+
in: 'header',
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Executing Custom Tools
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// Standalone tool
|
|
172
|
+
await composio.tools.execute('CALCULATE_SQUARE', {
|
|
173
|
+
userId: 'default',
|
|
174
|
+
arguments: { number: 5 },
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// Toolkit-based tool (uses userId to find account)
|
|
178
|
+
await composio.tools.execute('GITHUB_STAR_REPOSITORY', {
|
|
179
|
+
userId: 'user_123',
|
|
180
|
+
arguments: { repository: 'composio' },
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// With explicit connected account
|
|
184
|
+
await composio.tools.execute('GITHUB_STAR_REPOSITORY', {
|
|
185
|
+
userId: 'user_123',
|
|
186
|
+
connectedAccountId: 'conn_abc123',
|
|
187
|
+
arguments: { repository: 'composio' },
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Error Handling
|
|
192
|
+
|
|
193
|
+
Always return structured responses:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
execute: async (input) => {
|
|
197
|
+
try {
|
|
198
|
+
const result = performOperation(input);
|
|
199
|
+
return {
|
|
200
|
+
data: result,
|
|
201
|
+
error: null,
|
|
202
|
+
successful: true,
|
|
203
|
+
};
|
|
204
|
+
} catch (error) {
|
|
205
|
+
return {
|
|
206
|
+
data: null,
|
|
207
|
+
error: error.message,
|
|
208
|
+
successful: false,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Key Points
|
|
215
|
+
|
|
216
|
+
- **Naming:** Use `TOOLKIT_ACTION_DESCRIPTION` format for slugs
|
|
217
|
+
- **Prefer executeToolRequest:** Handles auth and baseURL automatically
|
|
218
|
+
- **Describe parameters:** AI agents need clear descriptions
|
|
219
|
+
- **Not persisted:** Custom tools exist in memory only, recreate on restart
|
|
220
|
+
- **Single toolkit scope:** executeToolRequest only works within same toolkit
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Direct Tool Execution for Applications
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Core patterns for manually executing Composio tools in applications without agent frameworks
|
|
5
|
+
tags: [tools, execute, execution, apps, manual]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Direct Tool Execution for Applications
|
|
9
|
+
|
|
10
|
+
When building applications without agent frameworks, use `composio.tools.execute()` to manually execute tools.
|
|
11
|
+
|
|
12
|
+
## Basic Execution
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// Execute with a specific version (REQUIRED)
|
|
16
|
+
const result = await composio.tools.execute('GITHUB_GET_ISSUES', {
|
|
17
|
+
userId: 'default',
|
|
18
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
19
|
+
version: '12082025_00', // Specific version required
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Discovering Available Tools
|
|
24
|
+
|
|
25
|
+
> **⚠️ IMPORTANT:** Do NOT make up or guess tool or toolkit names/versions. Always verify slugs before using them:
|
|
26
|
+
> - Use `composio manage tools list --toolkits "..."` to discover and `composio manage tools info "..."` to view tool schema (CLI)
|
|
27
|
+
> - Use `composio.tools.get()` to discover available tools programmatically (SDK)
|
|
28
|
+
>
|
|
29
|
+
> See [Composio CLI Reference](./composio-cli.md) for discovery commands.
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// Get all available tools in a toolkit
|
|
33
|
+
const githubTools = await composio.tools.get('default', {
|
|
34
|
+
toolkits: ['github'],
|
|
35
|
+
limit: 100 // Set appropriate limit
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
console.log('Available GitHub tools:', githubTools.map(t => t.name));
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
# Get all available tools in a toolkit
|
|
43
|
+
github_tools = composio.tools.get(
|
|
44
|
+
user_id="default",
|
|
45
|
+
toolkits=["github"],
|
|
46
|
+
limit=100 # Set appropriate limit
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
print("Available GitHub tools:", [t.name for t in github_tools])
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Version Management
|
|
53
|
+
|
|
54
|
+
**CRITICAL**: When manually executing tools (especially in workflows), a **specific version is required**. Using `'latest'` will throw an error.
|
|
55
|
+
|
|
56
|
+
**How to discover available versions:**
|
|
57
|
+
Use `composio.toolkits.get()` to see available versions for a toolkit:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// Get toolkit information to see available versions
|
|
61
|
+
const githubToolkit = await composio.toolkits.get('github');
|
|
62
|
+
console.log('Available versions:', githubToolkit.versions);
|
|
63
|
+
// e.g., ["12082025_00", "10082025_01", "08082025_00"]
|
|
64
|
+
console.log('Current version:', githubToolkit.version); // e.g., "12082025_00"
|
|
65
|
+
|
|
66
|
+
// ✅ DO: Pin to a specific version string for stability
|
|
67
|
+
const result = await composio.tools.execute('GITHUB_GET_ISSUES', {
|
|
68
|
+
userId: 'user_123',
|
|
69
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
70
|
+
version: '12082025_00', // Pinned version string
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
# Get toolkit information to see available versions
|
|
76
|
+
github_toolkit = composio.toolkits.get("github")
|
|
77
|
+
print(f"Available versions: {github_toolkit.versions}")
|
|
78
|
+
# e.g., ["12082025_00", "10082025_01", "08082025_00"]
|
|
79
|
+
print(f"Current version: {github_toolkit.version}") # e.g., "12082025_00"
|
|
80
|
+
|
|
81
|
+
# ✅ DO: Pin to a specific version string for stability
|
|
82
|
+
result = composio.tools.execute(
|
|
83
|
+
tool="GITHUB_GET_ISSUES",
|
|
84
|
+
user_id="user_123",
|
|
85
|
+
arguments={"owner": "composio", "repo": "sdk"},
|
|
86
|
+
version="12082025_00" # Pinned version string
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Why version pinning is required:**
|
|
91
|
+
- Tool argument schemas can change between versions
|
|
92
|
+
- Using `'latest'` in workflows can cause runtime errors when tools are updated
|
|
93
|
+
- Pinned versions ensure workflow stability and predictability
|
|
94
|
+
- Version validation prevents production issues from schema mismatches
|
|
95
|
+
- **Don't use `githubToolkit.version` dynamically** - this always returns the latest version, defeating the purpose of pinning
|
|
96
|
+
|
|
97
|
+
See [Tool Version Management](app-tool-versions.md) for detailed version strategies.
|
|
98
|
+
|
|
99
|
+
## Parameters
|
|
100
|
+
|
|
101
|
+
### ExecuteParams Object
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
{
|
|
105
|
+
userId: string, // User ID for connected account lookup
|
|
106
|
+
arguments: object, // Tool-specific input parameters
|
|
107
|
+
version?: string, // Toolkit version (required for manual execution)
|
|
108
|
+
dangerouslySkipVersionCheck?: boolean // Bypass version validation (NOT recommended)
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Execution Modifiers
|
|
113
|
+
|
|
114
|
+
Transform requests and responses with modifiers:
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const result = await composio.tools.execute(
|
|
118
|
+
'GITHUB_GET_ISSUES',
|
|
119
|
+
{
|
|
120
|
+
userId: 'default',
|
|
121
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
122
|
+
version: '12082025_00',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
beforeExecute: ({ toolSlug, toolkitSlug, params }) => {
|
|
126
|
+
// Modify params before execution
|
|
127
|
+
console.log('Executing:', toolSlug);
|
|
128
|
+
return {
|
|
129
|
+
...params,
|
|
130
|
+
arguments: {
|
|
131
|
+
...params.arguments,
|
|
132
|
+
per_page: 100 // Add default parameter
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
afterExecute: ({ toolSlug, toolkitSlug, result }) => {
|
|
137
|
+
// Transform result after execution
|
|
138
|
+
console.log('Completed:', toolSlug);
|
|
139
|
+
return {
|
|
140
|
+
...result,
|
|
141
|
+
timestamp: new Date().toISOString()
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Response Format
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
interface ToolExecuteResponse {
|
|
152
|
+
data: any; // Tool-specific response data
|
|
153
|
+
error: string | null; // Error message if execution failed
|
|
154
|
+
successful: boolean; // Whether execution succeeded
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Error Handling
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
try {
|
|
162
|
+
const result = await composio.tools.execute('GITHUB_GET_ISSUES', {
|
|
163
|
+
userId: 'user_123',
|
|
164
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
165
|
+
version: '12082025_00',
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
if (!result.successful) {
|
|
169
|
+
console.error('Tool execution failed:', result.error);
|
|
170
|
+
// Handle error case
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Process successful result
|
|
175
|
+
console.log('Issues:', result.data);
|
|
176
|
+
} catch (error) {
|
|
177
|
+
if (error.name === 'ComposioToolNotFoundError') {
|
|
178
|
+
console.error('Tool not found');
|
|
179
|
+
} else if (error.name === 'ComposioToolExecutionError') {
|
|
180
|
+
console.error('Execution error:', error.message);
|
|
181
|
+
} else {
|
|
182
|
+
console.error('Unexpected error:', error);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Common Error Types
|
|
188
|
+
|
|
189
|
+
- `ComposioCustomToolsNotInitializedError`: Custom tools instance not initialized
|
|
190
|
+
- `ComposioToolNotFoundError`: Tool with the given slug not found
|
|
191
|
+
- `ComposioToolExecutionError`: Error during tool execution
|
|
192
|
+
- Version validation errors: Thrown when version is missing or `'latest'` is used
|
|
193
|
+
|
|
194
|
+
## Best Practices
|
|
195
|
+
|
|
196
|
+
1. **Always specify versions**: Use explicit versions or configure at initialization
|
|
197
|
+
2. **Handle errors gracefully**: Check `successful` flag and handle `error` field
|
|
198
|
+
3. **Validate arguments**: Ensure all required parameters are provided
|
|
199
|
+
4. **Use modifiers sparingly**: Only add modifiers when necessary for transformation
|
|
200
|
+
5. **Log execution details**: Track which tools are executed for debugging
|
|
201
|
+
6. **Test with real data**: Validate execution with actual connected accounts
|
|
202
|
+
7. **Handle authentication errors**: User may not have connected account for toolkit
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Fetching Tools for Applications
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Essential patterns for discovering and retrieving tools from Composio for direct execution in applications
|
|
5
|
+
tags: [tools, fetch, discovery, apps, providers]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Fetching Tools for Applications
|
|
9
|
+
|
|
10
|
+
When building applications (non-agent workflows), use direct tool fetching methods to discover and retrieve tools from Composio.
|
|
11
|
+
|
|
12
|
+
> **⚠️ IMPORTANT:** Do NOT make up or guess tool or toolkit names. Always verify slugs before using them:
|
|
13
|
+
> - Use `composio manage toolkits list` / `composio manage toolkits info "..."` and `composio manage tools list --toolkits "..."` / `composio manage tools info "..."` (CLI)
|
|
14
|
+
> - Use `composio.tools.get()` to discover available tools programmatically (SDK)
|
|
15
|
+
>
|
|
16
|
+
> See [Composio CLI Reference](./composio-cli.md) for discovery commands.
|
|
17
|
+
|
|
18
|
+
## Methods Overview
|
|
19
|
+
|
|
20
|
+
- **`tools.get()`** - Use when working with a provider (OpenAI, Vercel, etc.). Returns tools wrapped in provider-specific format.
|
|
21
|
+
- **`tools.getRawComposioTools()`** - Use for standalone applications and building UIs. Returns raw tool metadata without provider wrapping.
|
|
22
|
+
|
|
23
|
+
### 1. tools.get() - For Provider-Based Applications
|
|
24
|
+
|
|
25
|
+
Use `tools.get()` when you're using Composio with a provider like OpenAI, Vercel AI SDK, or LangChain. This method wraps tools in the format expected by your provider.
|
|
26
|
+
|
|
27
|
+
**Get tools from a toolkit:**
|
|
28
|
+
```typescript
|
|
29
|
+
// Get important tools only (auto-applies important filter)
|
|
30
|
+
const importantGithubTools = await composio.tools.get('default', {
|
|
31
|
+
toolkits: ['github']
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Get a limited number of tools (does NOT auto-apply important filter)
|
|
35
|
+
const githubTools = await composio.tools.get('default', {
|
|
36
|
+
toolkits: ['github'],
|
|
37
|
+
limit: 10
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Get a specific tool by slug:**
|
|
42
|
+
```typescript
|
|
43
|
+
const tool = await composio.tools.get('default', 'GITHUB_GET_REPO');
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. tools.getRawComposioTools() - For Standalone Applications & UIs
|
|
47
|
+
|
|
48
|
+
Use `getRawComposioTools()` for standalone applications and building UIs. This method returns raw tool metadata without provider-specific wrapping, making it ideal for:
|
|
49
|
+
- Building tool selection UIs
|
|
50
|
+
- Creating tool catalogs or documentation
|
|
51
|
+
- Direct tool execution workflows (without providers)
|
|
52
|
+
- Custom tool management interfaces
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// Get important tools (auto-applies important filter)
|
|
56
|
+
const importantTools = await composio.tools.getRawComposioTools({
|
|
57
|
+
toolkits: ['github']
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Get specific tools by slug
|
|
61
|
+
const specificTools = await composio.tools.getRawComposioTools({
|
|
62
|
+
tools: ['GITHUB_GET_REPOS', 'SLACK_SEND_MESSAGE']
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// Get limited tools (does NOT auto-apply important)
|
|
66
|
+
const limitedTools = await composio.tools.getRawComposioTools({
|
|
67
|
+
toolkits: ['slack'],
|
|
68
|
+
limit: 5
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Important Filter Behavior
|
|
73
|
+
|
|
74
|
+
The `important` filter auto-applies to show only the most commonly used tools.
|
|
75
|
+
|
|
76
|
+
**Auto-applies when:**
|
|
77
|
+
- Only `toolkits` filter is provided (no other filters)
|
|
78
|
+
|
|
79
|
+
**Does NOT auto-apply when:**
|
|
80
|
+
- `limit` is specified
|
|
81
|
+
- `search` is used
|
|
82
|
+
- `tools` (specific slugs) are provided
|
|
83
|
+
- `tags` are specified
|
|
84
|
+
- `important` is explicitly set to `false`
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
// Auto-applies important=true
|
|
88
|
+
await composio.tools.get('default', { toolkits: ['github'] });
|
|
89
|
+
|
|
90
|
+
// Does NOT auto-apply important (limit specified)
|
|
91
|
+
await composio.tools.get('default', { toolkits: ['github'], limit: 10 });
|
|
92
|
+
|
|
93
|
+
// Does NOT auto-apply important (search used)
|
|
94
|
+
await composio.tools.get('default', { search: 'repo' });
|
|
95
|
+
|
|
96
|
+
// Explicitly disable important filter
|
|
97
|
+
await composio.tools.get('default', { toolkits: ['github'], important: false });
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Filter Parameters
|
|
101
|
+
|
|
102
|
+
Available filters for both `tools.get()` and `tools.getRawComposioTools()`:
|
|
103
|
+
|
|
104
|
+
- `toolkits`: Array of toolkit names (e.g., `['github', 'slack']`)
|
|
105
|
+
- `tools`: Array of specific tool slugs (e.g., `['GITHUB_GET_REPO']`)
|
|
106
|
+
- `search`: Search string for tool names/descriptions
|
|
107
|
+
- `limit`: Maximum number of tools to return
|
|
108
|
+
- `tags`: Array of tags to filter by
|
|
109
|
+
- `scopes`: Array of scopes to filter by
|
|
110
|
+
- `authConfigIds`: Array of auth config IDs to filter tools by specific auth configs
|
|
111
|
+
- `important`: Boolean to explicitly control important filter (auto-applies in some cases)
|
|
112
|
+
|
|
113
|
+
**Note:** You cannot use `tools` and `toolkits` filters together.
|
|
114
|
+
|
|
115
|
+
## Schema Modification
|
|
116
|
+
|
|
117
|
+
Customize tool schemas at fetch time:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
const customizedTools = await composio.tools.get('default', {
|
|
121
|
+
toolkits: ['github']
|
|
122
|
+
}, {
|
|
123
|
+
modifySchema: ({ toolSlug, toolkitSlug, schema }) => {
|
|
124
|
+
return { ...schema, description: 'Custom description' };
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Best Practices
|
|
130
|
+
|
|
131
|
+
1. **Choose the right method:**
|
|
132
|
+
- Use `tools.get()` when working with providers (OpenAI, Vercel, LangChain)
|
|
133
|
+
- Use `tools.getRawComposioTools()` for standalone apps, UIs, and catalogs
|
|
134
|
+
|
|
135
|
+
2. **Use important filter for UIs**: Show important tools first, then allow users to discover all tools
|
|
136
|
+
|
|
137
|
+
3. **Cache tool metadata**: Tools don't change frequently, cache the results
|
|
138
|
+
|
|
139
|
+
4. **Filter by toolkit**: Group tools by toolkit for better organization
|
|
140
|
+
|
|
141
|
+
5. **Don't mix tools and toolkits filters**: Cannot use both filters together
|
|
142
|
+
|
|
143
|
+
## Complete Discovery Workflow
|
|
144
|
+
|
|
145
|
+
Here's the recommended workflow for discovering and using tools:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// Step 1: Get toolkit information (to discover available versions)
|
|
149
|
+
const githubToolkit = await composio.toolkits.get('github');
|
|
150
|
+
console.log('Toolkit:', githubToolkit.name);
|
|
151
|
+
console.log('Available versions:', githubToolkit.versions);
|
|
152
|
+
console.log('Current version:', githubToolkit.version);
|
|
153
|
+
console.log('Description:', githubToolkit.description);
|
|
154
|
+
|
|
155
|
+
// Step 2: Discover all available tools in the toolkit
|
|
156
|
+
const allGithubTools = await composio.tools.get('default', {
|
|
157
|
+
toolkits: ['github'],
|
|
158
|
+
limit: 100 // Adjust based on your needs
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
console.log('\nAvailable tools:');
|
|
162
|
+
allGithubTools.forEach(tool => {
|
|
163
|
+
console.log(`- ${tool.name}: ${tool.description}`);
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Step 3: Find the tool you need
|
|
167
|
+
const repoTool = allGithubTools.find(t => t.name === 'GITHUB_GET_REPO');
|
|
168
|
+
if (!repoTool) {
|
|
169
|
+
throw new Error('Tool not found');
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Step 4: Execute the tool with a pinned version string
|
|
173
|
+
const result = await composio.tools.execute('GITHUB_GET_REPO', {
|
|
174
|
+
userId: 'user_123',
|
|
175
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
176
|
+
version: '12082025_00' // ✅ Pinned version string for stability
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
# Step 1: Get toolkit information (to discover available versions)
|
|
182
|
+
github_toolkit = composio.toolkits.get("github")
|
|
183
|
+
print(f"Toolkit: {github_toolkit.name}")
|
|
184
|
+
print(f"Available versions: {github_toolkit.versions}")
|
|
185
|
+
print(f"Current version: {github_toolkit.version}")
|
|
186
|
+
print(f"Description: {github_toolkit.description}")
|
|
187
|
+
|
|
188
|
+
# Step 2: Discover all available tools in the toolkit
|
|
189
|
+
all_github_tools = composio.tools.get(
|
|
190
|
+
user_id="default",
|
|
191
|
+
toolkits=["github"],
|
|
192
|
+
limit=100 # Adjust based on your needs
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
print("\nAvailable tools:")
|
|
196
|
+
for tool in all_github_tools:
|
|
197
|
+
print(f"- {tool.name}: {tool.description}")
|
|
198
|
+
|
|
199
|
+
# Step 3: Find the tool you need
|
|
200
|
+
repo_tool = next((t for t in all_github_tools if t.name == "GITHUB_GET_REPO"), None)
|
|
201
|
+
if not repo_tool:
|
|
202
|
+
raise Exception("Tool not found")
|
|
203
|
+
|
|
204
|
+
# Step 4: Execute the tool with a pinned version string
|
|
205
|
+
result = composio.tools.execute(
|
|
206
|
+
tool="GITHUB_GET_REPO",
|
|
207
|
+
user_id="user_123",
|
|
208
|
+
arguments={"owner": "composio", "repo": "sdk"},
|
|
209
|
+
version="12082025_00" # ✅ Pinned version string for stability
|
|
210
|
+
)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## ❌ Common Mistakes
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
// DON'T: Guess or make up tool names
|
|
217
|
+
const result = await composio.tools.execute('GITHUB_GET_REPOSITORY', { // ❌ Wrong name
|
|
218
|
+
userId: 'user_123',
|
|
219
|
+
arguments: { repo: 'sdk' },
|
|
220
|
+
version: '12082025_00'
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// DON'T: Use hardcoded versions without checking
|
|
224
|
+
const result = await composio.tools.execute('GITHUB_GET_REPO', {
|
|
225
|
+
userId: 'user_123',
|
|
226
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
227
|
+
version: '12082025_00' // ❌ This might be outdated, use `composio manage toolkits info "github"` to get the latest version
|
|
228
|
+
});
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
# DON'T: Guess or make up tool names
|
|
233
|
+
result = composio.tools.execute(
|
|
234
|
+
tool="GITHUB_GET_REPOSITORY", # ❌ Wrong name
|
|
235
|
+
user_id="user_123",
|
|
236
|
+
arguments={"repo": "sdk"},
|
|
237
|
+
version="12082025_00"
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
# DON'T: Use hardcoded versions without checking
|
|
241
|
+
result = composio.tools.execute(
|
|
242
|
+
tool="GITHUB_GET_REPO",
|
|
243
|
+
user_id="user_123",
|
|
244
|
+
arguments={"owner": "composio", "repo": "sdk"},
|
|
245
|
+
version="12082025_00" # ❌ This might be outdated
|
|
246
|
+
)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## ✅ Best Practices
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
// DO: Discover available versions and tools first
|
|
253
|
+
const toolkit = await composio.toolkits.get('github');
|
|
254
|
+
console.log('Available versions:', toolkit.versions);
|
|
255
|
+
|
|
256
|
+
const tools = await composio.tools.get('default', {
|
|
257
|
+
toolkits: ['github'],
|
|
258
|
+
limit: 100
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// DO: Use discovered tool names and pin to a specific version string
|
|
262
|
+
const toolName = tools.find(t => t.description.includes('repository'))?.name;
|
|
263
|
+
if (toolName) {
|
|
264
|
+
const result = await composio.tools.execute(toolName, {
|
|
265
|
+
userId: 'user_123',
|
|
266
|
+
arguments: { owner: 'composio', repo: 'sdk' },
|
|
267
|
+
version: '12082025_00' // ✅ Pinned version string for stability
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
```python
|
|
273
|
+
# DO: Discover available versions and tools first
|
|
274
|
+
toolkit = composio.toolkits.get("github")
|
|
275
|
+
print(f"Available versions: {toolkit.versions}")
|
|
276
|
+
|
|
277
|
+
tools = composio.tools.get(
|
|
278
|
+
user_id="default",
|
|
279
|
+
toolkits=["github"],
|
|
280
|
+
limit=100
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
# DO: Use discovered tool names and pin to a specific version string
|
|
284
|
+
tool_name = next((t.name for t in tools if "repository" in t.description), None)
|
|
285
|
+
if tool_name:
|
|
286
|
+
result = composio.tools.execute(
|
|
287
|
+
tool=tool_name,
|
|
288
|
+
user_id="user_123",
|
|
289
|
+
arguments={"owner": "composio", "repo": "sdk"},
|
|
290
|
+
version="12082025_00" # ✅ Pinned version string for stability
|
|
291
|
+
)
|
|
292
|
+
```
|