Install any skill in seconds. Free to start, no credit card required.
Get Started Free →General-purpose desktop web prototype. Single self-contained HTML file built by copying the seed `assets/template.html` and pasting section layouts from `references/layouts.md`. Default for any landing / marketing / docs / SaaS page when no more specific skill matches.
.claude/skills/nexu-io-web-prototype/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 185% | 0% |
| case-11 | ✓→✗ | ▼ Worse | 13% | 0% |
| case-16 | ✓→✗ | ▼ Worse | 13% | 0% |
Produce a single, self-contained HTML prototype using the bundled seed and layout library — not by writing CSS from scratch. The seed already encodes good defaults (typography, spacing, accent budget). Your job is to compose it.
web-prototype/
├── SKILL.md ← you're reading this
├── assets/
│ └── template.html ← seed: tokens + class system + chrome (READ FIRST)
└── references/
├── layouts.md ← 8 paste-ready section skeletons
└── checklist.md ← P0/P1/P2 self-reviewassets/template.html end-to-end — at minimum through the <style> block. The class inventory at the top of references/layouts.md lists every class that must be defined there; if one is missing, add it to <style> rather than re-defining it inline on every section.references/layouts.md so you know which section skeletons exist. Don't write a section type that isn't covered — pick the closest layout and adapt.:root variables in the seed; don't introduce new tokens.Choose one kebab-case artifact slug before composing the page. Use assets/template.html as the seed for the final artifact HTML.
Do not write a project-root HTML draft with file-write before emitting the final <artifact>. The live-artifact output is the canonical HTML file for this generation turn; an extra index.html, cast.html, or brief-derived draft can be stranded beside it as an orphan.
Replace the six :root variables with the active design system's tokens. Replace the page <title> and the topnav brand.
Pick layouts before writing copy. Default rhythms (from layouts.md):
| Page kind | Default rhythm | |---|---| | Landing | 1 hero → 3 features → 4 stats or 5 quote → custom split → 6 cta | | Marketing / editorial | 1 hero-center → 7 log list → 6 cta | | Pricing | 1 hero-center → 8 comparison table → 6 cta | | Docs index | 1 hero-center → 7 log list (sections of docs) → 6 cta |
State the chosen list in one sentence to the user before writing — they can redirect cheaply now and not after 200 lines of HTML.
For each chosen layout, copy the <section> block from layouts.md into <main id="content"> of the artifact HTML. Replace bracketed [REPLACE] strings with real, specific copy from the user's brief. No filler — if a slot is empty, the section is the wrong choice; pick a different layout.
Run through references/checklist.md top to bottom. Every P0 item must pass before you move on. P1 items should pass; P2 are bonus.
Wrap the completed HTML in <artifact> tags using the artifact slug as the identifier. One sentence before describing what's there. Stop after </artifact>.
.ph-img class — never link to a stock photo CDN.data-od-id on every <section> so comment mode can target it.<artifact identifier="kebab-case-slug" type="text/html" title="Human Title">
<!doctype html>
<html>...</html>
</artifact>OpenDesign derives the canonical HTML artifact from this identifier. Do not also write another root HTML file for the same generation turn.
One sentence before the artifact. Nothing after.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 37,746 | 62,219 | +65% | 1 | 1 | 0% | 8,272 | 9,304 | +12% | 0 | 0 | — |
case-02 | fail→fail | 36,734 | 37,799 | +3% | 1 | 1 | 0% | 8,256 | 9,288 | +13% | 0 | 0 | — |
case-03 | fail→fail | 39,124 | 37,272 | -5% | 1 | 1 | 0% | 8,262 | 9,294 | +12% | 0 | 0 | — |
case-04 | fail→fail | 38,169 | 46,601 | +22% | 1 | 1 | 0% | 8,240 | 9,272 | +13% | 0 | 0 | — |
case-05 | fail→fail | 37,864 | 37,036 | -2% | 1 | 1 | 0% | 8,245 | 9,277 | +13% | 0 | 0 | — |
case-06 | pass→pass | 38,958 | 35,265 | -9% | 1 | 1 | 0% | 8,229 | 9,261 | +13% | 0 | 0 | — |
case-07 | fail→pass | 37,436 | 36,394 | -3% | 1 | 1 | 0% | 8,240 | 9,272 | +13% | 0 | 0 | — |
case-20 | pass→fail | 15,535 | 43,247 | +178% | 1 | 1 | 0% | 3,249 | 9,267 | +185% | 0 | 0 | — |
case-08 | fail→fail | 39,719 | 37,470 | -6% | 1 | 1 | 0% | 8,231 | 9,263 | +13% | 0 | 0 | — |
case-09 | fail→fail | 37,963 | 38,366 | +1% | 1 | 1 | 0% | 8,220 | 9,252 | +13% | 0 | 0 | — |
case-10 | fail→fail | 38,819 | 41,055 | +6% | 1 | 1 | 0% | 8,218 | 9,250 | +13% | 0 | 0 | — |
case-11 | pass→fail | 38,484 | 40,149 | +4% | 1 | 1 | 0% | 8,220 | 9,252 | +13% | 0 | 0 | — |
case-12 | pass→pass | 40,469 | 35,966 | -11% | 1 | 1 | 0% | 8,250 | 9,282 | +13% | 0 | 0 | — |
case-13 | fail→fail | 37,310 | 37,557 | +1% | 1 | 1 | 0% | 8,249 | 9,281 | +13% | 0 | 0 | — |
case-14 | pass→pass | 40,904 | 39,044 | -5% | 1 | 1 | 0% | 8,234 | 9,266 | +13% | 0 | 0 | — |
case-15 | pass→pass | 38,655 | 37,098 | -4% | 1 | 1 | 0% | 8,240 | 9,272 | +13% | 0 | 0 | — |
case-16 | pass→fail | 37,609 | 38,579 | +3% | 1 | 1 | 0% | 8,246 | 9,278 | +13% | 0 | 0 | — |
case-17 | fail→pass | 38,277 | 36,328 | -5% | 1 | 1 | 0% | 8,224 | 9,256 | +13% | 0 | 0 | — |
case-18 | pass→pass | 36,778 | 38,040 | +3% | 1 | 1 | 0% | 8,236 | 9,268 | +13% | 0 | 0 | — |
case-19 | fail→fail | 39,321 | 40,920 | +4% | 1 | 1 | 0% | 8,218 | 9,250 | +13% | 0 | 0 | — |
case-21 | pass→fail | 11,896 | 37,613 | +216% | 1 | 1 | 0% | 2,505 | 9,250 | +269% | 0 | 0 | — |
case-22 | pass→pass | 10,991 | 39,439 | +259% | 1 | 1 | 0% | 1,896 | 9,260 | +388% | 0 | 0 | — |
case-23 | pass→fail | 10,465 | 37,034 | +254% | 1 | 1 | 0% | 1,957 | 9,252 | +373% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of -13 percentage points is the difference between those two pass rates over the 23 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.