skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
bitjaru/styleseed71 installs

ss-dial

Turn ONE design axis up or down as a coordinated, deterministic transform — "denser", "sharper corners", "more muted", "bolder", "flatter", "livelier". Not a vibe the model reinterprets each time; a defined ramp that moves many tokens together, respects the guardrails (8px grid, a11y floors, single accent, nested-radius), updates the lock, and re-runs the gate. Use this when a human saying "more X" would otherwise get an inconsistent one-off.

How do I install this agent skill?

npx skills add https://github.com/bitjaru/styleseed --skill ss-dial
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The 'ss-dial' skill is a design automation tool that manages UI design axes like density, radius, and color. It performs deterministic transformations by reading a configuration file (STYLESEED.md) and updating design tokens across the project. No malicious patterns or security risks were identified.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

Dial an axis

"Make it more minimal" is something you can just say — the model already reads plain language. A skill only earns its place where one word must move many tokens at once, in a coordinated way, without breaking a rule — and where doing it by hand gives an inconsistent result (some tokens changed, the grid broken, a second accent introduced). That's what /ss-dial is: not interpretation, but a deterministic ramp + guardrails + re-gate.

If the request is a mood word ("more premium", "more editorial", "more playful"), that's not one axis — it's a combination of positions across several axes. Use /ss-restyle <preset> for those. /ss-dial moves exactly one axis.

When NOT to use

  • A vague vibe the model can just apply from words ("cleaner", "nicer") → don't wrap it in a skill; say it.
  • A named aesthetic (Swiss / editorial / brutalist) → /ss-restyle (a preset of dial positions).
  • Changing the accent hue itself (rebrand) → edit the lock's Key color directly, then re-derive.
  • No STYLESEED.md lock yet → run /ss-build or /ss-setup first; there's nothing to dial from.

The mechanic (every axis)

  1. Read STYLESEED.md — find the axis's current position (Mood/Density/Radius/Elevation/ Type scale/Font weight/Motion fields). If the lock doesn't record it, infer it from the code.
  2. Move ONE position in the requested direction on that axis's ramp (below). "more X" = one step; an explicit target ("density: dense") jumps straight there. Clamp at the ends — you cannot dial past dense or below airy. If already at the end, say so and stop (this is why "each use makes it more" is bounded, not runaway).
  3. Apply the whole coordinated token set for the new position across every file that uses those tokens — not just the one component in view. This is the point: system-wide, consistent.
  4. Respect the guardrails (each axis lists its own). Never break a Golden Rule to satisfy a dial — if "denser" would push a touch control below 44px, stop at the floor and note it.
  5. Update STYLESEED.md with the new position (so it persists and the next prompt obeys it).
  6. Re-run the Quality Gate (/ss-score, loop to ≥ 80). A dial that drops the score below 80 is reverted or fixed, not shipped. Report: axis, old → new position, score.

The axes

1. Density — spacing rhythm + internal padding + type/line-height, together

Ramp: airy → comfortable → compact → dense. The page gutter stays px-6/mx-6 always (fixed rule); density moves the vertical rhythm, card interior, and reading scale.

PositionSection space-yCard paddingGrid gapBody line-heightType scale
airyspace-y-10p-8gap-8leading-relaxedone step up (desktop-larger)
comfortablespace-y-6p-6gap-6leading-normalsurface default
compactspace-y-4p-4gap-4leading-normalsurface default, tighter headings
densespace-y-4p-4gap-3 (12px half-step)leading-snug on datadata-table scale

Guardrails: stay on the 8px grid (only p-2/4/6/8, gap-* on grid or the 4px half-step — never invent p-5/gap-2.5); touch controls stay ≥ 44px even at dense (shrink padding, not tap targets); body never drops below the surface floor (desktop 16px). Dense is for data-heavy surfaces; don't dense-ify a marketing landing.

2. Hierarchy contrast — the size/weight gap between levels

Ramp: subtle → balanced → strong → dramatic. Moves the ratio between the hero and the body, plus display tracking.

PositionHero : body size ratioDisplay weightDisplay tracking
subtle~2:1600-0.01em
balanced~2.5:1700-0.02em
strong~3.2:1700–800-0.02em
dramatic~4:1800-0.03em

