Borrowing it
Nothing to install: this file belongs to stonematt/mcp-obsidian-cli. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/stonematt/mcp-obsidian-cli/master/.claude/skills/desktop-sniff-test/SKILL.mdgit clone --depth 1 https://github.com/stonematt/mcp-obsidian-cliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/stonematt/mcp-obsidian-cli/desktop-sniff-test)<a href="https://agentmods.dev/skills/stonematt/mcp-obsidian-cli/desktop-sniff-test"><img src="https://agentmods.dev/badge/skills/stonematt/mcp-obsidian-cli/desktop-sniff-test/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/stonematt/mcp-obsidian-cli/desktop-sniff-test"><img src="https://agentmods.dev/badge/skills/stonematt/mcp-obsidian-cli/desktop-sniff-test.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00085 | $0.00840 |
| Opus 5 | $0.00043 | $0.00420 |
| Sonnet 5 | $0.00017 | $0.00168 |
| Haiku 4.5 | $0.00009 | $0.00084 |
Grade A, and why
desktop-sniff-test scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Desktop Sniff Test
End-to-end smoke test of the MCP server in Claude Desktop. Claude Desktop can't be automated — it requires manual copy-paste — so this skill orchestrates the config swaps and result evaluation around that manual step.
Prerequisites
- Obsidian must be running
- Claude Desktop must be installed
- The project must be the
mcp-obsidian-clirepo
Workflow
Step 1: Swap config to local server
Read the Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json
Save the current mcpServers.obsidian block so it can be restored later.
Then replace it with the local dev server:
"obsidian": {
"command": "node",
"args": ["<project-root>/server.js"],
"env": {
"OBSIDIAN_VAULT": "<keep existing vault value>"
}
}
Preserve the existing OBSIDIAN_VAULT value — don't hardcode it.
Tell the user:
Config updated to local server. Restart Claude Desktop to pick up the change.
Step 2: Give the test prompt
Tell the user to paste this into Claude Desktop:
Read the file <project-root>/test/sniff-test-prompt.md and run every test in it.
Use the actual absolute path to the project root, not a placeholder.
Then say:
Paste that into Claude Desktop and come back with the results when it finishes.
Wait for the user to return with results. Do not proceed until they paste results back.
Step 3: Evaluate results
When the user pastes the results, use a Sonnet agent to evaluate them. This saves Opus tokens since evaluation is mechanical pattern-matching work.
Launch the agent with:
- The full pasted results
- The contents of
test/sniff-test-prompt.md(so it knows the pass criteria) - Instructions to evaluate as described below
The agent should:
- Parse the summary table — extract test name, result, criteria counts
- Count passes and failures — report X/N (N = total tests in sniff-test-prompt.md)
- For any failures, check:
- Was the tool call correct?
- Did the pass criteria match what the test expects?
- Is it a real bug or a test issue?
- Check content samples — verify the quoted output looks correct (right headings, expected syntax patterns, reasonable data)
- Flag anything suspicious even in passing tests (e.g., truncated output, unexpected content, wrong sort order)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 123 lines · 85 tokens per session scan A bac4baf5bdcc
desktop-sniff-test is a skill published in the GitHub repository stonematt/mcp-obsidian-cli (2 stars, last pushed yesterday), licensed MIT. It adds 85 tokens to every session and 840 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
blazemeter-private-locations
Comprehensive guide for BlazeMeter Private Locations, including Radar Agent, installation (Docker, Kubernetes, Helm), configuration, management, and troubleshooting. Use when working with Private Locations for (1) Installing agents (Docker, Kubernetes, Helm Chart), (2) Configuring Radar Agent for API Monitoring, (3)…
blazemeter-functional-testing
Comprehensive guide for BlazeMeter Functional Testing, including GUI Functional Tests, API Tests (deprecated), Action Library, and debugging. Use when working with Functional Testing for (1) Creating GUI Functional Tests (YAML, Java IDE, Python IDE), (2) Managing Functional Tests (duplicate, delete, move, rename), (3)…
blazemeter-recorders
Comprehensive guide for BlazeMeter Recorders, including Chrome Extension and Proxy Recorder. Use when working with recorders for (1) Recording tests with Chrome Extension, (2) Creating and using Proxy Recorder, (3) Configuring browsers and devices for proxy recording, (4) Setting port ranges for proxy recorder, or any…
lastest
Lastest is a visual regression testing platform. It records browser tests, runs them via Playwright, diffs screenshots, and uses AI to classify changes. Available as an MCP server for AI agent integration.
resolume-mcp-tester
Test and operate the Resolume MCP server (resolume-mcp-server) end-to-end against a live Resolume Arena. Use when verifying tool behavior, running smoke tests, doing safe live VJ demos, or validating new tools added to the project. Includes white-out prevention rules, state restoration patterns, and agent invocation…
field-test
Exercise tools, resources, and prompts against a live HTTP server via MCP JSON-RPC over curl. Starts the server, surfaces the catalog, runs real and adversarial inputs, measures every call (bytes, token estimate, wall-clock) and weighs the catalog, and produces a tight report with concrete findings and numbered…