关于 difit-review
通过 difit 查看指定 Git 差异,并在查看器中以评论附上评审发现或说明的技能。流程涵盖检查目标差异、复用运行中的服务以及分享评审链接。
主要功能
- 01检查指定的 Git 差异
- 02在更改处附加评审评论
- 03复用运行中的 difit 服务
- 04在评审中包含未跟踪文件
适用场景
- 01在拉取请求差异上标注发现
- 02直接在差异查看器中解释更改
- 03无需重新启动即可继续评审
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yoshiko-pg/ difit --skill difit-review安装后在 Claude Code 中输入/difit-review确认已加载。
附带文件agents/openai.yaml
详细介绍
Difit Review
何时使用此技能
difit 会打开外部浏览器界面并启动一个长期运行的本地服务,因此必须由用户明确选择后才能启动:
- 只有当用户明确提到 difit、要求在 difit 查看器中打开、显示或批注评审内容,或按名称调用此技能时,才使用此技能。
- 请勿将其用于普通评审请求,例如“评审这些更改”“使用 reviewer Agent”“找出此差异中的问题”或“评审此 PR/提交/分支”。应照常进行评审,并在回复中报告发现。
- 请求含糊时,优先采用非 difit 评审方式。
概述
此技能会在便于人类阅读的查看器中打开用户要求的 git diff。同时,Agent 可以通过 --comment 选项添加任意批注。
此批注机制非常适合记录代码评审发现和代码说明。
运行命令前,请根据以下规则选择 <difit-command>:
- 如果
command -v difit执行成功,则使用difit。 - 否则,使用
npx difit。 - 如果在无网络权限的沙盒环境中,使用
npx difit需要访问网络,则应先请求提升权限并征得用户同意,再运行命令。
步骤
最终命令通常如下所示:
<difit-command> <target> [compare-with] \
--comment '{"type":"thread","filePath":"src/foobar.ts","position":{"side":"old","line":102},"body":"line 1\nline 2"}' \
--comment '{"type":"thread","filePath":"src/example.ts","position":{"side":"new","line":{"start":36,"end":39}},"body":"Range comment for L36-L39"}'
详细步骤如下。
- 确定目标差异并评审其内容。
- 检查用户指定的差异。它可以是本地 git 修订、GitHub URL、补丁文件或类似内容。
- 正常理解差异,必要时检查相关代码,并考虑如何回应用户的请求,无论用户需要的是评审发现、说明还是其他内容。
- 对于 PR 评审,应在本地检查 PR,并将评审结果限制为 difit 输出。请勿向远程 GitHub 发布评论。
- 添加准备好的批注并启动 difit,或复用正在运行的服务。
- 启动前先检查是否可复用
- 每个 Git 根目录和评审目标最多保留一个运行中的 difit 服务。如果你之前为同一目标启动的 difit 服务仍在运行,请勿再次启动服务或重新打开其 URL;使用
<difit-command> comment add --port <port> '<json>'(JSON 格式与--comment相同)将新发现添加到该服务,让已打开的页面显示这些内容。 - 如果预计会进行多轮评审,请使用
--keep-alive或--background启动(分离运行的 keep-alive 服务会打印 JSON 连接信息,例如{"port":4966,"url":"http://localhost:4966","pid":123},但不会自动打开浏览器),然后在后续轮次使用comment add/comment get --port <port>。
- 每个 Git 根目录和评审目标最多保留一个运行中的 difit 服务。如果你之前为同一目标启动的 difit 服务仍在运行,请勿再次启动服务或重新打开其 URL;使用
- difit 启动选项
- 使用
<difit-command> <target> [compare-with]指定目标差异。 - 对于未提交的更改,使用
<difit-command> .;对于工作树更改,使用<difit-command> working;对于已暂存的更改,使用<difit-command> staged。 - 对于标准输入内容,可使用类似
diff -u file1.txt file2.txt | <difit-command>的形式。
- 使用
- 批注参数
- 每条批注都使用
type: "thread"。 - 批注正文使用用户正在使用的语言。
- 对于目标侧存在的行,使用
position.side: "new"。 - 对于仅存在于已删除一侧的行,使用
position.side: "old"。 - 对于涉及多行的问题,使用范围批注。
- 切勿将差异中的机密、令牌、密码、API 密钥、私钥或其他类似凭证的内容复制到
--comment正文或任何命令行参数中。
- 每条批注都使用
- 尚未添加到 git 的文件的附加参数
- 对于未提交的更改,如果决定也在差异中显示尚未添加到 git 的文件,请添加
--include-untracked。
- 对于未提交的更改,如果决定也在差异中显示尚未添加到 git 的文件,请添加
- 分享 difit URL 并完成回复。
- 如果没有可添加的批注,请明确说明。
- 无需手动验证已启动的 difit 页面。
评论
支持 Markdown