关于 gh-issues
gh-issues 是用于自动处理 GitHub Issue 修复和 PR 审查跟进的技能。它通过 gh 命令行筛选 Issue、协调工作进程,并跟踪 PR 创建或审查更新结果。
主要功能
- 01按标签、里程碑、负责人和状态筛选 Issue
- 02跳过已有相关工作或有效认领的 Issue
- 03通过后台工作进程执行 Issue 修复
- 04处理工作流 PR 中可操作的评论
- 05按间隔监视 Issue 和审查
适用场景
- 01筛选待修复的开放 Issue
- 02将 Issue 修复工作转为 PR
- 03处理 fix/issue PR 的审查意见
- 04定期监视 Issue 和审查
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openclaw/ openclaw --skill gh-issues安装后在 Claude Code 中输入/gh-issues确认已加载。
详细介绍
gh-issues
用于 Issue 到 PR 的自动化。优先使用 gh 命令行;仅当高层命令缺少所需字段时,才回退到 gh api。
参数
- 位置参数
owner/repo:可选;否则根据git remote get-url origin推断。 --label <label>:筛选。--limit <n>:默认为 10。--milestone <title>:筛选。--assignee <login|@me>:筛选。--state open|closed|all:默认为 open。--fork <owner/repo>:将分支推送到派生仓库,并向源仓库创建 PR。--watch:轮询 Issue 和审查。--interval <minutes>:默认为 5。--dry-run:仅列出。--yes:无需确认。--reviews-only:跳过 Issue 修复;处理 PR 审查。--cron:启动后退出;隐含--yes。--model <id>:如果支持,则传递给工作进程。--notify-channel <id>:可选的最终通知目标。
阶段 1:解析仓库
git remote get-url origin
if [ -z "${GH_TOKEN:-}" ]; then
CONFIG_PATH="${OPENCLAW_CONFIG_PATH:-${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/openclaw.json}"
GH_TOKEN=$(jq -r '.skills.entries["gh-issues"].apiKey // empty' "$CONFIG_PATH" 2>/dev/null || true)
if [ -n "$GH_TOKEN" ]; then export GH_TOKEN; fi
fi
gh auth status
gh repo view OWNER/REPO --json nameWithOwner,defaultBranchRef
如果 gh auth status 失败且缺少 GH_TOKEN,则停止并要求用户提供 GitHub 认证或配置。
推导结果:
SOURCE_REPO:Issue 所在仓库。PUSH_REPO:如果设置了派生仓库,则为派生仓库;否则为源仓库。BASE_BRANCH:源仓库的默认分支,除非用户另有说明。PUSH_REMOTE:在派生仓库模式下为fork,否则为origin。
除非用户确认工作进程应忽略未提交的更改,否则遇到脏工作区时停止。
在派生仓库模式下,确认之前或执行 --dry-run 时,不得修改远程仓库配置。
仅验证认证和读取权限:
gh auth token >/dev/null || test -n "${GH_TOKEN:-}"
gh repo view "$PUSH_REPO" --json nameWithOwner
git ls-remote --exit-code origin HEAD
阶段 2:获取 Issue
构建筛选条件并获取:
gh issue list --repo "$SOURCE_REPO" --state open --limit 10 --json number,title,labels,url,body,assignees,milestone
根据要求添加 --label、--milestone、--assignee、--state、--limit。gh issue list 已排除 PR。
如果未找到任何项:报告无匹配项。如果指定 --dry-run:显示精简列表并停止。
阶段 3:避免重复工作
对于每个候选项:
gh pr list --repo "$SOURCE_REPO" --search "$SOURCE_REPO#<n>" --state open --json number,url,title,headRefName
gh pr list --repo "$SOURCE_REPO" --head "fix/issue-<n>" --state open --json number,url
gh api "repos/$PUSH_REPO/branches/fix/issue-<n>" >/dev/null
跳过存在开放 PR、已有分支或有效本地占用记录的候选项。
占用文件:
${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/gh-issues-<owner>-<repo>.json
使超过 2 小时的占用记录过期。 写入前创建父目录。
阶段 4:确认
除非指定 --yes 或 --cron,否则要求用户选择:
all- 以逗号分隔的 Issue 编号
cancel
确认后,在派生仓库模式下,将工作交给 Agent 前配置推送远程仓库:
gh auth setup-git
git remote get-url fork || git remote add fork "https://github.com/$PUSH_REPO.git"
git remote set-url fork "https://github.com/$PUSH_REPO.git"
git ls-remote --exit-code fork HEAD
阶段 5:启动工作进程
最多启动 8 个后台工作进程。指定 --cron 时,不要等待每个工作进程。
每次启动前,使用当前 ISO 时间戳为 SOURCE_REPO#<n> 写入占用记录。工作进程报告 PR 或失败后,删除或更新该占用记录。这样可以防止在分支或 PR 尚不存在时,监视模式与 cron 运行重叠。
工作进程提示词必须包含:
- Issue URL、标题、正文和标签。
SOURCE_REPO、PUSH_REPO、BASE_BRANCH、PUSH_REMOTE、派生仓库模式。- 目标分支
fix/issue-<n>。 - 所需证据和 PR 正文。
- 通知路由。
工作进程指令:
Use gh and git. Do not handwave.
Checkout/create fix/issue-<n> from BASE_BRANCH.
Implement minimal fix.
Run relevant tests.
Commit with conventional message.
Push to PUSH_REMOTE.
Open PR against SOURCE_REPO BASE_BRANCH.
PR body: What Problem This Solves + Why This Change Was Made + User Impact + Evidence + visible Fixes SOURCE_REPO#<n>.
Report PR URL or failure reason.
Send completion/failure with openclaw message send if route provided.
如果可用,使用 coding-agent 的启动规则。
阶段 6:收集
使用 process 或任务注册表轮询工作进程。报告:
- Issue 编号和标题。
- 状态:PR 已创建、已跳过、失败、超时。
- PR URL 或原因。
仅向通知通道发送最终精简摘要。
仅处理审查 / 监视审查
查找开放的 PR:
gh pr list --repo "$SOURCE_REPO" --state open --json number,title,url,headRefName,reviewDecision \
--jq '[.[] | select(.headRefName | startswith("fix/issue-"))]'
获取审查线程和评论:
gh pr view <n> --repo "$SOURCE_REPO" --json url,headRefName,comments,reviews
gh api "repos/$SOURCE_REPO/pulls/<n>/comments"
gh api "repos/$SOURCE_REPO/issues/<n>/comments"
除非用户明确指定 PR 编号,否则仅处理由此工作流创建的 fix/issue-* PR。按 PR 对可处理的评论进行分组。忽略赞扬、状态、重复项和已处理的评论。按照相同的后台规则,为每个选定或限定范围内的 PR 启动一个工作进程。
审查工作进程指令:
Checkout PR branch.
Read all actionable review comments.
Patch minimal changes.
Run relevant tests.
Commit and push normally; do not force-push unless explicitly told.
Reply to addressed comments with fix + commit/file reference.
Report comments addressed/skipped and proof.
监视模式
循环:
- 获取 Issue。
- 启动符合条件的 Issue 工作进程。
- 处理待处理的 PR 审查意见。
- 按
--interval休眠。 - 用户要求停止时结束。
保持累计摘要精简。