mcpField
S
Skimless

Skimless

本地服务
pedroofrancaa.github.io版本控制15 周前更新

关于 Skimless

Skimless 将拉取请求差异整理成有先后顺序的审阅资料包,适用于处理大型变更的人工审阅者和 AI Agent。它在本机运行且不调用模型,提供文件优先级、启发式发现项和经过脱敏的 MCP 响应。

主要功能

  1. 01按审阅优先级排列文件
  2. 02标记多种语言中的启发式发现项
  3. 03导出 HTML、Markdown 和 JSON
  4. 04对疑似密钥字符串脱敏
  5. 05提供 CLI、GitHub Action、库和 MCP 服务

适用场景

  1. 01确定大型拉取请求中优先检查的内容
  2. 02在 CI 中生成审阅资料包
  3. 03为 Agent 提供经过脱敏且有序的差异审阅路径

MCP 相关

Skimless 以 MCP 服务形式运行,Agent 可在审阅变更前请求阅读顺序。MCP 响应中的疑似密钥字符串会经过脱敏,Skimless 本身不会调用模型。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pedroofrancaa-skimless": {
"command": "npx",
"args": [
"-y",
"skimless"
]
}
}
}
启动命令npx -y skimless

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmskimless0.1.2

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
cwdstring否仓库目录。默认为服务器启动时所在的目录。
basestring否比较 base...HEAD,与拉取请求的比较方式相同。示例:origin/main。
diffstring否统一差异。如果省略,Skimless 会在仓库中运行 git diff。
langenum否数据包语言。默认值:en,或 skimless.config.json。en | pt
orderenum否story(默认值)或 risk。story | risk
formatenum否summary(Markdown,默认值)或 json(不含 diff 行的完整数据包)。summary | json
ignorearray否要跳过的 Glob 模式。
stagedboolean否仅审查已暂存的更改。
budgetMinutesnumber否标记阅读耗时超过此分钟数的数据包。

详细介绍

Skimless

CI npm License: MIT

English · Português

为过于庞大的拉取请求提供阅读顺序。

Skimless 将差异转换成一份资料包:先读什么、哪些文件可以稍后再看,以及哪些行值得人工审查。它在你的机器上运行,不会调用模型、发布评论,也不会向外发送数据。

零运行时依赖。Node.js 22 或更高版本。提供 CLI、GitHub Action、库,以及供 AI Agent 使用的 MCP 服务。资料包支持英语和葡萄牙语。

npx skimless demo

Skimless 审查资料包:标题、统计数据和阅读顺序

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 许可:初期由一位维护者负责,决策公开进行,不假装已有社区。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。