ui-verification

ui-verification is a cursor rule for Cursor from coddy-project/coddy-agent. It costs 0 tokens per session (2,133 once invoked), scanned A, original, MIT.

A set of rules for checking UI layout changes with Playwright, a browser automation tool. It compares important page edges at narrow and wide screen sizes before a UI change is considered complete.

In plain words
What is it for?
Use it when changing UI styles, chat layout, the message area, the composer, or navigation to check the page at mobile and desktop widths.
Why use it?
It catches layout shifts and mismatched alignment that may only appear at certain screen widths.

Cursor rule for Cursor

Written for Cursor: installed under .cursor/.

Good fit Use it when changing UI styles, chat layout, the message area, the composer, or navigation to check the page at mobile and desktop widths.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/coddy-project/coddy-agent/ui-verification
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.

Clone the repo
git clone --depth 1 https://github.com/coddy-project/coddy-agent

Made for: Cursor.

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 ui-verification

README.md
[![agentmods](https://agentmods.dev/badge/rules/coddy-project/coddy-agent/ui-verification/github.svg)](https://agentmods.dev/rules/coddy-project/coddy-agent/ui-verification)
Your own site
<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.

agentmods 80×15 button for ui-verification

Your own site · 80×15
<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>
Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 2,133 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.00000 $0.02133
Opus 5.5 $0.00000 $0.00853
Sonnet 5.5 $0.00000 $0.00427
Haiku 4.5 $0.00000 $0.00213

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

Security

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.

.cursor/rules/ui-verification.mdc · 117 lines

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:

  1. Choose one free port (for example PORT=5201) and start CODDY_UI_BACKEND=http://127.0.0.1:<serve port> npx vite --host localhost --port "$PORT" in external/ui, against a coddy serve that has a session with messages (a session bundle written into a throwaway CODDY_HOME is enough; no model is called).
  2. 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).
  3. Run browser_evaluate to compare getBoundingClientRect() edges for .chat-header, .messages-inner first 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).
  4. 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.

Read the full file on GitHub · 117 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. 7d ago Changed fe588ea604d1
  2. 9d ago Changed · +12 lines 5d426c1f49d9
  3. 10d ago Changed · +36 lines 0dea38bb93f0
  4. 12d ago Changed · +1 lines 44a63651d6e9
  5. 13d ago Changed · +7 lines afaa18bd83e9
  6. 20d ago Changed 5b9c0bcb563d
  7. 23d ago Changed · +24 lines 4ee17a1a4e1d
  8. 27d ago Changed · +11 lines bc22c9af791d
  9. 1mo ago Changed c1736d1c1892
  10. 1mo ago First seen · 26 lines · 0 tokens per session scan A 9a4928d77177

Subscribe to this mod's changes

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.