mcpField
G
github-automation

github-automation

github.com/composiohq开发78.3k91 次安装14 周前更新
代码仓库

关于 github-automation

通过 Composio 工具包自动处理 GitHub 仓库、议题、拉取请求、分支、搜索和 CI/CD 任务。该技能为 Agent 提供工具调用顺序及合并前确认等操作规范。

主要功能

  1. 01议题与拉取请求工作流
  2. 02仓库和分支管理
  3. 03代码与提交搜索
  4. 04工作流和 CI 状态检查
  5. 05协作者与保护规则管理

适用场景

  1. 01创建和跟踪仓库议题
  2. 02审查并合并拉取请求
  3. 03跨仓库查找代码或提交
  4. 04查看工作流与部署状态

MCP 相关

通过 Rube MCP 使用 Composio 的 GitHub 工具包。执行工作流前,需检查当前工具模式并确认 GitHub 连接已激活。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/composiohq/awesome-claude-skills --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 密钥,只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 可用
  2. 调用 RUBE_MANAGE_CONNECTIONS,并指定工具包 github
  3. 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 GitHub OAuth
  4. 运行任何工作流前,确认连接状态为 ACTIVE

核心工作流

1. 创建和管理问题

适用场景:用户想要创建、列出或管理 GitHub 问题

工具调用顺序:

  1. GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER - 如果目标仓库未知,则查找目标仓库 [前置条件]
  2. GITHUB_LIST_REPOSITORY_ISSUES - 列出现有问题(包括 PR)[必需]
  3. GITHUB_CREATE_AN_ISSUE - 创建新问题 [必需]
  4. GITHUB_CREATE_AN_ISSUE_COMMENT - 为问题添加评论 [可选]
  5. 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. 管理拉取请求

适用场景:用户想要创建、审查或合并拉取请求

工具调用顺序:

  1. GITHUB_FIND_PULL_REQUESTS - 搜索和筛选 PR [必需]
  2. GITHUB_GET_A_PULL_REQUEST - 获取 PR 详细信息,包括可合并状态 [必需]
  3. GITHUB_LIST_PULL_REQUESTS_FILES - 审查更改的文件 [可选]
  4. GITHUB_CREATE_A_PULL_REQUEST - 创建新 PR [必需]
  5. GITHUB_CREATE_AN_ISSUE_COMMENT - 发布审查评论 [可选]
  6. GITHUB_LIST_CHECK_RUNS_FOR_A_REF - 合并前验证 CI 状态 [可选]
  7. 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. 管理仓库和分支

适用场景:用户想要创建仓库、管理分支或更新仓库设置

工具调用顺序:

  1. GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER - 列出用户的仓库 [必需]
  2. GITHUB_GET_A_REPOSITORY - 获取仓库详细信息 [可选]
  3. GITHUB_CREATE_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER - 创建个人仓库 [必需]
  4. GITHUB_CREATE_AN_ORGANIZATION_REPOSITORY - 创建组织仓库 [替代选项]
  5. GITHUB_LIST_BRANCHES - 列出分支 [必需]
  6. GITHUB_CREATE_A_REFERENCE - 从 SHA 创建新分支 [必需]
  7. GITHUB_UPDATE_A_REPOSITORY - 更新仓库设置 [可选]

关键参数:

  • name:仓库名称
  • private:用于设置可见性的布尔值
  • ref:完整的引用路径(例如,'refs/heads/new-branch')
  • sha:新引用指向的提交 SHA
  • default_branch:默认分支名称

注意事项:

  • GITHUB_CREATE_A_REFERENCE 只能创建新引用;更新现有引用请使用 GITHUB_UPDATE_A_REFERENCE
  • ref 必须以 'refs/' 开头,且至少包含两个斜杠
  • GITHUB_LIST_BRANCHES 通过 page/per_page 分页;请持续迭代,直到返回空页
  • GITHUB_DELETE_A_REPOSITORY 会永久删除仓库且无法撤销;需要管理员权限
4. 搜索代码和提交

适用场景:用户想要在各个仓库中查找代码、文件或提交

工具调用顺序:

  1. GITHUB_SEARCH_CODE - 搜索文件内容和路径 [必需]
  2. GITHUB_SEARCH_CODE_ALL_PAGES - 搜索代码的多个分页结果 [替代选项]
  3. GITHUB_SEARCH_COMMITS_BY_AUTHOR - 按作者、日期或组织搜索提交 [必需]
  4. GITHUB_LIST_COMMITS - 列出特定仓库的提交 [替代选项]
  5. GITHUB_GET_A_COMMIT - 获取提交的详细信息 [可选]
  6. 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 状态或管理部署

工具调用顺序:

  1. GITHUB_LIST_REPOSITORY_WORKFLOWS - 列出 GitHub Actions 工作流 [必需]
  2. GITHUB_GET_A_WORKFLOW - 按 ID 或文件名获取工作流详情 [可选]
  3. GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT - 手动触发工作流 [必需]
  4. GITHUB_LIST_CHECK_RUNS_FOR_A_REF - 检查提交或分支的 CI 状态 [必需]
  5. GITHUB_LIST_DEPLOYMENTS - 列出部署 [可选]
  6. 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. 管理用户和权限

使用时机:用户想要检查协作者、权限或分支保护规则

工具调用顺序:

  1. GITHUB_LIST_REPOSITORY_COLLABORATORS - 列出仓库协作者[必需]
  2. GITHUB_GET_REPOSITORY_PERMISSIONS_FOR_A_USER - 检查特定用户的访问权限[可选]
  3. GITHUB_GET_BRANCH_PROTECTION - 检查分支保护规则[必需]
  4. GITHUB_UPDATE_BRANCH_PROTECTION - 更新保护设置[可选]
  5. 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

TaskTool SlugKey Params
List reposGITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USERtype, sort, per_page
Get repoGITHUB_GET_A_REPOSITORYowner, repo
Create issueGITHUB_CREATE_AN_ISSUEowner, repo, title, body
List issuesGITHUB_LIST_REPOSITORY_ISSUESowner, repo, state
Find PRsGITHUB_FIND_PULL_REQUESTSrepo, state, author
Create PRGITHUB_CREATE_A_PULL_REQUESTowner, repo, head, base, title
Merge PRGITHUB_MERGE_A_PULL_REQUESTowner, repo, pull_number, merge_method
List branchesGITHUB_LIST_BRANCHESowner, repo
Create branchGITHUB_CREATE_A_REFERENCEowner, repo, ref, sha
Search codeGITHUB_SEARCH_CODEq
List commitsGITHUB_LIST_COMMITSowner, repo, author, since
Search commitsGITHUB_SEARCH_COMMITS_BY_AUTHORq
List workflowsGITHUB_LIST_REPOSITORY_WORKFLOWSowner, repo
Trigger workflowGITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENTowner, repo, workflow_id, ref
Check CIGITHUB_LIST_CHECK_RUNS_FOR_A_REFowner, repo, ref
List collaboratorsGITHUB_LIST_REPOSITORY_COLLABORATORSowner, repo
Branch protectionGITHUB_GET_BRANCH_PROTECTIONowner, repo, branch

Powered by Composio

评论

支持 Markdown