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 整合