用 connect-apps 技能把 Claude 接入 1000+ 应用:Composio CLI 实战指南
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
导读
本指南基于 awesome-codex-skills 仓库中的 connect-apps 技能,系统讲解如何通过 Composio CLI 让 Claude/Codex 真正操作 Gmail、Slack、GitHub、Notion 等 1000+ 外部服务——发邮件、建 Issue、发消息,而不是只"生成一段关于如何做的文字"。读完本文,你将掌握从安装登录、链接应用、执行工具到多步工作流、原始 API 代理、故障排查的完整实战闭环,并能结合仓库内 issue-triage、pr-review-ci-fix、datadog-logs 等同族技能看到它在真实场景中的落地方式。
connect-apps 是什么
connect-apps是 awesome-codex-skills 仓库中用于"应用连接"的 Codex 技能之一。它的核心定位是:把 AI Agent 与外部应用之间的"最后一公里"打通。
技能的 frontmatter 明确给出了触发时机与能力边界:
name: connect-apps description: Connect Claude to external apps via the Composio CLI. Use this skill when the user wants to send emails, create issues, post messages, or take actions across Gmail, Slack, GitHub, Notion, and 1000+ services from the terminal.一句话概括:当用户说"给 sarah 发一封关于发布的邮件"、"在 GitHub 上建一个修复登录 Bug 的 Issue"、"往 Slack 的 #general 发一条部署完成的消息"时,Codex/Claude 就应触发该技能,把自然语言诉求翻译成一条条 Composio CLI 命令,直接在终端里执行真实操作。
在仓库的 README 技能清单 中,它与connect/(面向 Codex 的姊妹技能)并列于"Productivity & Collaboration"分类,两者共享同一套 Composio CLI 底座,区别仅在于触发主体与文档侧重:connect面向 Codex 用户,connect-apps面向 Claude 用户。
快速上手:四步完成连接
第 1 步:安装 Composio CLI
curl -fsSL https://composio.dev/install | bash这是官方一键安装脚本,会在当前环境安装composio命令。仓库内所有基于 Composio CLI 的技能(issue-triage、pr-review-ci-fix、datadog-logs 等)都以这一行为前置条件。
第 2 步:登录
composio login composio whoamicomposio login会打开浏览器完成认证,随后提示你选择默认的组织(org)和项目(project)。composio whoami用于验证当前登录身份与上下文是否就绪。在脚本化、无人值守的场景中,可加-y跳过所有交互式提示,或用环境变量COMPOSIO_API_KEY完成非交互认证(详见下文"配置"一节)。
第 3 步:链接你需要的应用
composio link gmail composio link slack composio link github每个composio link <toolkit>命令会走一次 OAuth 授权流程,授权成功后连接会持久化保存,之后无需重复授权。注意这里的参数是"工具包(toolkit)"而非单个动作——一个 toolkit 对应一个外部应用的全部工具集合。
第 4 步:试跑一个动作
composio execute GMAIL_SEND_EMAIL -d '{ "recipient_email": "YOUR_EMAIL@example.com", "subject": "Composio test", "body": "Hello from the CLI" }'如果收件箱里收到了这封测试邮件,说明整条链路(CLI → 认证 → 应用 API)已完全打通。这一步是整个技能"可用性"的验收标准:能真正把邮件发出去,而不是生成一封邮件的草稿文本。
能力对照:从"建议"到"执行"
技能的核心理念可以用一个对比表直观呈现——同样的诉求,在没有连接能力与有连接能力时的差异:
| 对 Claude 说 | Claude 执行的真实操作 |
|---|---|
| "给 sarah@acme.com 发送关于发布的邮件" | composio execute GMAIL_SEND_EMAIL -d '{...}' |
| "创建 GitHub Issue:修复登录 Bug" | composio execute GITHUB_CREATE_ISSUE -d '{...}' |
| "往 Slack #general 发:部署完成" | composio execute SLACK_SEND_MESSAGE -d '{...}' |
| "把会议纪要加入 Notion" | composio execute NOTION_CREATE_PAGE -d '{...}' |
姊妹技能 connect/SKILL.md 中的 "What Changes" 对照表把这层含义说得更直白:没有 Connect 时,Agent 只会给出"这是邮件草稿……"、"你应该建一个 Issue……";有了 Connect,Agent 直接发送邮件、创建 Issue、发布消息、写入 Notion。从"生成文字"到"采取行动",就是这套技能存在的全部意义。
核心工作流:五步决策法
connect-apps文档提炼了一个在任何场景下都适用的核心决策流程:
- 知道工具 slug?→
composio execute <SLUG> -d '{...}'直接执行 - 不知道 slug?→
composio search "你想做的事"搜索发现 - 不确定入参结构?→
composio execute <SLUG> --get-schema或--dry-run先探查 - 应用未连接?→
composio link <toolkit>链接后重试 - 需要多步编排?→
composio run跑 JS/TS 工作流,composio proxy访问原始 API
这套流程在仓库的其他技能中得到了反复印证。例如 issue-triage 明确建议"先用--get-schema确认字段形状(Linear 使用嵌套对象、Jira 使用 JQL 字符串)",pr-review-ci-fix 也要求"首次使用前务必composio execute <SLUG> --get-schema"。这说明**"先探查再执行"不是可选项,而是这套 CLI 体系的约定俗成**。
常用命令速查
发现与探查工具
# 按意图搜索工具 composio search "create a github issue" composio search "send an email" --toolkits gmail # 限定在某个 toolkit 内搜索 # 列出某个 toolkit 的全部工具 composio tools list gmail # 查看某个工具的元信息 composio tools info GITHUB_CREATE_ISSUE执行前的安全检查
# 查看 GITHUB_CREATE_ISSUE 的入参 schema(字段名、类型、必填项) composio execute GITHUB_CREATE_ISSUE --get-schema # 干跑:不真正执行,只校验输入是否合法 composio execute GITHUB_CREATE_ISSUE --dry-run -d '{"owner":"acme","repo":"app","title":"Bug"}'--get-schema与--dry-run是"坏输入"类故障的第一道防线:前者告诉你参数长什么样,后者在不动真实数据的前提下验证你给出的 JSON 是否合规。
并行执行多个动作
composio execute --parallel \ GMAIL_FETCH_EMAILS -d '{"max_results": 2}' \ GITHUB_GET_THE_AUTHENTICATED_USER -d '{}'--parallel把多个独立动作一次性发出,适合"拉取收件箱 + 获取当前用户信息"这类互不依赖的批量任务。但要注意 pr-review-ci-fix 的告诫:对同一仓库的写操作要避免--parallel,防止速率限制;批量编辑场景建议在composio run循环中插入 250ms 的 sleep(见 issue-triage)。
多步工作流:composio run
当单条命令无法表达"先查询、再加工、后发送"的链路时,用composio run编写 JS/TS 脚本:
composio run ' const issue = await execute("GITHUB_CREATE_ISSUE", { owner: "acme", repo: "app", title: "Bug", body: "..." }); console.log(issue); 'connect/SKILL.md 给出了一个更贴近实战的链式示例——拉取本周 bug 列表并汇总发到 Slack:
composio run ' const issues = await search("github issues labeled bug this week"); const summary = issues.map(i => `- ${i.title}`).join("\n"); await execute("SLACK_SEND_MESSAGE", { channel: "bugs", text: `This week’s bugs:\n${summary}` }); '工作流还可以落盘成文件复用,并通过--分隔符向脚本传参:
composio run --file ./workflow.ts -- --repo composiohq/composio仓库对此的实践非常充分:issue-triage 的scripts/triage-linear.ts用execute("LINEAR_LIST_ISSUES")拉取积压 Issue、本地过滤出 14 天未动的条目、再逐个LINEAR_CREATE_COMMENT催办并SLACK_SEND_MESSAGE汇报结果;datadog-logs 的dd-incident.ts则用-- --service checkout传入服务名参数,一次查询采样日志、一次做聚合统计。这些文件展示了composio run在真实技能中的标准写法。
原始 API 代理:composio proxy
当某个外部应用没有对应的专用工具(slug)时,composio proxy让你直接调用已认证的原始 API:
# GET 请求:读取 Gmail 用户资料 composio proxy https://gmail.googleapis.com/gmail/v1/users/me/profile \ --toolkit gmail # POST 请求:创建一封草稿 composio proxy https://gmail.googleapis.com/gmail/v1/users/me/drafts \ --toolkit gmail -X POST -H 'content-type: application/json' \ -d '{"message":{"raw":"..."}}'--toolkit参数指定使用哪个已链接应用的认证凭据,-X、-H、-d与 curl 语义一致。它的典型用法包括:调用 SDK 尚未封装的接口、流式下载大体积日志后在本地 grep(见 pr-review-ci-fix)、以及构造自定义请求体。
支持的应用矩阵
connect-apps文档列举了按场景划分的应用覆盖(1000+ 集成):
- Email(邮件):Gmail、Outlook、SendGrid
- Chat(聊天):Slack、Discord、Teams、Telegram
- Dev(开发):GitHub、GitLab、Jira、Linear
- Docs(文档):Notion、Google Docs、Confluence
- Data(数据):Sheets、Airtable、PostgreSQL
- 还有 1000+ 更多……
姊妹技能 connect/SKILL.md 补充了更多分类:CRM(HubSpot、Salesforce、Pipedrive)、Storage(Drive、Dropbox、S3)、Social(Twitter、LinkedIn、Reddit)。
值得注意的是,这套矩阵在本仓库中几乎"一技能一应用"地落地了:composio-skills/目录下存放着数百个*-automation技能(如gmail-automation/、slackbot-automation/、github-automation/),外加 issue-triage(Linear/Jira)、datadog-logs(Datadog)等复合技能。connect-apps是这些细分技能的"通用基座"——先学会它,再上手任何具体应用都会一通百通。
典型实战示例
发送一封邮件
composio execute GMAIL_SEND_EMAIL -d '{ "recipient_email": "sarah@acme.com", "subject": "Shipped!", "body": "v2.0 is live, let me know if issues" }'创建 GitHub Issue
composio execute GITHUB_CREATE_ISSUE -d '{ "owner": "my-org", "repo": "repo", "title": "Mobile timeout bug", "labels": ["bug"] }'发布 Slack 消息
composio execute SLACK_SEND_MESSAGE -d '{ "channel": "engineering", "text": "Deploy complete - v2.4.0 live" }'真实技能中的组合用法
在 pr-review-ci-fix 中,一次完整的 PR 评审包含拉取 PR 元数据、列出变更文件、发布带行内评论的评审意见:
composio execute GITHUB_GET_A_PULL_REQUEST \ -d '{"owner":"acme","repo":"app","pull_number":482}' composio execute GITHUB_LIST_PULL_REQUESTS_FILES \ -d '{"owner":"acme","repo":"app","pull_number":482}' composio execute GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST -d '{ "owner":"acme","repo":"app","pull_number":482, "event":"COMMENT", "body":"Overall LGTM with 2 blocking notes.", "comments":[ {"path":"src/auth.ts","line":42,"body":"Missing null check on session"}, {"path":"src/auth.ts","line":88,"body":"Token TTL is hardcoded; move to config"} ] }'在 datadog-logs 中,查询结果以 JSON 输出到 stdout,可直接管道给jq做本地聚合:
composio execute DATADOG_SEARCH_LOGS -d '{ "filter": {"query":"service:api status:error","from":"now-30m","to":"now"}, "page":{"limit":500} }' | jq -r '.data[].attributes.message' | sort | uniq -c | sort -rn | head配置项说明
环境变量
| 变量 | 作用 |
|---|---|
COMPOSIO_API_KEY | 非交互场景的认证凭据(脚本、CI 中替代composio login) |
COMPOSIO_BASE_URL | 自定义 API 端点(私有化部署或代理场景) |
COMPOSIO_SESSION_DIR | 覆盖工件(artifact)存储目录 |
COMPOSIO_DISABLE_TELEMETRY=true | 关闭遥测上报 |
全局标志
--log-level <all|trace|debug|info|warning|error|fatal|none>:控制日志输出粒度,排查问题时建议开到trace或debug--help:查看每条子命令的详细帮助
类型安全 SDK(可选进阶)
当需要从应用程序代码(而非 shell)中调用工具时,可生成类型化的客户端代码:
composio generate ts # TypeScript 类型 composio generate py # Python 类型支持标志:-o <dir>(输出目录)、--toolkits <list>(限定工具包)、--compact、--transpiled、--type-tools。这是把同一套工具能力嵌入到自研应用中的桥梁。
故障排查速查表
| 症状 | 处理方式 |
|---|---|
Not logged in | 运行composio login |
Connection required for <toolkit> | 运行composio link <toolkit> |
| 未知 slug | composio search "<目标>"或composio tools list <toolkit> |
| 入参错误 | 先composio execute <SLUG> --get-schema,再--dry-run验证 |
| 动作执行失败 | 检查目标应用侧的权限配置 |
仓库内各技能还在这一基础表上补充了具体应用的坑位,值得一并收藏:
- issue-triage:Linear 返回 403 → 用正确的 workspace 重新
composio link linear;Jira 自定义字段缺失 → 在fields数组中显式请求;批量写入被限流 → 循环内加 250ms sleep。 - pr-review-ci-fix:日志下载过大 → 用
composio proxy流式拉取 + 本地 grep;速率限制 → 串行化调用、降低轮询频率。 - datadog-logs:空结果 → 确认
env:/service:标签且站点区域正确;403 → APP key 缺少logs_read权限,需重新生成并重新链接。
如何把该技能装入你的 Codex/Claude 环境
connect-apps是仓库中的标准技能目录,结构与仓库内所有技能一致——每个技能目录下都有一个带 YAML frontmatter(name+description)的SKILL.md,Codex/Claude 依据 frontmatter 中的 description 决定何时触发该技能,加载正文后才占用上下文,保持对话精简(见 README.md)。
安装方式有两种:
- Skill Installer(推荐):使用仓库自带的 skill-installer 脚本,将技能安装到
$CODEX_HOME/skills(默认为~/.codex/skills),安装完成后重启 Codex 即可生效。 - 手动安装:把
connect-apps/目录复制到$CODEX_HOME/skills/下,重启 Codex,然后在会话中自然描述需求(如"帮我发封邮件"),Codex 会依据description自动触发该技能。
安装后,配合技能正文中的命令,你就拥有了一个"会动手"的 Agent:在终端里向 Claude/Codex 描述意图,它自动执行composio link、composio execute、composio run,把真实世界的操作闭环起来。
小结
connect-apps技能的价值可以浓缩为一句话:用一条命令,把 AI 从"文字生成器"升级为"行动执行器"。它通过 Composio CLI 提供了安装、登录、链接、执行、搜索、探查、并行、编排、代理、配置、排障的完整工具链,并已被仓库内 issue-triage、pr-review-ci-fix、datadog-logs 等十数个技能作为公共底座反复使用。无论你是要自动化邮件、Issue 管理、CI 修复还是日志排查,从这篇指南出发,再结合对应细分技能文档,即可快速上手真实应用的操作自动化。
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考