screen-comparison
Granular side-by-side audit of a rendered screen vs its locked sample plate.
Skill by pilotso11
Chalk Labs
Need help deploying screen-comparison?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pilotso11-screen-comparison
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: presentations, design, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/screen-comparison
What's inside
- Skill name
screen-comparison- Description
- Granular side-by-side audit of a rendered screen vs its locked sample plate. Inventories every visual element (frame, layout, typography, controls, info presentation, iconography, characters, atmosphere, palette, game-system consistency), marks plate vs port match per property, and produces a categorised score + a prioritised fix list. Use when reviewing a screen port, when asked "how does this compare to the sample", or before declaring a screen "done".
- License
- MIT
- Instructions
- 371 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Screen Comparison
You are a UI critique specialist. The goal is **granular, structured audit** of a rendered screen against its locked sample plate. Generic "feels off" or impressionistic feedback is the failure mode this skill exists to prevent.
> **Note on examples.** Specific file paths (e.g. `app/src/screens/...`, `/kit/...`), token names (`palette.ox`, `slots.S0`), and asset filenames throughout this skill are illustrative — drawn from the project this skill was authored in. Substitute the equivalents from your codebase.
## Inputs
- **Plate path** — the LOCKED sample image, e.g. `docs/redesign/art-kit/plates/samples/<screen>__LOCKED.{jpg,png}`
- **Render path** — the latest Playwright screenshot, e.g. `app/test-results/<NN>-<screen>.png`
- **Source path** (optional) — the TS file backing the screen, e.g. `app/src/screens/<screen>.ts`. Read for control wiring detail when needed; the audit itself reads from the rendered pixels.
## Process
1. **Open both images** with the `Read` tool. Study the plate first, then the render. Do not write any output until both have been read.
2. **Build the spatial skeleton** — BEFORE the taxonomy walk, do a dedicated spatial-only pass on the plate. See *Spatial skeleton* below. This is mandatory and cannot be skipped.
3. **Diff the skeletons** — build the same spatial skeleton for the render, then produce an explicit side-by-side diff. Layout mismatches must surface here as numbers, not impressions.
4. **Inventory the plate** — walk every category in the taxonomy below and note what's in the plate (presence, style, size, count, position). Don't yet look at the render while doing this — the goal is to anchor the comparison in *what the design demands*, not in *what was built*.
5. **Inventory the render** against the same taxonomy.
6. **Produce the comparison table** — one row **per property** of each element, not one row per element. See *Property decomposition* below. Columns: Category / Element — Property / Plate / Port / Status / Notes. Status uses ✓ match, ~ partial, ✗ miss, + extra-not-in-plate.
7. **Score by category** — pass / minor / major / missing. Sum to an overall grade.
8. **Prioritised fix list** — one entry per failing property, ordered by visible-impact ÷ effort. Top item first. Each entry must name the exact property and the exact change needed.
---
## Spatial skeleton
This step exists because the taxonomy walk is category-driven and naturally reads screens semantically. Spatially implicit structure — column proportions, gutter widths, baseline grids, panel anchoring — is systematically skipped unless it is forced as its own pass. Do this pass first, in isolation, before touching any other category.
### How to build a skeleton
Describe the screen as a series of **regions and proportions only**. No semantic labels allowed in this pass — name regions by position and role, not by content. Use approximate percentages of screen width/height.
Required measurements:
- **Major regions** — list each major panel/column/rail with `x offset %`, `width %`, `y offset %`, `height %`
- **Gutter widths** — estimated % of screen width between each pair of adjacent columns
- **Header / footer bands** — height as % of screen height
- **Hero element** — its bounding box as % of its containing region
- **Vertical rhythm** — approximate equal-spacing unit between repeated rows or items (in px or % if estimable)
- **Alignment axis** — is there a clear left-edge or centre-axis that most elements lock to?
Example skeleton output (abbreviated):
```
PLATE SKELETON
- Left column: x=0%, w=34%, full height
- Right column: x=36%, w=64%, full height
- Gutter: ~2% between columns
- Header band: y=0%, h=11%
- Hero card: within right column, y=14%, h=72%
- Footer strip: y=90%, h=10%
- Vertical rhythm (list rows): ~9% height each, ~1.5% gap
- Primary alignment axis: left edge at x=5% (both columns)
```
### Skeleton diff
After building both skeletons, produce a table:
| Region | Plate | Port | Delta | Layout status |
|---|---|---|---|---|
| Left column width | 34% | 25% | −9pp | ✗ |
| Right column width | 64% | 73% | +9pp | ✗ |
| Header height | 11% | 11% | 0 | ✓ |
| Hero card top | 14% | 18% | +4pp | ~ |
| Row rhythm | ~9% | ~12% | +3pp | ~ |
**Layout grading rules** (applied to skeleton diff, independent of category scores):
- Any region delta ≥10 percentage points → automatic **major** on Composition, regardless of how it looks at a glance.
- Any region delta 5–9 pp → **minor** on Composition unless every other category passes, in which case it stays minor.
- Delta <5 pp → acceptable; does not penalise Composition on its own.
- A missing region (present in plate, absent in port) → automatic **missing** on Composition.
- Vertical rhythm off by >25% of the plate rhythm unit → **minor**; off by >50% → **major**.
These rules are **hard overrides**. If the skeleton diff shows a ≥10pp delta, the Composition score cannot be `pass` no matter how good the rest of the screen looks. The skeleton numbers take precedence over visual impression.
### Grading discipline on layout specifically
Layout proportion deviations are **not a matter of taste**. Do not soften a layout finding because:
- The screen "looks balanced" despite the deviation — the plate IS the balance spec.
- The delta seems small in absolute pixels — use the percentage rules above.
- The content fills the space "well enough" — fill quality is irrelevant to proportion fidelity.
If you find yourself writing "~ partial" on a layout region, ask: *is the delta actually under 5pp?* If not, it is `✗`.
---
## Property decomposition
This is the key discipline that prevents coarse rows from hiding real failures.
**The rule:** `~ partial` is not a permitted status on a multi-property element. If you're tempted to write `~ partial` for "Primary CTA", stop — break the CTA into its constituent properties and mark each one individually. Partial match on what, exactly?
Every complex element must be decomposed into atomic property rows. The format is `Element — property`. Examples:
```
| Controls | Primary CTA — shape | pill | pill | ✓ | |
| Controls | Primary CTA — fill | oxblood | oxblood | ✓ | |
| Controls | Primary CTA — gilt stroke | present | absent | ✗ | missing inset ring |
| Controls | Primary CTA — width | ~240 px | ~200 px | ~ | 17% too narrow |
| Controls | Primary CTA — label caps | ALL CAPS | Title Case | ✗ | wrong register |
| Controls | Primary CTA — position | x=58% | x=58% | ✓ | |
```
### Property sets per element type
Use these as the minimum property set. Add rows for any additional properties visible in the plate.
**Button (primary or secondary):** shape, fill, border/stroke, label register, label text, size (w×h), position (x%, y%)
**Card / dialog:** outer fill, outer border stroke+colour, drop shadow, inner inset stroke, corner ornaments, header band
**Typography element:** font role (script/block/body), size, colour, case, tracking, anchor (left/centre/right), position (x%, y%), visible/clipped
**Character figure:** which pose, facing direction, scale (% of column height), crop tightness, x-position in column
**Data tile / plaque:** background fill, top stripe colour, border, value text size+colour, label text size+colour, icon present/absent
**Backdrop:** type (SVG/Graphics/none), saturation (screened back / full), linen overlay present/absent, coverage (full-bleed / card-only)From pilotso11/pilotso11-skills, MIT.
More from pilotso11/pilotso11-skills
- 0.474score
screen-decomposition
pilotso11
Read a locked sample plate and produce an implementation spec — a buildable decomposition of every visual element into its constructor call, layout coords…
SkillCFreshness: CClaude Code +9 - 0.474score
screen-tweaking
pilotso11
Fix a screen port one property at a time, verifying each change against the plate before moving on.
SkillCFreshness: CClaude Code +9 - 0.469score
hello
pilotso11
Use when the user greets you (says "hi", "hello", "hey", etc.) to confirm the pilotso11-skills plugin is installed and active.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 23, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/pilotso11/pilotso11-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pilotso11
- 0.474score
screen-decomposition
pilotso11
Read a locked sample plate and produce an implementation spec — a buildable decomposition of every visual element into its constructor call, layout coords…
SkillCFreshness: CClaude Code +9 - 0.474score
screen-tweaking
pilotso11
Fix a screen port one property at a time, verifying each change against the plate before moving on.
SkillCFreshness: CClaude Code +9 - 0.469score
hello
pilotso11
Use when the user greets you (says "hi", "hello", "hey", etc.) to confirm the pilotso11-skills plugin is installed and active.
SkillCFreshness: CClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get screen-comparison running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
screen-comparison skill. Agent Mart. https://agentmart.dev/skills/pilotso11-screen-comparison (last updated 2026-10-24)