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 AdamBien/airails --skill web-performance-reviewergit clone --depth 1 https://github.com/AdamBien/airailsWrote 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/adambien/airails/web-performance-reviewer)<a href="https://agentmods.dev/skills/adambien/airails/web-performance-reviewer"><img src="https://agentmods.dev/badge/skills/adambien/airails/web-performance-reviewer/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/adambien/airails/web-performance-reviewer"><img src="https://agentmods.dev/badge/skills/adambien/airails/web-performance-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Anti-Refusal · line 10 Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.Fix: Remove instructions that suppress warnings, disclaimers, or ethical commentary. Let the agent surface safety-relevant caveats to the user.
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.00193 | $0.02067 |
| Opus 5 | $0.00097 | $0.01033 |
| Sonnet 5 | $0.00039 | $0.00413 |
| Haiku 4.5 | $0.00019 | $0.00207 |
Grade A, and why
web-performance-reviewer 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 9d 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 — 164 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review the runtime performance of $ARGUMENTS by measuring the rendered site in a real browser
through the Chrome DevTools MCP tools (chrome-devtools). Produce a prioritized, evidence-backed
report. If the chrome-devtools MCP tools are unavailable, report the review as not runnable —
do not judge performance from source code alone.
Composition
Composes on top of /web-static, /web-sprinkles, or /web-components (and their shared /web-conventions).
This skill is a reviewer, not a builder: it measures and prioritizes; fixing belongs to the
composed stack skill, and re-verification after a fix belongs to that stack's own loop.
Never part of green. The /web-static verification loop stays fast and deterministic;
performance numbers are slow to gather and jitter run-to-run, which makes them a bad gate.
This review runs only on explicit request — before publishing, after adding images/fonts/JS,
or when something feels slow. A red finding here never turns the composed stack's green red.
Philosophy
- Lab, not field — everything measured here is lab data from one Chrome on one machine; useful for finding problems and comparing before/after, never a claim about real-user metrics
- Unthrottled localhost lies — a site served by zws on localhost loads in milliseconds regardless of how bloated it is; only throttled runs reveal what users on mid-range phones see
- Numbers jitter — a single trace is an anecdote; conclusions come from the median of repeated runs, and high variance is itself a finding to report
- The trace is the oracle — never diagnose from reading source; the trace, the waterfall, and the heap snapshot are the evidence, source reading only explains what they found
- If it is fast, say so — do not invent issues; a clean report is a valid outcome
Serve
Serve the site root with zws exactly as the composed stack prescribes: java zws <site-root>
(or the copy bundled with web-conventions: java <web-conventions skill dir>/scripts/zws <site-root>).
Never use --live during measurement — the injected reload script and its SSE stream would
appear in every trace and waterfall and contaminate the evidence. Measure against a plain instance.
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.
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.
- 9d ago First seen · 164 lines · 193 tokens per session scan A 0447680006f3
web-performance-reviewer is a skill published in the GitHub repository AdamBien/airails (49 stars, last pushed yesterday), licensed MIT. It adds 193 tokens to every session and 2,067 once invoked, about $0.0010 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.
Other skills, from other repositories
nextjs-on-cloudflare
Build, migrate, and deploy Next.js apps on Cloudflare Workers with vinext. Use when starting a Next.js project on Cloudflare, moving an existing app to Workers, choosing between vinext and OpenNext, or setting up vinext for Workers. For setup, migration, or deployment, install vinext's upstream skills with npx skills…
openkb-html-critic
Use to review a generated HTML deck or single-page artifact for visual quality and structural correctness. Especially good at catching CSS specificity bugs where slide-modifier classes (.divider, .center, .q, .flow etc.) accidentally override the base .slide{display:none} and cause one slide to stack on top of every…
eval-graphics
Turn an eval study's numbers into on-brand, publish-ready figures using the Newsjack chart room (the eval design system), then validate them with Playwright. For producing the charts in a published eval/data study.
airflow-plugins
Builds Airflow 3.1+ plugins that embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links directly into the Airflow UI. Use when building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface - creating an Airflow plugin, adding a custom UI page or…
authoring-java-sdk-tasks
Writes Airflow task logic in Java, Kotlin, or any JVM language using the Airflow Java SDK. Use when the user wants to implement Airflow tasks in Java/JVM, asks about @Builder.Dag/@Builder.Task/@Builder.XCom, the Task/BundleBuilder interfaces, reading connections/variables/XComs from Java, the JSON-to-Java type…
configuring-airflow-language-sdks
Configures Airflow to run language SDK tasks (Java, Go, and future native SDKs) — register a coordinator, map a queue to it, ensure the runtime/artifact on workers, and tune coordinator options. Use when the user wants Airflow to route a queue to a native-language coordinator, asks about the [sdk]…