Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/Chocolatine75/hauntWrote 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/commands/chocolatine75/haunt/haunt-test)<a href="https://agentmods.dev/commands/chocolatine75/haunt/haunt-test"><img src="https://agentmods.dev/badge/commands/chocolatine75/haunt/haunt-test.svg" alt="Measured on agentmods" 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.00000 | $0.02550 |
| Opus 5 | $0.00000 | $0.01275 |
| Sonnet 5 | $0.00000 | $0.00510 |
| Haiku 4.5 | $0.00000 | $0.00255 |
Grade A, and why
haunt-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 8d 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 — 247 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/haunt-test
Run a phantom user test session against a running web application.
Usage
/haunt-test [--personas ] [--headed] [--steps N] [--verbose]
Arguments
url— Target URL (required). Must be a running server, e.g. http://localhost:3000--personas— Comma-separated persona names (default: confused-beginner) Available: confused-beginner, malicious-user, screen-reader-user--headed— Show the browser window in real time (default: headless)--steps— Max navigation steps per area (default: 3)--email— Email to log in with before testing--password— Password to log in with (use with --email)--debug-auth— Print each auth step verbosely (use when auth fails silently)--yes— Skip the cost estimate confirmation prompt (for scripted use)--verbose— Print intermediate reasoning and observations between tool calls (default: silent)
First run
If haunt_spawn is not available as a tool, print:
haunt is installing Chromium (first run, ~2 min).
Come back once done and run again.
Then stop. Do NOT debug.
Behavior
Phase 0 — Header
Print exactly:
haunt v0.1.0 — phantom user testing
Phase 0.5 — Auth (only if --email and --password are provided)
If credentials are present:
Print: logging in as <email>...
- If
--debug-auth: print· auth flow started
haunt_spawnattarget_urlwith timeout: 5- If
--debug-auth: print· browser opened
- If
haunt_capture_state(include_dom: true) — look for a login form or link- If
--debug-auth: print· page loaded
- If
- If not already on a login page,
haunt_navigateto find and go to the login page (look for a "Login", "Sign in", or "Se connecter" link in the accessibility tree or DOM)- If
--debug-auth: print· login form found at <url>
- If
haunt_navigate— fill<email>in the email field- If
--debug-auth: print· email filled
- If
haunt_navigate— fill<password>in the password field- If
--debug-auth: print· password filled
- If
haunt_navigate— click the submit/login button- If
--debug-auth: print· submit clicked
- If
haunt_capture_state— verify auth succeeded: URL is no longer the login page, or a logged-in element (avatar, dashboard, username) is visible- If
--debug-auth: print· checking session...
- If
haunt_get_cookies— extract the session cookies- If
--debug-auth: print· cookies captured (<N>)
- If
haunt_end_session
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.
- 8d ago First seen · 247 lines · 0 tokens per session scan A 9f5f5ed9b57d
haunt-test is a command published in the GitHub repository Chocolatine75/haunt (12 stars, last pushed 4mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,550 tokens. 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-30.
Other commands, from other repositories
e2e-dashboard
Read .cursor/playwright-skills/e2e-dashboard/SKILL.md and follow its instructions exactly. Treat that file's body as your operating instructions for this task. Template files to install live in .cursor/playwright-skills/e2e-dashboard/templates/.
mobile-app-testing
Read .cursor/playwright-skills/mobile-app-testing/SKILL.md and follow its instructions exactly. Treat that file's body as your operating instructions for this task. Template files to install live in .cursor/playwright-skills/mobile-app-testing/templates/.
cloudflare-durable-objects:setup
Interactive Durable Objects project initialization. Scaffolds new DO project with proper bindings, migrations, and boilerplate code.
ui-aqa-flow-test-report-analysis
Phase 7 Test Report Analysis of ui-aqa-flow.
ui-aqa-flow-code-analysis
Phase 3 Code Analysis of ui-aqa-flow.
tdd
Test-driven development with tests that actually catch breaks: red before green, name the break each test catches, and the mutation check before done.