Ui sweep
Use the shipped examples like a user in a real browser and fix the interaction defects the sweeps can't see — placement, tracking, legibility, crowding. Run after runtime or theme changes, or as a standing dispatch.From its SKILL.md
npx -y skills add max-sixty/leaf --skill ui-sweepAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 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
2.3 KB, as published. Nobody here has run it
UI sweep
The suite holds the invariants somebody has already stated: render_version gates a page's rendering, and the press and poll sweeps hold it still under the aim. The defects that reach the user first are the ones nobody has stated yet — a float that parts from its passage on scroll, a diagram scaled below legibility, an input that stops growing at ten lines. Those are found by using the page. This skill is that use: drive, judge, fix, pin.
Drive
Serve pages the way the browser suite does (serve and open_page, which
tests/render_harness.py owns, or the same pattern in a scratch script) and drive
them with real input. Tour the gallery and one prose-heavy example, at 1200×900
and 1440×900, in both color schemes. At each station take a screenshot and record
the geometry it claims:
- Select mid-paragraph, raise the 💬, open the composer, type twenty lines.
- Scroll ±300px with the composer open.
- ⌥-click a widget and repeat 2.
- Repeat 1 with the panel open, and at the covering-sheet width.
- Work the widgets: drag a card, pick an option, accept a suggestion, switch a tab, edit a draft.
- Switch versions with a draft unsent.
- Emulate print and compare with the screen reading.
Judge
Read the frames against plugins/leaf/skills/leaf/CLAUDE.md — each norm there is a checklist row — and against the craft the norms don't state: nothing stands on words being read or written about, nothing renders below legibility, nothing runs out of room while the screen has some, floats track what they point at. A finding is a reproduced number or screenshot, not an impression.
Fix and pin
Fix each finding, then pin it where the gate and the suite share it: a fact about a rendered page goes in render_version, a fact about a gesture becomes a test in whichever test_render_*.py module owns it. Put the bug back once and watch the new check fail. A judgment call — removing a control, redesigning a flow — goes in the report with its screenshot, not in the diff. The run ends as a green branch and a report, and landing waits for the go-ahead.