关于 github-automation
通过 Composio 的 GitHub 工具包自动处理仓库、议题、拉取请求、分支和 CI/CD 任务。面向开发者提供工作流指引,并要求通过 Rube MCP 建立已认证的 GitHub 连接。
主要功能
- 01创建和管理议题
- 02创建、审查和合并拉取请求
- 03管理仓库和分支
- 04搜索代码和提交记录
- 05查看并触发 CI 工作流
- 06检查协作者和分支保护
适用场景
- 01创建并分类处理仓库议题
- 02合并前审查拉取请求并检查 CI
- 03创建分支并更新仓库设置
- 04搜索代码或查看部署状态
MCP 相关
通过 Rube MCP 使用 Composio 的 GitHub 工具。需要已激活的 GitHub 连接,并通过 RUBE_SEARCH_TOOLS 获取当前工具架构。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill github-automation安装后在 Claude Code 中输入/github-automation确认已加载。
详细介绍
通过 Rube MCP 自动化 GitHub
通过 Composio 的 GitHub 工具包自动化 GitHub 仓库管理、问题跟踪、拉取请求工作流、分支操作和 CI/CD。
工具包文档:composio.dev/toolkits/github
前提条件
- 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
- 通过
RUBE_MANAGE_CONNECTIONS建立有效的 GitHub 连接,并指定工具包github - 始终先调用
RUBE_SEARCH_TOOLS,以获取当前工具架构
设置
获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS能够响应,以验证 Rube MCP 可用 - 调用
RUBE_MANAGE_CONNECTIONS,并指定工具包github - 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 GitHub OAuth
- 运行任何工作流前,确认连接状态为 ACTIVE
核心工作流
1. 创建和管理问题
适用场景:用户想要创建、列出或管理 GitHub 问题
工具调用顺序:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER- 如果目标仓库未知,则查找目标仓库 [前置条件]GITHUB_LIST_REPOSITORY_ISSUES- 列出现有问题(包括 PR)[必需]GITHUB_CREATE_AN_ISSUE- 创建新问题 [必需]GITHUB_CREATE_AN_ISSUE_COMMENT- 为问题添加评论 [可选]GITHUB_SEARCH_ISSUES_AND_PULL_REQUESTS- 按关键词跨仓库搜索 [可选]
关键参数:
owner:仓库所有者(用户名或组织),不区分大小写repo:仓库名称,不带 .git 扩展名title:问题标题(创建时必需)body:问题描述(支持 Markdown)labels:标签名称数组assignees:GitHub 用户名数组state:用于筛选的 'open'、'closed' 或 'all'
注意事项:
GITHUB_LIST_REPOSITORY_ISSUES会同时返回问题和拉取请求;检查pull_request字段以区分- 只有具有推送权限的用户才能设置受理人、标签和里程碑;否则这些设置会被静默忽略
- 分页:
per_page最大值为 100;持续遍历各页,直到结果为空
2. 管理拉取请求
适用场景:用户想要创建、审查或合并拉取请求
工具调用顺序:
GITHUB_FIND_PULL_REQUESTS- 搜索和筛选 PR [必需]GITHUB_GET_A_PULL_REQUEST- 获取 PR 详细信息,包括可合并状态 [必需]GITHUB_LIST_PULL_REQUESTS_FILES- 审查更改的文件 [可选]GITHUB_CREATE_A_PULL_REQUEST- 创建新 PR [必需]GITHUB_CREATE_AN_ISSUE_COMMENT- 发布审查评论 [可选]GITHUB_LIST_CHECK_RUNS_FOR_A_REF- 合并前验证 CI 状态 [可选]GITHUB_MERGE_A_PULL_REQUEST- 获得用户明确批准后合并 [必需]
关键参数:
head:包含更改的源分支(必须存在;跨仓库时使用:'username:branch')base:要合并到的目标分支(例如:'main')title:PR 标题(除非提供issue编号,否则必需)merge_method:'merge'、'squash' 或 'rebase'state:'open'、'closed' 或 'all'
注意事项:
- 如果 base/head 无效、相同或已合并,
GITHUB_CREATE_A_PULL_REQUEST会返回 422 错误 - 如果 PR 是草稿、已关闭或受到分支保护规则限制,
GITHUB_MERGE_A_PULL_REQUEST可能会被拒绝 - 合并前,务必立即使用
GITHUB_GET_A_PULL_REQUEST验证可合并状态 - 调用 MERGE 前,必须获得用户明确确认
3. 管理仓库和分支
适用场景:用户想要创建仓库、管理分支或更新仓库设置
工具调用顺序:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER- 列出用户的仓库 [必需]GITHUB_GET_A_REPOSITORY- 获取仓库详细信息 [可选]GITHUB_CREATE_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER- 创建个人仓库 [必需]GITHUB_CREATE_AN_ORGANIZATION_REPOSITORY- 创建组织仓库 [替代选项]GITHUB_LIST_BRANCHES- 列出分支 [必需]GITHUB_CREATE_A_REFERENCE- 从 SHA 创建新分支 [必需]GITHUB_UPDATE_A_REPOSITORY- 更新仓库设置 [可选]
关键参数:
name:仓库名称private:用于设置可见性的布尔值ref:完整的引用路径(例如,'refs/heads/new-branch')sha:新引用指向的提交 SHAdefault_branch:默认分支名称
注意事项:
GITHUB_CREATE_A_REFERENCE只能创建新引用;更新现有引用请使用GITHUB_UPDATE_A_REFERENCEref必须以 'refs/' 开头,且至少包含两个斜杠GITHUB_LIST_BRANCHES通过page/per_page分页;请持续迭代,直到返回空页GITHUB_DELETE_A_REPOSITORY会永久删除仓库且无法撤销;需要管理员权限
4. 搜索代码和提交
适用场景:用户想要在各个仓库中查找代码、文件或提交
工具调用顺序:
GITHUB_SEARCH_CODE- 搜索文件内容和路径 [必需]GITHUB_SEARCH_CODE_ALL_PAGES- 搜索代码的多个分页结果 [替代选项]GITHUB_SEARCH_COMMITS_BY_AUTHOR- 按作者、日期或组织搜索提交 [必需]GITHUB_LIST_COMMITS- 列出特定仓库的提交 [替代选项]GITHUB_GET_A_COMMIT- 获取提交的详细信息 [可选]GITHUB_GET_REPOSITORY_CONTENT- 获取文件内容 [可选]
关键参数:
q:带限定符的搜索查询(language:python、repo:owner/repo、extension:js)owner/repo:用于列出特定仓库的提交author:按提交作者筛选since/until:提交的 ISO 8601 日期范围
注意事项:
- 代码搜索只会索引默认分支上小于 384KB 的文件
- 代码搜索最多返回 1000 条结果
GITHUB_SEARCH_COMMITS_BY_AUTHOR除了限定符,还要求包含关键词;不允许仅使用限定符的查询- 空仓库调用
GITHUB_LIST_COMMITS会返回 409
5. 管理 CI/CD 和部署
适用场景:用户想要查看工作流、检查 CI 状态或管理部署
工具调用顺序:
GITHUB_LIST_REPOSITORY_WORKFLOWS- 列出 GitHub Actions 工作流 [必需]GITHUB_GET_A_WORKFLOW- 按 ID 或文件名获取工作流详情 [可选]GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT- 手动触发工作流 [必需]GITHUB_LIST_CHECK_RUNS_FOR_A_REF- 检查提交或分支的 CI 状态 [必需]GITHUB_LIST_DEPLOYMENTS- 列出部署 [可选]GITHUB_GET_A_DEPLOYMENT_STATUS- 获取部署状态 [可选]
关键参数:
workflow_id:数字 ID 或文件名(例如,'ci.yml')ref:用于触发工作流的 Git 引用(分支或标签)inputs:与on.workflow_dispatch.inputs匹配的工作流输入 JSON 字符串environment:按环境名称筛选部署
注意事项:
GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT要求工作流已配置workflow_dispatch触发器- 完整路径
.github/workflows/main.yml会自动缩短为main.yml - 输入最多包含 10 个键值对;必须与工作流的
on.workflow_dispatch.inputs定义匹配
6. 管理用户和权限
使用时机:用户想要检查协作者、权限或分支保护规则
工具调用顺序:
GITHUB_LIST_REPOSITORY_COLLABORATORS- 列出仓库协作者[必需]GITHUB_GET_REPOSITORY_PERMISSIONS_FOR_A_USER- 检查特定用户的访问权限[可选]GITHUB_GET_BRANCH_PROTECTION- 检查分支保护规则[必需]GITHUB_UPDATE_BRANCH_PROTECTION- 更新保护设置[可选]GITHUB_ADD_A_REPOSITORY_COLLABORATOR- 添加或更新协作者[可选]
关键参数:
affiliation:使用 'outside'、'direct' 或 'all' 筛选协作者permission:按 'pull'、'triage'、'push'、'maintain'、'admin' 筛选branch:保护规则所针对的分支名称enforce_admins:保护规则是否适用于管理员
注意事项:
- 对未设置保护规则的分支,
GITHUB_GET_BRANCH_PROTECTION会返回 404;应将其视为没有保护规则 - 应根据
permissions.push或role_name判断是否具有推送权限,而不是根据显示标签 GITHUB_LIST_REPOSITORY_COLLABORATORS会分页;请遍历所有页面- 对于非协作者,
GITHUB_GET_REPOSITORY_PERMISSIONS_FOR_A_USER的结果可能无法得出明确结论
常见模式
ID 解析
- 仓库名称 -> owner/repo:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER - PR 编号 -> PR 详情:先调用
GITHUB_FIND_PULL_REQUESTS,再调用GITHUB_GET_A_PULL_REQUEST - 分支名称 -> SHA:
GITHUB_GET_A_BRANCH - 工作流名称 -> ID:
GITHUB_LIST_REPOSITORY_WORKFLOWS
分页
所有列表端点都使用基于页码的分页:
page:页码(从 1 开始)per_page:每页结果数(最多 100)- 持续迭代,直到响应返回的结果数少于
per_page
安全性
- 合并前务必确认 PR 可合并状态
- 执行破坏性操作(合并、删除)前,必须取得用户明确确认
- 合并前使用
GITHUB_LIST_CHECK_RUNS_FOR_A_REF检查 CI 状态
已知注意事项
- Issue 与 PR:
GITHUB_LIST_REPOSITORY_ISSUES会同时返回两者;请检查pull_request字段 - 分页限制:
per_page最大为 100;务必持续遍历页面,直到返回空结果 - 创建分支:如果引用已存在,
GITHUB_CREATE_A_REFERENCE会返回 422 - 合并限制:分支保护、检查失败或草稿状态都可能导致合并失败
- 代码搜索限制:仅搜索默认分支上小于 384KB 的文件;最多返回 1000 条结果
- 提交搜索:除限定条件外,还需要搜索文本关键词
- 破坏性操作:删除仓库不可撤销;合并无法撤销
- 权限不足导致内容被静默丢弃:没有推送权限时,标签、受理人和里程碑会被静默丢弃
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List repos | GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER | type, sort, per_page |
| Get repo | GITHUB_GET_A_REPOSITORY | owner, repo |
| Create issue | GITHUB_CREATE_AN_ISSUE | owner, repo, title, body |
| List issues | GITHUB_LIST_REPOSITORY_ISSUES | owner, repo, state |
| Find PRs | GITHUB_FIND_PULL_REQUESTS | repo, state, author |
| Create PR | GITHUB_CREATE_A_PULL_REQUEST | owner, repo, head, base, title |
| Merge PR | GITHUB_MERGE_A_PULL_REQUEST | owner, repo, pull_number, merge_method |
| List branches | GITHUB_LIST_BRANCHES | owner, repo |
| Create branch | GITHUB_CREATE_A_REFERENCE | owner, repo, ref, sha |
| Search code | GITHUB_SEARCH_CODE | q |
| List commits | GITHUB_LIST_COMMITS | owner, repo, author, since |
| Search commits | GITHUB_SEARCH_COMMITS_BY_AUTHOR | q |
| List workflows | GITHUB_LIST_REPOSITORY_WORKFLOWS | owner, repo |
| Trigger workflow | GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT | owner, repo, workflow_id, ref |
| Check CI | GITHUB_LIST_CHECK_RUNS_FOR_A_REF | owner, repo, ref |
| List collaborators | GITHUB_LIST_REPOSITORY_COLLABORATORS | owner, repo |
| Branch protection | GITHUB_GET_BRANCH_PROTECTION | owner, repo, branch |
Powered by Composio
评论
支持 Markdown