How Visual Verification Works for UI Changes in the Omarchy Development Workflow
Omarchy mandates that developers manually verify every UI change by capturing reference and candidate screenshots or videos using the omarchy capture suite, then comparing them in situ to catch visual regressions before committing code.
In the basecamp/omarchy repository, visual changes are treated as first-class citizens. Every modification affecting shell styling, layout, panels, menus, notifications, or animations requires explicit human validation through a structured workflow defined in agents/skills/visual-verification.md. This process ensures that subtle issues—such as clipping, overlap, stale state, or focus problems—are caught before they reach production.
The Three-Step Visual Verification Protocol
The workflow codified in agents/skills/visual-verification.md requires three mandatory steps for any code edit that touches on-screen elements.
1. Capture Reference Media
Before applying changes, document the current UI state. This establishes the baseline for comparison and must include the full context of the feature being modified.
2. Apply the Code Change
Edit the relevant source files—whether QML files for layout, CSS variables for theming, or panel definitions—and prepare the running environment to reflect the updates.
3. Capture and Compare the Candidate
Take a new screenshot or recording of the updated UI and compare it directly against the reference. Inspect for visual artifacts, spacing regressions, and incorrect state. Only after this side-by-side review is the change considered complete.
Capturing Screenshots and Screen Recordings
Omarchy provides dedicated CLI utilities implemented in bin/omarchy-capture-screenshot and bin/omarchy-capture-screenrecording to document UI state.
Full-Screen Screenshots
Use the omarchy capture screenshot fullscreen save command to write a timestamped PNG directly to the configured Pictures folder:
# Capture reference before making changes
omarchy capture screenshot fullscreen save
# → ~/Pictures/2024-08-19-screenshot.png
# Edit your QML, CSS, or panel configuration...
# Capture candidate after changes
omarchy capture screenshot fullscreen save
# → ~/Pictures/2024-08-19-screenshot-candidate.png
# Compare side-by-side using any image viewer
feh ~/Pictures/2024-08-19-screenshot.png ~/Pictures/2024-08-19-screenshot-candidate.png
Recording Videos for Animation Verification
For transitions, animations, or dynamic state changes, use the screen recording commands:
# Start full-screen recording
omarchy screenrecord --fullscreen
# Exercise the changed UI (open panels, toggle themes, trigger animations)
# Stop recording
omarchy screenrecord --stop-recording
# → ~/Videos/2024-08-19-recording.mp4
# Review the animation flow
mpv ~/Videos/2024-08-19-recording.mp4
Simulating User Input with wtype
When verifying interactive components like dialogs or menus that require user actions, use wtype to send synthetic keystrokes to background UIs. This is essential for testing state changes that automated captures might miss:
# Launch the UI process in background
my-omarchy-ui &
sleep 1
# Send navigation and selection keystrokes
wtype -k Right -k Return
# Verify the resulting state with a fresh screenshot
omarchy capture screenshot fullscreen save
Key Implementation Files
The visual verification workflow is backed by the following source files:
agents/skills/visual-verification.md— Authoritative skill guide defining the three-step protocol, media capture standards, andwtypeintegrationbin/omarchy-capture-screenshot— Implementation of theomarchy capture screenshotsub-commandsbin/omarchy-capture-screenrecording— Implementation of theomarchy screenrecordsub-commandsmanual/12-screenshots-recording.md— User-facing documentation explaining screenshot and recording optionsmanual/14-omarchy-cli.md— Command reference for theomarchy capturegroup
Summary
- Visual verification is mandatory for any change affecting Omarchy's styling, layout, panels, or animations
- Developers must capture reference media, apply changes, then capture and compare candidate media to spot regressions
- The
omarchy capturesuite providesscreenshot fullscreen saveandscreenrecordcommands for documentation - Synthetic input via
wtypevalidates interactive UI components without manual GUI interaction - All procedures are authoritatively defined in
agents/skills/visual-verification.md
Frequently Asked Questions
Why does Omarchy require manual visual verification instead of relying solely on automated tests?
Automated tests can verify functional logic but often miss subtle visual regressions like pixel-level clipping, spacing inconsistencies, animation timing errors, or focus ring artifacts. The Omarchy workflow treats the visual output as a first-class artifact that must be inspected in situ by a human to ensure the shell's quality remains high.
What file formats and locations does the omarchy capture suite use?
Screenshots are saved as PNG files to the user's Pictures folder, while screen recordings are saved as MP4 files to the Videos folder. Both use ISO-formatted timestamps in their filenames (e.g., 2024-08-19-screenshot.png) to ensure chronological sorting and easy reference-to-candidate matching.
How do I verify UI changes that require hidden or background interactions?
Use the wtype utility to send synthetic keystrokes to the UI process. For example, wtype -k Right -k Return navigates and selects options in selection dialogs or menus. After sending the input, capture a new screenshot with omarchy capture screenshot fullscreen save to verify the resulting visual state.
Where is the canonical visual verification protocol documented?
The authoritative reference is located at agents/skills/visual-verification.md in the repository root. This file defines the mandatory three-step process, approved capture methods, and integration patterns for the omarchy capture and wtype tools.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →