zilmate 1.7.8 → 1.8.0
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/index.js +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: composio
|
|
3
|
+
description: Use 1000+ external apps via Composio - either directly through the CLI or by building AI agents and apps with the SDK
|
|
4
|
+
tags: [composio, tool-router, agents, mcp, tools, api, automation, cli]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## When to Apply
|
|
8
|
+
|
|
9
|
+
- User wants to access or interact with external apps (Gmail, Slack, GitHub, Notion, etc.)
|
|
10
|
+
- User wants to automate a task using an external service (send email, create issue, post message)
|
|
11
|
+
- Building an AI agent or app that integrates with external tools
|
|
12
|
+
- Multi-user apps that need per-user connections to external services
|
|
13
|
+
|
|
14
|
+
## Setup
|
|
15
|
+
|
|
16
|
+
Check if the CLI is installed; if not, install it:
|
|
17
|
+
```bash
|
|
18
|
+
curl -fsSL https://composio.dev/install | bash
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
After installation, restart your terminal or source your shell config, then authenticate:
|
|
22
|
+
```bash
|
|
23
|
+
composio login # OAuth; interactive org/project picker (use -y to skip)
|
|
24
|
+
composio whoami # verify org_id, project_id, user_id
|
|
25
|
+
```
|
|
26
|
+
For agents without direct browser access: `composio login --no-wait | jq` to get URL/key, share URL with user, then `composio login --key <cli_key> --no-wait` once they complete login.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
### 1. Use Apps via Composio CLI
|
|
31
|
+
|
|
32
|
+
**Use this when:** The user wants to take action on an external app directly — no code writing needed. The agent uses the CLI to search, connect, and execute tools on behalf of the user.
|
|
33
|
+
|
|
34
|
+
Key commands (new top-level aliases):
|
|
35
|
+
- `composio search "<query>"` — find tools by use case
|
|
36
|
+
- `composio execute "<TOOL_SLUG>" -d '{...<input params>}'` — execute a tool
|
|
37
|
+
- `composio link [toolkit]` — connect a user account to an app (agents: always use `--no-wait` for non-interactive mode)
|
|
38
|
+
- `composio listen` — listen for real-time trigger events
|
|
39
|
+
|
|
40
|
+
Typical workflow: **search → link (if needed) → execute**
|
|
41
|
+
|
|
42
|
+
> Full reference: [Composio CLI Guide](rules/composio-cli.md)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### 2. Building Apps and Agents with Composio
|
|
47
|
+
|
|
48
|
+
**Use this when:** Writing code — an AI agent, app, or backend service that integrates with external tools via the Composio SDK.
|
|
49
|
+
|
|
50
|
+
Run this first inside the project directory to set up the API key:
|
|
51
|
+
```bash
|
|
52
|
+
composio init
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> Full reference: [Building with Composio](rules/building-with-composio.md)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rule Title Here
|
|
3
|
+
impact: CRITICAL | HIGH | MEDIUM | LOW
|
|
4
|
+
description: One sentence describing what this rule prevents or improves
|
|
5
|
+
tags: [tag1, tag2, tag3]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Rule Title
|
|
9
|
+
|
|
10
|
+
Brief explanation of why this pattern is important (1-2 sentences).
|
|
11
|
+
|
|
12
|
+
## ❌ Incorrect
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// Explain why this is wrong
|
|
16
|
+
const bad = 'example';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
# Explain why this is wrong
|
|
21
|
+
bad = "example"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## ✅ Correct
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
// Explain why this is correct
|
|
28
|
+
const good = 'example';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
# Explain why this is correct
|
|
33
|
+
good = "example"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Reference
|
|
37
|
+
|
|
38
|
+
- [Relevant documentation](https://docs.composio.dev)
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Auth Config Management
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
description: Advanced programmatic management of authentication configurations for multi-tenant applications
|
|
5
|
+
tags: [auth-config, authentication, oauth, api-key, advanced]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Auth Config Management
|
|
9
|
+
|
|
10
|
+
> **Note:** This is an **advanced use case**. Most users should create and manage auth configs through the Composio dashboard at [platform.composio.dev](https://platform.composio.dev). Use the SDK methods below only when you need programmatic auth config management.
|
|
11
|
+
|
|
12
|
+
> **Using Tool Router?** If you're using Tool Router, you can use `session.toolkits()` to view the auth configs and connected accounts being used by the Tool Router. You only need to use the methods below if you're creating custom auth configs to be used with Tool Router.
|
|
13
|
+
|
|
14
|
+
Auth configs define how authentication works for a toolkit. They specify the authentication scheme (OAuth2, API Key, etc.) and control which tools can be accessed.
|
|
15
|
+
|
|
16
|
+
## When to Use the SDK
|
|
17
|
+
|
|
18
|
+
Use these methods when you need to:
|
|
19
|
+
- Programmatically create auth configs for multi-tenant applications
|
|
20
|
+
- Dynamically manage auth configs based on user actions
|
|
21
|
+
- Automate auth config creation in CI/CD pipelines
|
|
22
|
+
|
|
23
|
+
For most cases, **use the dashboard** instead.
|
|
24
|
+
|
|
25
|
+
## Read Auth Configs
|
|
26
|
+
|
|
27
|
+
### List auth configs
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// List all auth configs
|
|
31
|
+
const configs = await composio.authConfigs.list();
|
|
32
|
+
|
|
33
|
+
// List for a specific toolkit
|
|
34
|
+
const githubConfigs = await composio.authConfigs.list({
|
|
35
|
+
toolkit: 'github',
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Filter by Composio-managed
|
|
39
|
+
const managedConfigs = await composio.authConfigs.list({
|
|
40
|
+
isComposioManaged: true,
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Get a specific auth config
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
const authConfig = await composio.authConfigs.get('auth_config_123');
|
|
48
|
+
console.log(authConfig.name);
|
|
49
|
+
console.log(authConfig.authScheme); // 'OAUTH2', 'API_KEY', etc.
|
|
50
|
+
console.log(authConfig.toolkit.slug);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Create Auth Configs
|
|
54
|
+
|
|
55
|
+
### Composio-Managed Authentication (Recommended)
|
|
56
|
+
|
|
57
|
+
Use Composio's OAuth credentials (simplest option):
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
const authConfig = await composio.authConfigs.create('github', {
|
|
61
|
+
type: 'use_composio_managed_auth',
|
|
62
|
+
name: 'GitHub Auth Config',
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Custom OAuth Credentials
|
|
67
|
+
|
|
68
|
+
Use your own OAuth app credentials:
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
const authConfig = await composio.authConfigs.create('slack', {
|
|
72
|
+
type: 'use_custom_auth',
|
|
73
|
+
name: 'My Slack Auth',
|
|
74
|
+
authScheme: 'OAUTH2',
|
|
75
|
+
credentials: {
|
|
76
|
+
client_id: 'your_client_id',
|
|
77
|
+
client_secret: 'your_client_secret',
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Custom API Key Authentication
|
|
83
|
+
|
|
84
|
+
For services using API keys:
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const authConfig = await composio.authConfigs.create('openai', {
|
|
88
|
+
type: 'use_custom_auth',
|
|
89
|
+
name: 'OpenAI API Key Auth',
|
|
90
|
+
authScheme: 'API_KEY',
|
|
91
|
+
credentials: {
|
|
92
|
+
api_key: 'your_api_key',
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Update Auth Configs
|
|
98
|
+
|
|
99
|
+
### Update custom auth credentials
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
const updated = await composio.authConfigs.update('auth_config_123', {
|
|
103
|
+
type: 'custom',
|
|
104
|
+
credentials: {
|
|
105
|
+
client_id: 'new_client_id',
|
|
106
|
+
client_secret: 'new_client_secret',
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Update OAuth scopes
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
const updated = await composio.authConfigs.update('auth_config_456', {
|
|
115
|
+
type: 'default',
|
|
116
|
+
scopes: 'read:user,repo'
|
|
117
|
+
});
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Restrict tools (for security)
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
const restricted = await composio.authConfigs.update('auth_config_789', {
|
|
124
|
+
type: 'custom',
|
|
125
|
+
credentials: { /* ... */ },
|
|
126
|
+
toolAccessConfig: {
|
|
127
|
+
toolsAvailableForExecution: ['SLACK_SEND_MESSAGE', 'SLACK_GET_CHANNEL']
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Enable/Disable Auth Configs
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Enable an auth config
|
|
136
|
+
await composio.authConfigs.enable('auth_config_123');
|
|
137
|
+
|
|
138
|
+
// Disable an auth config
|
|
139
|
+
await composio.authConfigs.disable('auth_config_123');
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Delete Auth Configs
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
await composio.authConfigs.delete('auth_config_123');
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Warning:** Deleting an auth config will affect all connected accounts using it.
|
|
149
|
+
|
|
150
|
+
## Available Parameters
|
|
151
|
+
|
|
152
|
+
### List Parameters
|
|
153
|
+
|
|
154
|
+
- `toolkit` (string) - Filter by toolkit slug
|
|
155
|
+
- `isComposioManaged` (boolean) - Filter Composio-managed vs custom
|
|
156
|
+
- `limit` (number) - Results per page
|
|
157
|
+
- `cursor` (string) - Pagination cursor
|
|
158
|
+
|
|
159
|
+
### Create Parameters
|
|
160
|
+
|
|
161
|
+
**For `use_composio_managed_auth`:**
|
|
162
|
+
- `type`: `'use_composio_managed_auth'`
|
|
163
|
+
- `name` (optional): Display name
|
|
164
|
+
- `credentials` (optional): Object with `scopes` field
|
|
165
|
+
- `toolAccessConfig` (optional): Tool restrictions
|
|
166
|
+
- `isEnabledForToolRouter` (optional): Enable for Tool Router
|
|
167
|
+
|
|
168
|
+
**For `use_custom_auth`:**
|
|
169
|
+
- `type`: `'use_custom_auth'`
|
|
170
|
+
- `authScheme`: `'OAUTH2'`, `'API_KEY'`, `'BASIC_AUTH'`, etc.
|
|
171
|
+
- `name` (optional): Display name
|
|
172
|
+
- `credentials`: Object with auth-specific fields (client_id, client_secret, api_key, etc.)
|
|
173
|
+
- `toolAccessConfig` (optional): Tool restrictions
|
|
174
|
+
- `isEnabledForToolRouter` (optional): Enable for Tool Router
|
|
175
|
+
|
|
176
|
+
### Update Parameters
|
|
177
|
+
|
|
178
|
+
**For custom type:**
|
|
179
|
+
```typescript
|
|
180
|
+
{
|
|
181
|
+
type: 'custom',
|
|
182
|
+
credentials: { /* auth fields */ },
|
|
183
|
+
toolAccessConfig: {
|
|
184
|
+
toolsAvailableForExecution: ['TOOL_SLUG_1', 'TOOL_SLUG_2']
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**For default type:**
|
|
190
|
+
```typescript
|
|
191
|
+
{
|
|
192
|
+
type: 'default',
|
|
193
|
+
scopes: 'scope1,scope2',
|
|
194
|
+
toolAccessConfig: {
|
|
195
|
+
toolsAvailableForExecution: ['TOOL_SLUG_1', 'TOOL_SLUG_2']
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Best Practices
|
|
201
|
+
|
|
202
|
+
1. **Use the dashboard for manual setup**
|
|
203
|
+
- Easier to configure
|
|
204
|
+
- Visual interface for OAuth setup
|
|
205
|
+
- Less error-prone
|
|
206
|
+
|
|
207
|
+
2. **Use SDK for automation only**
|
|
208
|
+
- Multi-tenant app provisioning
|
|
209
|
+
- CI/CD integration
|
|
210
|
+
- Dynamic configuration
|
|
211
|
+
|
|
212
|
+
3. **Prefer Composio-managed auth**
|
|
213
|
+
- No OAuth app setup required
|
|
214
|
+
- Maintained by Composio
|
|
215
|
+
- Works out of the box
|
|
216
|
+
|
|
217
|
+
4. **Restrict tools for security**
|
|
218
|
+
- Limit `toolsAvailableForExecution`
|
|
219
|
+
- Implements least privilege
|
|
220
|
+
- Reduces risk
|
|
221
|
+
|
|
222
|
+
5. **Name configs clearly**
|
|
223
|
+
- Include environment: "Production GitHub", "Staging Slack"
|
|
224
|
+
- Makes debugging easier
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Building Popup Connection UI
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
description: Build a popup-based Composio auth-link UI with dedicated callback page handling and parent-window polling
|
|
5
|
+
tags: [connected-accounts, auth-link, popup, callback-page, ui]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Building Popup Connection UI
|
|
9
|
+
|
|
10
|
+
Use this pattern when you want to open Composio auth links in a popup window and handle completion in the parent window.
|
|
11
|
+
|
|
12
|
+
> This is a **general Composio auth link handler**, not an OAuth-only pattern. It works for any Composio hosted auth link that redirects back with URL params.
|
|
13
|
+
|
|
14
|
+
## Flow Overview
|
|
15
|
+
|
|
16
|
+
1. Parent app requests a Composio auth link (`redirectUrl`)
|
|
17
|
+
2. Parent opens popup with that `redirectUrl`
|
|
18
|
+
3. Popup completes auth and lands on a dedicated callback page in your app
|
|
19
|
+
4. Parent polls popup URL, detects success/error params, closes popup, resolves state
|
|
20
|
+
|
|
21
|
+
## Why Use a Dedicated Callback Page
|
|
22
|
+
|
|
23
|
+
Always route popup completion to a dedicated page like `/auth/composio/callback` to:
|
|
24
|
+
- show clear success/failure states
|
|
25
|
+
- provide a stable URL shape for parameter parsing
|
|
26
|
+
- prevent exposing auth-link query params in unrelated pages
|
|
27
|
+
- keep popup close/cleanup logic predictable
|
|
28
|
+
|
|
29
|
+
## Parent Window Handler
|
|
30
|
+
|
|
31
|
+
Use a helper that opens the popup, polls URL params, and closes automatically when done:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
export const initiateComposioAuthFlow = (
|
|
35
|
+
url: string,
|
|
36
|
+
successParam: string = 'status'
|
|
37
|
+
): Promise<Record<string, string>> => {
|
|
38
|
+
const width = 600;
|
|
39
|
+
const height = 840;
|
|
40
|
+
const leftPosition = (window.innerWidth - width) / 2;
|
|
41
|
+
const topPosition = (window.innerHeight - height) / 2;
|
|
42
|
+
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const popup = window.open(
|
|
45
|
+
url,
|
|
46
|
+
'composio-auth-popup',
|
|
47
|
+
`width=${width},height=${height},left=${leftPosition},top=${topPosition}`
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
if (!popup) {
|
|
51
|
+
reject(new Error('Popup blocked by browser'));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
popup.focus();
|
|
56
|
+
|
|
57
|
+
const popupChecker = setInterval(() => {
|
|
58
|
+
if (popup.closed) {
|
|
59
|
+
clearInterval(popupChecker);
|
|
60
|
+
reject(new Error('Popup closed before completion'));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let popupUrl: URL | null = null;
|
|
65
|
+
try {
|
|
66
|
+
popupUrl = new URL(popup.location.href);
|
|
67
|
+
} catch {
|
|
68
|
+
// Cross-origin while Composio page is open; ignore until redirected back to your domain.
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (!popupUrl) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const successValue = popupUrl.searchParams.get(successParam);
|
|
76
|
+
const errorValue = popupUrl.searchParams.get('error');
|
|
77
|
+
|
|
78
|
+
if (errorValue) {
|
|
79
|
+
clearInterval(popupChecker);
|
|
80
|
+
popup.close();
|
|
81
|
+
reject(new Error(String(errorValue)));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (successValue !== null) {
|
|
86
|
+
const allParams: Record<string, string> = {};
|
|
87
|
+
popupUrl.searchParams.forEach((value, key) => {
|
|
88
|
+
allParams[key] = value;
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
clearInterval(popupChecker);
|
|
92
|
+
popup.close();
|
|
93
|
+
resolve(allParams);
|
|
94
|
+
}
|
|
95
|
+
}, 500);
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Dedicated Callback Page
|
|
101
|
+
|
|
102
|
+
Create a small callback page in your app to handle the end state:
|
|
103
|
+
- show "Connection successful" or "Connection failed"
|
|
104
|
+
- optionally show a "You can close this window" fallback
|
|
105
|
+
- keep query params intact so parent polling can read them
|
|
106
|
+
|
|
107
|
+
Example route path:
|
|
108
|
+
- `https://your-app.com/auth/composio/callback`
|
|
109
|
+
|
|
110
|
+
## Example Integration with `connectedAccounts.link()` or `session.authorize()`
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// in the backend
|
|
114
|
+
const connectionRequest = await composio.connectedAccounts.link(
|
|
115
|
+
userId,
|
|
116
|
+
authConfigId,
|
|
117
|
+
{ callbackUrl: 'https://your-app.com/auth/composio/callback' }
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
// in the frontend
|
|
121
|
+
const params = await initiateComposioAuthFlow(
|
|
122
|
+
connectionRequest.redirectUrl,
|
|
123
|
+
'status'
|
|
124
|
+
);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
You can also destructure all returned query params directly:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
const { status, connected_account_id } = await initiateComposioAuthFlow(
|
|
131
|
+
authLink,
|
|
132
|
+
'status'
|
|
133
|
+
);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Best Practices
|
|
137
|
+
|
|
138
|
+
- Use popup only on user gesture (`onClick`) to avoid popup blockers
|
|
139
|
+
- Keep polling interval small (`300-700ms`) for responsive close
|
|
140
|
+
- Capture both success and error query params
|
|
141
|
+
- Always clear interval on every exit path
|
|
142
|
+
- Reject immediately if popup cannot be opened
|
|
143
|
+
- Use a stable callback URL path across environments
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Connected Accounts Management
|
|
3
|
+
impact: HIGH
|
|
4
|
+
description: Comprehensive guide to CRUD operations on connected accounts with emphasis on secure authentication flows
|
|
5
|
+
tags: [connected-accounts, authentication, oauth, crud, security]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Connected Accounts Management
|
|
9
|
+
|
|
10
|
+
> **Using Sessions/Tool Router?** If you're using Tool Router Sessions, you can use `session.toolkits()` to view the auth configs and connected accounts being used by the Tool Router. You only need to use the methods below if you're managing connected accounts outside of Tool Router.
|
|
11
|
+
> When using sessions, only use authConfigs listed via session.toolkit(), or use session.authorize() for toolkits which does not have authConfigs
|
|
12
|
+
|
|
13
|
+
Connected accounts store authentication tokens for external services. Use the `connectedAccounts` API for CRUD operations.
|
|
14
|
+
|
|
15
|
+
## Create Connected Accounts
|
|
16
|
+
|
|
17
|
+
### Recommended: link() - Composio-Hosted Authentication
|
|
18
|
+
|
|
19
|
+
Use `link()` for most flows. Composio handles security, OAuth, and form rendering.
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
const connectionRequest = await composio.connectedAccounts.link(
|
|
23
|
+
'user_123',
|
|
24
|
+
'auth_config_123',
|
|
25
|
+
{ callbackUrl: 'https://your-app.com/callback' }
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
// Redirect user to authentication page
|
|
29
|
+
window.location.href = connectionRequest.redirectUrl;
|
|
30
|
+
|
|
31
|
+
// IMPORTANT: if building web applications, look for `status=success&connectedAccountId=*******` query params in the callback url. Setup a dedicated route to handle the callback if opening via popus, to show success and failure states.
|
|
32
|
+
|
|
33
|
+
// Only use the below for simpler single user application/CLIs etc.
|
|
34
|
+
const account = await connectionRequest.waitForConnection();
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
While building popup-based authentication flows using Composio links, follow [Building Popup Connection UI](./app-auth-popup-ui.md).
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
**Why use link():**
|
|
41
|
+
- Handles OAuth security and form UI
|
|
42
|
+
- Works with 200+ services
|
|
43
|
+
- Whitelabel with your app name/logo (Project Settings on dashboard)
|
|
44
|
+
- No custom UI needed
|
|
45
|
+
|
|
46
|
+
### Advanced: initiate() - Custom Authentication UI
|
|
47
|
+
|
|
48
|
+
Only use when building custom auth interfaces:
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// API Key (custom form)
|
|
52
|
+
const connection = await composio.connectedAccounts.initiate(
|
|
53
|
+
'user_123',
|
|
54
|
+
'auth_config_456',
|
|
55
|
+
{
|
|
56
|
+
config: AuthScheme.ApiKey({ api_key: apiKey }),
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
// OAuth with extra params (Zendesk, PostHog, etc.)
|
|
61
|
+
const connection = await composio.connectedAccounts.initiate(
|
|
62
|
+
'user_123',
|
|
63
|
+
'zendesk_config',
|
|
64
|
+
{
|
|
65
|
+
config: AuthScheme.OAuth2({ subdomain: "your_subdomain" })
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
window.location.href = connection.redirectUrl;
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**AuthScheme helpers:**
|
|
72
|
+
- `AuthScheme.OAuth2({ subdomain: 'example' })`
|
|
73
|
+
- `AuthScheme.ApiKey({ api_key: 'key123' })`
|
|
74
|
+
- `AuthScheme.Basic({ username: 'user', password: 'pass' })`
|
|
75
|
+
- `AuthScheme.BearerToken({ token: 'token123' })`
|
|
76
|
+
|
|
77
|
+
**Use initiate() only when:**
|
|
78
|
+
- Building custom authentication UI
|
|
79
|
+
- Handling credentials directly in backend
|
|
80
|
+
- OAuth requires extra parameters before redirect
|
|
81
|
+
|
|
82
|
+
## Read Connected Accounts
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// List all
|
|
86
|
+
const allAccounts = await composio.connectedAccounts.list();
|
|
87
|
+
|
|
88
|
+
// Filter by user
|
|
89
|
+
const userAccounts = await composio.connectedAccounts.list({
|
|
90
|
+
userIds: ['user_123'],
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Filter by toolkit
|
|
94
|
+
const githubAccounts = await composio.connectedAccounts.list({
|
|
95
|
+
toolkitSlugs: ['github'],
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Filter by status
|
|
99
|
+
const activeAccounts = await composio.connectedAccounts.list({
|
|
100
|
+
statuses: ['ACTIVE']
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Filter by auth config
|
|
104
|
+
const configAccounts = await composio.connectedAccounts.list({
|
|
105
|
+
authConfigIds: ['auth_config_123']
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// Combine filters
|
|
109
|
+
const filtered = await composio.connectedAccounts.list({
|
|
110
|
+
userIds: ['user_123'],
|
|
111
|
+
toolkitSlugs: ['github', 'slack'],
|
|
112
|
+
statuses: ['ACTIVE']
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Get specific account
|
|
116
|
+
const account = await composio.connectedAccounts.get('conn_abc123');
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Available filters:**
|
|
120
|
+
- `userIds` - Filter by user IDs
|
|
121
|
+
- `toolkitSlugs` - Filter by toolkit slugs
|
|
122
|
+
- `statuses` - Filter by connection statuses (see below for values)
|
|
123
|
+
- `authConfigIds` - Filter by auth config IDs
|
|
124
|
+
- `limit` - Results per page
|
|
125
|
+
- `cursor` - Pagination cursor
|
|
126
|
+
- `orderBy` - 'created_at' or 'updated_at'
|
|
127
|
+
|
|
128
|
+
## Update Connected Accounts
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Enable/disable
|
|
132
|
+
await composio.connectedAccounts.enable('conn_abc123');
|
|
133
|
+
await composio.connectedAccounts.disable('conn_abc123');
|
|
134
|
+
|
|
135
|
+
// Refresh credentials (expired OAuth tokens)
|
|
136
|
+
await composio.connectedAccounts.refresh('conn_abc123');
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Delete Connected Accounts
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
await composio.connectedAccounts.delete('conn_abc123');
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Warning:** Permanent deletion. User must re-authenticate.
|
|
146
|
+
|
|
147
|
+
## Wait for Connection Completion
|
|
148
|
+
|
|
149
|
+
For async OAuth flows:
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
// Default timeout (60 seconds)
|
|
153
|
+
const account = await composio.connectedAccounts.waitForConnection('conn_123');
|
|
154
|
+
|
|
155
|
+
// Custom timeout (2 minutes)
|
|
156
|
+
const account = await composio.connectedAccounts.waitForConnection('conn_123', 120000);
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Errors:**
|
|
160
|
+
- `ComposioConnectedAccountNotFoundError` - Account doesn't exist
|
|
161
|
+
- `ConnectionRequestFailedError` - Connection failed/expired
|
|
162
|
+
- `ConnectionRequestTimeoutError` - Timeout exceeded
|
|
163
|
+
|
|
164
|
+
## Common Patterns
|
|
165
|
+
|
|
166
|
+
### OAuth Flow
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
// Create connection
|
|
170
|
+
async function connectUser(userId, authConfigId) {
|
|
171
|
+
const request = await composio.connectedAccounts.link(
|
|
172
|
+
userId,
|
|
173
|
+
authConfigId,
|
|
174
|
+
{ callbackUrl: 'https://app.com/callback' }
|
|
175
|
+
);
|
|
176
|
+
return { redirectUrl: request.redirectUrl };
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Handle callback
|
|
180
|
+
async function handleCallback(connectionId) {
|
|
181
|
+
try {
|
|
182
|
+
const account = await composio.connectedAccounts.waitForConnection(
|
|
183
|
+
connectionId,
|
|
184
|
+
180000
|
|
185
|
+
);
|
|
186
|
+
return { success: true, account };
|
|
187
|
+
} catch (error) {
|
|
188
|
+
if (error.name === 'ConnectionRequestTimeoutError') {
|
|
189
|
+
return { error: 'Timeout. Please try again.' };
|
|
190
|
+
}
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Check Active Connections
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Filter by status using statuses parameter
|
|
200
|
+
async function getUserActiveConnections(userId) {
|
|
201
|
+
const accounts = await composio.connectedAccounts.list({
|
|
202
|
+
userIds: [userId],
|
|
203
|
+
statuses: ['ACTIVE']
|
|
204
|
+
});
|
|
205
|
+
return accounts.items;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Check multiple statuses
|
|
209
|
+
async function getUserConnectionsByStatus(userId) {
|
|
210
|
+
const accounts = await composio.connectedAccounts.list({
|
|
211
|
+
userIds: [userId],
|
|
212
|
+
statuses: ['ACTIVE', 'EXPIRED', 'FAILED']
|
|
213
|
+
});
|
|
214
|
+
return accounts.items;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
async function isToolkitConnected(userId, toolkit) {
|
|
218
|
+
const accounts = await composio.connectedAccounts.list({
|
|
219
|
+
userIds: [userId],
|
|
220
|
+
toolkitSlugs: [toolkit],
|
|
221
|
+
statuses: ['ACTIVE']
|
|
222
|
+
});
|
|
223
|
+
return accounts.items.length > 0;
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Available statuses:**
|
|
228
|
+
- `INITIALIZING` - Connection being set up
|
|
229
|
+
- `INITIATED` - Connection initiated, awaiting completion
|
|
230
|
+
- `ACTIVE` - Connection active and ready to use
|
|
231
|
+
- `FAILED` - Connection failed
|
|
232
|
+
- `EXPIRED` - Credentials expired
|
|
233
|
+
- `INACTIVE` - Connection disabled
|
|
234
|
+
|
|
235
|
+
## Key Points
|
|
236
|
+
|
|
237
|
+
- **Prefer link()** - Security, UI, and whitelabeling handled
|
|
238
|
+
- **Store account IDs** - Save in your database, associate with users
|
|
239
|
+
- **Check status** - Verify ACTIVE before use, refresh on errors
|
|
240
|
+
- **Handle lifecycle** - Disable instead of delete when possible
|