Ui Evidence — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ui Evidence (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
AI changed the UI. Review the evidence.
ui-evidence helps you review what AI actually changed in the UI. It captures stable before/after screenshots or current UI snapshots, builds side-by-side comparisons, and generates a local review page a human can scan quickly.
I built it after AI coding tools started changing the wrong UI or quietly skipping related screens during frontend work. It became useful immediately in a real design-system rollout because missing screens and inconsistent button updates were easy to spot.
before and after imagesreview/index.htmlmain or another git ref as the before baselinefile:// or Finder/Explorer without running a local serverThe package is the local CLI. The skill is the easiest install surface for Codex, Claude Code, and other SKILL.md-based clients. The skill gets the workflow into the agent. The package provides the repo-local executable that actually runs captures.
This showcase captures a real mobile archive flow before and after a button design-system rollout. One run covers four related screens, builds pair comparisons, and produces a review surface a human can scan quickly.
Archive ledger mobile overview
Artifacts:
SKILL.mdskills addbefore can come from the current checkout, a running URL, or another git refpnpm, yarn, or npm workspaces where the review app lives under a declared workspace package such as apps/* or packages/*Current limit:
Install the skill with the ecosystem-native installer:
pnpm dlx skills add 0xBrewing/ui-evidence
pnpm dlx skills add 0xBrewing/ui-evidence -a codex
pnpm dlx skills add 0xBrewing/ui-evidence -a claude-code
pnpm dlx skills add 0xBrewing/ui-evidence -g -a codexInteractive install lets the user choose the target agent, project or global scope, and symlink or copy mode.
Equivalent npx skills add ... commands work too.
By convention, the skill lands in:
.agents/skills/ for Codex and other .agents clients.claude/skills/ for Claude CodeAfter the skill is installed, ask the agent to use it. On first use, the skill installs the ui-evidence package into the current repo and runs the repo bootstrap step automatically.
That bootstrap aligns with agent-native paths too. It writes repo-local skill copies to .agents/skills/ui-evidence/ for Codex and .claude/skills/ui-evidence/ for Claude Code, so skills add installs and installation.md bootstrap converge on recognized locations.
Shortest prompt after install:
Use ui-evidence to compare the checkout modal against main.If you want the package without using skills add, install it from GitHub:
pnpm add -D github:0xBrewing/ui-evidence
pnpm exec ui-evidence install --agent both --config ./ui-evidence/config.yaml
pnpm exec ui-evidence doctor --config ./ui-evidence/config.yaml
pnpm exec ui-evidence doctor --config ./ui-evidence/config.yaml --readyEquivalent install commands:
npm install -D github:0xBrewing/ui-evidence
yarn add -D github:0xBrewing/ui-evidence
bun add -d github:0xBrewing/ui-evidenceThis direct CLI path still bootstraps the same agent-native local skill locations: .agents/skills/ui-evidence/ and .claude/skills/ui-evidence/.
If you want to hand an installation playbook to an LLM directly:
Read https://raw.githubusercontent.com/0xBrewing/ui-evidence/main/docs/installation.md
and set up ui-evidence for this repository.
Prefer the installed ui-evidence skill if it is already available.
Keep the first setup minimal and ask only about unresolved route, wait target, auth, or baseline details.If ui-evidence is already installed in the repo, this also works:
Read node_modules/ui-evidence/docs/installation.md and set up ui-evidence for this repository.Run one stage:
pnpm exec ui-evidence run --config ./ui-evidence/config.yaml --stage primary-flowCompare the current branch against main:
pnpm exec ui-evidence run --config ./ui-evidence/config.yaml --stage primary-flow --before-ref mainAttach to an already running app and resume only the missing or failed raw captures:
pnpm exec ui-evidence run --config ./ui-evidence/config.yaml --stage primary-flow --after-attach http://127.0.0.1:3000 --resumeCapture the current UI only:
pnpm exec ui-evidence snapshot --config ./ui-evidence/config.yaml --scope design-system-rolloutIf a stage has no before/after comparison artifacts yet, ui-evidence review --stage <stage-id> now reuses the latest snapshot current captures for that stage. If neither stage artifacts nor snapshot artifacts exist, the command fails clearly instead of generating an empty review. When that fallback happens, ui-evidence materializes the needed snapshot images into the stage bundle so ui-evidence/screenshots/<stage-id>/ stays portable on its own.
Profiles and params let you keep one config instead of spawning config.mobile-ko.yaml style variants:
pnpm exec ui-evidence snapshot --config ./ui-evidence/config.yaml --stage primary-flow --profile mobile-en
pnpm exec ui-evidence run --config ./ui-evidence/config.yaml --stage primary-flow --params locale=ko,variant=coreOpen:
ui-evidence/screenshots/<stage-id>/review/index.htmlYou can open the generated HTML directly from disk. A local web server is not required.
Use ui-evidence to compare the checkout modal against mainCapture before and after screenshots for the login screenBootstrap ui-evidence for this repo and keep the first setup minimalThis repo ships the standard pieces expected by the open skills ecosystem:
agent-skill/ui-evidence/SKILL.mdagent-skill/ui-evidence/agents/openai.yaml.claude-plugin/marketplace.jsonThe Claude plugin mirror is generated into plugins/ui-evidence/ from the canonical skill source during prepare, and is intentionally not committed so marketplace indexing sees only the canonical source path.
version: 1
project:
name: my-app
rootDir: ..
artifacts:
rootDir: ui-evidence/screenshots
runtime:
stateDir: ui-evidence/state
tempDir: ui-evidence/tmp
capture:
baseUrl: http://127.0.0.1:3000
browser:
headless: true
viewports:
- id: mobile-390
device: iPhone 13
viewport:
width: 390
height: 844
servers:
after:
command: pnpm dev
baseUrl: http://127.0.0.1:3000
profiles:
mobile-en:
viewportIds:
- mobile-390
params:
locale: en
stages:
- id: primary-flow
title: Primary Flow
description: Stable UI surface for before/after review.
defaultViewports:
- mobile-390
screens:
- id: home
label: Home
path: /
params:
locale: en
variant: core
waitFor:
testId: screen-home
scopes:
- id: design-system-rollout
title: Design System Rollout
description: Current UI snapshot for touched and related screens.
targets:
- stageId: primary-flow
screenIds:
- homeEach stage writes:
ui-evidence/screenshots/<stage-id>/
before/
after/
comparison/
pairs/
overview/
review/
index.html
notes.<lang>.md
report.<lang>.md
manifest.jsonDurable runtime state and temporary worktrees now live under the canonical runtime layout:
ui-evidence/state/
capture/
shared/
fixtures/
ui-evidence/tmp/
runs/
baseline/Snapshot runs write:
ui-evidence/screenshots/snapshots/<run-id>/
captures/
overview/
review/
index.html
notes.<lang>.md
report.<lang>.md
manifest.jsonIssues and pull requests are welcome.
If you want to improve setup UX, skill metadata, or HTML review output, start with:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.