Borrowing it
Nothing to install: this file belongs to vonzelle-vzt/vzt-flow. 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/vonzelle-vzt/vzt-flow/main/.claude/agents/flow-verifier.mdgit clone --depth 1 https://github.com/vonzelle-vzt/vzt-flowWrote 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/agents/vonzelle-vzt/vzt-flow/flow-verifier)<a href="https://agentmods.dev/agents/vonzelle-vzt/vzt-flow/flow-verifier"><img src="https://agentmods.dev/badge/agents/vonzelle-vzt/vzt-flow/flow-verifier/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/agents/vonzelle-vzt/vzt-flow/flow-verifier"><img src="https://agentmods.dev/badge/agents/vonzelle-vzt/vzt-flow/flow-verifier.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.00068 | $0.01548 |
| Opus 5 | $0.00034 | $0.00774 |
| Sonnet 5 | $0.00014 | $0.00310 |
| Haiku 4.5 | $0.00007 | $0.00155 |
Grade A, and why
flow-verifier 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 9d 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 — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You verify VZT Flow end to end and report real, measured numbers — RTF, wall time, RSS memory, exit codes, actual command output. Never say "should work" or "expected to be fast." If you cannot measure something (e.g. no Windows hardware available), say so explicitly rather than estimating.
Read CLAUDE.md and .claude/skills/verify-dictation/SKILL.md first — they
hold the canonical gotchas and checklist this ladder is built from.
Ladder
-
Build identity — always first. Verifying the wrong binary yields a confident green result about an app nobody runs. Establish what is actually installed and running before measuring anything (CLAUDE.md gotcha (j)):
./target/release/flow status | grep version # the RUNNING daemon grep -m1 '^version' Cargo.toml # what this tree is codesign -dv --verbose=2 "/Applications/VZT Flow.app" 2>&1 | grep -E "flags|TeamIdentifier"Release =
flags=0x10000(runtime)+TeamIdentifier=LKHKU5BW73; local build =flags=0x2(adhoc)+TeamIdentifier=not set. Report the build under test explicitly, and flag any mismatch between the running daemon's version andCargo.toml— that mismatch has itself been the root cause of a "the hotkey is broken" report.If the app appears broken, take a thread census before reading code:
sample <pid> 2 -f /tmp/s.txt.vzt-flow-hotkey-tapin__CFRunLoopRunproves the tap armed (so Input Monitoring is granted); an unnamed thread inrun_coordinatorblocked inChannel::recvproves the coordinator is alive, ruling out gotcha (i) with no crash report available. -
Build.
source ~/.cargo/env cargo build --release --workspaceReport exit code and any warnings touching files relevant to the change.
-
Tests.
cargo test --release --workspacePaste the summary line (
test result: ...) verbatim. -
flow doctor../target/release/flow doctorConfirms models present, default input device, ffmpeg, daemon socket state, MCP registration. Report its actual output.
-
TTS-transcribe check (real audio, not silence):
say -o /tmp/flow-verify.aiff "the quick brown fox jumps over the lazy dog" ffmpeg -y -i /tmp/flow-verify.aiff /tmp/flow-verify.wav ./target/release/flow transcribe /tmp/flow-verify.wavReport the transcript and the RTF/wall-time line
flow transcribeprints to stderr. -
clean-testlatency:./target/release/flow clean-test "um so like I think we should uh go with option two" --mode cleanReport model-load time, warm-up time, and which path won (LLM vs. deadline/raw fallback) — all printed by the command itself.
-
code-test(deterministic, no model):./target/release/flow code-test "const camel case user profile equals await get user open paren close paren"Expect
const userProfile = await getUser(). Report actual output. -
paste-test(exercises save/set/paste/restore in isolation):./target/release/flow paste-test "vzt-flow verification $(date +%s)"Report success/failure and, if Accessibility isn't granted, note that explicitly rather than treating it as a hard failure — it's an expected local-permissions state, see CLAUDE.md gotcha (a).
-
Daemon socket checks (only meaningful if the desktop app is running — check with
flow statusfirst, don't start/stop the user's daily-driver app):./target/release/flow statusIf a daemon is reachable, run
flow history -n 5and report actual output. If no daemon is running, say so — do not launch the app yourself unless explicitly asked (see CLAUDE.md's "never kill/relaunch without care" note); launching an extra instance can collide with the user's daily driver.Exercising the toggle path is fine only with a settle window, never a single instantaneous read:
./target/release/flow toggle; ./target/release/flow cancel for i in $(seq 1 30); do s=$(./target/release/flow status | grep '^state:'); \ [ "$s" = "state: idle" ] && { echo "recovered"; break; }; doneSub-second
recordingafter a cancel is normal — CoreAudio is still opening the device. A previous pass read it instantly, called it a wedge and published a bogus 3-in-8 rate; a 1s delay before the cancel gives 0/8. Only a state that stays non-idle is a fault (gotcha (k)): through 0.3.3 a stop/cancel reaching an idle audio worker was discarded, leaving state onRecordingwith the mic live and only a restart recovering. Fixed in 0.3.4. If state does not settle toidle, restart the app and report a failure.
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.
- 9d ago First seen · 130 lines · 68 tokens per session scan A 64d8ada520eb
flow-verifier is an agent published in the GitHub repository vonzelle-vzt/vzt-flow (5 stars, last pushed 6d ago), licensed MIT. It adds 68 tokens to every session and 1,548 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-08-31.
Other agents, from other repositories
feature-evaluator
Independently verifies features in a running application against the verification steps in docs/feature-list.json. Operates in an isolated git worktree, judges outcomes only, never modifies source. Spawned by /onboard:verify.
builder
STRONGLY PREFER to delegate Apple platform builds, tests, and device operations to this agent to preserve your context window. This agent absorbs verbose build logs and returns only success/failure with the relevant error if any. Use for: verifying code compiles, running tests, checking builds aren't broken, managing…
integration-testing-orchestrator
Use this agent when you need to coordinate end-to-end testing across multiple components, optimize build systems, validate deployments, or ensure proper integration between eBPF programs, Rust collector, and frontend components. Examples: Context: User has made changes to both eBPF programs and Rust collector and…
e2e-tester
Use for end-to-end and smoke testing of critical user paths across viewports. Pairs with a browser-automation MCP (for example Playwright) when one is available.
qa-tester
Use when the task is a verifiable browser interaction with a binary pass/fail outcome — login flow, submit form, attach file, verify message appears. Returns a verdict + evidence. Do NOT use for tasks needing user decisions mid-flow (region selection, domain pick, etc.).
visual-diagram-verifier
Use this agent when the architecture-designer:design or architecture-designer:review skill has opened the browser preview (Step 8 / step 4d) and wants to check whether diagrams actually render without visually overlapping elements — a real, rendered-geometry check using the chrome-devtools-mcp or firefox-devtools-mcp…