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.
git clone --depth 1 https://github.com/coddy-project/coddy-agentWrote 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/rules/coddy-project/coddy-agent/ui-verification)<a href="https://agentmods.dev/rules/coddy-project/coddy-agent/ui-verification"><img src="https://agentmods.dev/badge/rules/coddy-project/coddy-agent/ui-verification/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/rules/coddy-project/coddy-agent/ui-verification"><img src="https://agentmods.dev/badge/rules/coddy-project/coddy-agent/ui-verification.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.00000 | $0.02133 |
| Opus 5.5 | $0.00000 | $0.00853 |
| Sonnet 5.5 | $0.00000 | $0.00427 |
| Haiku 4.5 | $0.00000 | $0.00213 |
Grade A, and why
ui-verification 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 7d 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 — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
UI verification (Playwright MCP)
Before you tell the user that a UI change is complete or merge-ready:
- Choose one free port (for example
PORT=5201) and startCODDY_UI_BACKEND=http://127.0.0.1:<serve port> npx vite --host localhost --port "$PORT"inexternal/ui, against acoddy servethat has a session with messages (a session bundle written into a throwawayCODDY_HOMEis enough; no model is called). - Use Playwright MCP (or the repo browser tools) to open
http://localhost:$PORT/and that conversation,http://localhost:$PORT/#/s/<session id>(the edges below exist only on the chat screen), with at least two viewports: narrow (for example 390px) and wide (for example 1280px). - Run
browser_evaluateto comparegetBoundingClientRect()edges for.chat-header,.messages-innerfirst child, and.composer-card(left and right should match within about 1px after shared column padding; a user message keeps to the right, so a first row that is one is compared by its right edge). - If anything is off, fix CSS and re-check before reporting done.
This is required for changes to external/ui/src/styles.css, ChatScreen, Composer, or nav layout.
Safari and other WebKit reports
A Safari-only report is reproducible without a Mac: Playwright's WebKit is the engine Safari is cut
from and its version tracks Safari's. When the change touches a capped, scrollable or position: fixed surface, run external/ui/scripts/webkit-scroll-check.mjs against a live
coddy serve (setup and env vars in docs/surfaces/web-ui.md, Reproducing a Safari report without a
Mac), and run it again with CODDY_ENGINE=chromium to tell a WebKit-only regression from a
layout bug every engine shares.
The transcript at every width of the grid
Nothing in the transcript may be wider than the transcript: on the stacked shell its column is the
page, and one row that cannot wrap makes a phone scroll sideways (DESIGN.md, Layout grid,
Tool card UI, Markdown). When the change touches the transcript's rows, the Markdown styles or a
width query, run external/ui/scripts/phone-overflow-check.mjs against a vite dev server
(setup in docs/surfaces/web-ui.md, Checking the transcript at every width of the grid): it
mounts the rows that used to overflow and fails when the page scrolls sideways or anything sticks out
of .messages-inner at 360 to 1280px. A new width query goes into the grid first; the vitest
layoutGridCss.test.ts fails on one the grid does not name.
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.
- 7d ago Changed fe588ea604d1
- 9d ago Changed · +12 lines 5d426c1f49d9
- 10d ago Changed · +36 lines 0dea38bb93f0
- 12d ago Changed · +1 lines 44a63651d6e9
- 13d ago Changed · +7 lines afaa18bd83e9
- 20d ago Changed 5b9c0bcb563d
- 23d ago Changed · +24 lines 4ee17a1a4e1d
- 27d ago Changed · +11 lines bc22c9af791d
- 1mo ago Changed c1736d1c1892
- 1mo ago First seen · 26 lines · 0 tokens per session scan A 9a4928d77177
ui-verification is a cursor rule published in the GitHub repository coddy-project/coddy-agent (179 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,133 tokens. 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 cursor rules, from other repositories
hatch3r-browser-verification
Playwright browser verification protocol for UI changes — spec-run-first invocation contract with non-launderable result tokens, exploratory snapshot-mode driving, and accessibility spot-checks.
modus-angular-chrome-devtools-testing
Chrome DevTools MCP usage for comprehensive Angular + Vite testing.
playwright-e2e-testing
You are an expert QA engineer with deep knowledge of Playwright and TypeScript, tasked with creating end-to-end UI tests for web applications.
chrome-devtools-testing-solidjs-short
Mandatory Chrome DevTools MCP usage for comprehensive SolidJS + Vite testing.
playwright
Playwright: e2e testing, page objects, fixtures, assertions.
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.