Turns Claude from a text generator into something that actually executes actions across 1000+ apps. Instead of getting draft emails or suggested Slack messages, it sends them. Built on Composio's tool router, which handles OAuth and finds the right integration whether you're creating GitHub issues, updating Notion databases, or posting to Discord. The auth flow is straightforward: first time you use an app, you get a link to authorize, then connections persist. Works with any MCP client, plus they have dedicated packages for popular frameworks. The pitch is simple and honestly kind of compelling: stop generating text about what could happen and just make it happen.
npx -y skills add composiohq/awesome-claude-skills --skill connect --agent claude-codeInstalls into .claude/skills of the current project.
Connect Claude to any app. Stop generating text about what you could do - actually do it.
Use this skill when you need Claude to:
| Without Connect | With Connect |
|---|---|
| "Here's a draft email..." | Sends the email |
| "You should create an issue..." | Creates the issue |
| "Post this to Slack..." | Posts it |
| "Add this to Notion..." | Adds it |
1000+ integrations including:
Get your free key at platform.composio.dev
export COMPOSIO_API_KEY="your-key"
pip install composio # Python
npm install @composio/core # TypeScript
Done. Claude can now connect to any app.
Email sarah@acme.com - Subject: "Shipped!" Body: "v2.0 is live, let me know if issues"
Create issue in my-org/repo: "Mobile timeout bug" with label:bug
Post to #engineering: "Deploy complete - v2.4.0 live"
Find GitHub issues labeled "bug" from this week, summarize, post to #bugs on Slack
Uses Composio Tool Router:
from composio import Composio
from claude_agent_sdk.client import ClaudeSDKClient
from claude_agent_sdk.types import ClaudeAgentOptions
import os
composio = Composio(api_key=os.environ["COMPOSIO_API_KEY"])
session = composio.create(user_id="user_123")
options = ClaudeAgentOptions(
system_prompt="You can take actions in external apps.",
mcp_servers={
"composio": {
"type": "http",
"url": session.mcp.url,
"headers": {"x-api-key": os.environ["COMPOSIO_API_KEY"]},
}
},
)
async with ClaudeSDKClient(options) as client:
await client.query("Send Slack message to #general: Hello!")
First time using an app:
To send emails, I need Gmail access.
Authorize here: https://...
Say "connected" when done.
Connection persists after that.
| Framework | Install |
|---|---|
| Claude Agent SDK | pip install composio claude-agent-sdk |
| OpenAI Agents | pip install composio openai-agents |
| Vercel AI | npm install @composio/core @composio/vercel |
| LangChain | pip install composio-langchain |
| Any MCP Client | Use session.mcp.url |
Join 20,000+ developers building agents that ship
juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills