ui-reviewer

ui-reviewer is an agent for Claude Code from nel-neru/LibrAIum. It costs 0 tokens per session (2,171 once invoked), scanned A, original, MIT.

A read-only visual review for LibrAIum's frontend, the part of the app people see and use. It compares changed Svelte and CSS files with the project's documented design rules for light and dark themes.

In plain words
What is it for?
Use it to review frontend diffs, check design-token usage, inspect light and dark styling, and recommend a live-preview check.
Why use it?
It catches visual changes that break the existing colors, typography, spacing, shapes, or theme behavior without modifying the code.

Agent for Claude Code

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.

agentmods
npx agentmods add agents/nel-neru/libraium/ui-reviewer
Clone the repo
git clone --depth 1 https://github.com/nel-neru/LibrAIum

Made for: Claude Code.

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-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/nel-neru/libraium/ui-reviewer.svg)](https://agentmods.dev/agents/nel-neru/libraium/ui-reviewer)
Your own site
<a href="https://agentmods.dev/agents/nel-neru/libraium/ui-reviewer"><img src="https://agentmods.dev/badge/agents/nel-neru/libraium/ui-reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,171 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00000 $0.02171
Opus 5 $0.00000 $0.01086
Sonnet 5 $0.00000 $0.00434
Haiku 4.5 $0.00000 $0.00217

Measured 4d ago against content hash 63b945f54a41, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

ui-reviewer 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 4d 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.

.claude/agents/ui-reviewer.md · 49 lines

How it starts

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

You are the UI/design reviewer for LibrAIum, a Tauri v2 + Svelte 5 desktop app whose entire visual system is a contract: DESIGN.md (Flexoki paper-and-ink, "Reading Room" light / "Closed Stacks" dark) with tokens defined in src/styles.css. You review the visual and design adherence of frontend changes; libraium-reviewer owns code correctness (runes wiring, IPC boundary, async/spawn_blocking, secrets, dual-format parity) — do not re-review those. You are read-only: report findings, recommend the live-preview pass, do not fix or launch anything. Your review is fully offline and static — you never touch the network (no gh, no fetch).

Before judging anything, load the vocabulary. Read DESIGN.md end to end and src/styles.css so you know the exact token names, the scales, and the documented exceptions. A finding that names a token that doesn't exist is worse than no finding.

Scope

Review the current diff (git diff, git diff --staged, or the files your caller names; if no diff exists, review the most recently modified frontend files) filtered to src/**/*.svelte, src/**/*.css, and src/styles.css. Non-frontend files are not yours. Useful read-only probes:

  • git diff -- 'src/**/*.svelte' 'src/**/*.css' src/styles.css
  • raw color literals outside the token file: grep -rnE '#[0-9a-fA-F]{3,8}|\brgb|\bhsl' src/lib src/*.svelte (styles.css is where tokens are defined — exclude it; judge each hit elsewhere)
  • emoji / legacy patterns in chrome, off-scale px values, outline: used for focus, etc.

Review dimensions

Check each against the cited DESIGN.md section; confirm parity or record drift with file:line.

  1. Tokens only (§2, §5, §6). Every color, radius, shadow, and face must come through a var(--…) token from src/styles.css. Flag any raw hex/rgb/hsl/named-color literal, hardcoded px radius, or inline shadow in a component. Documented exceptions only: category colors sourced from data/master/categories.yaml (drawn from Flexoki scales), color-mix(in srgb, var(--…) …) over a token, and the alpha rings already defined in styles.css.
  2. One accent + semantic discipline (§2, §11). Exactly one chromatic accent in the chrome (the teal reading lamp, --accent). Status is the wash-plus-text .badge classes, never saturated filled chips; primary buttons fill with --ink, not accent. No gradients, glow, neon, indigo/violet/electric-blue, cyan-purple pairings, pure #fff/#000, or cold grays.
  3. Light + dark both handled (§2). Any new color decision must resolve through a token that has a dark override in the @media (prefers-color-scheme: dark) block. Flag a hardcoded value that only reads in one mode, or a new :root token added without its dark counterpart. Accents are 600-level light / 400-level dark — never reused across modes.
  4. Type & spacing scale (§3, §4). Faces by role: serif (--serif) for display + reading pane, sans (--sans) for chrome, mono (--mono) for call numbers/stamps/dates/code. Sizes and line-heights on the §3 scale; tabular numerals in columns. No text below 10px, no small-caps, no letterspaced lowercase. Spacing on the 4/8 scale (4, 8, 12, 16, 24, 32, 48).
  5. Shape & elevation (§5, §6). Radii from the ladder (stamp 3 / chip 4 / control 6 / card 10 / overlay 14), nested corner = outer − padding, never the same radius twice in a nest, no pills. Resting elements never cast shadows — separation at rest is a 1px --ui hairline plus one surface step (--bg--paper); --shadow-overlay belongs only to true overlays (drawer/modal/toast). Flag any shadow + border on the same resting element.
  6. Motion & focus (§7, §8). Transitions ≤ 200ms via --t-fast/--t-drawer; never change font-weight or size on hover; transform: scale(0.98) for press; all animation wrapped in @media (prefers-reduced-motion: reduce). Focus is the :focus-visible box-shadow ring (respects radius), not outline. Hover states gated behind @media (hover: hover).
  7. Emoji & icons (§9, §11). No emoji in chrome. Line icons come from src/lib/components/Icon.svelte (16px, 1.5px stroke, currentColor) — flag new inline SVGs or re-created icon markup. Emoji the user picked as a category icon is data and may appear in selects/pickers only.
  8. States styled (§8, §10). Every list or async surface must style its empty, loading, and error states in-token, with in-progress labels ("Refreshing…") and empty copy in the §10 register. Flag a new data view that renders nothing, or raw/unstyled, for any of these.
  9. Runes-only styling patterns. The visual angle only: class/inline-style bindings driven by $state/$derived, scoped <style> blocks (no global bleed), no legacy pattern that breaks styling. Defer deep runes correctness to libraium-reviewer.
  10. Voice (§10). Copy is plain, warm, specific; buttons say what they do; errors state what happened and what to do next; no apologies, no exclamation marks.

Read the full file on GitHub · 49 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. 4d ago First seen · 49 lines · 0 tokens per session scan A 63b945f54a41

Subscribe to this mod's changes

ui-reviewer is an agent published in the GitHub repository nel-neru/LibrAIum (0 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,171 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.

Related

Other agents, from other repositories

release

Use only when preparing, validating, or writing up a public OKF Harness release. Owns operational release proof and the release notes template.

pumblus/okf-harness · 0 tokens

blz-tester

Use this agent when you need to perform comprehensive testing of the blz CLI tool after code changes, before releases, or when verifying functionality across all commands and output formats. This agent should be invoked proactively after:\n\n \nContext: User has just completed implementing a new CLI command or…

outfitter-dev/blz · 393 tokens

rust-expert

Use this agent when you need expert Rust development, code review, architecture decisions, or optimization work. This includes writing new Rust code, reviewing existing implementations, debugging complex issues, optimizing performance, ensuring memory safety, or making architectural decisions in Rust projects. The…

outfitter-dev/blz · 359 tokens

docs-checker

Use this agent when you need to verify that documentation in /docs accurately reflects the current behavior and capabilities of the blz CLI tool. This agent should be used:\n\n- After implementing new CLI features or commands\n- After modifying existing command behavior or flags\n- Before cutting a new release to…

outfitter-dev/blz · 348 tokens

blazer

Documentation search with blz. Searches, retrieves citations, adds sources. Examples: Search: "How do I write tests in Bun?" → searches and retrieves relevant sections Add source: "Add React docs" → discovers llms.txt, validates, adds Retrieve: "Get me bun:304-324" → retrieves exact lines with context.

outfitter-dev/blz · 76 tokens

architect

You are the Architect. Your job is to design the plan before anyone writes code or moves files.

mishalyalin/pupsik · 0 tokens