Guardrails: pick sizes from the Font Size table only (don't invent); body stays at the surface floor regardless; keep the number-to-unit 2:1 pairing intact; one focal element still dominates (dialing contrast up must not create two competing heroes).

3. Radius — the corner personality (categorical swap, not a slider)

Ramp: sharp ↔ soft ↔ pill. Swaps the whole mapping table as one set, never one component.

PositionControls (btn/input/chip)CardsInner panels
sharp2–4px6–8px4–6px
soft8–10px12–16px10–12px
pillfull (9999px)20–24px14–16px

Guardrails: one personality everywhere (sharp cards + pill buttons is the exact mixed-personality tell we ban); nested elements still follow inner = outer − padding.

4. Elevation / depth — how surfaces separate

Ramp: flat → subtle → layered → lifted. Light and dark speak different languages — apply the one that matches the theme.

PositionLight (shadow, ≤8% opacity)Dark (tonal + hairline)
flatno shadow; 1px hairline borderpage = card tone; hairline only
subtle0 1px 3px /4%one surface step + hairline
layered0 1px 3px /4% + 0 4px 12px /8%two surface steps + hairline
liftedadd 0 8px 24px /8% on raisedthree steps; brightest = highest

Guardrails: never exceed ~8% shadow opacity in light; never a drop shadow in dark (use the tonal surface ramp + hairline borders); one shadow language / one light direction across the whole UI.

5. Color — saturation and temperature (two sub-dials, accent stays single)

saturation: muted ↔ balanced ↔ vivid · temperature: cooler ↔ neutral ↔ warmer. Shifts the one accent in HSL and re-derives its tints; may nudge the neutral greys' chroma. Does NOT add a hue.

Sub-dialMoveApplies to
more-mutedaccent saturation −10–15% (HSL S)--brand + re-derive bg-*-tint at 10–14% alpha
more-vividaccent saturation +10–15%same
warmerhue toward 20–40° (amber/terracotta)--brand; optionally greys +2–4% warm chroma
coolerhue toward 200–220° (blue/teal)--brand; greys toward cool

Guardrails: still one accent — this shifts the existing hue, never introduces a second; tints follow the 10–14%-alpha-over-card formula (light + dark); accent keeps ≥4.5:1 where it carries text; a warm/cool grey shift must stay near-neutral (chroma ≤ ~6%), not become a tint.

6. Font weight — the weight ramp

Ramp: light → regular → bold. Shifts the whole weight scale up/down by one notch, keeping the spread (so hierarchy survives).

PositionBodyLabels / navHeadings / metrics
light400400–500600
regular400500700
bold500600700–800

Guardrails: keep contrast between levels (don't make everything one weight — that flattens hierarchy); body ≤ 500 for readability at length; CJK weight does the work tracking can't.

7. Motion energy — seed + durations

Ramp: still → calm → lively → energetic. Swaps the motion seed and scales durations globally.

PositionSeedDurationsCharacter
stillnoneinstant / color-onlyno entrance motion
calmSilk / Snap100–200ms, ease-outsmooth, restrained
livelySpring200–350ms, slight overshootresponsive, alive
energeticSpring / Pulse250–400ms, visible springbouncy, playful

Guardrails: numbers, balances, and money never animate at any level; always honor prefers-reduced-motion; scroll-linked/parallax/3D is surface-scoped (§43 — forbidden on app/data surfaces, allowed as the Cinematic tier on marketing/landing pages; scroll-JACKING banned everywhere); motion never delays content or blocks an action.


Rules

  • One axis per call. A mood word ("premium") is a combination/ss-restyle, not this.
  • System-wide, or don't. Applying a position to one component and not the rest re-creates the incoherence this skill exists to prevent. Grep the token across the project and move all of it.
  • Clamp at the ends. Bounded ramp, not an infinite "more" — if already at dense/sharp/ bold, say so and stop.
  • Guardrails beat the dial. Never break a Golden Rule (grid, ≥44px touch, single accent, nested-radius, ≤8% shadow, no dark drop-shadow, font-size table) to satisfy a direction — stop at the floor and tell the user.
  • Persist + re-gate. Write the new position to STYLESEED.md, then /ss-score to ≥ 80. Report axis: old → new and the score. A dial that lowered the score is fixed, not shipped.

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/bitjaru/styleseed/ss-dial">View ss-dial on skillZs</a>