Prototype
This skill explores one idea as several working variants. The user compares them in the running app, picks one and the others are deleted.
Real code, then gone
Each variant is real code with real data in the real app, not a mockup. Build the number asked for. With no number, build five that differ in approach, not only in colour. The page is temporary and goes once a variant is picked.
Every state of an existing component on one page belongs to
. Copying an outside reference belongs to
.
1. Restate the idea
Write the idea in one line and the axis the variants explore, such as layout, motion or density. Ask one question when the idea has two readings.
2. Build real variants
Use the project's components and real or realistic data. A static image or lorem ipsum is
or
.
3. Put them on one page
Show every variant on one route. Separate pages per variant is
. Copy
switcher.js into the app beside that route and load it once, as its header comment shows. Wrap the variants in
, one child each with
and an optional
.
The switcher ships with the skill, so write the variants only. A switcher, tab row or grid written from scratch is
prototype-shipped-switcher
.
Give each a short label that says how it differs. "Variant 3" is
. Use the app's current theme unless the user asked for both. Light and dark side by side by default is
.
4. Open it
Start the dev server, open the page and look at every variant once. A path in the reply with nothing opened is
.
5. Prune after the pick
The bar's Pick button copies a line such as "Pick Inline Filters from /prototypes/filters" for the user to paste back. When the user picks, move that variant into the product. Delete the losing variants with the route,
and its type declaration. Leftover variants after a pick is
prototype-prune-after-pick
.
The pair
Every check is a pair. The broken line sits beside the line that replaces it.
| Rule | Broken | Replacement |
|---|
| A static mockup image | The variant built from project components |
| Lorem ipsum rows | Real or realistic rows |
| | |
| Five routes, one per variant | One route with a switcher |
prototype-shipped-switcher
| A switcher written from scratch | loaded, only the variants written |
| Light and dark side by side, unasked | The app's current theme |
| "Built at " | The page opened, every variant checked |
prototype-prune-after-pick
| Four losing variants left in | The pick shipped, the rest deleted |
Reporting
Severity. is a variant that does not run, or losing variants left after a pick.
is placeholder data, unlabelled variants, variants that differ only in colour or a hand-built switcher.
is a page that was not opened for the user.
Format. One finding per root cause:
file:line - [rule-id] what is wrong
Then a
summary.
when any
remains,
otherwise. Mark every variant you could not open as
.