Skip to content
Back to skills

Design Measure

ASecurity

Turn a screenshot claim ("unaligned", "too big", "appears too early", "looks broken", "cut off") into numbers before editing anything - the element's box, computed styles, stacking contexts, reveal state and timeline from `pnpm kit probe`, a crop from `pnpm kit shot` - so the fix follows the measurement. Use whenever the owner sends a screenshot or describes what a page looks like, and before touching any layout, spacing, size, z-index or timing.

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 23, 2026
developmentgobash

Security analysis

A100/100

Scanned November 9, 2026

npx -y skills add HKamkar/agentic-cms --skill design-measure --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Design Measure?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Design Measure
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hkamkar-design-measure/badge)](https://www.skillsdirectory.com/skills/hkamkar-design-measure)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: design-measure
description: Turn a screenshot claim ("unaligned", "too big", "appears too early", "looks broken", "cut off") into numbers before editing anything - the element's box, computed styles, stacking contexts, reveal state and timeline from `pnpm kit probe`, a crop from `pnpm kit shot` - so the fix follows the measurement. Use whenever the owner sends a screenshot or describes what a page looks like, and before touching any layout, spacing, size, z-index or timing.
argument-hint: <the claim> [page] [what the element is]
---

# Design measure

A screenshot is a symptom. The diagnosis is a measurement, and the fix is
whatever the measurement says; eyeballing a picture and guessing a utility
costs a round trip per guess. `docs/shot-probe-sheet.md` has the commands.

## Read first

The page's section component and its module (`src/components/<page>/`), and
`STANDARD.md` §8 first — the thing that "looks broken" may be a decision.

## Steps

1. **Name the element** from the claim: the section by its heading
   (`--heading "<words from the screenshot>"`), the element by a selector
   (`--select`), and the width the owner was looking at (a phone screenshot
   is 390 or 393 wide; a desktop one 1440 or 1920).
2. **Measure it**:

   ```bash
   pnpm kit probe /<page> --heading "<heading>" --width 390            # box, computed styles, stacking, pending reveals
   pnpm kit probe /<page> --select "<selector>" --all --width 390       # every instance of the class
   pnpm kit probe /<page> --select "<selector>" --motion --timeline 3000 --every 200   # when it appears, and how far it travels
   pnpm kit shot /<page> --heading "<heading>" --width 390 --scale 2     # the crop, for the owner and for you
   ```

   Against the dev server while iterating: `--url http://localhost:8000`
   (use the hostname the dev server allows; a page that does not hydrate
   measures un-hydrated markup). The page starts seeded from the site's
   `src/config/harness.ts`, so what it shows until a visitor's choice is
   stored (a consent banner) is closed and covers nothing you measure;
   `--no-storage` when the claim is about that banner itself.
3. **Read the numbers against the claim**:
   - "Unaligned" / "a gap": the boxes of the element and its neighbour, in
     `pageBox`; the difference is the fix, in the spacing scale.
   - "Too big" / "too small": `box.width` against the design's number and
     against the viewport; a `%`, `vw` or `max-` rule is usually the cause.
   - "Appears too early" / "never appears": `reveals.pending` after the
     page is prepared (under reduced motion the list must be empty — an
     element still there has a start pose it never leaves), and the
     `--timeline` under `--motion` (when opacity leaves 0, when transform
     reaches `none`).
   - "Cut off" / "behind": `computed.overflow` on the ancestors, and the
     `stacking` chain — the nearest context with a `z-index` decides who
     is on top.
   - "Looks broken" on a small mark: `renderedWidth` against the drawing's
     stroke; thin strokes below ~40 px do not survive; solid shapes do.
   - The same claim on one instance is a claim on the class: `--all`, and
     the other pages the element lives on, before fixing any.
4. **Fix from the numbers**, then measure again the same way; the second
   measurement is the proof the claim is gone, before the `design-proof`
   capture proves nothing else moved.
5. Say what was measured and what it showed, in numbers, before saying what
   changed.

## Verify

The second measurement (step 4) shows the claim gone, and `design-proof`
shows nothing else moved.

End the procedure with `pnpm lint`, 0 failures, after the last edit: it
holds the engines in every file (copy, head, forms, tags, e-mail) and the
library's placement, and a failure is fixed at its source, never by
loosening a rule. <!-- required -->

## Stop for the user

A claim the numbers contradict (the element is where the design says; the
owner may want the design changed); a fix that would touch `STANDARD.md` §8.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.