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 agentmods add rules/evilfreelancer/zaezd/web-uigit clone --depth 1 https://github.com/EvilFreelancer/zaezdWhat 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 | $0.00000 | $0.01450 |
| Opus 5 | $0.00000 | $0.00725 |
| Sonnet 5 | $0.00000 | $0.00290 |
| Haiku 4.5 | $0.00000 | $0.00145 |
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 yesterday.
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 — 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 whenalso_named[]is present. Reviews are quoted verbatim with their date or not at all.
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.
- yesterday First seen · 118 lines · 0 tokens per session scan A 008bca97f4e6
web-ui is a cursor rule published in the GitHub repository EvilFreelancer/zaezd (1 stars, last pushed 13d 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.
Other cursor rules, from other repositories
swift-development
Swift development: SwiftUI, Combine, async/await, iOS patterns, and Apple platform conventions.
cursorrules
When the user asks about social media, use social-media-ai-mcp tools: schedulepost, generatehashtags, analyzeengagement, plancontentcalendar, getaudienceinsights.
cursorrules
This is an MCP (Model Context Protocol) server that provides Notion integration tools and AI agent workflows. Built with TypeScript, using the MCP SDK for server implementation.
lighter-safety
Safety contract for the Lighter MCP server. Apply whenever a lighter tool is invoked.
commits
Conventional Commits standards for clear, semantic commit messages.
nix-security
Nix Security and Sandboxing.