loupe

A Claude Code skill, version 1.0.0

A design review that shows its measurements.

loupe reviews an interface against Apple’s Human Interface Guidelines and the research around them. It measures what it can in the running app, says how strongly Apple states each rule it cites, and tells you when a screen looks like every other template. It works on iOS, iPadOS and macOS apps and on the web.

npx skills add AshwinSathian/loupe

Run it in a terminal. Free and MIT-licensed. Other ways to install, including the Claude Code plugin.

Specimen

One page, under the loupe

A tool-lending library page, written for our tests by a separate model that was told not to read loupe’s rules. These are findings loupe returned in a blind run. Pick one to move the ring.

The Lendwell tool-library page on a phone: a green gradient hero reading “Share more. Own less.”, a scrolling news ticker, and tool cards with grey notes.

Card notes measure 2.21:1

Blocker Web

#a9b0ab on white, 14 px, on all six cards, including “Back 14 Nov”, the only reason given for a disabled Reserve. WCAG 1.4.3 needs 4.5:1. Fix: use the page’s own --muted, which measures 5.56:1.

Five of the 25 findings Claude Opus returned with loupe, in the blind round. The full report, and the review the same model wrote without loupe, are on the Lendwell case page.

The whole report, next to the review written without loupe

Two tags on every finding

How bad it is, and how sure Apple is

Impactharm to the user
Blocker
Needs evidence of one of these: a measured or source-confirmed WCAG A or AA failure; an Apple MUST on an iPhone, iPad or Mac app whose breach stops the task, blocks an accessibility need or risks App Review rejection; data loss; deceptive design; or a task that can’t be finished in a release build.
Major
Feels wrong, non-native or generic. Judged issues stop here.
Minor Polish
Small costs, and finish.
Apple columnhow strongly it is stated
MUST SHOULD CONSIDER
Copied from Apple’s wording. Never upgraded.
Web
An Apple rule translated to the web, or a WCAG-backed web rule.
Research Taste
Outside research where Apple is silent, and reviewer judgement, labelled as such.

The full rules, quoted from the skill

Method

The steps of a review, report before edits

Numbered as in the skill.

  1. 0

    Scope

    Settles what is under review (a screen, a flow, the whole app or a design system) and what it has to work from.

  2. 1

    Profile

    Reads your design docs, tokens and manifests, asks what it can’t find in one batch, and saves a .loupe.md once you confirm it.

  3. 1b

    Landscape

    Researches your category and 3 to 6 peers, with sources and dates, so proposals reflect what the best products do now.

  4. 2

    Intake

    On the web: contrast, targets, type and motion at three widths, light and dark, reduced motion on and off. On Apple platforms: the source, and the simulator if one is running.

  5. 3

    Stress states

    Tries the states demos skip: empty, error, offline, long text, the largest text size, right-to-left.

  6. 4

    Passes

    Nine passes against Apple’s guidance, ending with a red team that attacks the premise, the flows and its own draft.

  7. 5

    Whole-app split

    Splits a large app across subagents, then merges the results with a fresh red team.

  8. 6

    Report

    Findings with two tags, the landscape, a distinctiveness verdict, up to three reworks, and what it couldn’t verify.

  9. 7

    Offer fixes

    Edits nothing until you pick findings by number. Then fixes those and measures again.

How it reads and measures, and the rules it won’t bend

Testing

Preferred in 6 of 9 blind pairs. No more defects found.

In a pre-registered blind round, three Claude judges preferred loupe’s review to one the same model wrote without it in 6 of 9 pairs. Both found nearly every planted defect; loupe’s had fewer findings judged wrong or inflated, and no Blockers on a well-built app. The round failed one of its four rules: recall, by half a defect with Haiku.

Method, every pair, and the losses

Install

Three ways in

Inside Claude Code, as a plugin

/plugin marketplace add AshwinSathian/loupe
/plugin install loupe@loupe

In a terminal, for any agent that reads skills

npx skills add AshwinSathian/loupe

Clone and link, so git pull updates it

git clone https://github.com/AshwinSathian/loupe.git
mkdir -p ~/.claude/skills
ln -s "$(pwd)/loupe" ~/.claude/skills/loupe

Then ask in plain words: “review the checkout flow at localhost:3000”, “does this screen look AI-made?”, “audit our tokens”. Measuring a web app live needs the Playwright MCP server; without it loupe works from source and screenshots and lists the measured checks as unverified. README.