跳到正文
cccskills
免费在 GitHub 公开中文介绍

tweaks

为现有HTML页面添加调节面板,让你直接尝试配色、字号、间距、主题和动画效果。修改即时生效并保存在浏览器中,无需反复请求智能体调整外观。

原文查看原文说明

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 "实时调参".

AI 评分90分/ 100查看安装方法

适用场景

  • 微调落地页配色和间距
  • 演示品牌与设计系统的不同方案
  • 制作可调节外观的独立演示页面

中文介绍

功能

tweaks 为现有HTML页面添加面板,让你直接在页面上调整外观。可以从配色、字号、间距、浅色或深色模式及动画效果中选择所需项目,并与页面一起整合为单个HTML文件。修改即时生效,并按页面分别保存在浏览器的 localStorage 中。

适用场景

适合自行微调落地页,或向他人展示品牌、设计系统的不同方案。也适合制作独立演示页面,让浏览者自己尝试外观设置,无需每次都请求智能体修改。

使用示例

  • “为这个页面添加配色、字号和间距调节面板。”
  • “支持切换浅色和深色模式,并在重新加载后保留设置。”

注意事项

颜色从预设选项中选择。调节项目最多五个,只采用适合内容的项目。页面会遵循浏览器的减少动画设置,并在小屏幕上默认隐藏面板。若要与OpenDesign工具栏联动,必须遵循指定的通信协议或类名。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

客观评估

AI 仅根据 SKILL.md 的内容,从 4 个方面进行了评估。星标数和热度不计入评估。

指令清晰度能否看出何时使用、做什么
A良好资料说明为现有HTML添加调节面板,并列出适用与不适用场景。
步骤具体性步骤、输入输出和示例是否具体
A良好资料明确五类调节值、存储位置、工具栏通信格式和联动类名。
安全性发送数据、删除文件、执行命令等是否有说明
B部分不足资料提供与父页面通信的示例,但未检查接收消息的来源。
安装难易度所需工具和 API 密钥是否少且有说明
A良好使用单个HTML文件和浏览器存储,并说明模板整合步骤及宿主联动条件。

总分按每项 A=25 分、B=15 分、C=5 分相加。 由 AI(OpenAI Codex)于 2026年10月20日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(3)

  • SKILL.md11.2 KB
  • assets/wrap.html14.1 KB
  • example.html24.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

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:

  1. Stage — the original artifact (landing page / deck / dashboard) re-keyed so all visual decisions read from CSS custom properties: --accent, --scale, --density, --mode, --motion.
  2. 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 localStorage keyed 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 window.parent. Tells the toolbar a panel exists; the optional visible reports the panel's initial state so the toolbar toggle starts in sync. Omit visible for the common "panel is already on screen" case (the host treats a missing field as true so the legacy zero-arg message keeps working). Pass visible: false to declare a default-closed panel.
  • When the user closes the panel locally (× button, Esc, etc.), post { type: '__edit_mode_dismissed' }. Toolbar flips to "off".

Host → artifact:

  • { type: '__activate_edit_mode' } — open the panel (setOpen(true)).
  • { type: '__deactivate_edit_mode' } — close the panel (setOpen(false)).

Minimal listener:

window.addEventListener('message', (e) => {
  const t = e?.data?.type;
  if (t === '__activate_edit_mode') setOpen(true);
  else if (t === '__deactivate_edit_mode') setOpen(false);
});
// Or, for a default-closed panel:
//   window.parent.postMessage({ type: '__edit_mode_available', visible: open }, '*');
window.parent.postMessage({ type: '__edit_mode_available' }, '*');
// in your close handler:
const dismiss = () => {
  setOpen(false);
  window.parent.postMessage({ type: '__edit_mode_dismissed' }, '*');
};

Panel may default to open or closed — the host syncs its toggle to whichever state the artifact reports.

Protocol B — class-based (used by assets/wrap.html)

Use this only when you wrap the template verbatim. The artifact ships a .tw-panel element and toggles a .tw-hidden class for visibility. The viewer's iframe bridge (in apps/web/src/runtime/srcdoc.ts) hides the panel on initial paint, watches the class via MutationObserver, and relays state both directions. No JS required in the artifact beyond what the template already includes.

Selectors are fixed: .tw-panel (the panel root) and .tw-hidden (the hidden state). If you rename either, the bridge can't find it.

Anti-pattern

Don't invent a third protocol or rename either set of identifiers. The toolbar toggle only binds to A or B. Custom panels with custom classes and no postMessage will leave the toolbar greyed out.

Implementation primitives

