用途
gh 是一个针对 GitHub 交互操作的技能,覆盖 PR 状态查看、讨论与评论读取、CI 诊断、回复以及非常规 GitHub 命令的处理。其中 fix-pr 会调用它。
主要能力
该技能依据表面(surface)选择对应的封装脚本:
- PR 状态、检查、文件、计数:pr-snapshot.ts,JSON 契约见 references/snapshot.md
- 审查正文、评论、线程:pr-threads.ts,契约见 references/threads.md
- CI 运行、作业、日志片段:ci-failures.ts,契约见 references/ci.md
- 单条原生线程或对话回复:pr-reply.ts,契约见 references/reply.md
支持的操作选项包括:默认查看当前分支 PR;用 PR 编号/URL 选择特定 PR;用具名仓库时输出 -R 且 PR 绑定工作仍需 PR;JSON/完整正文对应 --json/--full;打开线程包含未解决的过时线程,all 也包含已解决的,两者互斥;完整分页加 --complete;作者/时间提供对应过滤。CI 选择 ci-failures;列运行使用 --list(默认限制 10),工作流可过滤;运行 id 分析该次运行。已知 head SHA 时加 --sha。回复必须从 references/reply.md 中提供恰好一个目标/正文。
使用方式
-
确认与选择:确认 gh 已认证;缺少二进制或认证会被阻断。记录 repo | PR/run/SHA | surface | argv | terminal。PR 绑定工作若无当前 PR 则返回 NO_CHANGES。选择覆盖该操作的脚本。解析 JSON 前只加载该表面的契约。
-
运行:只能通过 <anchor>/scripts/run <script.ts> ... 调用,不能直接使用 node。Node 版本问题或 ERR_UNKNOWN_FILE_EXTENSION 不构成失败证据,也不代表可以使用 GraphQL;应使用 run。其退出码 2 表示 BLOCKED,并列出尝试过的运行时。脚本成功报告数据/帖子;红色 CI 或打开的线程不是运行时失败。对所有未解决反馈使用 --json --open --complete;已知 head 时固定 SHA。回复只使用 pr-reply。此叶节点不执行解析、推送或合并。原始 gh 仅在覆盖脚本无法处理的场景下、并在应用 references/raw-gh.md 后允许使用。覆盖脚本失败不授权重新实现其 GraphQL。大输出应重定向,不要把 gh 管道到 head。HTTP 跟踪或日志应用 references/logs.md。
-
报告:总结观察到的输出。达到上限标记意味着数据不完整,对穷尽式消费者不代表成功。引用日志路径而不是粘贴日志。绿色 CI、零线程或已发布回复是 SUCCESS;有效的红色报告也是成功的检查,而不是已修复的 CI。终态:SUCCESS、NO_CHANGES(空/无 PR)、BLOCKED。
适用场景
适用于需要查询 PR 状态与检查、读取审查讨论、诊断 CI 失败、发布回复,或执行超出封装脚本覆盖范围的 GitHub 操作的场景。
限制
- 必须先确认 gh 已认证,否则阻断。
- 脚本必须通过技能运行脚本调用,不能直接使用 node。
- 原始 gh 命令仅限未覆盖的操作。
- 该技能不负责解析、推送或合并。
- 缺少必要值或选项冲突会返回 BLOCKED。