Claude Design 的 make-tweakable 技能:让设计内建一套克制、高影响力的 Tweaks 可调面板
2026/9/8 23:05:06 网站建设 项目流程

Claude Design 的 make-tweakable 技能:让设计内建一套克制、高影响力的 Tweaks 可调面板

【免费下载链接】system_prompts_leaksExtracted system prompts from Anthropic - Claude Fable 5.1, Opus 5, Claude Design, Claude Code. OpenAI - ChatGPT GPT-6-Astra, Codex. Google - Gemini 3.8 Flash, 3.1 Pro, Antigravity. xAI - Grok, Grok Bot, Cursor, Kimi and more! Updated regularly.项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks

导读

make-tweakable是 Claude Design(Anthropic/claude-design 环境)内置的 19 个技能之一,用于保证 Agent 产出的每一个 HTML 设计稿都「支持 Tweaks」——即用户不需要懂代码,就能在宿主提供的侧边调节面板里实时切换配色、布局变体与功能开关。本文以仓库中 make-tweakable/SKILL.md 的技能定义为骨架,结合 claude-design.md 系统提示词与 tweaks-panel.jsx 真实实现源码,讲清"哪些值该被做成可调、怎么调、面板做到多小"三个问题,读完即可在自己的 Design Component 或独立页面中落地一套专业的可调控制。

一、技能本体:三段话定义了全部纪律

make-tweakable属于 Claude Design 内置技能里的Enhance(增强)类目,位于 skills/README.md 表格中,是 11 个 Create 技能之后的增强型入口(user-invocable: true,即用户在斜杠菜单中可以主动调用)。

其 SKILL.md 全文保留了如下提示词原文:

Make sure your design supports Tweaks. If the user tells you what to make tweakable, do that. If not, pick a few high-impact values — key colors, a layout variant, a feature flag, headline copy. Keep the Tweaks panel small and tasteful; hide it completely when Tweaks is off.

虽然只有两句话,但浓缩出四条硬性纪律,全篇将在下文逐一展开:

  1. 默认必须支持 Tweaks:这是交付标准,不是可选项;
  2. 用户指定什么就调什么,否则自行挑选"高影响值",并给出四类推荐——关键色、布局变体、功能开关、主标题文案;
  3. 面板要小且克制(small and tasteful);
  4. Tweaks 关闭时彻底隐藏面板

需要先明确:本仓库中大部分 SKILL.md 是"动词即内容"的精简指令卡(frontmatter 只含name/description/user-invocable,见 skills/README.md),它真正的规格展开在宿主系统提示词与 starter 组件里。下面就以仓库证据逐条还原这条指令背后的完整机制。

二、理解 Tweaks 的前提:它是什么、什么时候不该用

2.1 Tweaks 的本质:宿主渲染出的可调控制

在 claude-design.md 中,"可编辑条目(editable entries)也会以宿主的Tweaks面板形式呈现到独立页面"(第 58 行附近)。也就是说,Claude Design 的设计稿有两种调节途径:

  • 就地直接编辑:任何文本(copy)与任何单一颜色,用户可以在编辑器里直接点选改写,无需经过 Agent;
  • Tweaks 面板:针对"就地编辑做不到的事"——功能行为、备选 UI 形态(alternative UI treatments)、一个能一次性影响多个元素上文案/配色的开关,以及其他"只能靠代码改"的变化。

2.2 分工原则:别把能就地编辑的东西重复做成 tweak

这是 make-tweakable 纪律中最容易被忽略的一条。系统提示词原文(claude-design.md):

Users can already edit any copy text and any single color directly in the editor, so don't add tweaks for those — reserve tweaks for things in-place editing can't do: functional behavior, alternative UI treatments, one flag that changes copy/color across many elements at once, and other code-only changes. Add 2-3 of those by default even when the DC isn't meant for embedding.

关键结论:

  • 面板只承载四种东西:功能行为、备选 UI 形态、全局联动开关、纯代码类变更;
  • 即使设计稿不需要被嵌入,默认也应该追加 2~3 个这种 tweak——它们既是增强用户控制的手段,也是让设计显得"可继续打磨"的信号。

2.3 两种工作模式下的 Tweaks 形态

Claude Design 系统提示词区分两种场景(claude-design.md):

  • 独立页面:Tweaks 由宿主基于 DC 的可编辑条目自动生成(上文第 58 行路径);
  • 嵌入模式(embedding):明确写道"In this mode, 'tweaks' means props on the root Design Component"(第 138 行)。当用户要求把某个东西做成可调时,正确的做法是把它们声明为根组件的 props,宿主会为每个带非空editor的 prop 自动渲染一个 Tweaks 覆盖层——严禁手写一个自制的控制面板("Don't hand-roll a controls panel for these")。

三、落地方式一:通过d_props_json声明可调 props

3.1 props 元数据 schema

当一个 Design Component 打算被别人嵌入、或需要暴露可调项时,需要在<script>{ "editor": "text | color | int | float | range | boolean | enum | null", "default": "…", "tsType": "…", "options": "仅 enum / color 需要", "min": 0, "max": 100, "step": 1, "unit": "px" }

