关于 Skimless
Skimless 将拉取请求差异整理成有先后顺序的审阅资料包,适用于处理大型变更的人工审阅者和 AI Agent。它在本机运行且不调用模型,提供文件优先级、启发式发现项和经过脱敏的 MCP 响应。
主要功能
- 01按审阅优先级排列文件
- 02标记多种语言中的启发式发现项
- 03导出 HTML、Markdown 和 JSON
- 04对疑似密钥字符串脱敏
- 05提供 CLI、GitHub Action、库和 MCP 服务
适用场景
- 01确定大型拉取请求中优先检查的内容
- 02在 CI 中生成审阅资料包
- 03为 Agent 提供经过脱敏且有序的差异审阅路径
MCP 相关
Skimless 以 MCP 服务形式运行,Agent 可在审阅变更前请求阅读顺序。MCP 响应中的疑似密钥字符串会经过脱敏,Skimless 本身不会调用模型。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cwd | string | 否 | 仓库目录。默认为服务器启动时所在的目录。 |
| base | string | 否 | 比较 base...HEAD,与拉取请求的比较方式相同。示例:origin/main。 |
| diff | string | 否 | 统一差异。如果省略,Skimless 会在仓库中运行 git diff。 |
| lang | enum | 否 | 数据包语言。默认值:en,或 skimless.config.json。en | pt |
| order | enum | 否 | story(默认值)或 risk。story | risk |
| format | enum | 否 | summary(Markdown,默认值)或 json(不含 diff 行的完整数据包)。summary | json |
| ignore | array | 否 | 要跳过的 Glob 模式。 |
| staged | boolean | 否 | 仅审查已暂存的更改。 |
| budgetMinutes | number | 否 | 标记阅读耗时超过此分钟数的数据包。 |
详细介绍
Skimless
English · Português
为过于庞大的拉取请求提供阅读顺序。
Skimless 将差异转换成一份资料包:先读什么、哪些文件可以稍后再看,以及哪些行值得人工审查。它在你的机器上运行,不会调用模型、发布评论,也不会向外发送数据。
零运行时依赖。Node.js 22 或更高版本。提供 CLI、GitHub Action、库,以及供 AI Agent 使用的 MCP 服务。资料包支持英语和葡萄牙语。
npx skimless demo
skimless Do not skim this one
14 files · +86 −8 · about 2 min. 5 high-priority findings.
First pass: index.ts, fixture.ts, verify.ts.
1 src/api/index.ts Public export changed
2 src/webhooks/fixture.ts Secret-shaped string added
3 src/webhooks/verify.ts Signature compared with ==
4 .github/workflows/release.yml Workflow grants write permissions
5 src/billing/invoice.ts Billing path changed
6 test/webhooks/verify.test.ts Test file deleted
7 migrations/2026_09_23_api_keys.sql
8 src/billing/charge.ts
9 package.json Dependency manifest changed
10 Dockerfile
11 test/billing/charge.test.ts Can wait
12 docs/webhooks.md Can wait
13 package-lock.json Can wait
14 src/generated/types.ts Can wait
示例中的 verify.ts 会对一个与自身比较的缓冲区调用 timingSafeEqual。Skimless 没有针对这种情况的规则。它会把该文件放在第三位,归入表示实时数据的类别,让人能看到它。这就是产品的作用:为差异提供一条阅读路径,而不是给出判定。
英文资料包 · 葡萄牙语资料包 · 真实差异:Express 4.21.2 → 5.0.0
为什么要做这个
由 Agent 编写的拉取请求往往很庞大。审查者打开第一个文件就感到疲惫,于是用扫过迁移文件的方式,匆匆批准了锁文件。Skimless 会告诉你哪些部分可以安全略读,哪些不行:先看公共 API,再看关键风险点,最后看噪声。分数代表阅读优先级。资料包没有提示风险,并不能证明差异是安全的。
运行
npx skimless demo
npx skimless demo --lang pt --format html --out skimless.html
npx skimless review --base origin/main --format all --out skimless --fail-on high
也可以通过 npm install -g skimless 安装一次,然后调用 skimless。
--format all 会生成 skimless.html、skimless.md 和 skimless.json。除非传入 --no-redact,否则类似密钥的字符串都会被脱敏。在本地,--fail-on 默认值为 none。在 CI 中,请使用 high。
对于一个生成的 2,000 个文件的差异,笔记本电脑大约 100 ms 就能生成一份审查资料包。运行 npm run bench 可查看你的机器上的耗时。
import { redactPacket, reviewDiff } from "skimless";
const packet = redactPacket(reviewDiff(patch, { order: "story", lang: "pt", budgetMinutes: 25 }));
packet.readingOrder.forEach((stop) => console.log(stop.path, stop.reason));
资料包内容
- 阅读顺序。默认使用
story:先看 API 和类型,然后是身份验证、签名、计费、迁移和 CI,接着是清单,然后是其余内容,最后是测试、文档、锁文件和生成代码。高等级发现项会将其文件提升到关键风险类别。risk则仅按分数排序。 - 附带规则 ID 的发现项。共 21 条规则,每条规则用一句话说明,涵盖 JavaScript、TypeScript、Python、Ruby、Go、PHP、Java、Kotlin、Rust 和 C#,以及 GitHub Actions、GitLab CI 和其他运行器。请参阅 docs/rules.md。
- 可作为附件的 HTML 文件、Markdown 评论,以及供你现有工作流使用的 JSON。
将 examples/skimless.config.json 复制到 skimless.config.json,即可设置预算、忽略 glob 模式和 CI 失败级别。
CI
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pedroofrancaa/skimless@v1
with:
base: origin/${{ github.base_ref }}
fail-on: high
此 Action 无需令牌,也不会发布评论。阅读顺序和发现项会显示在作业摘要中的拉取请求 Checks 页面上。它会通过环境传递输入,再将其作为参数传给 git diff,绝不会拼接成 shell 字符串。docs/ci.md 包含完整工作流、所有输入项,以及一个 GitLab CI 作业示例。
通过 Agent 使用
skimless mcp 是一个 MCP 服务。Claude Code、Cursor、VS Code 和其他 Agent 可以在审查变更前请求阅读顺序,然后按该顺序阅读文件。
claude mcp add skimless -- npx -y skimless mcp
Skimless 仍然不会调用模型,而是为模型提供服务。MCP 响应中的类似密钥的字符串始终会被脱敏,因此差异中的实时密钥不会进入 Agent 的上下文。docs/mcp.md 介绍了各客户端的设置方法、工具参数,以及可用的提示词。
不会做什么
- 它不会执行差异。
- 它不会调用模型,也不会假装启发式方法就是模型。Agent 可以调用 Skimless;Skimless 不会调用它们。
- 它无法发现所有 bug。示例中的自我比较是我们特意保留的例子。
- 安静标签不代表批准。
开发
npm install
npm test
npm run check
node --experimental-strip-types src/cli.ts demo
日常使用时,CLI 会直接运行 TypeScript 源码。npm run build 会生成 dist/,这也是 npm 发布的内容。
规则、阅读顺序和库的接口说明见 docs/。贡献者须知见 CONTRIBUTING.md。根据 GOVERNANCE.md 中的条款,本项目采用 MIT 许可:初期由一位维护者负责,决策公开进行,不假装已有社区。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。