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/architecturegit 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.01189 | $0.01189 |
| Opus 5 | $0.00594 | $0.00594 |
| Sonnet 5 | $0.00238 | $0.00238 |
| Haiku 4.5 | $0.00119 | $0.00119 |
Grade A, and why
architecture 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 2d 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 — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Architecture and boundaries
Zaezd assembles a whole trip from a reason to travel. An event catalogue (confcal) says
where and when, Tutu says how to get there and where to sleep, and a deterministic
composer turns both into at most three explainable packages. Full specification in
specs/02-arhitektura.md.
Layers
Dependencies point downward only. A module may import from its own layer and from lower layers, never from a higher one.
| Layer | Location | Depends on | Nature |
|---|---|---|---|
| L0 domain core | src/composer/{types,dates,selection,feasibility,pricing,hotels,packages,checkout-labels}.ts |
nothing | pure, deterministic, no I/O, no clock |
| L1 sources | src/sources/{types,normalize,cache,replay,mcp-client,confcal,tutu}.ts |
L0 | I/O, protocol, normalization |
| L2 enrichment | src/enrich/{calendar,geo,weather}.ts |
L0, L1 | optional, each with a timeout and a fallback |
| L3 orchestration | src/composer/{build-trip,build-checkout,trip-id}.ts |
L0, L1, L2 | fan-out, budgets, assembly |
| L4 delivery | src/web/**, src/mcp/** |
L3 | adapters, no business logic |
Two consequences worth stating outright. Business rules never live in L4: if a price or a date is computed in a route handler or in a template, it is in the wrong file. And L0 is reachable by unit tests without a single mock, which is why it is where correctness is actually proven.
Fixed decisions
These were settled in the specs and reviewed twice. Do not relitigate them in code.
- Gateway, not a direct browser connection. CORS blocks it, the Tutu manifest is about
25.5k tokens, and their responses arrive as a JSON string inside a text block with no
outputSchema. Normalization happens in one place. - Three outward tools, not sixteen.
find_event_trips,get_trip_details,create_trip_checkout. See @mcp-layer.mdc. - The web screen is primary, the MCP App is secondary. One client-side renderer serves
GET /andui://zaezd/trip-board. What is shared is the renderer, not a finished document: the web page gets theTripResultembedded by the server, theui://resource gets it from the host throughui/notifications/tool-result, because an MCP App resource loads independently of the tool call. If the renderer forks, both channels lose. - No server-side trip state.
trip_idis a compact encoding of the request, not a key in a store./t/:idrecomputes or replays; switching packages is a choice among already computed ones. - Leaflet, not MapLibre. Raster tiles as plain
imgelements: no WebGL, noblob:workers, so the map survives a host CSP ofdefault-src 'none'on a singleimg-srcexception. Markers areL.divIconwith inline SVG, because Leaflet's stock CSS pulls its marker images by relative URL and they 404 once the CSS is inlined. Reasoning indocs/decisions.md. - In-memory cache with TTL plus file fixtures. Two modes only:
liveandreplay. Recording is a script (scripts/record.ts), not a server mode. - One computed event per request. Up to five candidates are listed; only the first is assembled. A fan-out over five events is a spinner, not a product.
- Deterministic dates in code. Three identical live runs produced three different night
counts and a 1.5x price spread. The algorithm belongs in
src/composer/dates.ts, never in a model prompt. See @composer-core.mdc.
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.
- 2d ago First seen · 93 lines · 1,189 tokens per session scan A 27a83dcd244a
architecture is a cursor rule published in the GitHub repository EvilFreelancer/zaezd (1 stars, last pushed 13d ago), licensed MIT. It adds 1,189 tokens to every session, about $0.0059 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-31.
Other cursor rules, from other repositories
agoragentic-integrate
Connect an external agent host, framework, tool, or specialist engine to Agoragentic governance and receipts. Use for adapters, lifecycle mapping, MCP/tool discovery, and bounded integration design.
cursorrules
This repo has a GraphPilot structural code-graph available via MCP. Use it before grep on structural questions.
qa-agent
QA workflow for reviewing stories, designing tests, and reporting verified defects.
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.
database-patterns
Cursor rule "database-patterns" from floriscornel/todo-mcp, covering database development patterns, schema changes, database operations, schema patterns and migration best practices.