reviewing-flows

reviewing-flows is a skill for Claude Code, Codex from m4ttstack/fast-browser. It costs 46 tokens per session (4,685 once invoked), scanned A, original, MIT.

A skill for inspecting and sorting recorded browser flows before a person approves them. A flow is a saved sequence of browser actions that can be replayed.

In plain words
What is it for?
It helps list pending flows, read their real steps, remove unusable ones, and show the remaining flows for human review without approving them.
Why use it?
Approval based only on a flow's name and step count can hide what it will actually do, including flows that cannot replay successfully.

Skill for Claude CodeCodex

Written for Claude Code and Codex: shipped in a Claude Code plugin, but also agents/openai.yaml present. Also seen: mentions subagents.

Part of the fast-browser plugin — 7 skills, 1 agent, 1 MCP server shipped together

Good fit It helps list pending flows, read their real steps, remove unusable ones, and show the remaining flows for human review without approving them.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/m4ttstack/fast-browser/reviewing-flows
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 m4ttstack/fast-browser --skill reviewing-flows
Clone the repo
git clone --depth 1 https://github.com/m4ttstack/fast-browser

Made for: Claude Code, Codex.

Or install fast-browser, the plugin that ships this one along with the rest of its 7 skills, 1 agent, 1 MCP server.

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 reviewing-flows

