Communitygithub.com

khanmo97/sanzo-wada-palettes

从和田三造的《配色辞典》中挑选、预览并应用色彩方案(348种组合,159种颜色)到网站、Tailwind/shadcn主题、设计或服饰,并附带实时主题切换按钮供测试。

sanzo-wada-palettes 是什么?

此技能允许开发者和设计师直接通过AI助手使用和田三造的经典《配色辞典》(A Dictionary of Color Combinations)中的348种色彩组合。它从开源的mattdesl/dictionary-of-colour-combinations数据集获取159种颜色的详细数据(包括十六进制、RGB、CMYK、LAB值及组合编号),并按需过滤生成配色方案。用户可按组合编号、颜色数量(2/3/4色)、色温(暖/冷)、饱和度(鲜艳/柔和)或特定颜色(基于LAB色差)来筛选,得到5-10个候选方案。对于网站项目,技能会自动将选中的配色映射为完整的shadcn CSS变量(如--background、--primary等),并生成一个可嵌入根布局的实时主题切换器组件(支持键盘快捷键、localStorage记忆、复制CSS到剪贴板,默认仅在非生产环境或URL带?themes=1参数时显示)。用户确认最终方案后,可将其锁定为默认主题并选择是否移除切换器。该技能适用于Tailwind/shadcn项目、纯CSS网站、平面设计/印刷,甚至服装搭配建议。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/khanmo97/claude-skills/tree/HEAD/skills/sanzo-wada-palettes

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

和田三造配色方案

当用户需要“从和田三造书中”获取配色方案、特定组合编号或用于网站、品牌、设计或服饰的雅致调色板时使用。

1. 获取数据

数据来源:mattdesl/dictionary-of-colour-combinations(MIT许可证)。将其克隆到一个空文件夹中:

mkdir -p /tmp/wada && git clone --depth 1 -q https://github.com/mattdesl/dictionary-of-colour-combinations /tmp/wada/repo

备用方案:在空文件夹中执行 npm install dictionary-of-colour-combinations。

colors.json 是一个包含159种颜色的数组:

{"name": "Hermosa Pink", "combinations": [176, 227, 273], "swatch": 0,
 "cmyk": [0,30,6,0], "lab": [...], "rgb": [249,193,206], "hex": "#f9c1ce"}

配色方案并非直接存储。组合编号N包含所有其 combinations 列表中含有N的颜色:

import json, collections
colors = json.load(open('/tmp/wada/repo/colors.json'))
combos = collections.defaultdict(list)
for c in colors:
    for n in c['combinations']:
        combos[n].append(c)
# combos[n] -> 包含2、3或4种颜色的列表

使用 -I 参数运行Python,并将脚本保留在克隆文件夹之外。

2. 选择配色方案

  • 如果用户给出了组合编号,则直接使用。
  • 否则,根据用户要求进行筛选:颜色数量(2、3或4种)、氛围(根据色调分为暖/冷,根据LAB色度分为柔和/鲜艳)、或他们希望包含的颜色(根据LAB距离最接近)。
  • 为切换器(第4步)挑选5-10个候选方案。如果不是构建网站,则显示3-5个内联色板(十六进制值、名称、组合编号)。
  • 对于UI工作,使用WCAG对比度比例检查文本对比度:正文文本为4.5:1。使用最浅或最深的颜色作为背景。如果某对颜色未达标,则通过从调色板颜色中派生出更浅/更深的色调用于文本,并加以注明。

3. 将每个配色映射为主题

对于Web工作(默认Tailwind/shadcn),将每个候选配色方案转换为一整套shadcn CSS变量:--background、--foreground、--card、--card-foreground、--primary、--primary-foreground、--secondary、--secondary-foreground、--accent、--accent-foreground、--muted、--muted-foreground、--border、--ring。使用项目已使用的颜色格式(HSL或OKLCH)。如果某个调色板没有接近白色或接近黑色的颜色,则从其自身颜色中派生色调和阴影,而不是使用纯灰色。

将所有主题写入一个文件,例如 lib/wada-themes.ts:

export const wadaThemes = [
  { id: 176, name: "Hermosa Pink / ...", swatches: ["#f9c1ce", ...], vars: { "--background": "...", ... } },
  ...
];

4. 添加主题切换器(对于Web工作始终执行)

构建一个客户端组件 components/wada-theme-switcher.tsx,并在根布局中渲染一次。

行为:

  • 右下角一个小型浮动按钮(高z-index,使用自己的固定中性样式,以便在所有主题上保持可读性)。
  • 点击后打开一个面板,列出每个主题:组合编号、名称及其色板(显示为小圆形)。点击一个主题会立即通过在其 vars 上设置 document.documentElement.style 来应用该主题。
  • 上一个/下一个箭头以及键盘快捷键([ 和 ])可快速循环浏览主题。
  • 一个“默认”选项,用于移除内联变量以恢复网站的原始主题。
  • 在 localStorage 中记住所选主题(用 try/catch 包裹),以便在页面导航和重新加载后保留。
  • 一个“复制CSS”按钮,将当前主题复制为可直接粘贴的 :root { ... } 代码块,并带有注释的组合编号,适用于 globals.css。
  • 可见性:当 process.env.NODE_ENV !== "production" 或 URL 包含 ?themes=1 时显示。这样用户可以在实时 Vercel 预览中进行测试并与客户共享链接,而普通访问者永远不会看到它。

当用户选择了一个最终方案(例如“锁定176”)时,将该主题的变量写入 globals.css 作为默认值。询问是删除切换器和 wada-themes.ts,还是将它们保留在 ?themes=1 后面。

其他输出

  • 纯CSS网站: 相同的切换器,使用普通JavaScript,在 :root 上设置自定义属性。
  • 设计/印刷: 列出每种颜色的十六进制、RGB和CMYK值以及组合编号。
  • 服饰/非数字: 用简单语言描述每种颜色及其适合的衣物(基础色、主色、强调色)。

始终引用组合编号,以便用户可以在书中找到它们。

备注

  • 十六进制值是数字化近似值。印刷书籍的CMYK值是参考依据。
  • 颜色名称来自数据集。不要发明日语名称。

相关技能