by sololabstr
Your AI can already see the screen — it just can't measure it. Live mobile+desktop sessions, a measurement engine (contrast, touch targets, theme drift) reporting findings as text, and a panel you and your agent share. MCP server for web/responsive UIs.
# Add to your Claude Code skills
git clone https://github.com/sololabstr/uisightLast scanned: 8/26/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-26T04:39:07.079Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}uisight is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by sololabstr. Your AI can already see the screen — it just can't measure it. Live mobile+desktop sessions, a measurement engine (contrast, touch targets, theme drift) reporting findings as text, and a panel you and your agent share. MCP server for web/responsive UIs. It has 103 GitHub stars.
Yes. uisight passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/sololabstr/uisight" and add it to your Claude Code skills directory (see the Installation section above).
uisight is primarily written in JavaScript. It is open-source under sololabstr on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh uisight against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Your AI can already see the screen. It just can't measure it.
Screenshots make an agent guess: "that heading looks a bit faint." uisight makes it know:
- from a screenshot: "the heading looks a little washed out, maybe adjust the color?"
+ from uisight: INVISIBLE TEXT 1.04:1 — span.bg-gradient-to-r "your headline"
+ (text rgba(255,255,255,.5) / bg rgb(247,247,248))
One is an impression. The other is a measurement with a selector attached — the agent fixes that element instead of hunting for it.
uisight is an MCP server for web and responsive UIs (Claude Code, Cursor, Antigravity, anything that speaks MCP). It runs live mobile + desktop sessions side by side, measures what it finds, and puts you and the agent in front of the exact same screen.
Built by a solo founder who got tired of taking phone screenshots, pasting them into chat, and typing "the button looks broken, can you see it?"
The live panel: desktop + mobile sessions of the same site, URL-synced. Inspect runs on every screen; findings come back per device. Your AI sees this exact view through MCP.
| Multi-viewport browsers(Polypane etc.) | Browser tools / computer use(Playwright MCP, agent harnesses) | Native app toolkits(Argent etc.) | uisight | |
|---|---|---|---|---|
Measures the UI (1.14:1, not "looks low") |
✅ for humans | — | — | ✅ as text, for the agent |
| Human + agent share one live session | — | — | — | ✅ |
| Device × theme matrix in one run | ✅ | — | — | ✅ |
| Human pins a bug → agent reads note + frame | — | — | — | ✅ |
| Native iOS/Android apps | — | — | ✅ | — (web only) |
The measurement engine is the heart: instead of your AI burning tokens squinting at screenshots, inspect returns findings like
[mobile · Pixel 7 · light] https://yourapp.com/
INVISIBLE TEXT 1.04:1 — span.bg-gradient-to-r "your headline" (text rgba(255,255,255,.5) / bg rgb(247,247,248))
BUTTON a.text-white "Get Started" → text/background contrast 3.35:1
touch target below 44px 180x23 — "read the guide"
Text findings are cheap, precise, and directly actionable — your AI fixes the exact selector instead of guessing.
Fair — and partly true. Computer use, browser tools and most agent harnesses can already open a page and take a screenshot. That's the part uisight doesn't try to replace. Three things are still missing:
1. Looking isn't measuring. A vision model reading a screenshot cannot tell you a contrast ratio. It can't tell 4.6:1 (fine) from 4.3:1 (fails WCAG AA) — they look identical. It won't notice that a tap target is 41px instead of 44px, or that an element renders identically in light and dark mode because its color is hard-coded. uisight computes these from the live DOM: alpha-composited backgrounds, gradient text, oklch() colors and all.
2. The same price buys far more. This used to claim a screenshot costs several times what a measurement does. Measured, that is not true: a mobile frame is ~460 tokens and the matching inspect result is ~570. inspect is not the cheap option — it is the option that says 4.38:1 (threshold 4.5) where a picture only lets the model guess.
The real saving is a different choice: uisight <url> writes a report the model reads once (~800 tokens), while driving the MCP tools screen by screen re-sends the whole conversation at every step. Someone put the problem perfectly under the launch thread: "it burns some tokens but it manages." What it costs has the whole table, because a claim like this one is worth checking.
3. Nobody's watching with you. In the usual setup the agent looks at the page alone and reports back. Here you both watch the same live session — you see what it does as it does it, and when you spot something, you pin it (📌) with a note and the agent reads your note plus that exact frame. No more describing a bug in words.
Scope note: uisight is for web and responsive UIs. For native iOS/Android app control, Argent is excellent and does far more than we do there.
# one-shot audit: PNGs + gallery + report for iPhone/Pixel/desktop, light+dark
npx uisight https://yourapp.com --theme both
# live panel: mobile + desktop side by side, you browse, AI watches (and vice versa)
npx -y -p uisight uisight-panel http://localhost:3000
First run. Playwright ships its driver over npm but downloads browsers
separately, so the first run has nothing to drive. In a terminal, uisight offers
to fetch what it needs (~150 MB, once) and shows the download. Where there is
nobody to answer — CI, or a panel an editor or agent host started — it never
asks and never downloads; it names the exact command instead. UISIGHT_NO_INSTALL=1
turns the offer off everywhere, and you can always do it yourself:
npx playwright install chromium # add webkit for the real iOS Safari engine
The one-shot audit produces a device × theme gallery with findings per card:

# Claude Code
claude mcp add --scope user uisight -- npx -y -p uisight@latest uisight-mcp
For Cursor / Antigravity / other MCP hosts, add to your MCP config:
{ "mcpServers": { "uisight": { "command": "npx", "args": ["-y", "-p", "uisight@latest", "uisight-mcp"] } } }
Then just tell your agent: "look at my app with uisight". The panel server starts automatically when needed.
| Tool | What it does |
|---|---|
see_screen |
Returns the current screen as an image — the exact frame the human sees in the panel |
inspect |
Runs contrast / touch-target / overflow / theme checks; returns measured findings as text |
goto |
Navigates all sessions to a URL (localhost included) |
tap / type_text / scroll |
Drives the page — the human watches it happen live |
set_device |
Switches device profile (iphone-15, iphone-se, pixel, galaxy, ipad, desktop, laptop) or light/dark theme |
status |
Open URL, sessions, recent console/network errors — first stop when hunting a bug |
marks |
Reads the notes the human pinned in the panel (📌 note + screenshot at that moment) |
Turkish tool names available with UISIGHT_LANG=tr (ekrani_gor, denetle, ...).
npx -y -p uisight uisight-panel <url> opens a browser page at localhost:5055:
marks. No more "let me describe what I'm seeing."Works inside VS Code / Antigravity via Simple Browser: Show → http://localhost:5055.
Can you read it
oklab()/oklch() colors all handledline-clamp and friends are not "clipped" — they are a decision)Can you reach it
elementFromPoint, not geometry, and sampled edge to edge so a floating button covering one end of a wide button is caughtkeyboard-audit opens the keyboard the way a phone does and re-measures)overflow-x: auto is fine, because the content is reachableviewport-fit=cover) and then never used the inset it got back; without that flag iOS letterboxes the page and nothing can be hiddenDoes it make sense
Every check has a false-alarm test next to its detection test. That is not politeness: a tool that cries wolf on every bottom navigation bar gets ignored, and then its real findings go unread too.
And the honest limit: automated checks cannot see design mistakes — a collided header measures fine. That's why see_screen exists and why the report says