Borrowing it
Nothing to install: this file belongs to harry189/ha-mcp. 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/harry189/ha-mcp/chore/gate-demo-throwaway/.claude/skills/bat-adhoc/SKILL.mdgit clone --depth 1 https://github.com/harry189/ha-mcpWrote 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/harry189/ha-mcp/bat-adhoc)<a href="https://agentmods.dev/skills/harry189/ha-mcp/bat-adhoc"><img src="https://agentmods.dev/badge/skills/harry189/ha-mcp/bat-adhoc/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/harry189/ha-mcp/bat-adhoc"><img src="https://agentmods.dev/badge/skills/harry189/ha-mcp/bat-adhoc.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.00048 | $0.01306 |
| Opus 5 | $0.00024 | $0.00653 |
| Sonnet 5 | $0.00010 | $0.00261 |
| Haiku 4.5 | $0.00005 | $0.00131 |
Grade A, and why
bat-adhoc 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.
This is a copy
100% identical to bat-adhoc — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 139 lines — stays where its author put it; the contents beside it link to each section on GitHub.
BAT - Bot Acceptance Testing
Bot acceptance testing validates that MCP tools work correctly from a real AI agent's perspective. You design test scenarios dynamically, run them via tests/uat/run_uat.py, and evaluate results.
When to Use BAT
- PR validation: Test that tool changes work correctly from an agent's perspective
- Regression detection: Compare behavior between branches
- Integration verification: Ensure MCP tools work end-to-end with real agent CLIs
Workflow
- Analyze the change: Read the diff, identify which tools are affected
- Design scenario: Generate a scenario JSON with setup/test/teardown prompts
- Run the script: Pipe the scenario to
python tests/uat/run_uat.py - Evaluate summary: Check
all_passedper agent. If true, you're done. - Dig deeper on failure: Read
results_filefor full output, stderr, raw JSON - Regression check: If test fails, re-run with
--branch masterto compare
Output Structure
The runner returns a concise summary to stdout (saves context when all passes):
{
"results_file": "/tmp/bat_results_abc123.json",
"agents": {
"gemini": {
"all_passed": true,
"test": {
"completed": true,
"duration_ms": 8100,
"exit_code": 0,
"num_turns": 5,
"tool_stats": { "totalCalls": 4, "totalSuccess": 4, "totalFail": 0 }
},
"aggregate": {
"total_duration_ms": 15300,
"total_turns": 12,
"total_tool_calls": 9,
"total_tool_success": 9,
"total_tool_fail": 0
}
}
}
}
- Phase stats:
num_turns,tool_stats(per phase) for fine-grained comparison - Aggregate stats: Total counts across all phases for overall efficiency comparison
- On failure: also includes
outputandstderrfor diagnosis - Full results: raw JSON, complete output always available at
results_file
Scenario Design Guidelines
- setup_prompt: Create any entities/state the test needs
- test_prompt: Exercise the tools being tested, ask the agent to report results clearly
- teardown_prompt: Clean up created entities
- Keep prompts focused - each scenario tests ONE behavior
- Ask the agent to report: what succeeded, what failed, any unexpected behavior
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 · 139 lines · 48 tokens per session scan A 7d1582ae174c
bat-adhoc is a skill published in the GitHub repository harry189/ha-mcp (0 stars, last pushed 1mo ago), licensed MIT. It adds 48 tokens to every session and 1,306 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to bat-adhoc, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
dogfood
Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to dogfood, QA, exploratory test, find issues, bug hunt, or test this app on mobile.
test-warp-ui
Guides testing Warp UI features and changes using the computer use tool. Use this skill only when computer-use testing was requested (explicit request or accepted offer) and the computeruse tool is available to the agent. Covers launching Warp and verifying UI behavior.
test-electron-app
Drive the real running PostHog Electron app (live tRPC, workspace-server, real data) over CDP with agent-browser. Connect to the running app on port 9222, test desktop changes against a local Django stack, snapshot the accessibility tree, inspect network requests, and screenshot only when explicitly asked. Use when…
pyats-dynamic-test
Generate and execute deterministic pyATS aetest validation scripts - interface state, OSPF neighbors, BGP paths, ping matrices, and custom compliance tests. Use when writing a network test, validating post-change state, running pass/fail checks, or building automated regression tests.
test-loop
Plan, generate, and heal an executable E2E test suite from approved acceptance criteria (web and mobile).
playwright-cli
Automates browser interactions for testing and validating your own web applications using playwright-cli. Use when you need terminal-first browser control for navigation, form filling, screenshots, tracing, bound browser sessions, debugging, or generating Playwright test code. Only use against applications you own or…