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.
npx skills add wsauret/flywheel --skill flywheel-uatgit clone --depth 1 https://github.com/wsauret/flywheelWrote 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/skills/wsauret/flywheel/flywheel-uat)<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.
<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>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.00015 | $0.01992 |
| Opus 5.5 | $0.00006 | $0.00797 |
| Sonnet 5.5 | $0.00003 | $0.00398 |
| Haiku 4.5 | $0.00002 | $0.00199 |
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.
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.
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.
- 3d ago First seen · 33 lines · 15 tokens per session scan A 5a7001902676
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.
flywheel-uat compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| flywheel-uatwsauret/flywheel | Skill | 19 | yesterday | Apache-2.0 | A | 15 | Claude Code, Codex |
| verifyHmbown/CodeWhale | Skill | 41k | 5d ago | MIT | A | 25 | Claude Code, Codex |
| webapp-testingHmbown/CodeWhale | Skill | 41k | 5d ago | MIT | A | 32 | Claude Code, Codex |
| e2e-test-engineerlfyxhappy/lfcode | Skill | 2 | 1mo ago | MIT | A | 62 | Claude Code, Codex |
| visual-regression-testerlfyxhappy/lfcode | Skill | 2 | 1mo ago | MIT | A | 57 | Claude Code, Codex |
| e2e-testingQwenLM/qwen-code | Skill | 29k | yesterday | Apache-2.0 | A | 94 | Claude Code, Codex |
| terminal-captureQwenLM/qwen-code | Skill | 29k | yesterday | Apache-2.0 | A | 66 | Claude Code, Codex |