用途:审查指定的 GitHub PR,并以 Hassan 的口吻生成并发布审查意见。技能本身不承担分析工作,分析由 /crucible 完成,本技能负责语气与发布层。
主要能力:
- 输入解析。支持完整 GitHub PR URL(提取 owner、repo、number);短格式 repo#N(依次尝试 hassan/repo、acme-corp/repo、当前工作目录仓库);当前仓库工作目录中的裸 #N。无参数时提示无可审查对象并停止,不再自审当前分支。
- 本地上下文获取。优先使用已有本地克隆:git fetch origin 后在 PR head SHA 上创建临时 git worktree,不改动 Hassan 现有工作树与未提交内容;无本地克隆时浅克隆到临时目录;两者均不可用时退化为 gh pr diff 加 GitHub 文件抓取的纯 diff 审查,并向 Hassan 说明上下文减少。
- 上下文收集。读取 PR 描述与关联 issue、已发布的审查线程(不重复已提出的点,尊重作者“有意为之”或“后续修复”的回复),并检测 Hassan 在本 PR 上的 PENDING 审查及其草稿行内评论与正文,用于决定合并还是新建发布路径,并避免重复标记。
- 分析。在工作树内调用 /crucible,传入三项:PR 自身的 diff 范围 <baseRefOid>...<headRefOid>、PR 关联的工单(无工单则不传,crucible 运行不依赖工单的步骤)、已定线程(已发布线程与 Hassan 待处理草稿),以避免重复提出已回答的问题。具体流程(锁检查、diff 变更、遍历、规则、consumer grep)由 crucible 决定,本技能不重新推导。
- 起草与判定。将 crucible 的发现转成 Hassan 口吻的审查正文与带文件路径和行号的行内评论,并仅依据这些发现独立形成判定(不参考 Hassan 的待处理草稿)。Survivors 与 prune 列表转为问题与建议,不作为阻断项。无发现被归为修复、规格变更或产品决策时给出 APPROVE 并引用 Lock 与 Mutation 行;无规格时说明哪些步骤未运行。任何值得标记的问题给出 COMMENT,从不使用 REQUEST_CHANGES。
- 对账与确认。并排展示技能自身判定与新行内评论、Hassan 已有待处理评论与正文,明确指出二者矛盾(例如在 Hassan 准备批准的行上发现阻断项)。需与 Hassan 共同商定最终事件与正文,Hassan 可改写、删减发现、推翻判定或保留自己的措辞;未经明确批准(如“send it”“post it”“looks good”“yep”)不得提交或发布。
- 发布与清理。存在待处理审查时合并:将商定的新评论追加到 Hassan 的待处理审查,再以商定的事件与正文提交,形成一份合并审查;无待处理审查时通过 Reviews API 发布新的分组审查。之后清理 worktree 或临时克隆。
- 琐碎 diff 处理。若 diff 琐碎(拼写修复、配置、依赖升级)且零发现,说明情况并询问是发布 APPROVE(有待处理审查则直接按原样提交)还是跳过审查。
使用方式:调用 /review 加 PR 标识,如 /review brushfeed#4 或 /review https://github.com/acme-corp/api/pull/425。语音规则见 VOICE.md,需在写任何评论前加载;API 与 git 命令、解析表与存在性检查见 REFERENCE.md。
适用场景:需要对指定 PR 进行快速本地审查并以特定口吻发布行内评论时。
限制:不适用于重量级、高风险或需深度多智能体审查的场景(资金流转、认证、生产迁移、大型 diff),此类应改用 /review ultra 云端流程。本技能为快速本地层与语气/发布层,不替代云端流程。无参数时无法使用。