visual-testing
Skill2.4k starsChanged todayApache-2.0View on GitHub
Test one feature or fix visually in fresh SwiftVM guests (macOS, Ubuntu Wayland, Ubuntu X11, Windows 11). Writes scenarios for just that change, has low-cost testers drive the real app, reviews the screenshots, then fixes and retests until it works. Use while building a feature or after a fix, to confirm a change works in the real app, or when the user runs /visual-testing. For a full release pass, use e2e-test instead.
6 other projects use a version of this.
Trending
More talk lately.about the whole repository
Most recently taken up by
- godhiraj-code/greenbuild-plugintheir own version, first seen Nov 1, 2026
- petrkindlmann/qa-skillstheir own version, first seen Oct 25, 2026
- mejbaurbahar/software-tester-skillstheir own version, first seen Oct 13, 2026
- handsontable/handsontabletheir own version, first seen Oct 8, 2026
- mejbaurbahar/faguntheir own version, first seen Jul 5, 2026
- Seaual/meta-knowledge-graphtheir own version, first seen May 24, 2026
Who's talking about muxy-app/muxy
- A Hacker News story“Muxy is a lightweight terminal for Mac with a mobile app for remote control”Hacker News · May 20, 2026 · 3 points
- A Hacker News story“Muxy – A macOS terminal built with SwiftUI and libghostty”Hacker News · Apr 22, 2026 · 3 points
- @tom-doerr.bsky.social“https://github.com/muxy-app/muxy”Bluesky · Apr 20, 2026 · 1 likes
- A Hacker News story“Ghostty, but with Vertical tabs, lightweight and native”Hacker News · Apr 3, 2026 · 1 points
- sudosubin/agents.nix“agent-skills.github.muxy-app.muxy: 2.3.0 → 2.4.0”GitHub · Nov 7, 2026
The biggest 5 of 19 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 19
Talked about on GitHub, Hacker News and Bluesky (19 times).
On GitHub · 15
- Nov 7, 2026agent-skills.github.muxy-app.muxy: 2.3.0 → 2.4.0 — sudosubin/agents.nix0 reactions
- Oct 31, 2026agent-skills.github.muxy-app.muxy: 2.2.0 → 2.3.0 — sudosubin/agents.nix0 reactions
- Oct 29, 2026Add Muxy — AppImage/appimage.github.io0 reactions · 1 comment
- Oct 17, 2026agent-skills.github.muxy-app.muxy: 2.1.0 → 2.2.0 — sudosubin/agents.nix0 reactions
- Oct 14, 2026wr-agent: page scrollback to reattaching clients instead of repainting it whole — joelmoss/workroom0 reactions · 3 comments
10 more on GitHub
- Oct 14, 2026agent-skills.github.muxy-app.muxy: 0-unstable-2026-08-28 → 2.1.0 — sudosubin/agents.nix0 reactions
- Oct 3, 2026agent-skills.github.muxy-app.muxy: 1.6.1 → 0-unstable-2026-08-28 — sudosubin/agents.nix0 reactions
- Sep 30, 2026agent-skills.github.muxy-app.muxy: init at 1.6.1 — sudosubin/agents.nix0 reactions
- Jul 29, 2026Feature Request: Native Terminal AI Agent Support (ACP Integration & Third-Party CLI Orchestration) — github/app0 reactions · 3 comments
- Jul 10, 2026github 0.1.1 — muxy-app/extensions0 reactions · 6 comments
- May 26, 2026Fix Pi notification pill showing wrong provider name — maxschulmeister/muxy0 reactions
- May 21, 2026https://github.com/muxy-app/muxy — weihubeats/Asuna0 reactions · 1 comment
- May 14, 2026Custom project picker for adding/opening projects — sadiksaifi/muxy0 reactions
- Apr 11, 2026佈局持久化(Daemon Layout API + Restore Reconciliation) — zac15987/zplex0 reactions · 3 comments
- Apr 6, 2026Add Muxy to Terminal section — iCHAIT/awesome-macOS0 reactions · 1 comment
On Hacker News · 3
- May 20, 2026Muxy is a lightweight terminal for Mac with a mobile app for remote control3 points
- Apr 22, 2026Muxy – A macOS terminal built with SwiftUI and libghostty3 points · 1 comment
- Apr 3, 2026Ghostty, but with Vertical tabs, lightweight and native1 point · 1 comment
On Bluesky · 1
- Apr 20, 2026https://github.com/muxy-app/muxy — @tom-doerr.bsky.social1 likes and repost
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- handsontable/handsontable★ 22ksame name
- petrkindlmann/qa-skills★ 209same name
- Seaual/meta-knowledge-graph★ 14same name
- godhiraj-code/greenbuild-plugin★ 1same name
- mejbaurbahar/fagun★ 1same name
- mejbaurbahar/software-tester-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- code-and-architecture-improvementSkill
- e2e-testSkill
- implementSkill
- issues-triageSkill
- release-highlightsSkill
- report-taskSkill
- reviewSkill
The file
We split this skill into the rules it gives an agent
12 rules. 0 are common, 5 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Use e2e-test instead when the question is "does everything still work?".
- Very specific: line 24
What to test: Use the user's words if they gave any.
- Very specific: line 55
Every task gets a new run and fresh VMs.
- Very specific: line 65
Write them to target/e2e/<run>/scenarios.md, in the format of the e2e suites, which also lets you copy any existing test that fits.
- Very specific: line 91
Stop there; broad coverage is e2e-test's job.
- Distinctive: line 93
Keep a file to about ten tests.
- Very specific: line 104
Missing commands: If a step needs something the protocol lacks, add it to scripts/guest/muxy-e2e and document it in the protocol's Commands …
- Distinctive: line 121
Start one tester per platform, in parallel, in one message.
- Distinctive: line 147
Check that the feature matches across platforms, apart from intended differences.
- Distinctive: line 150
Bug outside this change: don't fix it. Report it to the user.
- Very specific: line 179
Remove the VMs: Don't ask first; keep one only if the user asked you to.
- Distinctive: line 188
Delete only this run's VMs.
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Muxy visual testing
Prove that one change works in the real app, on the platforms it can affect. You are the coordinator: you decide what to test, write the scenarios, read the evidence, and fix what is broken. Low-cost tester subagents drive the VMs.
This skill reuses the e2e-test harness and adds no VM tooling of its own:
E=.agents/skills/e2e-test/scripts/e2eboots and drives the VMs.- The tester protocol holds every rule for driving a VM. Read it before writing scenarios, and don't repeat its rules.
- Templates covers a missing or stale template.
Use e2e-test instead when the question is "does everything still work?".
1. Scope
What to test. Use the user's words if they gave any. Otherwise read the
request and the diff (git status, git diff <base>) and write a short list of
acceptance criteria. Ask the user only if you can't tell what "working" means.
Where to test. Take the first rule that applies, and state your choice:
| Rule | Platforms |
| The user named platforms | Those (linux = wayland and x11, all = all four) |
| The change is only compiled or only reachable on one OS | That OS (Linux = wayland and x11) |
| Anything else, including shared UI | macos, wayland, x11, windows |
Some features can't be tested in a guest, such as remote pairing or anything that needs signed-in tools (see "Not covered" in the e2e-test skill). Tell the user which criteria that leaves unproven; never report them as passing.
2. Prepare
.agents/ is ignored by Git, so it exists only in the main checkout. Run every
command, and start every tester, from the main checkout's root. From a worktree,
find it with git worktree list and pass the worktree to prepare.
cargo check -p muxy-app # A compile error shouldn't cost a VM boot
$E preflight
$E prepare # This checkout; prints the run id
$E prepare "$(date +r%m%d%H%M)" <worktree> # Another checkoutpreflightfails when a template is missing: follow the templates reference.- Every task gets a new run and fresh VMs. Never reuse a VM from an earlier task,
even for the same branch or feature. If
preflightlists VMs from another run, leave them alone and ask the user whether to clean them up; another session may be using them. preparecopies tracked edits and new files, so nothing needs committing. It doesn't copy dependencies. GPUI comes from its Git fork, with--locked, so a fork change must be pushed and inCargo.lockbefore the guest can build it.
3. Write the scenarios
Write them to target/e2e/<run>/scenarios.md, in the format of
the e2e suites, which also lets you copy any
existing test that fits. Read the source for real control IDs, names and shortcuts:
a tester can't find them and must not guess.
# Visual test: <feature>
<One sentence: what this change should do.>
Start: run `$E g $VM reset`, then <exact steps to reach the feature>.
Tests continue from each other in order.
## V1 <Acceptance criterion>
1. <One action, with the exact command>.
2. **Shot** `v1-after`. Check: <exactly what must be visible, and where>.Cover, in this order:
- The feature. One test per acceptance criterion, each with a check that would fail without the change.
- What users will hit next. Cancel and empty states, invalid input, a second use, and restarting the app where the state should persist.
- The neighbors. One or two tests of existing behavior the diff touches.
Stop there; broad coverage is
e2e-test's job.
Keep a file to about ten tests. If it needs more, split it into files that testers run one after another on the same VM.
Things the harness doesn't do for you:
- New shortcuts.
$E pressknows only the shortcuts listed inACTIONSinscripts/e2e. Add the new one there, for both platforms. - Setup.
resetwipes the profile (~/.local/state/muxy-vm) and recreates the fixtures (~/e2e:alpha,beta,gamma,site). Build any other state after it, in steps: run$E g $VM muxy ..., or type into a terminal, then$E g $VM quitand$E g $VM launchif the app reads it at startup. - Missing commands. If a step needs something the protocol lacks, add it to
scripts/guest/muxy-e2eand document it in the protocol's Commands table.upcopies the helper to the guest each time. - Platform differences. Say so in the test:
SKIP on wayland and x11. - Windows. The guest helper is
muxy-e2e.ps1, with a subset of the commands ($E g $VM helplists them). Paths like'~/e2e/beta'still work. Its terminals run PowerShell 7, so write typed commands for it, and mark tests that need a missing fixtureSKIP on windows. Muxy's controls aren't in SwiftVM's accessibility view there, soclick-elementcan't find them: steps use shortcuts, keys and pixel clicks read from a screenshot.
4. Run
Pick the tester model as in step 3 of the e2e-test skill:
the cheapest with a shell and image input (model: "haiku" in Claude Code). Without
subagents, follow the tester protocol yourself.
Start one tester per platform, in parallel, in one message. Never let two testers touch the same VM at once. Give each exactly this prompt, filled in:
You are a Muxy E2E tester. Work only through the commands in the tester protocol.
Working directory: <main checkout root>
Read and follow: .agents/skills/e2e-test/references/tester.md
Run id: <run> Platform: <macos|wayland|x11|windows> VM: muxy-e2e-<run>-<platform>
Batch: <attempt number, starting at 1> Boot first: yes
Suites, in order: target/e2e/<run>/scenarios.md
Return your report as your final message.
Do not spawn agents, edit repository files, or debug Muxy's source.Boot first: yes is right for every attempt. On attempt 1, $E up creates a fresh
VM. On later attempts, it imports the source from the latest prepare into that VM
and rebuilds incrementally.
5. Review
The screenshots decide, not the testers' verdicts. Save each report as
target/e2e/<run>/<platform>/report-<attempt>.md, then:
- Open every screenshot that proves an acceptance criterion yourself, on each
platform, including the
PASSrows. Testers follow steps but miss wrong layout, clipped text, bad spacing and wrong colors, which is what this skill is for. - Check that the feature matches across platforms, apart from intended differences.
- Classify each problem:
- Bug in this change: fix it (step 6).
- Bug outside this change: don't fix it. Report it to the user.
- Scenario defect: the steps or expected result are wrong. Fix the scenario and rerun that test.
- Environment: VM, template or tooling failed. Fix it per the templates reference if routine, otherwise report it.
- Flaky: rerun that test once with a new tester and keep both results.
6. Fix and retest
Retests within a task use that task's VMs, so keep them running. Fix the bug, then repeat on the same run:
$E prepare <run> [checkout] # Same run id: replaces the source for this run's VMsThen run step 4 again with the next attempt number. A pass counts only for the source it ran on, so each attempt reruns the whole scenario file, on every platform in scope. Rerun fewer platforms only when the fix is in code that compiles for just one OS.
Change a test's expected result only when the expectation was wrong, never to get a pass. Stop after three attempts at the same problem and report what you tried.
7. Finish (mandatory)
A task isn't done until its VMs are gone. Do both steps every time, including when the task failed or was stopped early.
Remove the VMs. Don't ask first; keep one only if the user asked you to.
cleanstops and deletes every VM of the run, after copying the logs intotarget/e2e/<run>/. The screenshots stay there too.$E clean <run> $E vms <run> # Must list no VMsDelete only this run's VMs; never another run's, or a template.
- Report to the user:
- The verdict: does the change work, and on which platforms?
- A platform × acceptance-criterion table, from the last attempt only.
- The source that passed (
target/e2e/<run>/source.txt) and the attempt count. - Bugs you fixed along the way, and bugs outside this change, with screenshot paths.
- Anything left unproven, and why.
- The key screenshot for each criterion, and that the VMs are deleted.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

