Skip to main content

composio-patterns

Canonical conventions for running batch workflows through the Composio MCP server. Use when authoring or modifying commands or agents that call Composio tools — the Workbench sandbox, Multi-Execute batching, and the local usage counter.

Ir a la instalación

Datos de origen

Repositorio
KingInYellows/yellow-plugins
Última actividad en el origen
6 de septiembre de 2026 a las 22:45
Idioma detectado de SKILL.md
inglés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
composio-patterns
description
Canonical conventions for running batch workflows through the Composio MCP server. Use when authoring or modifying commands or agents that call Composio tools — the Workbench sandbox, Multi-Execute batching, and the local usage counter.
user-invocable
false
# Composio Integration Patterns ## What It Does Reference conventions for yellow-composio plugin -- tool patterns, batch processing, usage tracking, graceful degradation, and security rules. ## When to Use Use when authoring or modifying commands or agents that call Composio tools -- the Workbench sandbox, Multi-Execute batching, and the local usage counter. ## Usage Reference the sections below as preloaded context; start with the Overview for the three-prefix tool discovery order. ## Overview Composio is a managed tool integration platform providing 1,000+ toolkits and 11,000+ actions via a single MCP server. In yellow-plugins, Composio is an **optional accelerator** -- all workflows must function without it. Tools are discovered via ToolSearch and may appear under one of three prefixes, checked in priority order: 1. `mcp__plugin_yellow-composio_composio-server__*` -- bundled by this plugin (preferred, requires both `userConfig` values to be set). 2. `mcp__claude_ai_composio__*` -- Claude.ai native Composio integration (legacy, still supported). 3. `mcp__composio-server__*` -- manual `claude mcp add` setup (legacy / migration path). ## Tool Reference ### Meta Tools (Always Available in Composio Session) | Tool | Slug | Purpose | |------|------|---------| | Search Tools | `COMPOSIO_SEARCH_TOOLS` | Discover tools, get schemas, check connection status | | Get Schemas | `COMPOSIO_GET_TOOL_SCHEMAS` | Full parameter schemas for specific tools | | Multi-Execute | `COMPOSIO_MULTI_EXECUTE_TOOL` | Run up to 50 tools in parallel | | Manage Connections | `COMPOSIO_MANAGE_CONNECTIONS` | OAuth flow, API key auth for apps | | Remote Workbench | `COMPOSIO_REMOTE_WORKBENCH` | Persistent Python sandbox (Jupyter-style) | | Remote Bash | `COMPOSIO_REMOTE_BASH_TOOL` | Bash commands in the sandbox | ### Additional Meta Tools | Tool | Purpose | |------|---------| | `COMPOSIO_CREATE_PLAN` | Generate execution plans for complex tasks | | `COMPOSIO_WAIT_FOR_CONNECTIONS` | Pause for user auth completion | | `COMPOSIO_LIST_TOOLKITS` | List all available toolkits with filters | | `COMPOSIO_EXECUTE_AGENT` | Execute complex multi-step workflows | | `COMPOSIO_GET_TOOL_DEPENDENCY_GRAPH` | Related/parent tool discovery | ### App-Specific Tools Follow `{TOOLKIT}_{ACTION}` naming (e.g., `GMAIL_SEND_EMAIL`, `GITHUB_CREATE_ISSUE`). Discovered at runtime via `COMPOSIO_SEARCH_TOOLS` -- never hardcode app-specific tool slugs. ## Workbench Batch Processing Pattern Use `COMPOSIO_REMOTE_WORKBENCH` when processing 10+ items, handling large API responses, or performing data transformation that would consume excessive context tokens. ### When to Use - Fetching and classifying 10+ items (Linear issues, semgrep findings, etc.) - Aggregating results from multiple API calls - Data transformation, filtering, and summarization - Any operation where raw response data would overwhelm context ### Session Lifecycle 1. **Get session_id** from `COMPOSIO_SEARCH_TOOLS` response (`session.id`) 2. **Execute code** via `COMPOSIO_REMOTE_WORKBENCH` with `session_id` 3. **State persists** across calls within the same session 4. **Each operation creates its own session** (no reuse across workflow steps in v1 -- avoids state leakage) ### Built-in Helpers Available inside `COMPOSIO_REMOTE_WORKBENCH` code: | Helper | Purpose | |--------|---------| | `run_composio_tool(slug, args)` | Execute any Composio tool; returns `(response, error)` | | `invoke_llm(query)` | Call LLM for classification/summarization (max 200K chars) | | `upload_local_file(*paths)` | Upload files to cloud storage; returns download URL | | `proxy_execute(method, endpoint, toolkit)` | Direct API calls when no tool exists | | `web_search` | Search the web for data enrichment | | `smart_file_extract` | Extract text from PDFs, images, documents | ### Parallelism Pattern ```python from concurrent.futures import ThreadPoolExecutor items = [...] # list of items to process results = [] def process_item(item): response, error = run_composio_tool("TOOL_SLUG", {"arg": item}) return {"item": item, "result": response, "error": error} with ThreadPoolExecutor(max_workers=10) as executor: results = list(executor.map(process_item, items)) ``` ### Context Window Management Use `sync_response_to_workbench=true` on `COMPOSIO_MULTI_EXECUTE_TOOL` to save large responses to the remote sandbox instead of returning them inline. Then process via `COMPOSIO_REMOTE_WORKBENCH` or `COMPOSIO_REMOTE_BASH_TOOL`. ### Chunked Execution for Large Batches Workbench has a **hard 4-minute timeout** per execution. For batches exceeding this: 1. Split work into chunks of N items (start with N=20, adjust based on per-item processing time) 2. Execute each chunk in a separate Workbench call 3. State persists across calls within the same session_id 4. Aggregate results across chunks after all complete ### Remote File Path Warning Paths returned from Workbench (e.g., `/home/user/.code_out/response.json`) are **REMOTE** -- they exist only in the sandbox. Never use them as local file paths. To get data out of the sandbox, return it inline from the Python code or use `upload_local_file()` for large artifacts. ## Multi-Execute Pattern `COMPOSIO_MULTI_EXECUTE_TOOL` runs up to 50 independent tool calls in parallel. ### Rules - Use valid tool slugs from `COMPOSIO_SEARCH_TOOLS` -- never invent slugs - Ensure ACTIVE connections for all toolkits being called - Only batch logically independent operations (no ordering dependencies) - Do not pass dummy or placeholder values ### Workflow ```text COMPOSIO_SEARCH_TOOLS -> COMPOSIO_MANAGE_CONNECTIONS (if needed) -> COMPOSIO_MULTI_EXECUTE_TOOL ``` ## Usage Tracking Convention ### Schema `.claude/composio-usage.json`: ```json { "version": 1, "created": "ISO8601", "updated": "ISO8601", "thresholds": { "daily_warn": 200, "monthly_warn": 8000 }, "periods": { "YYYY-MM": { "total": 0, "by_tool": { "TOOL_SLUG": 0 }, "by_day": { "YYYY-MM-DD": 0 } } } } ``` ### Counter Increment Consuming commands should increment the counter after each Composio tool execution using this pattern: ```bash USAGE_FILE=".claude/composio-usage.json" LOCK_FILE="${USAGE_FILE}.lock" # Caller must set TOOL_SLUG before sourcing (e.g., TOOL_SLUG="COMPOSIO_REMOTE_WORKBENCH") : "${TOOL_SLUG:?TOOL_SLUG is required}" TODAY=$(date -u +%Y-%m-%d) MONTH=$(date -u +%Y-%m) do_increment() { if jq --arg tool "$TOOL_SLUG" --arg day "$TODAY" --arg month "$MONTH" ' .updated = (now | todate) | .periods[$month] //= {"total": 0, "by_tool": {}, "by_day": {}} | .periods[$month].total += 1 | .periods[$month].by_tool[$tool] = ((.periods[$month].by_tool[$tool] // 0) + 1) | .periods[$month].by_day[$day] = ((.periods[$month].by_day[$day] // 0) + 1) ' "$USAGE_FILE" > "${USAGE_FILE}.tmp"; then mv "${USAGE_FILE}.tmp" "$USAGE_FILE" else rm -f "${USAGE_FILE}.tmp" return 1 fi } if [ -f "$USAGE_FILE" ]; then if command -v flock >/dev/null 2>&1; then touch "$LOCK_FILE" ( flock -x 200; do_increment ) 200>"$LOCK_FILE" else do_increment fi fi ``` Increment **post-execution** (after confirmed success), not pre-execution. ### Threshold Checking - Warn at 80% of `monthly_warn` (approaching threshold) - Warn when projected monthly usage exceeds `monthly_warn` - Display prominent warning when actual usage reaches `monthly_warn` - Check daily count against `daily_warn` threshold - Never hard-block -- the user owns their budget ## Graceful Degradation Pattern All consuming plugins must detect Composio availability at runtime and fall back silently when absent. ### Detection (Pattern A -- ToolSearch Probe) ```text 1. ToolSearch("COMPOSIO_REMOTE_WORKBENCH") 2. If not found: skip Composio path, use existing local approach 3. If found: proceed with Composio-accelerated path 4. If Composio call fails at runtime: fall back to local approach, note degradation briefly ``` This matches the pattern used by `review:pr` for ruvector/morph detection and by debt scanners for ast-grep detection. ### Consumer Integration Pattern Consuming plugins embed Composio detection inline in their command markdown (not via cross-plugin `skills:` preloading -- no such mechanism exists). Pattern: ```markdown ### Step N: Composio acceleration (optional) 1. Call ToolSearch("COMPOSIO_REMOTE_WORKBENCH"). If not found, skip to Step N+1. 2. [Composio-accelerated operation here] 3. Increment usage counter (see composio-patterns skill for bash snippet) 4. If Composio call fails: fall back to [existing local approach], note degradation briefly. ``` ## Error Handling Catalog | Error | Recovery | |-------|----------| | ToolSearch: no Composio tools | Silent skip, use local codepath | | Tool call: network timeout | Retry once after 2s, then fallback to local | | Tool call: 401 Unauthorized | Log warning, fallback to local, suggest `/composio:setup` | | Tool call: 429 Rate Limited | Wait `Retry-After` header seconds, retry once, then fallback | | Workbench: 4-minute timeout | Log warning, reduce batch size, fallback to local | | Connection not ACTIVE | Log warning, suggest `COMPOSIO_MANAGE_CONNECTIONS` | | MCP server not configured | Run `/composio:setup` | | Usage counter missing | Run `/composio:setup` | | Usage counter corrupted | Run `/composio:setup` to reset | ## Security Notes - **Remote execution**: Workbench executes Python code on Composio's remote infrastructure. Do not send sensitive file contents, credentials, private keys, or proprietary algorithms. Use Workbench for data processing and API orchestration, not as a trusted execution environment. - **API key stored in system keychain**: When the bundled MCP path is used, the `composio_api_key` `userConfig` value is stored in the OS keychain (`sensitive: true`) and sent as the `X-API-Key` header on every request. Never echo, log, or transmit the value. Legacy `mcp__claude_ai_composio__*` and `mcp__composio-server__*` paths use Claude Code's native or manual credential management instead. - **HTTPS-only MCP URL (advisory)**: `composio_mcp_url` MUST start with `https://` — Claude Code sends the API key as the `X-API-Key` header to whatever URL is configured, so a non-HTTPS URL leaks the credential in cleartext. Format is not enforced at the schema level (the Claude Code remote validator does not support `userConfig.<key>.pattern`); the bundled `hooks/check-mcp-url.sh` SessionStart hook prints a warning if the URL is non-HTTPS, but it cannot block the MCP server from attaching first. Treat the warning as a "reconfigure now" signal: open `/plugin`, set the URL to an `https://mcp.composio.dev/*` value, and restart the session. - **Content fencing**: Wrap all Composio responses in `--- begin/end ---` delimiters per repository convention. - **Data transmission**: Tool call parameters and Workbench code are sent to Composio's cloud servers. Review what data is included before execution. - **Sandbox isolation**: Composio's sandbox isolation details (containerization, tenant separation) are not publicly documented. Enterprise tier offers VPC/on-prem deployment for stricter requirements. ## Composio Pricing Reference | Plan | Executions/Month | Price | |------|-----------------|-------| | Free / Hobby | 10,000 | $0 | | Starter | 100,000 | $119/month | | Growth | 2,000,000 | $229/month | | Enterprise | Custom | Custom | Overage: $0.249 per 1,000 additional calls. Premium tools cost ~3x standard.
Ver en GitHub