各字段要点(据系统提示词原文整理):

字段说明
editor决定宿主生成哪种控件。color传 3~4 个 hex 字符串或 2~5 色 palette 数组时会渲染成精选 swatch;数值类配合min/max/step/unitenumoptions给选项
default只负责播种编辑器初始值,不是运行时回退值——运行时应写this.props.x ?? …兜底
tsType声明值的类型
section把相关 props 归组到同一个标题下

3.2 修改已有 DC 用dc_set_props

对一个已经存在的 DC 增删可调 props,应调用dc_set_props工具整体替换data-propsJSON(工具定义见 claude-design.md 中 "dc_set_props" 一节)。注意它的输入是完整替换""表示清空),所以修改时要把$preview与所有既有 prop 一起带上。

3.3 两个容易踩的坑

  • default不落入运行时,逻辑类里必须this.props.x ?? default,否则未设 props 时会渲染出undefined
  • "不要发明组件没有读取的 props"——每个声明都必须对应一处真实的读取。

四、落地方式二:独立页面上的 Tweaks 面板(starter 组件)

对非嵌入型、无 DC 逻辑类的独立页面,仓库提供了开箱即用的可复用面板tweaks_panel.jsx。在系统提示词的 copy_starter_component 工具说明中,它被定位为"已经接好宿主协议的 Tweaks 面板外壳",并给出加载顺序:

Load with<script type="text/babel" src="tweaks-panel.jsx"></script>after React, before your app script.

4.1 源码里导出了什么

按 tweaks-panel.jsx 文件顶部注释与底部Object.assign(window, …),导出的完整集合是:

  • 状态与协议useTweaks/TweaksPanel
  • 布局辅助TweakSection(分组标题)、TweakRow(标签行)
  • 控件TweakSlider/TweakToggle/TweakRadio/TweakSelect/TweakText/TweakNumber/TweakColor/TweakButton

4.2 最小可用示例(源码 usage 块原样)

tweaks-panel.jsx 第 16~49 行给出了完整可复制的骨架,以下为节选:

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "primaryColor": "#D97757", "palette": ["#D97757", "#29261b", "#f6f4ef"], "fontSize": 16, "density": "regular", "dark": false }/*EDITMODE-END*/; function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); return ( <div style={{ fontSize: t.fontSize, color: t.primaryColor }}> Hello <TweaksPanel> <TweakSection label="Typography" /> <TweakSlider label="Font size" value={t.fontSize} min={10} max={32} unit="px" onChange={(v) => setTweak('fontSize', v)} /> <TweakToggle label="Dark mode" value={t.dark} onChange={(v) => setTweak('dark', v)} /> </TweaksPanel> </div> ); }

几个值得注意的工程细节(都有源码注释背书):

  • 持久化协议useTweaks内部的setTweak会向宿主postMessage一条__edit_mode_set_keys,宿主据此/*EDITMODE-BEGIN*/…/*EDITMODE-END*/块直接回写进源文件,所以用户拨动的值能跨刷新保留;同时派发同窗口的tweakchange自定义事件供页面内监听。
  • 打开/关闭协议TweaksPanel监听__activate_edit_mode/__deactivate_edit_mode,先注册监听再广播__edit_mode_available(注释明确说明顺序错了宿主开关会静默失效);关闭按钮回发__edit_mode_dismissed让宿主工具栏按钮同步归位。
  • TWEAK_DEFAULTS字面量必须用普通内联<script>/*EDITMODE-BEGIN*/约定)声明,才能被编辑器定位并写回。
  • 控件选择有讲究TweakRadio是 2~3 个短选项的分段控件,单个标签超过约 16/10 字符会自动回退成下拉;颜色永远给 3~4 个精选 swatch 或整组 2~5 色 palette,绝不用自由取色器(见文件头部注释);现有控件是"地板而非天花板",不够时可以在面板内部自建自定义控件

4.3 "隐藏当 Tweaks 关闭"在源码里如何成立

make-tweakable 要求"hide it completely when Tweaks is off"。在组件实现中:TweaksPanel内部open状态初始为false,只有收到宿主的__activate_edit_mode才置真,而if (!open) return null;(tweaks-panel.jsx 第 267 行)保证未激活时不渲染任何 DOM——面板在关闭态是彻底消失而非收成一个按钮。这个"关闭即不挂载"的行为就是技能指令的代码级答案。

五、如何挑选"高影响值":key colors / layout variant / feature flag / headline copy

当用户没有明确指出要调什么时,技能要求 Agent 从"高影响力、低数量"的原则出发选值。下面结合仓库中两个真实技能用法解释每一类为什么值得调:

5.1 把字号体系暴露成 Slider(连 CSS 变量)

make-a-deck/SKILL.md 要求讲演稿的字号/间距全部收敛为 CSS 自定义属性(--type-title--gap-*等),并指出"这些值作为 CSS 而非 JS 常量",用户既可以自己在<style>里改一个数字,也可以通过绑定同一变量的 Tweaks 滑块来调。这正是"布局变体/间距密度"类高影响值的最佳载体:改一处,全 deck 生效。

