black-box-test

black-box-test is a skill for Claude Code, Codex from tmj-90/gaffer. It costs 135 tokens per session (2,566 once invoked), scanned A, original, Apache-2.0.

An independent testing workflow for checking another agent’s completed software change from the outside, using only its promised behavior and acceptance rules.

In plain words
What is it for?
It helps write automated tests that use the changed interfaces, verify acceptance criteria, and report whether the ticket is ready or needs more work.
Why use it?
It reduces the risk that tests simply repeat the implementation’s assumptions or confirm code that does not meet the agreed requirements.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit It helps write automated tests that use the changed interfaces, verify acceptance criteria, and report whether the ticket is ready or needs more work.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/tmj-90/gaffer/black-box-test
Install

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.

Any agent
npx skills add tmj-90/gaffer --skill black-box-test
Clone the repo
git clone --depth 1 https://github.com/tmj-90/gaffer

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for black-box-test

README.md
[![agentmods](https://agentmods.dev/badge/skills/tmj-90/gaffer/black-box-test/github.svg)](https://agentmods.dev/skills/tmj-90/gaffer/black-box-test)
Your own site
<a href="https://agentmods.dev/skills/tmj-90/gaffer/black-box-test"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/black-box-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.

agentmods 80×15 button for black-box-test

Your own site · 80×15
<a href="https://agentmods.dev/skills/tmj-90/gaffer/black-box-test"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/black-box-test.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 135 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,566 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00135 $0.02566
Opus 5.5 $0.00054 $0.01026
Sonnet 5.5 $0.00027 $0.00513
Haiku 4.5 $0.00014 $0.00257

Measured 22d ago against content hash b186584034e5, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

black-box-test scanned grade A with 1 finding 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 22d 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.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

built-ins (`node:test`, `child_process`, `fetch`, `subprocess`, `net/http`), never an
runner/skills/black-box-test/SKILL.md · 151 lines

How it starts

The opening of the file, as written. The whole thing — 151 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Test another agent's ticket — independently, from the outside

You decide whether a delivered change satisfies its acceptance criteria (ACs) by probing it from the outside. A test written from the implementation mirrors its assumptions and passes exactly when the implementation's own tests pass; a test written from the AC catches what review cannot — "it passes its own tests but does not meet the criterion." Live runs showed the gap: builds shipped with tests that never exercised the criterion's own behaviour, and concurrent-write and paused-process defects no test covered.

How you are run (the contract the runner enforces)

The runner (bin/tester-run.mjs --live) checks the tested commit out into a throwaway worktree (your only write root), scopes a Dispatch MCP server to this ticket, and then:

  • Inspects what you changed. Allowed: any path with a directory named test, tests, __tests__, spec, specs, e2e or fixture(s); JS/TS files named *.test.* / *.spec.*; files whose name starts test_, test- or test.. A test beside the source in any other form (Go foo_test.go next to the code, FooTest.java under src/main/, foo_test.py outside a test directory) is NOT allowed. Maven/Gradle src/test/... IS allowed (it contains a test directory) and is where their test command looks; otherwise put yours in a tests/ or e2e/ directory the repo's test command discovers, and drive the built binary, CLI or HTTP surface from there. Any other file changed — source, package.json, a lockfile, config — and the run is HELD for a human, whatever your verdict. You test the implementation; you never fix, patch, configure or "unblock" it. Need a library the repo lacks? Use the runtime's built-ins (node:test, child_process, fetch, subprocess, net/http), never an install that edits a manifest.
  • Replays a PASS on a clean checkout of the tested commit: only your test files are copied in, the installed node_modules are linked from the primary checkout (nothing else is installed or built), and the repo's registered test command runs with CI=1 (10-minute cap). If that replay fails, your PASS is held. So your tests must be self-contained: they start the system themselves, use temp dirs and free ports, and never depend on a server you started by hand, an env var you exported, or build output left in your worktree. Put the file where the repo's test command discovers it (read the test script's glob) — a test the command does not run is not evidence. The candidate's own tests run in the replay too; if they fail, that is a FAIL finding.
  • Links the installed dependencies into your worktree (the primary checkout's root and workspace-package node_modules, as a delivery worktree has them; git ignores the links). Never install, update or remove a dependency: if the test command still cannot find one, use runtime built-ins, and FAIL an AC you still cannot demonstrate, naming the missing dependency as an environment gap, not a product defect.
  • Reads your verdict only from the last line — {"verdict":"PASS"} or {"verdict":"FAIL"} on its own. PASS → ready_for_merge; FAIL → back to ready or refining (per the autonomy policy) with your failing test as evidence; no token → HELD, which costs more than a FAIL. Your commit is kept on a separate gaffer/ticket-<n>-tests branch; the reviewed delivery branch is never rewritten.

Read the full file on GitHub · 151 lines

Changes

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.

  1. 22d ago Changed · -20 lines · +13 tokens per session b186584034e5
  2. 25d ago Changed · +7 lines ccfed232d8c2
  3. 1mo ago First seen · 164 lines · 122 tokens per session scan A f81aebc3b93b

Subscribe to this mod's changes

black-box-test is a skill published in the GitHub repository tmj-90/gaffer (2 stars, last pushed 23d ago), licensed Apache-2.0. It adds 135 tokens to every session and 2,566 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.