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 nirecom/agents --skill review-testsgit clone --depth 1 https://github.com/nirecom/agentsWrote 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/nirecom/agents/review-tests)<a href="https://agentmods.dev/skills/nirecom/agents/review-tests"><img src="https://agentmods.dev/badge/skills/nirecom/agents/review-tests/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/nirecom/agents/review-tests"><img src="https://agentmods.dev/badge/skills/nirecom/agents/review-tests.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.00009 | $0.03504 |
| Opus 5.5 | $0.00004 | $0.01402 |
| Sonnet 5.5 | $0.00002 | $0.00701 |
| Haiku 4.5 | $0.00001 | $0.00350 |
Grade A, and why
review-tests 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 6d 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 — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review test case completeness against source code via Codex (round-continuing under the 2+1 cap: address gaps and re-run).
Procedure
Note: the Stop-guard silence during dispatch is automatic (PostToolUse marks the step in_progress). Do not emit NEXT_STEP_PAUSE.
Read rules/shell-commands.md before the first Bash command, or before writing a file — defensive measure: RT-2's incident showed the rule content was not effectively available at Bash-issuance time in this context: fork execution.
Follow the rules/shell-commands.md Subagent Dispatch Prompts section as if this fork were a dispatched subagent, including its Command-form deviations report.
RT-0. Resolve the session-bound linked worktree path in two separate standalone Bash commands — never combined with variable-capture syntax on the Bash tool's own command line, per rules/shell-commands.md.
RT-0 session-id call: run bash "$AGENTS_MAIN_ROOT/bin/resolve-session-id"; its stdout is the CC session id.
RT-0 session-id call exit 2 (stdout empty, stderr session id unresolvable): omit --session and run the worktree-path call anyway.
RT-0 session-id call any other non-zero exit (3 = resolver fault, 127 = node absent): HALT and surface its stderr; do not run the worktree-path call — rc 3 is a fault, not "no session".
RT-0 worktree-path call: run bash "$AGENTS_MAIN_ROOT/bin/resolve-worktree-path" --session <value from the session-id call>; its stdout is WORKTREE for later steps.
RT-0 worktree-path call exit 2 (malformed --session value — a transcription error): HALT; never fall through to a different session.
If the worktree-path call's stdout is empty after an omitted --session, RT-0 skips: the review target cannot be identified.
If WORKTREE == "NOSTATE", treat WORKTREE as empty — the internal scripts handle the CWD-fallback path for that case.
Pass each script path to bash as its argument, keeping bash itself in execution position — a bare quoted path there is a shell variable in execution position, the shape the permission engine's allow rules never match.
Pass it no arguments other than --session <value>.
Use no environment-variable prefix on either invocation.
Use no command chaining: no &&, no ; and no | on those command lines — per rules/shell-commands.md.
Inspect an exit code, if needed, in a separate, subsequent command.
RT-0a. Read:
rules/core-principles.mdrules/test.md— on-demand-only; never auto-injected, so this Read is mandatoryskills/_shared/test-design.mdskills/_shared/test-design/protection-fix-tests.md— additionally, for security / guard / classifier fix targetsskills/_shared/test-design/parser-regex-tests.md— additionally, for parser / regex / allowlist targets RT-1. Identify staged test file(s) and source file(s):- Run
bash "$AGENTS_MAIN_ROOT/skills/review-tests/scripts/select-staged-files.sh"(Bash, single standalone command); its stdout isSTAGED. - If exit 3 (linked worktree unresolvable): do NOT fall back to cwd;
present "Could not identify the linked worktree. Re-run
/review-testsfrom the linked worktree, or specify the test and source files manually." and ask the user for the files. - If exit 4 (
bin/resolve-session-idfaulted): HALT, surface the script's stderr, and do NOT ask for a manual file. - Select test file(s) and source file(s) from
$STAGEDor from the user's manual input. RT-1a. Check each newly added test file for a missed append target: - Run
bash "$AGENTS_MAIN_ROOT/skills/review-tests/scripts/select-staged-files.sh" --added-only(Bash, single standalone command); its stdout isADDED. Exit 3 / exit 4 are handled exactly as in RT-1. - Collect every
ADDEDentry undertests/and pass them all to one call ofbash "$AGENTS_MAIN_ROOT/bin/find-tests-for-source.sh" --with-language --test-file <path> --root <WORKTREE>, repeating--test-fileper entry (Bash, standalone command with timeout 600000; split rule and language columns inskills/_shared/test-design/append-vs-new.md; omit--rootwhenWORKTREEis empty). On exit 4 or a tool timeout, HALT and surface the stderr. The helper itself returnsskipped/not-top-levelfor nested part files — do not pre-filter by eye. - The gap predicate is the row's
viablecolumn alone, never theverdictcolumn: a non--viablecolumn means an append target under the HARD limit existed for this file's# Tests:set. - A non-
-viablecolumn is ahigh-tier gap "append candidate existed but a new file was created". A# Tags:dup-group-keep:size-hard-limitdoes NOT waive it — the same row disproves the tag by showing a sub-HARD target. Nodup-group-keep:<reason>value waives anything; the only escape is the WARNINGS_ACCEPTED sentinel. - Validate the tag's claim, not its presence: when the file's
# Tags:carriesdup-group-keep:size-hard-limit, the row corroborates it only ifexcludedis non--andreasonissize-hard-limit. A tag on a row withexcluded=-(reason=no-candidate— no append candidate ever existed) is an unvalidated opt-out: report it at the samehightier as a missed append target. - Feed the gaps into RT-3's review input and count them in RT-5c. RT-1b. Check new test files for missing case markers (deterministic gate, no codex review needed):
- For each file in ADDED that lives under
tests/, runbash "$AGENTS_MAIN_ROOT/bin/check-case-markers.sh" <file>(Bash, one standalone command per file). - Any
HIGH:output line is ahigh-tier gap "multi-pathTests:header with missing or malformed case markers" (notation: the language's registrynotationDoc). - These gaps are deterministic — do not feed them into RT-3 codex input. Count them directly in RT-5c.
- If any RT-1b violations exist, RT-5 must emit WARNINGS regardless of codex exit code.
RT-2. Select the review scope: run
node "$AGENTS_MAIN_ROOT/bin/select-review-scope.js" --session <CC session id> --worktree <WORKTREE-or-empty>as one standalone command; exit 4 → HALT and surface its stderr. Assemble review input via the Write tool only into<PLANS_DIR>/<session-id>-test-review.mdas four separate sections:## Review targets(each REVIEW absolute path with its contents),## Deleted tests (paths only, do not Read)(DELETED),## Test inventory (paths only)(INVENTORY),## Sources(SOURCE contents). Do not substitute Bash-based assembly for the Write tool call in RT-2 — seerules/shell-commands.mdTool Selection Priority for what counts as shell-based writing. Resolve<PLANS_DIR>viaskills/_shared/resolve-plans-dir.md. InitializeEXTENSIONS_USED=0. Show the userSCOPEandREASONin one line. RT-3. Invoke"$AGENTS_MAIN_ROOT/skills/review-tests/scripts/run-codex-review-loop.sh"(Bash), exportingAGENTS_MAIN_ROOT,SESSION_ID(plan-artifact prefix),PLANS_DIR,EXTENSIONS_USED. The wrapper auto-adds--context test-design.md.CTX_CONCERNS_LOGis auto-generated by the wrapper from the ledger (concern-ledger render-concerns-log, formattest-review) and auto-exported when non-empty — do not set it manually (#2185). Exit-code handling (SSOT:skills/_shared/codex-review-loop.md; round-continuing under the 2+1 cap): - exit 0 APPROVED → RT-5 COMPLETE.
- exit 1 NEEDS_REVISION → save stdout to
<PLANS_DIR>/<session-id>-test-review-codex-round-<N>-raw.md(<N>from<CONTROL_DIR>/test-review-last-round.txt,<CONTROL_DIR>=node "$AGENTS_MAIN_ROOT/bin/workflow-control-dir" --session <session-id>); present gaps; suggest specific test cases → RT-5 WARNINGS. WARNINGS is blocking: address the gaps, re-stage tests, and re-run/review-tests— the round counter survives, so the re-run is counted as the next round. - exit 2 ESCALATE → run
review-loop-summarize-concerns --budget-remaining 0; present summary → RT-5 WARNINGS. - exit 6 HIGH_UNRESOLVED → save stdout to
<PLANS_DIR>/<session-id>-test-review-codex-round-<N>-raw.md(<N>from<CONTROL_DIR>/test-review-last-round.txt); runreview-loop-summarize-concerns --budget-remaining 0; present unresolved HIGH concerns → RT-5 WARNINGS (do not emitWORKFLOW_REVIEW_TESTS_COMPLETE). Re-run only after accepting per exit-codes.md "Escalation by format". - Exits 2 and 6 are terminal: after RT-5 WARNINGS, do NOT re-invoke write-tests or re-run
/review-tests— accept remaining gaps viaecho "<<WORKFLOW_REVIEW_TESTS_WARNINGS_ACCEPTED: {reason}>>"or address them in a new session. - After a terminal exit (rc 2 or 6),
WORKFLOW_REVIEW_TESTS_WARNINGS_ACCEPTEDalso restores anin_progressreview_tests tocomplete. - exit 8 → terminal guard was previously armed (review scope unchanged since last terminal); HALT.
- exit 9 → HALT; accept per exit-codes.md "Escalation by format" (sentinel = write-code unblock + guard clear + in_progress terminal record restored to complete;
bin/accept-exit6-residual= guard clear only), then re-run. - exit 3 → silently launch
test-reviewersubagent withmodel:= themodel=line ofnode "$AGENTS_MAIN_ROOT/bin/resolve-role-model" --role reviewer; its dispatch prompt says: Read and followrules/shell-commands.mdbefore the first Bash command. APPROVED → RT-5 COMPLETE; NEEDS_REVISION → RT-5 WARNINGS. That prompt also carries the canonical line of therules/shell-commands.mdSubagent Dispatch Prompts section. Save the subagent output via the Write tool to<PLANS_DIR>/<session-id>-test-review-fallback-raw.md, then runbash "$AGENTS_MAIN_ROOT/skills/review-tests/scripts/detect-input-error.sh" <that file>as one standalone command; exit 4 (INPUT_ERROR <path>) → HALT like exit 4, emit no sentinel. - exit 4 → HALT with blocking error; surface wrapper stderr; do NOT launch fallback; do NOT emit sentinel.
- exit 5 AUTO_EXTEND → same as exit 1 (gaps remain within the extension budget): present gaps → RT-5 WARNINGS; address and re-run.
- exit 7 FINALIZE_FAILED →
<CONTROL_DIR>/test-review-unresolved-concerns.jsoncould not be written; HALT, surface the## Concern Ledger: FINALIZE-FAILEDline, launch no fallback, emit no sentinel. After an ESCALATE, confirm the artifact withbash "$AGENTS_MAIN_ROOT/bin/concern-ledger" check-finalized --plans-dir <PLANS_DIR> --session-id <session-id> --format test-reviewbefore RT-5. RT-4. Triage the concerns againstskills/_shared/priority-hierarchy.mdbefore emitting the sentinel: a concern that contradicts an approved intent.md / outline.md / detail.md decision — including a documented TL3 gap or a deferral to manual verification — is rejected, not a gap. State each rejection and the decision it rests on, and exclude it from the RT-5c warnings count. Skip on exit 0 (no concerns). For each rejected concern, record the verdict durably so it does not re-surface next round:bash "$AGENTS_MAIN_ROOT/bin/concern-ledger" reject --plans-dir <PLANS_DIR> --session-id <session-id> --format test-review --id C<N> --reason "<cited decision>"(#2185). RT-5. Emit workflow sentinel — two separate Bash calls, not chained: RT-5a. Runnode "$AGENTS_MAIN_ROOT/bin/compute-review-scope-fingerprint.js" "<WORKTREE-or-empty>"(Bash, single standalone command,<WORKTREE-or-empty>substituted with RT-0's resolved value); its stdout isFINGERPRINT. Non-zero exit → HALT, surface its stderr, emit no sentinel. - RT-5b. (adequate)
echo "<<WORKFLOW_REVIEW_TESTS_COMPLETE: fingerprint=${FINGERPRINT}>>" - RT-5c. (gaps/warnings)
echo "<<WORKFLOW_REVIEW_TESTS_WARNINGS: fingerprint=${FINGERPRINT} warnings=N — blocking: /write-code stays blocked until the gaps are addressed and /review-tests is re-run>>" - RT-5d. Skip when
WORKFLOW_WRITE_TESTS_NOT_NEEDEDwas emitted (propagated skip).
What ships with it
3 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.
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.
- 6d ago Changed 32b9da255bdb
- 9d ago Changed · +2 lines 5f10645d453c
- 11d ago Changed 276a0d1b3497
- 17d ago Changed 57b22609e710
- 18d ago Changed e4c05b993fab
- 20d ago Changed · +2 lines 05cd0c63f6d9
- 21d ago Changed · +5 lines 15eadbd439b8
- 28d ago Changed · +5 lines c42134810e91
- 29d ago Changed · +4 lines 5d3a2ec9e253
- 1mo ago First seen · 81 lines · 9 tokens per session scan A 69798e226c5e
review-tests is a skill published in the GitHub repository nirecom/agents (3 stars, last pushed today), licensed MIT. It adds 9 tokens to every session and 3,504 once invoked, about $0.0000 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-08-31.
Other skills, from other repositories
research-engineer
An uncompromising Academic Research Engineer. Operates with absolute scientific rigor, objective criticism, and zero flair. Focuses on theoretical correctness, formal verification, and optimal implementation across any required technology.
eval-dataset-design
A guide to creating reliable test sets for AI agents. Each evaluation task includes the request, the simulated user's behaviour, a reset starting state, and a success check that can be independently verified.
tika-eval-compare
Compare extracts from two Tika builds over a corpus to detect regressions in content, encoding, exceptions, and embedded-document handling. Use for "compare before/after extracts", "eval this change against the corpus".
cua-driver
Use Cua Driver for desktop or browser tasks that are awkward or unavailable through Bash/APIs, or when the user explicitly wants GUI interaction: app testing, visual bug reproduction, form filling, calendar entry, screenshots, and demo recording. Also covers Cua setup; not OpenAI Codex Computer Use or web research.
jetson-validate-image
Use after jetson-flash-image to run static BSP checks, on-target smoke/regression tests on a flashed DUT, or both. Not for build or flash steps. Triggers: validate bsp, on-target validation.
atmos-validation
Validate Atmos projects, components, arbitrary JSON Schema inputs, EditorConfig, and GitHub Actions; use affected-file selection and native CI annotations.