📦 Cool GitHub Issues - GitHub Issues

v1.0.0

Issues Auto-Fix 自动拉取 GitHub Issues,派生子代理实施修复并开启 PR,随后监控并处理 PR 评审意见。 用法:/gh-issues [owner/repo] [--label b...

0· 15·0 当前·0 累计
下载技能包
最后更新
2026/4/21
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
该技能的指令与元数据在所需内容及读取机密的位置(还涉及平台配置路径及绝对路径 /data)上存在冲突,请先澄清这些不一致并限制凭据暴露后再继续。
评估建议
该技能看似实现了其描述的功能(自动修复和 PR),但存在多处不一致及过度文件读取,令人担忧。安装前请务必: 1) 询问作者为何 registry 会安装 GitHub CLI(brew gh),而 SKILL.md 写明仅用 curl;不必要的安装会增加风险。 2) 确认技能期望 GH_TOKEN 存放位置,以及读取 ~/.openclaw/openclaw.json 或 /data/.clawdbot/openclaw.json 是否故意——这些路径可能含其他机密。 3) 将 GH_TOKEN 权限限制到最小(优先 repo 级作用域,用 fork 工作流,避免授予 org/admin 级权限)。 4) 询问 notify-channel 的实现方式,是否需要 Telegram bot token 或其他通知凭据(当前未声明)。 5) 注意 SKILL.md 使用 jq,但 jq 未列为必需二进制文件——确保所需工具已就位。 6) 首次运行时加 --dry-run 与 --limit small,优先使用 --fork 模式,使改动从 fork 推送。 7...
详细分析 ▾
用途与能力
该技能声称可自动修复 GitHub issues(确实需要 GH_TOKEN、git 和网络访问),但注册元数据却要求 GitHub CLI(gh)并提供了 brew 安装方式,而 SKILL.md 明确声明“无 `gh` CLI 依赖”并使用 curl+REST。这种不匹配(安装 gh 却不用)未作解释,且代价过高。
指令范围
运行时指令要求 agent 先从环境读取 GH_TOKEN,再回退读取 OpenClaw 配置文件(默认 ~/.openclaw/openclaw.json 及绝对路径 /data/.clawdbot/openclaw.json)。元数据未将这些配置路径声明为必需,且读取绝对 /data 路径可能访问无关的存储密钥。指令还提到可选的 Telegram 通知(notify-channel),但元数据中未声明 Telegram token 或 endpoint——若技能实际发送消息,还需额外未声明的密钥。
安装机制
唯一的安装步骤是通过 brew 安装 gh(GitHub CLI),这是一个低风险的来源。然而,SKILL.md 指出该技能并不依赖 gh(它使用 curl),因此该安装步骤显得不必要,且与说明不一致。
凭证需求
primaryEnv GH_TOKEN 适用于 GitHub 操作,但该 skill 的 token 解析逻辑会读取多个配置位置以及一个绝对路径 /data 来提取 apiKey。说明里还在命令行使用了 jq,却未将 jq 声明为必需二进制。此外,notify-channel 功能暗示将结果发送到 Telegram,却未声明任何 Telegram 凭据——这是一个未声明的凭据面。
持久化与权限
always:false(良好)。然而,该技能的运行时行为包含轮询/监听并生成子代理,以在仓库上自主操作(创建分支、开启 PR、监控评审)。结合读取平台配置文件及 /data/.clawdbot,赋予其广泛的运营范围。该技能未申请 always:true,但其文件读取与自主子代理生成会在 GH_TOKEN 权限较宽时扩大爆炸半径。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/21

自动修复 GitHub issues:生成子代理来实施修复并发起 PR,监控评审评论

无害

安装命令

点击复制
官方npx clawhub@latest install cool-gh-issues
镜像加速npx clawhub@latest install cool-gh-issues --registry https://cn.longxiaskill.com

技能文档

你是编排者,严格按以下 6 个阶段执行,不得跳过。 重要 — 不依赖 gh CLI,仅用 curl + GitHub REST API。GH_TOKEN 已由 OpenClaw 注入,所有请求在 Header 带: `` curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" ... `

---

阶段 1 — 解析参数

解析 /gh-issues 后的参数字符串。 位置参数:
  • owner/repo — 可选。issue 来源仓库;省略时从当前 git remote 检测:
git remote get-url origin 从 URL 提取 owner/repo(支持 HTTPS 与 SSH): - HTTPS: https://github.com/owner/repo.git → owner/repo - SSH: git@github.com:owner/repo.git → owner/repo 若不在 git 仓库或无远程,报错并要求手动指定 owner/repo。

标志(均可选): | 标志 | 默认值 | 说明 | |------|--------|------| | --label | 无 | 按标签过滤(如 bug、enhancement) | | --limit | 10 | 每次轮询最多拉取 issue 数 | | --milestone | 无 | 按里程碑标题过滤 | | --assignee | 无 | 按受理人过滤(@me 表示本人) | | --state | open | issue 状态:open、closed、all | | --fork | 无 | 你的 fork(user/repo),用于推送分支与发起 PR。issue 仍从源仓库拉取,PR 从 fork 指向源仓库。 | | --watch | false | 持续轮询新 issue 与 PR 评审 | | --interval | 5 | 轮询间隔(分钟,仅 --watch 时生效) | | --dry-run | false | 仅拉取并展示,不派生子代理 | | --yes | false | 跳过确认,自动处理所有匹配 issue | | --reviews-only | false | 跳过 issue 处理(阶段 2-5),直接进入阶段 6:检查 open PR 的评审意见并回应。 | | --cron | false | Cron 模式:拉取 issue 并派生子代理后立即退出,不等待结果。 | | --model | 无 | 子代理所用模型(如 glm-5、zai/glm-5);未指定则用代理默认模型。 | | --notify-channel | 无 | Telegram 频道 ID,用于发送最终 PR 摘要(如 -1002381931352),仅发送结果链接,不含过程更新。 |

派生变量:

  • SOURCE_REPO = 位置参数 owner/repo(issue 所在仓库)
  • PUSH_REPO = 若提供 --fork 则取其值,否则同 SOURCE_REPO
  • FORK_MODE = 提供 --fork 时为 true,否则 false

若 --reviews-only: 先执行阶段 2 的 token 解析,然后跳至阶段 6。 若 --cron:

  • 强制 --yes(跳过确认)
  • 若同时 --reviews-only,先 token 解析再跳至阶段 6(cron 评审模式)
  • 否则按 cron 行为继续阶段 2-5

---

阶段 2 — 拉取 Issues

Token 解析: 先确保 GH_TOKEN 存在。 环境检查:
` echo $GH_TOKEN ` 若空,读取配置: ` CONFIG_PATH="${OPENCLAW_CONFIG_PATH:-${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/openclaw.json}" cat "$CONFIG_PATH" | jq -r '.skills.entries["gh-issues"].apiKey // empty' ` 仍空则检查: ` cat /data/.clawdbot/openclaw.json | jq -r '.skills.entries["gh-issues"].apiKey // empty' ` 导出: ` export GH_TOKEN="" `

执行 curl 拉取: ` curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" \ "https://api.github.com/repos/{SOURCE_REPO}/issues?per_page={limit}&state={state}&{query_params}" `` 其中 {query_params} 由以下构建:

  • 若 --label,加 labels={label}
  • 若 --milestone,先 GET /repos/{SOURCE_REPO}/milestones 按标题匹配得到 milestone number,再加 milestone={number}
  • 若 --assignee,值为 @me 时先 GET /user 解析自身登录名,再加 assignee={assignee}
数据来源ClawHub ↗ · 中文优化:龙虾技能库