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 agentmods add skills/friedbotstudio/baseline/verifynpx skills add friedbotstudio/baseline --skill verifygit clone --depth 1 https://github.com/friedbotstudio/baselineWrote 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/friedbotstudio/baseline/verify)<a href="https://agentmods.dev/skills/friedbotstudio/baseline/verify"><img src="https://agentmods.dev/badge/skills/friedbotstudio/baseline/verify.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 | $0.00052 | $0.01070 |
| Opus 5 | $0.00026 | $0.00535 |
| Sonnet 5 | $0.00010 | $0.00214 |
| Haiku 4.5 | $0.00005 | $0.00107 |
Grade A, and why
verify 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 — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
verify — contract document for the binding test verdict
This skill is not invocable. Its body is the canonical reference for the .claude/state/last_test_result statefile that the verify_pass_guard hook reads as the single source of truth.
Callers that previously did Skill(verify) (integrate, simplify, chore, the verify-tick worker invoked by harness after a /tdd decomposition) now inline the four mechanical operations described below. There is one statefile format; every caller writes the same bytes.
Statefile format (.claude/state/last_test_result)
<PASS|FAIL>
<ISO-8601 UTC timestamp, e.g. 2026-05-12T18:30:00Z>
<exact command run, verbatim>
<exit code>
Exactly four lines plus a single trailing newline. No preamble, no blank lines, no JSON. The verify_pass_guard hook reads line 1 verbatim — anything that breaks the byte format breaks the gate.
The four mechanical operations a caller performs
- Read the command. Open
.claude/project.json; extracttest.cmd. If absent or empty, the verdict isFAILwith reason "project.json not configured — run /init-project"; skip step 2 and proceed to step 3 with exit code 1 and an empty command string. - Run the command. Execute via Bash from the project root. Capture stdout, stderr, and exit code. Do not retry. Do not pass
{file}placeholders — verify always runs the full suite. - Format the four lines. Apply the verdict rules below to decide PASS vs FAIL. Build the four-line string in memory.
- Atomically write the statefile. Write the four lines plus trailing newline to
.claude/state/last_test_result. Prefer write-then-rename for atomicity when the writer needs guarantees; a direct overwrite is acceptable for non-concurrent callers (the four current callers are sequential).
Verdict rules
PASSiff all of: exit code 0 and at least one test executed and no test reported as failed/errored.FAILotherwise. Specifically: non-zero exit, "0 tests collected", a panic/crash, a timeout (treat as FAIL), a killed process (FAIL), or output that contradicts the exit code (ambiguity is FAIL).- If the same FAIL has stamped three or more consecutive times for the same slug, surface a recommendation that the caller invoke the
rcaskill. (The caller is responsible for noticing repeated failures; verify writes only the current verdict.)
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 First seen · 76 lines · 52 tokens per session scan A e3f2afac66c7
verify is a skill published in the GitHub repository friedbotstudio/baseline (14 stars, last pushed yesterday), licensed Apache-2.0. It adds 52 tokens to every session and 1,070 once invoked, about $0.0003 per session on Opus 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-09-03.
Other skills, from other repositories
release
The single permitted path to a version tag, for any target declared in the project's .codearbiter/release-targets.md. Routed to when the user invokes /release on a non-default branch with a green suite. Takes the declared target as its one argument, derives the SemVer bump from Conventional-Commits history since that…
decompose
The greenfield decomposition interview. Routed to at startup when .codearbiter/CONTEXT.md lacks the body marker and no source code exists, or when the user invokes /decompose. A senior-architect persona drives a six-layer interview, persists every layer to disk so a context reset loses nothing, then populates…
brainstorming
The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it takes a one-line idea and drives it to an approved, concrete spec with testable acceptance criteria. Five gated phases — frame, shape, refine, write, review-and-approve. No implementation and no handoff to…
commit-gate
The only path to a commit. Routed to when the user invokes /commit or otherwise instructs codeArbiter to persist staged changes. Nine gated phases — permission, branch, classification, verification (test/lint/secrets), behavioral proof, diff review, selective stage, message, commit. Nothing reaches version control…
context-creation
The brownfield back-fill. Routed to by /create-context, and by startup when .codearbiter/CONTEXT.md lacks the body marker but source code exists. Six gated phases — pre-flight, scout dispatch, synthesis, gap interview, write, lock. Reads the existing codebase through parallel scouts, drafts every surviving…
decision-lifecycle
Author and track Architecture Decision Records. Routed to when the user invokes /adr to record a new decision or /adr-status to list ADR health. Authors numbered, dated, user-attributed ADRs under .codearbiter/decisions/, maintains supersede chains, and reports status read-only. Never authors an ADR as its own…