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.
npx skills add melodic-software/claude-code-plugins --skill behavior-probesgit clone --depth 1 https://github.com/melodic-software/claude-code-pluginsWrote 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/melodic-software/claude-code-plugins/behavior-probes)<a href="https://agentmods.dev/skills/melodic-software/claude-code-plugins/behavior-probes"><img src="https://agentmods.dev/badge/skills/melodic-software/claude-code-plugins/behavior-probes/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/melodic-software/claude-code-plugins/behavior-probes"><img src="https://agentmods.dev/badge/skills/melodic-software/claude-code-plugins/behavior-probes.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.00084 | $0.01697 |
| Opus 5.5 | $0.00034 | $0.00679 |
| Sonnet 5.5 | $0.00017 | $0.00339 |
| Haiku 4.5 | $0.00008 | $0.00170 |
Grade A, and why
behavior-probes 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 yesterday.
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 — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Purpose
Our conventions rest on platform behavior no doc settles: whether a hook allow skips the auto-mode
classifier, what an ask rule becomes under claude -p, where EnterWorktree stops asking. This skill
holds each such behavior as a case and reruns it on demand, so a recheck is one command instead of a
bespoke script. Outcomes are recorded in records.md.
claude plugin eval cannot carry these cases: a case there cannot set permission rules, autoMode, a
permission mode or project settings, and its runs remove ungranted tools instead of deciding them.
Pointer: when that question comes up again, fetch https://code.claude.com/docs/en/plugin-evals
live. As of: 2026-10-08. Recheck trigger: a release note adding per-case settings or
permission mode to plugin eval.
The runner is a script bundled here rather than a plugin bin/ executable, because some surfaces
refuse a plugin with a top-level bin/. Pointer: when deciding whether this plugin can ship a
bin/, fetch https://code.claude.com/docs/en/plugins/components#executables live. As of:
2026-10-08. Recheck trigger: that section stops naming surfaces that refuse a bin/.
Actions
<probe> is python3 "${CLAUDE_SKILL_DIR}/scripts/probe.py".
| Action | Command | Cost |
|---|---|---|
validate |
<probe> validate |
none |
dry-run (default) |
<probe> run --dry-run |
none: scaffolds run, claude is replaced by a fake |
live |
<probe> run --live [--case <id>]... [--area <area>]... [--retries 1] |
real model runs, capped |
recheck |
<probe> recheck --changelog <file> --range <A..B> |
none |
table |
<probe> table <results.jsonl> |
none |
rejudge |
<probe> rejudge --out <dir of a live run> |
none: re-reads the saved streams after an expect.json fix |
Run live only when the user asks for a live run in this turn. Before it, state how many cases it
selects and the ceilings in force (--max-runs, --max-cost-usd, each case's max_budget_usd); a
case past a ceiling is reported skipped, never run, and each case's budget is cut to what the suite
ceiling leaves. For what a run costs, point at
Manage costs.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- cases/auto-mode/ask-rule-denies-in-print-mode/expect.json 591 B
- cases/auto-mode/ask-rule-denies-in-print-mode/prompt.md 92 B
- cases/auto-mode/ask-rule-denies-in-print-mode/scaffold.sh 128 B runs code
- cases/auto-mode/ask-rule-denies-in-print-mode/settings.json 51 B
- cases/auto-mode/bot-thread-resolve-allowed-with-allow-entry/expect.json 816 B
- cases/auto-mode/bot-thread-resolve-allowed-with-allow-entry/prompt.md 139 B
- cases/auto-mode/bot-thread-resolve-allowed-with-allow-entry/scaffold.sh 130 B runs code
- cases/auto-mode/bot-thread-resolve-allowed-with-allow-entry/settings.json 255 B
- cases/auto-mode/bot-thread-resolve-conditional-allow-denied/expect.json 1.0 KB
- cases/auto-mode/bot-thread-resolve-conditional-allow-denied/prompt.md 139 B
- cases/auto-mode/bot-thread-resolve-conditional-allow-denied/scaffold.sh 130 B runs code
- cases/auto-mode/bot-thread-resolve-conditional-allow-denied/settings.json 368 B
- cases/auto-mode/bot-thread-resolve-denied-without-allow/expect.json 914 B
- cases/auto-mode/bot-thread-resolve-denied-without-allow/prompt.md 139 B
- cases/auto-mode/bot-thread-resolve-denied-without-allow/scaffold.sh 130 B runs code
- cases/auto-mode/bot-thread-resolve-denied-without-allow/settings.json 3 B
- cases/auto-mode/classifier-denies-file-sourced-force-push/expect.json 542 B
- cases/auto-mode/classifier-denies-file-sourced-force-push/prompt.md 132 B
- cases/auto-mode/classifier-denies-file-sourced-force-push/scaffold.sh 128 B runs code
- cases/auto-mode/classifier-denies-file-sourced-force-push/settings.json 3 B
- cases/auto-mode/custom-soft-deny-benign-command-runs/expect.json 378 B
- cases/auto-mode/custom-soft-deny-benign-command-runs/prompt.md 80 B
- cases/auto-mode/custom-soft-deny-benign-command-runs/scaffold.sh 128 B runs code
- cases/auto-mode/custom-soft-deny-benign-command-runs/settings.json 89 B
- cases/auto-mode/dry-run-push-allowed-without-ask-rule/expect.json 537 B
- cases/auto-mode/dry-run-push-allowed-without-ask-rule/prompt.md 92 B
- cases/auto-mode/dry-run-push-allowed-without-ask-rule/scaffold.sh 128 B runs code
- cases/auto-mode/dry-run-push-allowed-without-ask-rule/settings.json 3 B
- cases/auto-mode/flag-automode-rule-denies/expect.json 576 B
- cases/auto-mode/flag-automode-rule-denies/prompt.md 93 B
- cases/auto-mode/flag-automode-rule-denies/settings.json 102 B
- cases/auto-mode/narrow-allow-rule-passes-classifier/expect.json 520 B
- cases/auto-mode/narrow-allow-rule-passes-classifier/prompt.md 132 B
- cases/auto-mode/narrow-allow-rule-passes-classifier/scaffold.sh 128 B runs code
- cases/auto-mode/narrow-allow-rule-passes-classifier/settings.json 71 B
- cases/auto-mode/probemark-runs-without-rule/expect.json 337 B
- cases/auto-mode/probemark-runs-without-rule/prompt.md 93 B
- cases/auto-mode/probemark-runs-without-rule/settings.json 3 B
- cases/auto-mode/project-automode-rule-ignored/expect.json 533 B
- cases/auto-mode/project-automode-rule-ignored/project-settings.json 158 B
- cases/auto-mode/project-automode-rule-ignored/prompt.md 134 B
- cases/auto-mode/project-automode-rule-ignored/scaffold.sh 196 B runs code
- cases/auto-mode/project-automode-rule-ignored/settings.json 3 B
- cases/auto-mode/soft-deny-without-defaults-keeps-defaults/expect.json 595 B
- cases/auto-mode/soft-deny-without-defaults-keeps-defaults/prompt.md 132 B
- cases/auto-mode/soft-deny-without-defaults-keeps-defaults/scaffold.sh 128 B runs code
- cases/auto-mode/soft-deny-without-defaults-keeps-defaults/settings.json 89 B
- cases/auto-mode/subagent-ask-rule-denies/expect.json 578 B
- cases/auto-mode/subagent-ask-rule-denies/prompt.md 269 B
- cases/auto-mode/subagent-ask-rule-denies/scaffold.sh 128 B runs code
- cases/auto-mode/subagent-ask-rule-denies/settings.json 51 B
- cases/auto-mode/subagent-dry-run-push-allowed/expect.json 525 B
- cases/auto-mode/subagent-dry-run-push-allowed/prompt.md 269 B
- cases/auto-mode/subagent-dry-run-push-allowed/scaffold.sh 128 B runs code
- cases/auto-mode/subagent-dry-run-push-allowed/settings.json 3 B
- cases/concurrency/subagent-cap-allows-within-limit/expect.json 655 B
- cases/concurrency/subagent-cap-allows-within-limit/prompt.md 319 B
- cases/concurrency/subagent-cap-allows-within-limit/settings.json 3 B
- cases/concurrency/subagent-cap-refuses-over-limit/expect.json 800 B
- cases/concurrency/subagent-cap-refuses-over-limit/prompt.md 319 B
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.
- yesterday Changed · -10 tokens per session 837d08b253a3
- 3d ago Changed · +3 lines 27844c6f3d53
- 6d ago First seen · 98 lines · 94 tokens per session scan A b99eca2f43e2
behavior-probes is a skill published in the GitHub repository melodic-software/claude-code-plugins (25 stars, last pushed today), licensed MIT. It adds 84 tokens to every session and 1,697 once invoked, about $0.0003 per session on Opus 5.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-10-10.
Other skills, from other repositories
benchmark-before-optimize
For performance work: measure before changing, profile to find bottlenecks, compare before and after.
test-structural-invariants
For data structure validation: test lengths, relationships, constraints that must hold, verify setup is correct.
test-with-examples
For example-driven development: test cases as specifications, input/output pairs, documentation through examples.
verify-solution-properties
For solution checking: independent verification that result is correct, separate from how it was computed.
verify-with-inline-tests
For test co-location: tests in same file as code, run with main, tests as documentation and examples.
test-deploy
Interactive cold-start validation of every systemprompt distribution channel. Walks through Docker Hub, GHCR, binary install.sh, Homebrew, Scoop, Helm, APT, RPM, Winget, Nix, Railway, Render, and Coolify — one at a time — runs the install recipe, captures pass/fail, and reports the state of the distribution surface…