mcpField
M
match

match

github.com/playful-designDesign & UI1686 installsUpdated 1w ago
Repository

About match

A skill for rebuilding a referenced interface from its actual source, measured values, and states. It guides developers through matching a requested part and documenting visual differences.

Key features

  1. 01Inspect the original source
  2. 02Read computed styles and measurements
  3. 03Inventory states and transitions
  4. 04Rebuild only the named part
  5. 05Compare captures side by side
  6. 06Report differences and verification status

Use cases

  1. 01Recreate a sidebar from a live reference
  2. 02Match a design file using measured values
  3. 03Check hover, loading, and error states
  4. 04Document remaining visual differences

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/playful-design/router --skill match

After installing, type/matchin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

compare.html
LICENSE
agents/
openai.yaml

Details

From the project README

Match

This skill rebuilds something the user pointed at in another app, site or design. It works from the real source and its measured values, not from memory of how it looks.

One to one means exact values

When the user says "one to one", "exact" or "like this", every value comes from the reference. A guessed value is a finding. When the user says "inspired by", carry the concept and use the project's own tokens.

Use it whenever a message names an app, a URL, a screenshot, a design file or a design reference library. Building with the project's parts belongs to reuse. Checking the result runs in verify.

1. Open the real source

Open the reference itself: the live page, the installed app, the design file or the screenshot. Rebuilding from memory is match-inspect-the-source. When the reference is a native or desktop app, look at that app, not its website. Judging a desktop app by its marketing page is match-same-platform.

2. Read the values

Read computed styles, design tokens or measurements from the source. Write down sizes, spacing, radius, colours, type, durations and easing. A radius chosen by eye is match-read-computed-values.

3. Inventory the states

List every state the reference has: hover, pressed, focus, open, empty, loading, error, selected and disabled. Then list its transitions. Rebuilding the resting state alone is match-inventory-states.

4. Copy the named part

Rebuild the part the user named and nothing around it. Asked for the sidebar, copying the whole layout is match-copy-the-named-part. Carry the idea, not the brand. Their logo, product names and colours stay behind unless the user asked for them. That is match-concept-not-brand.

5. Compare side by side

Put the reference and the rebuild next to each other at the same size and in the same state. Name every difference left. "Looks close" with no comparison is match-side-by-side.

Capture both in every state from step 3 at one size and one device scale factor. Copy compare.html to .match/<part>/index.html, an ignored folder and never the source tree. Write compare.js beside it in the shape its header comment shows, with captures in img/, then open it.

The compare page ships with the skill, so write data only. A page with its own markup or styles is match-shipped-compare. Mark each value Match, Differs or Not Verified. The user sends what is left back with Copy Differences.

The pair

Every check is a pair. The broken line sits beside the line that replaces it.

RuleBrokenReplacement
match-inspect-the-sourceA menu rebuilt from memoryThe live menu opened and inspected
match-same-platformA desktop app judged by its websiteThe installed app opened
match-read-computed-valuesborder-radius: 8px by eyeThe 6px read from computed styles
match-inventory-statesThe resting state onlyHover, pressed, open, empty and error rebuilt
match-copy-the-named-partThe whole layout copied for "the sidebar"The sidebar only
match-concept-not-brandTheir logo and accent colour shippedThe pattern in the project's tokens
match-side-by-side"Looks close"Both at one size, differences listed
match-shipped-compareA compare page written from scratchcompare.html copied, only compare.js written

Reporting

Severity. HIGH is a rebuild made without opening the source, or a missing state the user named. MEDIUM is a guessed value under "one to one", a part copied beyond the ask or a hand-written compare page. LOW is a remaining difference that was found and named.

Format. One finding per root cause:

file:line - [rule-id] what is wrong

Then a Rule | Count | Severity summary. Block when any HIGH remains, Approve otherwise. Mark every value you could not read from the source as Not verified.

Comments

Markdown supported