README.md
[![agentmods](https://agentmods.dev/badge/skills/m4ttstack/fast-browser/reviewing-flows/github.svg)](https://agentmods.dev/skills/m4ttstack/fast-browser/reviewing-flows)
Your own site
<a href="https://agentmods.dev/skills/m4ttstack/fast-browser/reviewing-flows"><img src="https://agentmods.dev/badge/skills/m4ttstack/fast-browser/reviewing-flows/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 reviewing-flows

Your own site · 80×15
<a href="https://agentmods.dev/skills/m4ttstack/fast-browser/reviewing-flows"><img src="https://agentmods.dev/badge/skills/m4ttstack/fast-browser/reviewing-flows.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 46 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,685 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00046 $0.04685
Opus 5.5 $0.00018 $0.01874
Sonnet 5.5 $0.00009 $0.00937
Haiku 4.5 $0.00005 $0.00468

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

Security

Grade A, and why

reviewing-flows 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 8d 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.

skills/reviewing-flows/SKILL.md · 372 lines

How it starts

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

Reviewing Flows

fast-browser flows approve shows a step count, not steps. A human is asked to trust actions they cannot read. This skill reads the queue, clears what can never work, and puts what is left in front of them with its steps rendered.

Walk the graph; each box has its section below. A move the graph does not show goes through its off-script gate.

What this skill may and may not do

This skill may reject. It may never approve.

Approval needs a TTY this skill does not have, and that is the gate working as designed, not an obstacle to route around. Never wrap, pipe, script, or otherwise automate the confirm prompt, and never simulate the human's keystrokes with a terminal-automation tool. Print the command for the human to run in their own terminal; do not run it yourself. The graph marks the temptation with STOP: approval needs the human's own terminal.

Everything here moves flows toward less runnable, never more. That is why one confirmation can cover a whole batch, and why the one automatic reject covers only a fact about a file, never an inference (the graph marks that temptation with STOP: inferred buckets are only proposed).

The review graph

digraph review_flow_queue {
    rankdir=TB;

    "Trigger: the pending flow queue needs triage" [shape=ellipse];
    "fast-browser flows list --json" [shape=plaintext];
    "flows list result?" [shape=diamond];
    "Read every pending and ready artifact" [shape=box];
    "Bucket every pending flow, first match wins" [shape=box];
    "Report the survey" [shape=box];
    "Loopback origins dominate and the keep-list not yet asked?" [shape=diamond];
    "Ask for a keep-list" [shape=box];
    "Keep-list answer?" [shape=diamond];
    "Any unapprovable flows?" [shape=diamond];
    "STOP: inferred buckets are only proposed" [shape=octagon style=filled fillcolor=red fontcolor=white];
    "Show every unapprovable name and say the ledger records it" [shape=box];
    "Batch confirmation?" [shape=diamond];
    "fast-browser flows reject <name>" [shape=plaintext];
    "Reject result?" [shape=diamond];
    "Report the failed reject and go on" [shape=box];
    "Another name in the batch not yet tried?" [shape=diamond];
    "Any reviewable flows?" [shape=diamond];
    "STOP: approval needs the human's own terminal" [shape=octagon style=filled fillcolor=red fontcolor=white];
    "Render each reviewable flow's steps" [shape=box];
    "Print the approve command for each reviewable flow" [shape=box];
    "Print reject commands for dead-origin and superseded" [shape=box];
    "Report ready flows whose lastHealed is not null" [shape=box];
    "Report the review" [shape=box];

    "Trigger: the human says an approve failed" [shape=ellipse];
    "Name the flow whose name collided" [shape=box];

    "Off-script gate: flows list failed" [shape=box];
    "Make the approved move once: flows list failed" [shape=box];
    "Off-script rounds = 2: flows list failed?" [shape=diamond];

    "Held: nothing moved" [shape=doublecircle];
    "Handed back with what is done" [shape=doublecircle];
    "Collision explained" [shape=doublecircle];
    "Queue triaged and reported" [shape=doublecircle style=filled fillcolor=lightgreen];

    "Trigger: the pending flow queue needs triage" -> "fast-browser flows list --json";
    "fast-browser flows list --json" -> "flows list result?";
    "flows list result?" -> "Read every pending and ready artifact" [label="ok"];
    "flows list result?" -> "Off-script gate: flows list failed" [label="errored"];
    "Read every pending and ready artifact" -> "Bucket every pending flow, first match wins";
    "Bucket every pending flow, first match wins" -> "Report the survey";
    "Report the survey" -> "Loopback origins dominate and the keep-list not yet asked?";
    "Loopback origins dominate and the keep-list not yet asked?" -> "Ask for a keep-list" [label="yes"];
    "Loopback origins dominate and the keep-list not yet asked?" -> "Any unapprovable flows?" [label="no"];
    "Ask for a keep-list" -> "Keep-list answer?";
    "Keep-list answer?" -> "Bucket every pending flow, first match wins" [label="origins to keep: rebucket"];
    "Keep-list answer?" -> "Any unapprovable flows?" [label="none"];

    "Any unapprovable flows?" -> "Show every unapprovable name and say the ledger records it" [label="yes"];
    "Any unapprovable flows?" -> "Any reviewable flows?" [label="no"];
    "Any unapprovable flows?" -> "STOP: inferred buckets are only proposed" [label="tempted to add dead-origin or superseded flows to the batch"];
    "STOP: inferred buckets are only proposed" -> "Show every unapprovable name and say the ledger records it";
    "Show every unapprovable name and say the ledger records it" -> "Batch confirmation?";
    "Batch confirmation?" -> "fast-browser flows reject <name>" [label="reject them"];
    "Batch confirmation?" -> "Any reviewable flows?" [label="keep them"];
    "fast-browser flows reject <name>" -> "Reject result?";
    "Reject result?" -> "Another name in the batch not yet tried?" [label="rejected"];
    "Reject result?" -> "Report the failed reject and go on" [label="failed"];
    "Report the failed reject and go on" -> "Another name in the batch not yet tried?";
    "Another name in the batch not yet tried?" -> "fast-browser flows reject <name>" [label="yes"];
    "Another name in the batch not yet tried?" -> "Any reviewable flows?" [label="no"];

    "Any reviewable flows?" -> "Render each reviewable flow's steps" [label="yes"];
    "Any reviewable flows?" -> "Print reject commands for dead-origin and superseded" [label="no"];
    "Any reviewable flows?" -> "STOP: approval needs the human's own terminal" [label="tempted to run approve from this shell"];
    "STOP: approval needs the human's own terminal" -> "Render each reviewable flow's steps";
    "Render each reviewable flow's steps" -> "Print the approve command for each reviewable flow";
    "Print the approve command for each reviewable flow" -> "Print reject commands for dead-origin and superseded";
    "Print reject commands for dead-origin and superseded" -> "Report ready flows whose lastHealed is not null";
    "Report ready flows whose lastHealed is not null" -> "Report the review";
    "Report the review" -> "Queue triaged and reported";

    "Trigger: the human says an approve failed" -> "Name the flow whose name collided";
    "Name the flow whose name collided" -> "Collision explained";

    "Off-script gate: flows list failed" -> "Make the approved move once: flows list failed" [label="take: read the directories directly"];
    "Off-script gate: flows list failed" -> "Off-script rounds = 2: flows list failed?" [label="iterate: the human fixed the cause"];
    "Off-script gate: flows list failed" -> "Held: nothing moved" [label="hold"];
    "Off-script gate: flows list failed" -> "Handed back with what is done" [label="hand back"];
    "Make the approved move once: flows list failed" -> "Read every pending and ready artifact";
    "Off-script rounds = 2: flows list failed?" -> "fast-browser flows list --json" [label="no: list again"];
    "Off-script rounds = 2: flows list failed?" -> "Handed back with what is done" [label="yes"];
}

Read the full file on GitHub · 372 lines

Files

What ships with it

1 file 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.

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. 8d ago Changed · +2 lines ed9c39e7cbb9
  2. 21d ago Changed · +208 lines c12c40e97ec3
  3. 1mo ago First seen · 162 lines · 46 tokens per session scan A eb243bbee81e

Subscribe to this mod's changes

reviewing-flows is a skill published in the GitHub repository m4ttstack/fast-browser (0 stars, last pushed yesterday), licensed MIT. It adds 46 tokens to every session and 4,685 once invoked, about $0.0002 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.

Related

Other skills, from other repositories

glance-test

Run E2E browser tests on any web application using Glance MCP. Use when the user says "test this page," "check this URL," "run E2E tests," "browser test," "test the login flow," "check if the site works," "visual regression," or "screenshot this page." Also use for post-deploy verification and smoke tests.

DebugBase/glance · 80 tokens

author

Use when writing a new E2E browser test from a vague user description or feature requirement. Turns exploratory browser sessions into structured, reusable test cases.

Autodesk/claude-browser-test-skills · 32 tokens

runner

Use when executing a stable E2E test case that has already been refined. Follows test steps exactly without deviation, reports pass/fail with evidence.

Autodesk/claude-browser-test-skills · 33 tokens

flow-tester

End-to-end user journey tester using Playwright. Tests multi-step flows (signup, checkout, CRUD) with screenshots at each step. Auto-generates flows from URLs or text descriptions. Use after integration work to verify complete user journeys work.

JansenAnalytics/claudex · 52 tokens

e2e-tester

Test a web app like a QA person — open it in a real browser, click through flows, and report what's broken with screenshots and code references. Works on localhost. Use when the user wants to test their app, verify a flow works, check for visual bugs, or validate changes before pushing.

hanzili/hanzi-browse · 66 tokens

playwright-tabbed-orchestration

Parent Agent uses playwright-tabbed to allocate browser tabs and partition tasks, then spawns child agents in parallel — each operating on its assigned tabid — for browser acceptance testing or automation, with a final aggregated summary. Suitable for multi-page validation, parallel module checks, and…

songofhawk/playwright-mcp-tabbed · 96 tokens