Sniff

io.github.Aboudjem由 GitHub 账号 Aboudjem 发布v0.7.1更新于 Oct 24, 2026

QA + a11y scanner: walks your running app's real user flows and reports what's broken.

发布方自己的服务:Sniff Mcp

概览

AI 生成的概览

Sniff 在真实浏览器中走查正在运行的应用,像用户一样点击和填写,并附证据报告实际损坏的流程。

可以做什么
Sniff 在真实浏览器中打开正在运行的应用,执行真实用户流程,然后报告实际出现的问题。它覆盖十二类缺陷,包括 HTTP 500 路由、失效链接、占位数据、失效的提交按钮、被返回按钮清空的表单、卡住的加载动画以及移动端溢出。每条发现都带有路由、有序步骤、截图以及控制台或网络片段;没有步骤的发现不会被报告。它还提供仅源码扫描和已保存结果读取,并可输出终端、HTML 或 JSON 报告。
适用场景
当你希望对正在运行的开发或预发布应用做自动化 QA 与无障碍类检查,又不想编写和维护端到端测试时,可以使用它。它适合发布前冒烟检查和 CI 门禁,因为发现缺陷的走查会以非零状态退出。若没有正在运行的应用,它会退回到仅源码扫描,此时用处较小。
运行要求
通过 npx 以 stdio MCP 服务器形式在本地运行,需要 Node.js 22 或更高版本。它需要有一个正在运行的应用可供走查,通常是本地开发服务器;首次走查会下载并缓存 Chromium 构建,因此该次运行需要联网。不需要 API 密钥、账号或注册。可选提供存储状态文件以走查已登录的应用。
安装前请注意
走查会点击按钮并提交真实表单,因此可能创建真实数据;请指向开发或预发布应用,不要指向生产环境。失效链接检查会跟随外部链接,因此走查会向你页面本就链接的第三方 URL 发起请求。存储状态文件中的 Cookie 和令牌值会从报告文本中脱敏,但不会从截图像素中脱敏。修复命令是唯一会改写代码的命令,且仅在你主动运行时执行。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Sniff,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[sniff]

[npm version] [CI] [License Apache 2.0] [Stars]

English · 简体中文 · 日本語 · Español · Français

Point it at your running app. It walks your real user flows in a real browser and tells you what is actually broken, with proof.

What it does · Install · Use it · What you get · Works in your editor · Good to know

[sniff walking a buggy app and streaming findings with severity, confidence, steps to reproduce, and a fix]
bash
claude plugin marketplace add Aboudjem/10xclaude plugin install sniff@10x

What it does

Most linters read your source without ever running your app, and end-to-end frameworks ask you to write and maintain the tests yourself. sniff opens your running app in a real browser, clicks and fills things like a user would, and judges what actually happened.

  • It finds 12 classes of bugs, from HTTP 500 routes and dead links to placeholder data, dead submit buttons, forms wiped by the back button, stuck spinners, and mobile overflow.
  • It proves every one. Every finding carries the route and the ordered steps that produced it, plus the screenshot and the console or network excerpt the check captured. No steps, no finding.
  • It has been measured. On a fixture app planted with 21 bugs across all 12 classes, plus a clean control page, sniff finds 21 of 21 and reports nothing on the control page.

Install

The block above is the Claude Code path, through the 10x marketplace. For any other agent, the Vercel skills CLI installs the same three skills:

bash
npx skills add Aboudjem/sniff

To use it as a plain command line tool, with no editor involved:

bash
npx sniff-qa --url http://localhost:3000

The npm package is sniff-qa and the binary it installs is sniff. Do not run npx sniff, which is an unrelated package.

Node version, project install, and CI

Node.js 22 or newer. npm install -D sniff-qa adds it to a project's devDependencies, and npx sniff-qa ci writes a GitHub Actions workflow with browser caching and report artifacts.

Use it

1. Start your app, with whatever dev server your project already uses.

bash
npm run dev

2. Walk it, from a second terminal. sniff auto-detects a dev server on the common ports, so --url is optional, but passing it takes the guesswork out.

bash
npx sniff-qa --url http://localhost:3000

3. Read the findings. They print grouped by severity. Below is an abridged real run against this repo's own planted-bug fixture, from npx sniff-qa --url http://localhost:4321 --ci --max-pages 12:

text
sniff v0.8.0  walking http://localhost:4321
  26 findings (+1 low-confidence hidden; use --all)
  CRITICAL (1)    • [confirmed] Page returns HTTP 500      /crash  (route/broken-page)        - Navigate to /crash        - Server responded with HTTP 500      fix: The route throws server-side. Check the server logs/handler for this path and return a valid page or a proper error page.      shot: sniff-reports/crawl/_crash-desktop.png
✓ Scan complete: 26 issue(s) found. Exit code 1 so CI fails on bugs; pass --fail-on none to always exit 0.

Add --report for a self-contained HTML page you can send to someone. Run npx sniff-qa doctor if the environment looks wrong.

[How sniff works: crawl, act, assert, prove, report]

What you get

[The 12 classes of bugs sniff finds]
  • A terminal report grouped by severity, each finding with steps, a fix, and a screenshot path.
  • A shareable file, a self-contained HTML report with --report or JSON with --json.
  • An exit code, non-zero when findings reach the --fail-on severity, so CI fails on real bugs.
  • A confidence label on each. uncertain is hidden from the terminal unless you pass --all.

New in 0.8.0:

  • --caps scan,report narrows the MCP server to the source scan and the saved-results reader, with no browser launch and no browser download.
  • --storage-state auth.json walks a logged-in app. Cookie and token values from that file are redacted from the text of every written report, though not from screenshot pixels.
  • An assert block in sniff.config caps findings by severity (maxCritical, maxHigh, maxTotal), enforced on the command line by the walk, the source scan, and discovery.

Works in your editor

Works in Claude Code, Cursor, Codex, Copilot, Gemini CLI, and 70+ other agents through npx skills add. The skills are Markdown, so they run on whatever model your editor points at.

AgentOne-line install
Claude Codeclaude plugin install sniff@10x
Any of 70+ agentsnpx skills add Aboudjem/sniff
Codex, Gemini CLI, OpenCode, Pi./install.sh codex
VS Code (Copilot)./install.sh copilot
Everything elsesee docs/editors.md
Add it as an MCP server instead
bash
claude mcp add sniff-qa npx -- -y sniff-qa --mcpcodex mcp add sniff-qa -- npx -y sniff-qa --mcp

Cursor, VS Code, Gemini CLI, Windsurf, Continue, OpenCode, and Zed take the same command as a JSON or TOML entry. Every per-editor snippet is in docs/editors.md.

Good to know

[!IMPORTANT] No API key, no account, no signup, and no AI provider unless you set one up yourself. Walking and scanning never edit your source. sniff fix is the only command that rewrites code, and only when you run it.

[!NOTE] A walk clicks buttons and submits real forms, so it can create real data. Point it at a dev or staging app, not at production. The first walk also downloads a Chromium build and caches it, so that one run needs internet access.

  • It wants a running app. With no dev server up it falls back to a source-only scan and tells you how to start the real walk. npx sniff-qa scan runs that scan on purpose.
  • Dead-link checking follows external links, so a walk makes requests to the third-party URLs your own pages already link to.
  • A walk that finds bugs exits 1 on purpose, so CI fails the build. That is not a crash. --fail-on none turns off the severity gate, though an assert budget can still fail the run.

Learn more


Built by Adam Boudjemaa · Apache 2.0 · standing on Playwright and axe-core

来源:README.md,提交 d65a038

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.7.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Sniff 集成