tweaks
Allows interactive design adjustments. Your agent can create controls to change colors, fonts, and other elements in real time. Useful for exploring layout variations.
What it does
This tool lets you visually adjust a design (like colors, text size, and spacing) using controls in a side panel. Changes apply in real-time and are saved automatically, allowing you to experiment with different versions without re-prompting.
When to use it
- ✓When you like a design but want to fine-tune the last details.
- ✓To show different design versions for others to try out.
- ✓When creating an interactive demo of a project.
Example of what to ask your AI
“I want to see this website with a blue primary color, slightly larger text, and less space between elements.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool inserts a panel with controls (like color pickers and buttons) next to your design. These controls instantly modify the design's code (CSS) and save your preferences so they remain even if you close and reopen the page.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add nexu-io/open-design --skill tweaksOr download just the file:
curl -L https://raw.githubusercontent.com/nexu-io/open-design/main/design-templates/tweaks/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Tweaks Skill · 参数化变体面板
Wrap any HTML artifact with a side panel of live controls that rewrite
CSS custom properties in real time and persist to localStorage.
Inspired by the huashu-design tweak pattern.
What you produce
A single self-contained HTML file with two layers:
- Stage — the original artifact (landing page / deck / dashboard)
re-keyed so all visual decisions read from CSS custom properties:
--accent,--scale,--density,--mode,--motion. - Panel — a fixed sidebar (or drawer on small viewports) with
form controls bound to those custom properties via a tiny
vanilla-JS bridge. Persists every change to
localStoragekeyed by the artifact identifier.
The user can:
- Open the artifact and see the stage rendered with their saved preferences (or sensible defaults).
- Adjust accent / scale / density / mode / motion in the panel and watch the stage update instantly — no rerender.
- Press <kbd>T</kbd> to hide / reveal the panel; <kbd>R</kbd> to reset to defaults.
- Refresh the page — every choice is persisted.
When to use
- The user generated something they like 80% of, and wants to dial in the last 20% themselves.
- You're presenting a design system / brand and want the audience to feel the variants live (instead of you re-running the agent).
- You're shipping a stand-alone demo (e.g. a portfolio piece) and want viewers to play.
When not to use
- One-shot artifacts that won't be iterated on (e.g. a runbook — parameters don't help).
- When the artifact's value is in fixed ratios (e.g. an infographic with carefully balanced data viz — knobs would degrade it).
The 5 standard knobs
Pick a subset that suits the artifact. Don't ship all 5 if only 2 matter — clutter is a regression.
1. --accent — Accent color
A select with 5–8 curated swatches (don't ship a free color picker — the user will pick a bad color and blame you).
const ACCENT_PRESETS = [
{ id: 'rust', val: '#c96442', label: 'Rust' },
{ id: 'cobalt', val: '#2c4d8e', label: 'Cobalt' },
{ id: 'sage', val: '#4a7a3f', label: 'Sage' },
{ id: 'plum', val: '#7a3f6a', label: 'Plum' },
{ id: 'graphite',val: '#3a3a3a', label: 'Graphite' },
];
The artifact uses var(--accent) everywhere it had a hard-coded
accent before. Border / link / pull-quote rule / CTA all flip
together.
2. --scale — Type scale (0.85 / 1.0 / 1.15)
Three settings: Compact (0.85), Normal (1.0), Generous (1.15).
All font-size declarations multiply by var(--scale) via
calc(... * var(--scale)).
Don't go beyond ±15% — beyond that the layout breaks (column flow, breakpoints, line counts).
3. --density — Layout density (Tight / Normal / Roomy)
Three settings that swap the spacing scale: Tight (0.75) /
Normal (1.0) / Roomy (1.4). All padding / gap / margin
declarations multiply by var(--density).
This is the highest-impact knob — it's also the most fragile, so every layout-critical container must declare its base spacing in custom properties before you wrap.
4. --mode — Light / Dark
A 2-state toggle. Sets data-mode="light" vs "dark" on the
<html> element and the artifact's :root selector responds with
two color sets.
If the artifact already has a media-query-based dark mode, replace it with the data-attr version — the user's choice should win over their OS.
5. --motion — Off / Subtle / Lively
Three settings. Maps to a CSS variable --motion-mult that scales
all transition-duration / animation-duration declarations:
- Off —
0s(also disables WebGL canvases / decorative animation). - Subtle —
1.0(the artifact's authored timing). - Lively —
1.6(slower transitions, more visible motion).
Respect prefers-reduced-motion: default to Off if the user has
that set, regardless of stored preference.
Host integration contract (REQUIRED)
The OpenDesign viewer toolbar has a Tweaks toggle that drives panel visibility from outside the iframe. For the toggle to bind to your panel, your artifact must speak one of these two protocols (pick one; don't mix). The toolbar enables itself the moment it sees either signal.
Protocol A — postMessage (recommended for agent-generated artifacts)
Use this when the panel mounts via JS (React, vanilla, anything dynamic).
Artifact → host:
- On mount, post
{ type: '__edit_mode_available', visible?: boolean }to
…
FAQ
Can I change any color?
You can change the accent color and the theme (light/dark). Other colors are set by the original design.
What happens if I close the page?
Your tweak preferences are automatically saved in your browser. When you reopen the page, the design will revert to the last settings you chose.
Can I go back to the original settings?
Yes, there's usually an option to reset the settings to the design's original defaults.
Details
Original description by the author
Wrap any HTML artifact with a side panel of live, parameterized controls — accent color, type scale, density, motion, theme — that rewrite CSS custom properties in real time and persist to localStorage. Lets the user explore variants of a design without re-prompting the agent. Use when the brief asks for "variants", "side-by-side options", "tweak this", "let me adjust", "live knobs", or "实时调参".
repo: nexu-io/open-design
Popularity
- GitHub stars
- 101k
- Ranking position
- #503
- License
- Apache-2.0
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
sample-plugin
Makes your agent create a metadata file for tests. It helps ensure code works correctly in different situations.
nexu-io/open-design
aster-atelier
Helps your agent create an artistic website with a classic look. It uses elegant imagery, blue skies, and serif fonts for a cinematic feel.
nexu-io/open-design
audio-jingle
Makes your agent generate audio like jingles and sound effects. It can create music and voices, saving the result as an audio file.
nexu-io/open-design
blog-post
Helps your agent write long articles or blog posts. It includes space for images, quotes, and author information.
nexu-io/open-design
Similar skills
accessibility
Helps your agent create interfaces that everyone can use. Ensures websites and apps work well for people with disabilities, like those who are blind or have reduced mobility.
affaan-m/ECC
design-system
Helps your agent create a design system from existing code. It extracts visual information and checks for consistency, generating a report and an interactive preview.
affaan-m/ECC
liquid-glass-design
Helps your agent create iOS user interfaces with a 'Liquid Glass' effect. Allows adding dynamic and interactive visual effects in SwiftUI and UIKit.
affaan-m/ECC