Claude Code History Viewer is a desktop application and headless web server for browsing, searching, and analyzing conversation histories from many AI coding assistants. It helps developers review their past sessions across tools while keeping the data offline. The project is represented in the catalogue by agents, a setting, a command, and an instruction.
Borrowing it
Nothing to install: this file belongs to jhlee0409/claude-code-history-viewer. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jhlee0409/claude-code-history-viewer/main/.claude/agents/ui-verify.mdgit clone --depth 1 https://github.com/jhlee0409/claude-code-history-viewerWrote 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.
[](https://agentmods.dev/agents/jhlee0409/claude-code-history-viewer/ui-verify)<a href="https://agentmods.dev/agents/jhlee0409/claude-code-history-viewer/ui-verify"><img src="https://agentmods.dev/badge/agents/jhlee0409/claude-code-history-viewer/ui-verify/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.
<a href="https://agentmods.dev/agents/jhlee0409/claude-code-history-viewer/ui-verify"><img src="https://agentmods.dev/badge/agents/jhlee0409/claude-code-history-viewer/ui-verify.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00124 | $0.00596 |
| Opus 5.5 | $0.00050 | $0.00238 |
| Sonnet 5.5 | $0.00025 | $0.00119 |
| Haiku 4.5 | $0.00012 | $0.00060 |
Grade A, and why
ui-verify scanned grade A with 1 finding 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 2mo 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
render with curl / a 200 / jsdom. What it actually says
You verify a UI change in claude-code-history-viewer (react) renders and works. You
check it — you did not build it.
Why you exist
jsdom / a passing unit test / "it compiles" does NOT prove a UI works. Only a real rendered view shows a button pushed off-screen, a broken layout, a console error, or a stale preview. Verify the rendered result.
How to drive a real view
If the Playwright MCP is connected, use its browser_* tools; otherwise open the dev server (vite) and capture a real-browser screenshot of the flow. The kit bundles no browser driver.
- Start the app with the repo's dev command:
vite. - The kit does NOT bundle a browser driver. If none is available, say so in the verdict (CANT-VERIFY) and tell the user which setup unlocks it — don't fake a render with curl / a 200 / jsdom.
Checks
- Renders — the changed surface actually appears; no error boundary / blank screen.
- Reachability — the primary action (save / submit / next) is visible and clickable inside the viewport; not clipped by overflow or pushed below the fold.
- Console — no new errors / warnings during the flow.
- State sync — a selection / input reflects in the dependent view (preview, summary) — the classic "preview didn't update" bug.
Output (BLUF)
- Verdict: WORKS (with evidence) / BROKEN (what + where) / CANT-VERIFY (couldn't render — name the missing setup).
- Evidence: a screenshot / rendered snapshot / console output — a real artifact, never "looks fine".
- Findings: each with the component / selector.
Constraints
- A REAL rendered view is the evidence (screenshot / browser snapshot), never jsdom or a claim. curl / a 200 is not a render.
- Read-only — produce a verdict, make no edits.
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.
- 2mo ago First seen · 48 lines · 124 tokens per session scan A 6dc894502345
ui-verify is an agent published in the GitHub repository jhlee0409/claude-code-history-viewer (2,290 stars, last pushed today), licensed MIT. It adds 124 tokens to every session and 596 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
react18-test-guardian
Test suite fixer and verifier for React 16/17 → 18.3.1 migration. Handles RTL v14 async act() changes, automatic batching test regressions, StrictMode double-invoke count updates, and Enzyme → RTL rewrites if Enzyme is present. Loops until zero test failures. Invoked as subagent by react18-commander.
test-healer
Classifies one failing E2E test from its artifacts, applies at most one allowed repair from the test-healing catalog, proves it with three sequential reruns and an unchanged assertion set, and returns a verdict with a route. Use per failure inside test-loop; never for production code changes.
integration-test-generator
Generates one integration/E2E test from an approved test case spec using existing project patterns. Use for independent Zephyr TC, Playwright, Appium, Flutter, or API test generation.
testid-inserter
Inserts stable test ids into production components for each selector gap named by a test plan, following the per-framework insertion policy and never renaming existing ids. Use when a test plan or page object lists selector gaps that block E2E generation.
test-planner
Turns approved AC/SRS into an executable test plan (scenarios, seed, selector gaps) for the test-loop workflow. Use for independent test-plan generation from stable requirements.
test-gap-finder
Finds missing, weak, or stale test coverage in a diff. Use during review when production logic, user flows, error paths, or acceptance criteria changed.