webview-uat

webview-uat is a skill for Claude Code, Codex from wsauret/flywheel. It costs 20 tokens per session (1,593 once invoked), scanned A, original, Apache-2.0.

An end-to-end acceptance-testing procedure for checking a web client in a real browser against a running application. End-to-end testing follows a complete user flow rather than checking only one function.

In plain words
What is it for?
Use it to test client criteria in a browser, and in the editor when the editor host changed, using local or hosted environments.
Why use it?
It checks the installed build and its runtime, authentication, and provider setup instead of relying only on development-mode behavior. It also isolates test files, credentials, and processes from the developer's environment.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to test client criteria in a browser, and in the editor when the editor host changed, using local or hosted environments.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/wsauret/flywheel/webview-uat
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 wsauret/flywheel --skill webview-uat
Clone the repo
git clone --depth 1 https://github.com/wsauret/flywheel

Made for: Claude Code, Codex.

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 webview-uat

README.md
[![agentmods](https://agentmods.dev/badge/skills/wsauret/flywheel/webview-uat/github.svg)](https://agentmods.dev/skills/wsauret/flywheel/webview-uat)
Your own site
<a href="https://agentmods.dev/skills/wsauret/flywheel/webview-uat"><img src="https://agentmods.dev/badge/skills/wsauret/flywheel/webview-uat/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 webview-uat

Your own site · 80×15
<a href="https://agentmods.dev/skills/wsauret/flywheel/webview-uat"><img src="https://agentmods.dev/badge/skills/wsauret/flywheel/webview-uat.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 20 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,593 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.00020 $0.01593
Opus 5.5 $0.00008 $0.00637
Sonnet 5.5 $0.00004 $0.00319
Haiku 4.5 $0.00002 $0.00159

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

Security

Grade A, and why

webview-uat 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 3d 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.

src/orchestration/modules/development/definitions/skills/webview-uat/SKILL.md · 22 lines

How it starts

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

Web Client UAT

Input: client acceptance criteria, installed revision, the host under test (machine-local browser, hosted phone app, or both), configured auth and provider state, and a session scratch directory.

Compose generic UAT. The client is one bundle every host mounts, so a criterion is proven in a browser first and in an editor only when the editor host itself changed. Prepare the runtime with the flywheel-uat driver: bun run uat:tui start makes the isolated HOME, clones the effective profile's credentials by the shared credential contract in scripts/uat/harness.ts (auth.json, optional profile.json, and a token-free reference for each Claude login, which a Claude sign-in criterion also uses), sets FLYWHEEL_AUTH_PROFILE, makes a scratch project with git init, and launches the installed binary rather than bun run dev. To test a build that is not your own installed one, install it with its staged install.sh under a scratch HOME with FLYWHEEL_INSTALL_DIR and FLYWHEEL_NO_MODIFY_PATH=1, then pass FLYWHEEL_INSTALLED_BINARY and --installation-home to start. Keep unix socket paths under 104 bytes: pass a short --scratch-root, through a symlink if the session scratch is deep.

Two hosts reach the client. For the machine-local browser, run bun run uat:tui web <handle>. It runs the installed flywheel web in the sandbox project with the sandbox HOME and environment and prints the hub address it opened; drive that address. The command finds or starts the account service, opens the project, and opens the account hub, which leads to the project listener with the project's browser token. Do not substitute a source preview page or bun run dev: they do not prove the installed machine-local browser path or its bundled webview payload. The person's own service holds the fixed hub http://127.0.0.1:41000/, so a sandbox never uses it: every sandbox launch carries the release harness's isolated hub environment, the sandbox's service binds an ephemeral hub port and writes its origin to <handle>/hub-origin, and flywheel web opens that origin. A flywheel web run by hand in the sandbox needs the same FLYWHEEL_INTERNAL_RELEASE_HARNESS, FLYWHEEL_INTERNAL_RELEASE_HUB_PORT=0, and FLYWHEEL_INTERNAL_RELEASE_HUB_RECORD=<handle>/hub-origin, or it refuses to open anything. The sandbox hub remains available while zero projects are open. For the hosted phone app, run the installed TUI in tmux with the same HOME and FLYWHEEL_TEST_SUPPRESS_AUTO_DIALOGS=1. Type /remote, press p, and rebuild the pairing link from the pane, which wraps it across lines; open the link in the browser pane at remote.flywl.sh, then select the machine. A device store is per origin and per installed app, so a Safari tab, a Home Screen app, and the browser pane each pair on their own. Navigating to a fragment on an origin the tab already shows changes the hash and never reloads, so reload the bare origin when the deployed bundle changed.

Set FLYWHEEL_TEST_SUPPRESS_AUTO_DIALOGS=1 on installed TUI launches used for account setup or sibling-terminal checks. Use 0 only for automatic-dialog criteria, as specified in flywheel-uat. This is a TUI launch setting, not a server, browser, or editor setting.

Drive the client through what a person touches. Command panel rows pick on mousedown, not click. Sheets open from the slash button's panel by row label and close through the header's Close button; a sheet that opens another sheet is a distinct path from the panel. The mobile preset emulates a coarse pointer and the desktop preset a fine one, so check both rungs of a control that has them. agent-browser screenshot saves to the current directory, which is the repository, unless it gets a path, so always pass an absolute path in the session scratch directory. The browser pane cannot screenshot while it is hidden; computed styles, bounding rectangles, document.activeElement, and the console still work, and the client reports every failed read through console.warn with the runtime's own error, so read the console before guessing. On macOS, agent-browser press and CDP key events can start a stream of trusted keydowns that does not end until the browser restarts; it starves the page's main thread, so timers, socket handling, and every timing observation after it are false. Drive keys a criterion does not name through the DOM: set the composer value, dispatch an input event, and call click() on the control. When a criterion needs a real key press, restart the browser after it and before any timing evidence. Send one bounded prompt when a criterion needs a turn, wait for the Stop button to leave, and read the transcript blocks by class. Record exact observations.

Read the full file on GitHub · 22 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. 3d ago First seen · 22 lines · 20 tokens per session scan A 5be07b3db093

Subscribe to this mod's changes

webview-uat is a skill published in the GitHub repository wsauret/flywheel (19 stars, last pushed yesterday), licensed Apache-2.0. It adds 20 tokens to every session and 1,593 once invoked, about $0.0001 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-11-03.

Related

webview-uat compared with skills from other repositories

webview-uat next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
webview-uatwsauret/flywheelSkill19yesterdayApache-2.0A20Claude Code, Codex
webapp-testingHmbown/CodeWhaleSkill41k5d agoMITA32Claude Code, Codex
verifyHmbown/CodeWhaleSkill41k5d agoMITA25Claude Code, Codex
computer-useHmbown/CodewhaleSkill41k1mo agoMITA59Claude Code, Codex
test-browsergvkhosla/compound-engineering-piSkill521mo agoMITA14Claude Code
playwright-browserlfyxhappy/lfcodeSkill21mo agoMITA42Claude Code, Codex
e2e-test-engineerlfyxhappy/lfcodeSkill21mo agoMITA62Claude Code, Codex