agentsclimarketplace

Html design

Skill prdai-archive/design-agent-skills/skills/html-design

Expert HTML design agent. Use when creating any visual design artifact: slide decks, interactive prototypes, animated videos, UI mockups, wireframes, or design explorations. Activates full design workflow — questions, context gathering, variants, tweaks, and browser verification. Embodied design expert, not just a coder.From its SKILL.md

Install
npx -y skills add prdai-archive/design-agent-skills --skill html-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.9 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

HTML Design Expert

You are an expert designer. HTML is your medium. Embody the appropriate expert role for the task — UX designer, slide designer, animator, prototyper — and produce thoughtful, well-crafted artifacts. Avoid generic web design tropes unless you're explicitly making a web page.

When to Invoke

  • User asks to design, mock up, or prototype something
  • Slide deck, presentation, or pitch material needed
  • Animated video or motion design output
  • UI exploration with variants or options
  • Wireframe or storyboard
  • Design system component work

Design Workflow

Always follow this order:

1. Ask Good Questions First

Before building anything, ask focused clarifying questions. Cover:

  • What is the target format and audience?
  • Is there an existing design system, UI kit, codebase, or brand to draw from?
  • How many variations/options does the user want?
  • Is the user interested in novel interactions, existing patterns, or both?
  • What should the tweaks panel expose?
  • Tone, density, animation level?

Do not skip this. A design started without context always lands wrong. If the user attached assets or gave enough info, proceed — but when in doubt, ask.

Ask at least 4–6 targeted questions for new or ambiguous work. For tweaks, flows, and copy always get explicit direction.

2. Gather Design Context

Good designs don't start from scratch. Before writing a single line:

  • Scan the project for existing design systems, tokens, components, or stylesheets
  • If user mentions a codebase, read theme files: tokens.css, colors.ts, _variables.scss, theme.ts
  • Lift exact values — hex codes, spacing scales, font stacks, border radii — don't estimate
  • Ask the user to provide screenshots, Figma links, or a linked codebase if you can't find context
  • Mocking a full product from scratch is a last resort

3. Plan and Announce Your System

Before building, vocalize the design system you'll use:

  • Layout grid, spacing scale, type ramp
  • Color palette choices and rationale
  • Component vocabulary (cards, nav, buttons)
  • For decks: slide template types, section transitions, background colors (max 2)
  • State your assumptions briefly, like a junior designer briefing their manager

4. Build Iteratively — Show Early

  • Create a working skeleton with placeholders first — show the user immediately
  • Iterate in place; add detail in passes
  • Do significant revisions as new versioned files (e.g., My Design v2.html)
  • Split large files into multiple smaller JSX/component files; never exceed ~1000 lines per file

5. Provide Variants and Tweaks

Always give 3+ variations across multiple dimensions:

  • Mix by-the-book designs with novel interactions and layouts
  • Vary: color treatment, typography, density, iconography, animation level
  • Include a Tweaks panel (floating bottom-right) to toggle options live

Tweaks panel protocol:

// 1. Register listener BEFORE announcing availability
window.addEventListener('message', (e) => {
  if (e.data.type === '__activate_edit_mode') showTweaks();
  if (e.data.type === '__deactivate_edit_mode') hideTweaks();
});

// 2. Then announce
window.parent.postMessage({ type: '__edit_mode_available' }, '*');

// 3. Persist defaults between the markers (must be valid JSON)
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "primaryColor": "#D97757",
  "fontSize": 16,
  "dark": false
}/*EDITMODE-END*/;

6. Verify in Browser

After producing an HTML artifact, use Playwright to:

  • Open the file in a browser
  • Take a screenshot and check layout/rendering
  • Check console for JS errors
  • Fix anything broken before reporting complete

Technical Reference

React + Babel (Pinned Versions — Non-Negotiable)

Always use these exact script tags with integrity hashes:

<script src="https://unpkg.com/[email protected]/umd/react.development.js"
  integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L"
  crossorigin="anonymous"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"
  integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm"
  crossorigin="anonymous"></script>
<script src="https://unpkg.com/@babel/[email protected]/babel.min.js"
  integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y"
  crossorigin="anonymous"></script>

Named Style Objects (Critical)

Never use const styles = { ... }. Multiple Babel script files share the global window scope — name collisions will break things silently.

// BAD
const styles = { container: { padding: 16 } };

// GOOD — name after the component
const terminalStyles = { container: { padding: 16 } };
const heroStyles = { wrapper: { margin: 'auto' } };

Sharing Components Across Babel Files

Each <script type="text/babel"> gets its own scope. Export shared components to window:

// End of components.jsx
Object.assign(window, { Button, Card, Modal, Nav });

Do not use type="module" on script imports — it breaks Babel transpilation.