Read assets/wrap.html — it ships the panel + bridge as an inert template. Your job is to:

  1. Take the user's existing artifact HTML.
  2. Lift its accent / mode / spacing / scale into custom properties (search for hard-coded #hex / Npx / Nrem and convert).
  3. Paste the contents into the marked region of wrap.html.
  4. Edit assets/wrap.html's KNOBS array to keep only the knobs you decided are relevant to this artifact. Don't ship 5 if 2 matter.
  5. Patch the STORAGE_KEY to a unique slug (tweaks-<artifact-slug>).

The bridge in wrap.html:

  • Loads localStorage[STORAGE_KEY] JSON on first paint.
  • Applies values as document.documentElement.style.setProperty('--accent', ...).
  • Listens to every form control's change event and writes back.
  • Exposes <kbd>T</kbd> (toggle panel) and <kbd>R</kbd> (reset).

Workflow

Step 1 — Acquire the artifact

Same options as the critique skill:

  1. Project file (index.html in the project folder).
  2. Pasted HTML in the chat.
  3. Generated by you in this turn.

Step 2 — Decide which knobs apply

Read the artifact's CSS first. For each knob, decide yes / no:

  • --accent — yes if the artifact has 1 accent color used ≥ 3 times.
  • --scale — yes if the artifact is type-driven (article, deck, pricing page).
  • --density — yes if the artifact has consistent gap / padding rhythm (deck, dashboard, landing). No for runbooks (already dense).
  • --mode — yes if the artifact has authored dark mode tokens, or you're willing to derive them.
  • --motion — yes if the artifact has any transition / animation worth scaling. No for static reports / critique reports.

Default: 3 knobs is the sweet spot. Five is too busy, one is not worth a panel.

Step 3 — Lift hard-coded values into custom properties

Open assets/wrap.html's <style> block — copy its custom-property naming scheme (--accent, --scale, etc.). In the user's artifact, find every place those concerns live and rewrite:

  • color: #c96442 → color: var(--accent)
  • font-size: 18px → font-size: calc(18px * var(--scale))
  • padding: 24px 32px → padding: calc(24px * var(--density)) calc(32px * var(--density))
  • transition: opacity 200ms → transition: opacity calc(200ms * var(--motion-mult))

If the artifact uses clamp() or vw already, multiply the outer value by the custom property — don't tear apart clamp(...).

Step 4 — Paste into the wrap

Copy the artifact's <style> and <body> into the marked regions of wrap.html. Keep the panel + bridge intact.

Step 5 — Test the loop

Open the result, click each knob at least once, refresh the page, confirm the choice persists. If a knob breaks the layout — remove it, don't ship it.

Output contract

<artifact identifier="tweaks-<artifact-slug>" type="text/html" title="<Artifact Title> · Tweaks">
<!doctype html>
<html>...</html>
</artifact>

One sentence before the artifact ("Wrapped X with a 3-knob tweak panel — accent / scale / mode."). Stop after </artifact>.

Hard rules

  • Don't ship a free color picker — only curated swatches. Users pick bad colors when given freedom; saving them from that is the whole point.
  • Persist by artifact identifier — tweaks-<slug>, not a global key. Two artifacts open in two tabs must not share state.
  • Respect prefers-reduced-motion — default to Off for motion if the user has that set, override only on explicit click.
  • Single-file — no external CSS / JS / fonts beyond the artifact's existing imports. Inline the panel + bridge.
  • Panel hidden by default on viewports < 720px — slide-in drawer via a "T" button at top-right.
  • Don't ship more than 5 knobs. Three is the sweet spot.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

8-bit-orbit-video-template

免费有简介AI 评分 90分

使用Hyperframes的HTML模板制作复古像素风格的三场景视频,替换标题、标签和配色,同时保留场景转换节奏及可重复的动画时序。

  • 制作像素风格的介绍视频
  • 替换三场景视频中的内容
  • 通过HTML预览场景转换
nexu-io/open-design10.3万2026年10月21日 更新

ad-creative

免费有简介AI 评分 80分

为社交媒体广告和搜索广告撰写标题、说明及正文,并反复调整措辞。可用于准备广告文案备选版本,以及检查现有文案并考虑修改方案。

  • 撰写社交媒体广告标题
  • 准备搜索广告说明
  • 修改广告正文措辞
nexu-io/open-design10.3万2026年10月21日 更新

after-hours-editorial-template

免费有简介AI 评分 80分

以深色背景和衬线字体制作时尚杂志风格的三页动态展示,结合文字逐步显现与章节转场,最终生成内嵌CSS和JavaScript的单个HTML文件。

  • 制作时尚杂志风格的动态介绍
  • 用三页展示简短故事
  • 将现有品牌风格融入深色版面
nexu-io/open-design10.3万2026年10月21日 更新

agent-browser

免费有简介AI 评分 100分

通过浏览器查看页面,执行点击、输入、截图和信息提取。主要用于检查OpenDesign的本地预览,以及核查网页应用的运行情况与质量。

  • 检查OpenDesign本地预览
  • 测试网页应用的点击和输入
  • 截取页面或元素图像
nexu-io/open-design10.3万2026年10月21日 更新

ai-music-album

免费有简介AI 评分 80分

用于AI音乐专辑制作,涵盖概念构思、歌词初稿、曲目排序和导出,适合独立专辑实验或品牌音乐企划;完整制作流程需另行安装上游资源包。

  • 策划独立制作的专辑
  • 围绕专辑主题起草歌词
  • 安排专辑曲目顺序
nexu-io/open-design10.3万2026年10月21日 更新

algorithmic-art

免费有简介AI 评分 80分

使用p5.js,根据计算规则与随机数创作生成艺术。固定随机种子即可重现相同画面,适合制作海报、表现动感的静态图像和艺术构图草案。

  • 根据规则制作海报
  • 创作具有动感的静态图像
  • 试验艺术作品的构图
nexu-io/open-design10.3万2026年10月21日 更新

查看 nexu-io 的全部技能

报告此技能的问题