domains / agent-tooling / connect-external-apps / connect-apps
Both copies describe the same goal (connecting Claude to external apps via Composio), but they prescribe different, non-interchangeable procedures. The first copy uses a Claude Code plugin (`/plugin install composio-toolrouter` and `/composio-toolrouter:setup`) and relies on the agent to route natural-language requests. The second copy uses the Composio CLI (`curl` install, `composio login`, `composio link`, `composio execute`) and provides explicit command-line workflows, discovery, dry-runs, and environment variables. Because each copy contains material steps and constraints the other lacks, crowning one would hide a real alternative.
| Repository | Path |
|---|---|
| ComposioHQ/awesome-claude-skills | connect-apps/SKILL.md |
| composio-community/awesome-codex-skills | connect-apps/SKILL.md |
| Role | Repository | Path |
|---|---|---|
| peer | ComposioHQ/awesome-claude-skills | connect-apps/SKILL.md |
| peer | composio-community/awesome-codex-skills | connect-apps/SKILL.md |
---
name: connect-apps
description: Connect Claude to external apps like Gmail, Slack, GitHub, Notion, and 1000+ services. Use this skill when the user wants to send emails, create issues, post messages, or take actions in external services.
---
# Connect Apps
Connect Claude to 1000+ apps. Actually send emails, create issues, post messages - not just generate text about it.
## Quick Start
### Option A: Claude Code Plugin
1. Install the plugin:
```
/plugin install composio-toolrouter
```
2. Run setup:
```
/composio-toolrouter:setup
```
This asks for a free API key (get one at [platform.composio.dev](https://platform.composio.dev/?utm_source=Github&utm_content=AwesomeSkills)), configures the connection, and takes about 60 seconds.
3. Restart Claude Code and try a test action, e.g.:
```
Send me a test email at YOUR_EMAIL@example.com
```
### Option B: Composio CLI
1. Install the CLI:
```bash
curl -fsSL https://composio.dev/install | bash
```
2. Log in:
```bash
composio login
composio whoami
```
Opens a browser for auth, then prompts you to pick a default org and project. Use `-y` to skip prompts in scripts.
3. Link the apps you need:
```bash
composio link gmail
composio link slack
composio link github
```
Each command walks OAuth once; the connection then persists.
4. Try it:
```bash
composio execute GMAIL_SEND_EMAIL -d '{
"recipient_email": "YOUR_EMAIL@example.com",
"subject": "Composio test",
"body": "Hello from the CLI"
}'
```
## What You Can Do
| Ask Claude to... | What happens |
|------------------|--------------|
| "Send email to sarah@acme.com about the launch" | Actually sends the email |
| "Create GitHub issue: fix login bug" | Creates the issue |
| "Post to Slack #general: deploy complete" | Posts the message |
| "Add meeting notes to Notion" | Adds to Notion |
## Core Workflow (CLI)
1. **Know the tool slug?** → `composio execute <SLUG> -d '{...}'`
2. **Don't know it?** → `composio search "what you want"`
3. **Need inputs?** → `composio execute <SLUG> --get-schema` or `--dry-run`
4. **Not connected?** → `composio link <toolkit>` and retry
5. **Multi-step?** → `composio run` for JS/TS workflows, `composio proxy` for raw API
## Supported Apps
**Email:** Gmail, Outlook, SendGrid
**Chat:** Slack, Discord, Teams, Telegram
**Dev:** GitHub, GitLab, Jira, Linear
**Docs:** Notion, Google Docs, Confluence
**Data:** Sheets, Airtable, PostgreSQL
**And 1000+ more...**
## Handy Commands (CLI)
```bash
# Discover tools
composio search "create a github issue"
composio tools list gmail
composio tools info GITHUB_CREATE_ISSUE
# Inspect / dry-run before executing
composio execute GITHUB_CREATE_ISSUE --get-schema
composio execute GITHUB_CREATE_ISSUE --dry-run -d '{"owner":"acme","repo":"app","title":"Bug"}'
# Execute in parallel
composio execute --parallel \
GMAIL_FETCH_EMAILS -d '{"max_results": 2}' \
GITHUB_GET_THE_AUTHENTICATED_USER -d '{}'
# Multi-step workflow
composio run '
const issue = await execute("GITHUB_CREATE_ISSUE", {
owner: "acme", repo: "app", title: "Bug", body: "..."
});
console.log(issue);
'
# Raw API call when no dedicated tool exists
composio proxy https://gmail.googleapis.com/gmail/v1/users/me/profile --toolkit gmail
```
## Configuration (CLI)
**Environment variables:**
- `COMPOSIO_API_KEY` - auth credential for non-interactive use
- `COMPOSIO_BASE_URL` - custom API endpoint
- `COMPOSIO_SESSION_DIR` - override artifact storage
- `COMPOSIO_DISABLE_TELEMETRY=true` - opt out
**Global flags:** `--log-level <all|trace|debug|info|warning|error|fatal|none>`, `--help`.
## How It Works
1. You ask Claude to do something
2. Composio Tool Router finds the right tool
3. First time? You'll authorize via OAuth (one-time)
4. Action executes and returns result
## Troubleshooting
- **"Plugin not found"** → Make sure you ran `/plugin install composio-toolrouter`
- **"Need to authorize"** → Click the OAuth link Claude provides, then say "done"
- **`Not logged in`** → run `composio login`
- **`Connection required for <toolkit>`** → run `composio link <toolkit>`
- **Unknown slug** → `composio search "<goal>"` or `composio tools list <toolkit>`
- **Bad inputs** → `composio execute <SLUG> --get-schema` then `--dry-run`
- **Action failed** → Check you have permissions in the target app
Full reference: [docs.composio.dev/docs/cli](https://docs.composio.dev/docs/cli)
---
<p align="center">
<b>Join 20,000+ developers building agents that ship</b>
</p>
<p align="center">
<a href="https://platform.composio.dev/?utm_source=Github&utm_content=AwesomeSkills">
<img src="https://img.shields.io/badge/Get_Started_Free-4F46E5?style=for-the-badge" alt="Get Started"/>
</a>
</p>