web-ui

web-ui is a cursor rule for Cursor from EvilFreelancer/zaezd. It costs 0 tokens per session (1,450 once invoked), scanned A, original, MIT.

A set of rules for a trip-board interface, including its layout, data flow, accessible text fallback, and behavior on the web and in an MCP App.

In plain words
What is it for?
Use it to build the trip board, display travel packages, show maps and timelines, provide recomputation controls, and support a no-script text summary.
Why use it?
It keeps the interface focused on computed trip information and prevents the browser from recalculating business numbers or maintaining separate renderers.

Cursor rule for Cursor

Written for Cursor: installed under .cursor/.

Good fit Use it to build the trip board, display travel packages, show maps and timelines, provide recomputation controls, and support a no-script text summary.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/evilfreelancer/zaezd/web-ui
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/EvilFreelancer/zaezd

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

README.md
[![agentmods](https://agentmods.dev/badge/rules/evilfreelancer/zaezd/web-ui/github.svg)](https://agentmods.dev/rules/evilfreelancer/zaezd/web-ui)
Your own site
<a href="https://agentmods.dev/rules/evilfreelancer/zaezd/web-ui"><img src="https://agentmods.dev/badge/rules/evilfreelancer/zaezd/web-ui/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 web-ui

Your own site · 80×15
<a href="https://agentmods.dev/rules/evilfreelancer/zaezd/web-ui"><img src="https://agentmods.dev/badge/rules/evilfreelancer/zaezd/web-ui.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 1,450 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.01450
Opus 5.5 $0.00000 $0.00580
Sonnet 5.5 $0.00000 $0.00290
Haiku 4.5 $0.00000 $0.00145

Measured 1mo ago against content hash 008bca97f4e6, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

web-ui 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 1mo 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/web-ui.mdc · 118 lines

How it starts

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

Web UI: the trip board

UX is worth 20 points, more than any other criterion, and this is the only screen. The same skeleton and the same client renderer also ship as the ui://zaezd/trip-board resource, so one renderer serves both channels. Only the data path differs: the web page reads the TripResult the server embedded, the MCP App receives it through ui/notifications/tool-result. Recompute differs too - a form on our own origin in the web, tools/call through the host in the App. Nothing else may fork.

No arithmetic in the browser. The TripResult arrives computed; the renderer lays out numbers it was given. A noscript block carries a text summary of the trip. Full specification in specs/05-interfeys.md.

The first thirty seconds

The public link opens on an already computed trip, never on an empty form. The input row sits on top, pre-filled. Chat, if it exists at all, is a side panel and never the main way to work.

Layout and card

Header answers "where and why", cards answer "how and how much", the map answers "where exactly", the timeline answers "do I make it".

A package card carries exactly six things: the selection rule name, the total participation price as one number, the outbound leg with transport type, number and buffer to the opening, the hotel with its name, whole-stay price and walking time to the venue, the return leg, and a budget bar broken into transport, stay and event with any overflow visible. Under the bar, one line of arithmetic that adds up:

поезд 2 090 ₽ + отель 12 800 ₽ + обратно 2 090 ₽ = 16 980 ₽, остаток 13 020 ₽

A variant flagged "arrives after the opening" renders grey and cannot be selected as the primary package.

Honesty in the interface

  • Prices are rendered exactly as they appear in the payload, without rounding.
  • A field the source did not return is shown as missing, never inferred.
  • A venue that was not geocoded precisely gets no marker at all; the map centres on the city and a caption says the catalogue did not provide an address.
  • Button labels come from the actual checkout kind (@mcp-layer.mdc), so "Открыть поиск, корзины не будет" is a label that really ships.
  • Catalogue coverage is stated plainly: live offline events exist in five or six cities, and empty cities are not hidden.
  • Resolved geography is named back from meta.resolved_geo, including a homonym note when also_named[] is present. Reviews are quoted verbatim with their date or not at all.

Read the full file on GitHub · 118 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. 1mo ago First seen · 118 lines · 0 tokens per session scan A 008bca97f4e6

Subscribe to this mod's changes

web-ui is a cursor rule published in the GitHub repository EvilFreelancer/zaezd (1 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,450 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-31.