5.2 Feature flag 型:motionEditor 开关

animated-video/SKILL.md 的实践极具代表性:每个动效工程都带 tweaks 面板,且TWEAK_DEFAULTS中必须包含"motionEditor": true并配一个<TweakToggle label="Motion editor">

That key is the host timeline editor's visibility gate: the user flips it in the Tweaks panel to hide or show the editor bar, and the animation, its timing data, and export are untouched either way.

这就是技能里 "a feature flag" 的教科书用法——一个布尔开关控制宿主编辑器条的显隐,动画本体、时间轴数据、导出全部不受影响。

5.3 颜色与 palette 型:联动整页主题

回到 tweaks-panel.jsx 的 usage:primaryColor用精选色板,palette用"整组 2~5 色方案"选项——一次切换带动全局所有引用点变色,正好命中"one flag that changes copy/color across many elements at once"。

5.4 主标题文案(headline copy)

注意一个边界:技能里 headline copy 属于建议的高影响值,但系统提示词同时规定"copy text 已可就地直接编辑,不要为它加 tweak"。合理解读是——单选文案不要做成 tweak,但"在多版 headline 之间切换"(A/B variant 式开关)属于"跨多处/备选形态"范畴,可以做。仓库中 options/SKILL.md 与 hi-fi-design/SKILL.md 展示了类似的取舍逻辑:需要"用户在多版之间反馈挑选"时应走多文件候选路线,而不是把每个小变体都塞进 tweak。

六、"小而克制"的实操清单

综合技能指令与 tweaks-panel.jsx 源码注释,可归纳出以下可直接执行的面板设计规范:

  1. 数量少:默认 2~3 个;每加一个都自问"用户能不能就地改/值不值得为一个值多占一行面板";
  2. 不重复就地编辑能力:单色、单段文案不进面板;
  3. 颜色走精选而非自由取色:3~4 个 hex 或 2~5 色 palette(TweakColor无 options 时才回退原生色板,见其组件实现);
  4. 控件类型匹配语义:2~3 短选项用TweakRadio,多或长的用TweakSelect,布尔用TweakToggle,数值/范围用TweakSlider/TweakNumber(数值支持按住标签横向拖动 scrub);
  5. TweakSection分组并控制总行数,保持"小而克制"的视觉密度;
  6. 关闭即消失:依赖宿主的 activate/deactivate 协议,不要自己做常驻入口;
  7. 自定义控件放面板内:Tweak* 家族没覆盖时,在面板 children 里自建,而不是绕开面板另起炉灶;
  8. 面板是控制面不是内容面:见 make-a-deck/SKILL.md 的例外说明——deck 的幻灯片本体必须保持静态 HTML 可点选直接改写,Tweaks 面板作为"standalone exception"与其并存,不会破坏就地编辑链路。

七、配套工具链与最佳实践闭环

要让一个设计真正"make tweakable",仓库证据指向这样一条完整链路:

  1. 建 DC 时即预留:模板之外,用d_props_json给 props 写editor/default/tsType元数据(独立页面则引入 tweaks_panel.jsx 并提供TWEAK_DEFAULTS);
  2. 改既有 DC:优先dc_set_props整体替换 props 元数据,而不是重写文件;
  3. 宿主自动接管渲染:凡editor非 null 的 prop,宿主渲染 Tweaks 覆盖层——不再手写控制面板;
  4. 运行时兜底:逻辑类renderVals()内统一this.props.x ?? default
  5. 面板关闭态零残留:依赖协议让TweaksPanel直接return null

这套做法与 skills/README.md 记录的技能分工一致:make-tweakable 归类于Enhance,是在 Create 类技能(deck、prototype、wireframe…)产出初稿之后被调用的"打磨阶段"能力。可以说,仓库中 make-a-deck、animated-video、deck-stage.js(其源码 335 行起注释亦可见由 TweaksPanel 开关驱动的用户显隐逻辑)等实现,正是 make-tweakable 指令在不同载体上的三次具体作答。

结语

make-tweakable虽是 Claude Design 技能库中最短的一条指令之一,但它锁定的却是设计交付链上一个高频痛点:如何把"再帮我试试别的配色 / 别的密度 / 开个暗色"这类迭代请求,从每次都走聊天往返,变成用户手边一个即拉即用的面板。按本文整理的四类高影响值(key colors、layout variant、feature flag、headline copy)去选点,用d_props_json或 tweaks_panel.jsx 声明机制去落地,并始终守住"小而克制、关闭即隐藏、不与就地编辑打架"三条边界,即可在 Claude Design 生态内交付自带可调能力的专业设计稿。

【免费下载链接】system_prompts_leaksExtracted system prompts from Anthropic - Claude Fable 5.1, Opus 5, Claude Design, Claude Code. OpenAI - ChatGPT GPT-6-Astra, Codex. Google - Gemini 3.8 Flash, 3.1 Pro, Antigravity. xAI - Grok, Grok Bot, Cursor, Kimi and more! Updated regularly.项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询