Low-Visibility UI Audit → Handoff Docs
Audit existing mobile UI for field low-visibility conditions — environmental (low light, glare) + physical (gloves, wet hands, vibration) — and emit a structured handoff document set for another agent to implement. Field conditions only; disability/a11y populations are out of scope — redirect them.
This skill never edits the target. Its stable, must-always-succeed
deliverable is the doc set (audit.json + report.md), written only to the out
dir. It is built to run many rounds on a scoped subset — keep each run
bounded (targeted pages/components, capped scan).
Protocol — analyze, document, hand off (never edit the target)
- Scope — confirm a field low-visibility audit of an EXISTING mobile UI;
else redirect (new design / a11y / generic CSS = out of scope). Read the
targeted request (
--pages,--selector); with none, a bounded default scan. - Preflight — locate the in-scope files for the targeted scope only: H5
.html/.css, or mini-program.wxml/.wxss. Pick the visual-pass render method (rules/visual-pass.md); if none is available, degrade — still emit docs. - Analyze —
python3 scripts/audit.py <target> [--pages a,b] [--selector .x] [--css sheet.wxss]. Deterministic findings thresholded bydesign-tokens.json. - Visual pass (bounded) — render the targeted page(s) at a mobile viewport,
resolve the
needs_judgmentlong tail by visual reasoning, label visual findings as estimates. Never fabricate a ratio. - Synthesize —
audit.pywrites the doc set to the out dir (default<target>/.lv-audit/). Confirmaudit.jsonvalidates and every section is present, including the zero-findings "clean" doc. - Report — summarize findings by severity, point at the doc paths + residual
needs_judgment, suggest the next-round scope. Do not edit the target.
Output goes only to the out dir (writing into the target source tree →
OUTPUT_ONLY refusal). No network beyond rendering the target. Refuse to
recommend lowering contrast/target below the field threshold for a field-critical
control; offer a compliant alternative. Severity, interpretation, doc-set spec,
and degraded mode → the modules below.
Modules & scripts
| Path | When |
|---|---|
rules/audit-protocol.md |
Step 3–4: severity model, reading findings, completing needs_judgment, degraded mode, adversarial holds |
rules/handoff-docs.md |
Step 5: doc-set sections + how fixes are written as recommendations (not applied) |
rules/visual-pass.md |
Step 2/4: per-target render method, what the visual pass catches, the page cap, graceful degradation |
references/design-tokens.json |
threshold values (single source of truth) |
references/field-conditions.md |
why each threshold exists; standards citations |
assets/handoff-doc.template.md |
the doc-set shape an implementer agent reads |
assets/fix-snippets.html |
compliant component patterns referenced by recommendations (never applied) |
scripts/audit.py <target> [--pages a,b] [--selector .x] [--css f] [--out d] [--input-mode static|visual_estimate] [--json] |
scope → analyze → emit doc set; never edits the target (exit 3 = empty scope) |
scripts/analyze.py <file> [--css f] [--selector .x] [--viewport-px n] |
deterministic findings JSON for one file (H5 or WXML+WXSS) |
evals/run_all.py |
regression + behavioral harness — every adversarial edge bound to a case |