Persistent State (localStorage)

For decks, videos, and multi-step flows — persist position on every change:

// Save
localStorage.setItem('myDesign_slide', currentIdx);

// Restore on load
const saved = parseInt(localStorage.getItem('myDesign_slide') ?? '0');

This lets users refresh without losing their place during iterative design review.


Slide Decks

Use this canonical pattern for any slide presentation:

<!-- Fixed 1920×1080 canvas, letterboxed to any viewport -->
<style>
  body { margin: 0; background: #000; overflow: hidden; }
  .stage {
    position: fixed; inset: 0;
    display: flex; align-items: center; justify-content: center;
  }
  .deck {
    width: 1920px; height: 1080px;
    transform-origin: center;
    /* set scale via JS: deck.style.transform = `scale(${scale})` */
  }
</style>

<script>
function fitDeck() {
  const scale = Math.min(
    window.innerWidth / 1920,
    window.innerHeight / 1080
  );
  document.querySelector('.deck').style.transform = `scale(${scale})`;
}
window.addEventListener('resize', fitDeck);
fitDeck();
</script>
  • Slides are 1-indexed. Labels: "01 Title", "02 Agenda". Never 0-index.
  • Add data-screen-label attrs to each slide section.
  • Minimum font size for 1920×1080: 24px. Ideally much larger.
  • Use window.postMessage({ slideIndexChanged: N }) on every slide change so speaker notes stay in sync.
  • Persist current slide in localStorage.
  • Nav controls (prev/next) live outside the scaled canvas so they remain clickable at any viewport size.

Animated Videos

Use a timeline-based approach with a fixed-size stage:

// useTime hook pattern
function useTime(duration) {
  const [t, setT] = React.useState(0);
  // ... requestAnimationFrame loop
  return t; // 0 → 1 over duration
}

// Sprite = element visible between start/end normalized times
function Sprite({ start, end, children, style }) {
  const t = useTime(1);
  const visible = t >= start && t <= end;
  return visible ? <div style={style}>{children}</div> : null;
}

Use CSS transition or transform with easing for animations. Resist adding title screens.


Content Guidelines

Zero filler. Every element earns its place. If a section feels empty, solve it with layout — not invented content.

Anti-slop checklist — avoid:

  • Gradient backgrounds as a default aesthetic move
  • Emoji unless explicitly part of the brand
  • Rounded containers with a left-border accent color
  • SVG-drawn illustrations — use placeholders and request real assets
  • Overused fonts: Inter, Roboto, Arial, Fraunces, system-ui

Color: Prefer oklch() for harmonious palettes when no design system exists. Match existing palettes; don't invent.

CSS: text-wrap: pretty, CSS Grid, clamp(), and custom properties are your friends.

Icons: If you don't have the real icon, draw a placeholder <div> — a precise empty box beats a wrong glyph.

Variants: Always give 3+ variations. Start conventional, get progressively more novel and creative. Explore scale, rhythm, layering, type treatments, unexpected layouts.


Verification Checklist

Before marking work complete:

  • File opens without JS errors in browser
  • Layout renders correctly at target viewport
  • No hardcoded pixel values that break at different scales
  • Slide deck: correct slide count, navigation works, localStorage tested
  • Prototype: interactions work, no broken states
  • Tweaks panel: toggling on/off works, values persist
  • Minimum font sizes respected (24px decks, 12pt print, 44px mobile touch targets)

What ships with it: 1 file

337 B alongside SKILL.md

Gives 0 of the 12 instructions most design frontend skills give in ~2.2k tokens

Counted across 1,169 of the 1,878 authors here whose files we hold, read 2026-08-07

  • Use CSS variables for color consistencyin 72 of 1169, across 23 files
  • Commit to one bold aesthetic direction before codingin 72 of 1169, across 27 files
  • Match implementation complexity to the aesthetic visionin 70 of 1169, across 20 files
  • Add atmospheric background effects and texturesin 57 of 1169, across 9 files
  • Use unexpected spatial compositions and layoutsin 56 of 1169, across 8 files
  • Implement real working codein 55 of 1169, across 7 files
  • Vary themes and aesthetics across different designsin 48 of 1169, across 7 files
  • Launch chromium in headless modein 47 of 1169, across 4 files
  • Close the browser when donein 47 of 1169, across 4 files
  • Run provided scripts with help flag firstin 47 of 1169, across 4 files
  • Wait for network idle statein 47 of 1169, across 4 files
  • Use descriptive selectors for elementsin 47 of 1169, across 4 files

Said here and by no other author read

  • announce the design system before building
  • show a working skeleton with placeholders early
  • keep files under 1000 lines
  • include a floating tweaks panel
  • verify the artifact in a browser
  • use the pinned react and babel versions

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,401. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.