Visual auditor
Captures screenshots, reviews UI against product.md and design.md, runs WCAG contrast checks, fixes visual issues in code immediately, and documents every fix. Use after craft/handoff or when UI looks wrong: not report-only QA.From its SKILL.md
npx -y skills add HeyEddi-com/skills --skill visual-auditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.6 KB, 884 tokens by cl100k_base, as published. Nobody here has run it
Visual Auditor
See the UI. Compare to spec. Fix. Document. Re-verify.
You are a visual QA implementer: not a screenshot-only subagent. You read captures against product (persona, route intent, purpose) and design (tokens, mockup-brief, hierarchy), fix issues in Vue/CSS in the same turn, and log every change.
When to use
- After
@heyeddi-design craftor@heyeddi-handoffon a route - Green-on-green, illegible text, layout drift vs brief
- Pre-merge visual gate with fixes, not a issue list alone
@heyeddi-productdelegated legibility research: you fix, they synthesize
Mandatory pipeline
Read reference/visual-review.md and reference/fix-loop.md.
load_visual_context --route /path --write-review
capture_screenshots --route /path
audit_contrast --route /path
→ READ PNGs + product.md + design.md + mockup-brief + contrast report
→ FIX each error/actionable warn in code
→ append_fix_log (per fix)
finalize_visual_review --route /path --check
Never deliver only a bullet list of problems without fixing them (unless user explicitly asked report-only).
Review against specification
| Lens | Source |
|---|---|
| Product | route_intent, page purpose, persona success_feeling |
| Design | design.md tokens, mockup-brief.md regions, wireframe if no PNG |
| Legibility | audit_contrast automated + your eyes on captures |
Tools
| Tool | Role |
|---|---|
load_visual_context | Spec paths, captures, contrast summary; --write-review scaffolds review doc |
capture_screenshots | PNGs → .heyeddi/audits/visual/screenshots/ |
audit_contrast | WCAG + motion-over-text |
append_fix_log | Document each fix with spec reference + files |
finalize_visual_review | Re-capture, contrast --check, close review |
Subagents
Shell scripts for capture/contrast; you (main agent) read images, edit code, call append_fix_log. See reference/subagents.md.
Artifacts (.heyeddi/audits/visual/)
| Path | Purpose |
|---|---|
screenshots/ | Responsive captures |
reviews/<feature>-review-<date>.md | Review vs product + design |
fix-log.md / fix-log.jsonl | Every fix documented |
<feature>-contrast-<date>.md | Automated contrast |
Env
DEV_SERVER_URL: Vue (defaulthttp://localhost:5173)FLUTTER_WEB_URL: Flutter web
Chain
@primevue-openprops-architect: run after token/CSS fixes@heyeddi-design polish: if IA problems remain after visual pass@pre-merge-gate: afterfinalize_visual_review --checkpasses
When the task is complete: suggest next skills
When you have finished the user's request for this skill (not after every tool call or subagent phase), suggest what to run next:
-
Run:
python .agents/skills/heyeddi-orchestrator/scripts/suggest_next_skill.py --current-skill visual-auditor --project-root .Add
--route /pathif you worked a specific route. -
Include the script's
### Next stepblock in your final reply. The user copies the Prompt line into chat (e.g.@heyeddi-design craft /settings).
Pass --mode shape (or craft, audit, etc.) when you know which sub-command just finished.
See @heyeddi-orchestrator → reference/next-skill-handoff.md.
What ships with it: 21 files
58.2 KB alongside SKILL.md, 11 of them executable
context/
- ANTI_PATTERNS.md709 B
- EXAMPLES.md849 B
- PROSE_ANTI_SLOP.md5.6 KB
- VOCABULARY.md307 B
fixtures/
- contrast-violations.html1.0 KB
reference/
- contrast-audit.md1.6 KB
- fix-loop.md1.7 KB
- subagents.md742 B
- visual-review.md1.2 KB
scripts/
- append_fix_log.pyruns3.4 KB
- audit_contrast.pyruns5.7 KB
- audit_ui.pyruns3.5 KB
- _contrast_math.pyruns3.2 KB
- contrast_probe.jsruns8.3 KB
- finalize_visual_review.pyruns3.7 KB
- _heyeddi_paths.pyruns603 B
- layout_tree.pyruns2.0 KB
- load_visual_context.pyruns4.3 KB
- _skill_cli.pyruns1.7 KB
- _spec_context.pyruns4.7 KB
- manifest.json3.4 KB