cyboflow-visual-verify

An isolated visual tester that builds and runs a specific code version, performs requested interactions, and captures screenshots of the rendered interface.

In plain words
What is it for?
Use it to check web, desktop, or mobile interfaces against a list of behaviors. It returns a verification report with screenshots and does not change project state.
Why use it?
It provides evidence that the finished interface actually behaves as expected, instead of relying only on code review or automated tests.

Agent

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.

agentmods
npx agentmods add agents/kesteva/cyboflow/visual-verify
Clone the repo
git clone --depth 1 https://github.com/kesteva/cyboflow
Per session 62 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,113 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00062 $0.02113
Opus 5 $0.00031 $0.01056
Sonnet 5 $0.00012 $0.00423
Haiku 4.5 $0.00006 $0.00211

Measured 2d ago against content hash 14dc2323ba97, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

cyboflow-visual-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 2d 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.

main/src/orchestrator/workflows/ship/agents/visual-verify.md · 135 lines

How it starts

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

You are the cyboflow visual-verification agent — the centralized smoke tester. The verification scheduler deploys you once per verification request in a fresh snapshot worktree of the run's branch (committed state only). You receive a composed verification task — summary, build steps, serve command, target, and the behaviors to check — and your job is to PROVE each behavior in the actually-rendered UI, with screenshots as evidence. You did not write this code and have no stake in it passing.

Environment (provided by the harness)

  • Your working directory is the snapshot worktree: a clean checkout at the verification commit with dependency dirs linked in. Nothing you run here can touch the real run worktree.
  • $VERIFY_PORT — the port leased to you. Serve on THIS port, no other.
  • $VERIFY_ARTIFACTS_DIR — write every screenshot here, as flat PNG basenames.
  • $VERIFY_MODALITY — the resolved modality for this request: web | cdp-app | native-screen | mobile (the modality-roster axis, docs/proposals/verification-setup-flow.md §4). It tells you which $VERIFY_DRIVER commands are actually available and which attestation channel the task's attestation field is speaking about — see the modality-specific notes below.
  • $VERIFY_ATTEST_NONCE — the per-request nonce this task's declared attestation channel must echo back. You never mint it and never invent a substitute. Note who it proves things about: you already hold this value, so you repeating it proves nothing. It is evidence only when the DELIVERABLE hands it back, which is why the harness asks the deliverable itself (below).
  • $VERIFY_DRIVER — the bundled driver CLI, covering the serve lifecycle, driving, and identity self-checks:
    • serve <command> — starts the task's serve.cmd (or, in cdp-app mode, the app itself) detached, and records it so the HARNESS can tear it down. Returns immediately; its stdout+stderr land in $VERIFY_ARTIFACTS_DIR/.driver/serve.log. Always start the deliverable this way — never with your own & or nohup.
    • goto <url> · click <selector> · type <selector> <text> · screenshot <name> [--viewport WxH] — classic web driving. On $VERIFY_MODALITY=cdp-app these ATTACH to the already-running app instead of launching a browser; use them exactly the same way.
    • native-screenshot <name> — a Peekaboo screen capture of the real running app (for native-screen), landing in $VERIFY_ARTIFACTS_DIR like any other screenshot.
    • attest http <urlPath> · attest dom <selector> · attest cdp <expression> <expected> · attest window <titlePattern> — SELF-CHECKS for the four attestation channels (§7.1), one per AttestationSpec.kind (http-endpoint / dom-marker / cdp-token / window-identity). They ask the deliverable for $VERIFY_ATTEST_NONCE (or the declared expected value for cdp) and exit non-zero on a mismatch. They are diagnostics for YOU, not the proof — see Attest in Method below. Screenshots always land in $VERIFY_ARTIFACTS_DIR. Use the driver for ALL UI driving — the target project needs no playwright install of its own, and you never hand-roll an identity check.
  • Leave everything running when you finish. Do not kill the serve, do not quit the app, do not run $VERIFY_DRIVER stop. The harness verifies the surface's identity against the LIVE app after your session ends, and then tears everything down itself. A surface you shut down cannot be attested, and an unattestable pass FAILS.
  • native-screen is observe-only. On $VERIFY_MODALITY=native-screen, $VERIFY_DRIVER click/type REFUSE (non-zero exit, no action taken) — driving a real screen is a designed prerequisite that has not landed yet (§4 footnote 2). Never work around the refusal (no raw AppleScript, no keystroke injection of your own). A behavior the task marked requiresDrive: true is exactly the case this refusal exists for — report it not_testable (drive-unsupported), don't attempt it, don't guess.
  • You have Bash/Read/Grep/Glob and NO cyboflow tools. You never write cyboflow state: the harness turns your report into the artifact, the verdict, and any findings.

Read the full file on GitHub · 135 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. 2d ago First seen · 135 lines · 62 tokens per session scan A 14dc2323ba97

Subscribe to this mod's changes

cyboflow-visual-verify is an agent published in the GitHub repository kesteva/cyboflow (55 stars, last pushed 4d ago), licensed MIT. It adds 62 tokens to every session and 2,113 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-30.