flywheel-uat

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

A procedure for acceptance-testing an installed Flywheel command-line application inside an isolated terminal session managed by tmux.

In plain words
What is it for?
It helps install the local binary, start the test driver, provide configuration, perform bounded terminal actions, observe the interface, and collect failure evidence.
Why use it?
It keeps test files, credentials, configuration, and cleanup inside a controlled sandbox. It also ensures the installed binary is tested rather than a development shortcut.

Skill for Claude CodeCodex

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

Good fit It helps install the local binary, start the test driver, provide configuration, perform bounded terminal actions, observe the interface, and collect failure evidence.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/wsauret/flywheel/flywheel-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 flywheel-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 flywheel-uat

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

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

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

Security

Grade A, and why

flywheel-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/flywheel-uat/SKILL.md · 33 lines

How it starts

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

Flywheel UAT

Input: Flywheel acceptance criteria, source revision, configured auth and provider state, and a session scratch directory.

Compose generic UAT. Install with bun run install:local; never substitute bun run dev or bin/flywheel. Discover the driver with bun run uat:tui --help. Start with bun run uat:tui start --scratch-root <your-session-scratch> --source-project-root <source-root>. When your instructions name an auth profile for development, add --env FLYWHEEL_AUTH_PROFILE=<profile>; otherwise the harness uses your configured default profile. Pass required non-secret configuration with --config <file> and environment values with repeated --env K=V. Write files only inside your own session scratchpad. The driver returns a sandbox root handle and the first pane. It owns unique HOME, project, evidence, tmux readiness, credential cloning, failure diagnostics, and cleanup.

Drive one bounded action per tool call with bun run uat:tui <verb> <handle> .... Each action prints the pane so you can act, observe, then decide. Use type '<prompt>', submit, keys Escape, click '<visible text>', capture pane.log, history history.log, wait '<text>' --timeout 30000, and events <search-args>. Use wait '<pattern>' --regex for a regular expression. Find controls in the current pane and click by visible text, not guessed labels or coordinates. Use click '<text>' --last when a modal repeats transcript text. Coordinate clicks remain available as click <col> <row>. Wait until a selected modal row is loaded before sending Enter.

Credential-backed UAT is the default. Unless a criterion explicitly requires an unauthenticated state, let the shared harness resolve and clone the selected profile. The start request's --env FLYWHEEL_AUTH_PROFILE takes precedence over the harness process environment and the configured default. The harness uses the resolved profile ID for both cloning and launch. Its credential contract is: Clone only that profile's auth.json and optional profile.json, write a token-free reference for each Claude login, reject links, apply owner-only directory and file permissions, and set FLYWHEEL_AUTH_PROFILE. Claude references share the original login and its refresh lock; the harness never reads or copies a Claude token. Never copy caches, usage databases, other profiles, or credential bytes into logs or artifacts. Never implement a separate credential copy or launch against the real HOME. A missing configured profile or unsafe copy is blocked. A Claude sign-in or re-login criterion also runs on the reference, so the engine's login keeps its token in the person's own login keychain. Never pass cloneAuth: false or create a new Claude login folder in the isolated home for it: that home has no keychain, the token is not saved, and macOS offers a "Reset To Defaults" button that erases the person's keychain.

The harness sets FLYWHEEL_TEST_SUPPRESS_AUTO_DIALOGS=1 by default. Direct installed-TUI launches must set the same flag. This suppresses automatic auth and paid-use dialogs, including late, post-login, profile-change, and submission prompts. It does not grant authentication or paid permissions, record answers, or suppress manually opened dialogs. Unauthenticated chat remains blocked. Keep meaningful credentials and provider configuration; do not disable providers or close questions to prevent unexpected popups.

For a criterion that tests automatic dialogs, pass --env FLYWHEEL_TEST_SUPPRESS_AUTO_DIALOGS=0 to start. Direct launchers for that criterion must set FLYWHEEL_TEST_SUPPRESS_AUTO_DIALOGS=0. Absence or 0 preserves normal product behavior. Observe and answer those dialogs only as the criterion requires. The harness never dismisses auth or paid-use questions.

The harness resolves only an installed flywheel, initializes and validates an isolated git root, sets FLYWHEEL_PROJECT_ROOT, and redirects stderr. It waits for for fresh chat every 50 ms for at most 45 seconds. It never closes startup dialogs. Opt-in dialog scenarios own their observations and interactions. A pane process that exits before the marker, or a readiness timeout, is blocked; before cleanup retain the final pane capture, available pane history, and stderr file. Setup and launch failures are also blocked.

Read the full file on GitHub · 33 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 · 33 lines · 15 tokens per session scan A 5a7001902676

Subscribe to this mod's changes

flywheel-uat is a skill published in the GitHub repository wsauret/flywheel (19 stars, last pushed yesterday), licensed Apache-2.0. It adds 15 tokens to every session and 1,992 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

flywheel-uat compared with skills from other repositories

flywheel-uat next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
flywheel-uatwsauret/flywheelSkill19yesterdayApache-2.0A15Claude Code, Codex
verifyHmbown/CodeWhaleSkill41k5d agoMITA25Claude Code, Codex
webapp-testingHmbown/CodeWhaleSkill41k5d agoMITA32Claude Code, Codex
e2e-test-engineerlfyxhappy/lfcodeSkill21mo agoMITA62Claude Code, Codex
visual-regression-testerlfyxhappy/lfcodeSkill21mo agoMITA57Claude Code, Codex
e2e-testingQwenLM/qwen-codeSkill29kyesterdayApache-2.0A94Claude Code, Codex
terminal-captureQwenLM/qwen-codeSkill29kyesterdayApache-2.0A66Claude Code, Codex