1. 这个项目到底在解决什么问题
第一次看到 Taste-Skill 这个项目名的时候,我以为又是一个套壳的提示词合集。GitHub 上标星三万多的项目我见过不少,大部分是工具库或者框架,纯做“审美”这个方向的确实少见。点进去翻了翻源码和 issue 区,才意识到它切中的是一个真实存在的痛点:AI 写出来的东西,技术上没毛病,但就是“不好看”。
你让 Claude 或者 Cursor 帮你生成一个落地页的 HTML,代码能跑,布局也对,但配色像是 2005 年的企业官网,字体搭配毫无层次,间距要么挤成一团要么空得发慌。你让它写一段产品文案,语法正确、信息完整,但读起来像说明书,没有节奏感,没有“钩子”。这不是模型能力不够,而是它在训练过程中被喂了太多“正确但平庸”的数据,审美这件事,恰恰是数据里最稀缺的信号。
Taste-Skill 的思路很直接:既然模型本身缺乏审美判断力,那就外挂一套审美规则。它本质上是一组结构化的提示词和评分标准,覆盖了 UI 设计、文案写作、配色方案、排版逻辑等几个维度。你把它挂到 Claude Code、Codex 或者 Cursor 的 system prompt 里,模型在生成内容之前会先过一遍这套规则,相当于给 AI 补了一堂“审美课”。
这个项目适合谁用?如果你是用 AI 辅助写前端代码的开发者,经常觉得生成的 UI “差口气”;如果你是产品经理或者独立开发者,用 AI 写文案总觉得“不够抓人”;甚至你只是用 ChatGPT 帮忙写个周报,希望读起来不那么像机器写的——这套东西都能派上用场。它不挑模型,Claude、GPT、Gemini 都能接,关键是你要知道怎么接、接哪些部分、接完之后怎么调。
我花了大概两周时间,在自己的 Claude Code 和 Cursor 工作流里反复测试了这套规则,踩了一些坑,也总结出一些真正好用的配置方式。下面把我理解到的核心逻辑、实操步骤和避坑经验完整拆开讲一遍。
2. 核心设计思路拆解:为什么是“技能”而不是“提示词”
2.1 从“单次提示”到“可复用技能”的转变
大部分人用 AI 的習慣是:每次需要生成什么东西,临时写一段提示词。比如“帮我写一个登录页面,要好看一点”。这种方式的问题在于,“好看”是一个没有标准的词,模型每次的理解都不一样,输出质量完全靠运气。
Taste-Skill 的做法是把“好看”拆解成可量化、可复用的规则集。它不是一个提示词,而是一个“技能包”——里面包含了多个维度的评分标准和约束条件。你可以把它理解成给 AI 装了一个“审美检查清单”,每次生成内容之前先过一遍这个清单,生成之后再按清单打分,不达标就重来。
这种设计思路的好处是:一致性。不管你今天是让 Claude 写一个按钮的 CSS,还是让 Cursor 生成整个页面的布局,只要 Taste-Skill 挂在 system prompt 里,输出的审美基线是稳定的。不会出现“这次好看下次丑”的情况。
2.2 为什么选择挂载到 Claude Code / Codex / Cursor
这三个工具有一个共同点:它们都支持自定义 system prompt 或者规则文件。Claude Code 有 CLAUDE.md,Cursor 有 .cursorrules,Codex 有自定义指令。Taste-Skill 的设计者显然是研究过这几个工具的加载机制,把规则做成了可以直接嵌入的格式。
另一个原因是,这三个工具的使用场景恰好是“生成内容”最密集的地方。你用 Claude Code 写代码,用 Cursor 改 UI,用 Codex 补全函数——这些场景下,审美规则能直接作用于输出结果,反馈链路最短。如果换成 Chat 界面,每次都要手动粘贴规则,效率太低,很难坚持。
注意:Taste-Skill 的规则文件不要直接复制粘贴到对话里用。对话里粘贴的规则,模型在长上下文里很容易“忘记”,尤其是生成内容超过一定长度之后。正确做法是写进配置文件,让工具在每次请求时自动注入。
2.3 规则的分层结构:从“硬约束”到“软引导”
翻了一遍 Taste-Skill 的源码,它的规则大致分三层:
第一层是硬约束,比如“禁止使用纯黑 #000000 作为背景色”“禁止使用系统默认字体栈”“禁止在按钮上使用纯色填充而不加任何交互反馈”。这些是红线,违反了直接扣分,模型在生成时会优先避开。
第二层是软引导,比如“优先使用 8px 网格系统”“文案开头优先使用动词”“配色方案优先选择低饱和度组合”。这些不是强制,但会作为加分项影响最终输出。
第三层是场景适配,比如“落地页首屏必须包含一个明确的行动号召”“移动端优先考虑拇指操作区域”。这一层是根据具体使用场景动态加载的,不是所有场景都适用。
这种分层设计的好处是灵活。你可以在不同项目里只加载需要的层,避免规则太多导致模型“分心”。比如你只是让 AI 写一段文案,就不需要加载 UI 相关的硬约束。
3. 核心细节解析与实操要点
3.1 规则文件的结构与关键字段
Taste-Skill 的核心文件是一个 Markdown 格式的规则集,大致结构如下:
# Taste-Skill Ruleset v2.1 ## UI Design Constraints - forbidden: pure black background (#000000) - forbidden: default system font stack - required: 8px spacing grid - required: hover state on all interactive elements - preferred: low saturation color palette (HSL saturation < 60%) ## Copywriting Constraints - forbidden: passive voice in headlines - required: action verb in first 5 words - preferred: sentence length < 25 words - preferred: one idea per paragraph ## Scoring Rubric - Visual hierarchy: 0-10 - Color harmony: 0-10 - Typography scale: 0-10 - Copy clarity: 0-10 - Overall: weighted average关键字段说明:
forbidden是硬性禁止项,模型生成时会主动规避,如果规避不了会触发重试。required是必须满足项,不满足会扣分,但不会直接拒绝输出。preferred是加分项,满足越多总分越高。Scoring Rubric是自评机制,模型生成后会自己打分,低于阈值会重新生成。
实操心得:不要一次性把所有规则都打开。我一开始把 UI、文案、配色所有规则全挂上,结果模型生成速度明显变慢,而且经常在“满足规则”和“满足需求”之间纠结。后来改成按场景加载,写代码时只挂 UI 和配色,写文案时只挂文案规则,效率高很多。
3.2 挂载到 Claude Code 的具体操作
Claude Code 的规则加载机制是通过项目根目录下的CLAUDE.md文件实现的。你只需要把 Taste-Skill 的规则内容写进这个文件,Claude Code 在每次会话开始时会自动读取。
具体步骤:
- 在项目根目录创建
CLAUDE.md文件(如果已有,追加内容)。 - 把 Taste-Skill 的规则集粘贴进去,建议放在文件顶部,用
---分隔。 - 在规则后面加上一句加载指令:
Always apply the above taste rules when generating UI code or copy. - 重启 Claude Code 会话,让规则生效。
验证是否生效的方法:让 Claude Code 生成一个简单的按钮组件,观察输出的 CSS 里是否避开了纯黑背景和默认字体栈。如果避开了,说明规则已经加载。
3.3 挂载到 Cursor 的配置方式
Cursor 用的是.cursorrules文件,位置在项目根目录。配置逻辑和 Claude Code 类似,但 Cursor 对规则的长度更敏感,建议只保留最核心的约束。
我的做法是把 Taste-Skill 的规则精简成 20 行以内的版本,只保留硬约束和最高优先级的软引导。比如:
# Taste Rules for Cursor ## UI - Never use #000000 as background - Always use 8px spacing grid - Always add hover state to buttons - Prefer low saturation colors ## Copy - Start headlines with action verbs - Keep sentences under 25 words - One idea per paragraph这样 Cursor 在补全代码时不会因为规则太长而“分心”,响应速度也更快。
3.4 挂载到 Codex 的注意事项
Codex 的自定义指令入口和前面两个不太一样,它是在设置里的“Custom Instructions”字段。这个字段有字数限制,大概 1500 字符左右,所以必须做大幅精简。
我的建议是只保留最影响输出质量的 5-8 条规则,比如:
- 禁止纯黑背景
- 必须使用 8px 网格
- 按钮必须有 hover 状态
- 文案开头用动词
- 句子不超过 25 词
其他的规则可以通过在对话中临时补充的方式加载,不需要全部写进 Custom Instructions。
注意:Codex 的 Custom Instructions 在不同版本里位置可能不一样,如果找不到,可以在设置里搜索 “instructions” 或者 “custom”。另外,修改之后需要新开一个会话才能生效,旧会话不会自动加载新规则。
4. 实操过程与核心环节实现
4.1 环境准备与文件创建
在开始之前,你需要确认三件事:
第一,你的 Claude Code 或者 Cursor 已经能正常使用。如果还没装好,先花十分钟把基础环境跑通,这部分不是 Taste-Skill 的重点,网上教程很多,不展开。
第二,确认项目根目录的位置。规则文件必须放在项目根目录,不是用户目录,也不是随便一个子文件夹。Claude Code 和 Cursor 都是从项目根目录开始查找规则文件的。
第三,准备好 Taste-Skill 的规则内容。你可以直接从 GitHub 仓库复制,也可以根据我上面给的模板自己改。建议先复制原版,跑通之后再按自己的需求调整。
创建文件的命令(以 Claude Code 为例):
cd your-project-root touch CLAUDE.md然后用编辑器打开,粘贴规则内容,保存。
4.2 规则加载验证与调试
规则写进去之后,怎么确认它真的生效了?我的做法是做一个“最小验证”:
让 Claude Code 生成一个最简单的 HTML 按钮,代码如下:
<button>Click me</button>如果规则生效,输出的结果应该包含:
- 背景色不是 #000000
- 字体不是系统默认
- 有 hover 状态
- padding 是 8 的倍数
如果输出还是“裸奔”状态,说明规则没加载成功。排查步骤:
- 确认文件名正确:Claude Code 是
CLAUDE.md,Cursor 是.cursorrules,大小写敏感。 - 确认文件位置正确:必须在项目根目录。
- 确认会话已重启:修改规则后需要新开会话。
- 确认规则格式正确:Markdown 格式,不要用 JSON 或 YAML。
4.3 实际生成效果对比
我拿同一个需求分别在不加载规则和加载规则的情况下跑了一遍,对比很明显。
需求:生成一个产品落地页的首屏 HTML。
不加载规则时,Claude Code 输出的代码:
<div style="background: #000; color: #fff; padding: 20px;"> <h1 style="font-family: Arial;">Welcome to Our Product</h1> <p>We provide the best solution for your needs.</p> <button style="background: blue; color: white;">Get Started</button> </div>加载规则后,同样的需求:
<section style="background: hsl(220, 15%, 96%); padding: 48px 24px; font-family: 'Inter', sans-serif;"> <h1 style="font-size: 2.5rem; font-weight: 700; color: hsl(220, 20%, 15%); margin-bottom: 16px;"> Build Faster with Our Platform </h1> <p style="font-size: 1.125rem; color: hsl(220, 10%, 40%); max-width: 600px; margin-bottom: 32px;"> Ship your next project in days, not weeks. </p> <button style="background: hsl(220, 80%, 55%); color: white; padding: 12px 24px; border-radius: 8px; border: none; cursor: pointer; transition: background 0.2s;"> Start Free Trial </button> </section>差别一目了然。后者在配色、间距、字体、文案节奏上都明显更“讲究”。这就是 Taste-Skill 的价值——它不改变模型的能力,但改变了模型的“默认选择”。
4.4 参数调优与个性化配置
跑通之后,你可以根据自己的审美偏好调整规则。比如我觉得默认的蓝色按钮太常见,想换成更沉稳的墨绿色,只需要在规则里加一条:
- preferred: primary button color in hsl(160, 40%, 30%) range再比如我觉得文案的句子还是太长,可以把限制从 25 词改成 15 词:
- required: sentence length < 15 words每次调整之后,重新生成同一个测试用例,对比效果。建议一次只改一个参数,方便定位问题。
实操心得:不要过度调优。我有一段时间沉迷于调整规则,把 spacing 从 8px 改成 6px 又改成 10px,结果发现模型在不同场景下的表现反而变得不稳定。后来固定用 8px 网格,只在特殊项目里微调,整体输出质量反而更稳定。
5. 常见问题与排查技巧实录
5.1 规则不生效的几种典型情况
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 输出完全没变化 | 文件位置不对 | 确认在项目根目录 |
| 部分规则生效部分不生效 | 规则冲突 | 检查是否有互相矛盾的约束 |
| 生成速度明显变慢 | 规则太长 | 精简到 20 行以内 |
| 模型忽略规则 | 规则优先级太低 | 把关键规则放在文件顶部 |
| 重启后规则丢失 | 文件被覆盖 | 检查是否有其他工具修改了文件 |
5.2 规则冲突的排查思路
最常见的冲突是“禁止纯黑背景”和“使用深色主题”之间的矛盾。如果你同时写了这两条,模型会陷入纠结,输出质量反而下降。
解决方法是在规则里明确优先级:
- forbidden: pure black background (#000000) - allowed: dark theme with background lightness > 10%这样模型就知道深色主题可以用,但不能用纯黑。
另一个常见冲突是“句子不超过 25 词”和“每段至少 3 句话”之间的矛盾。如果一句话平均 20 词,3 句话就是 60 词,段落会显得很长。这时候需要调整其中一个约束,或者加上“段落不超过 4 句话”的限制。
5.3 不同模型的适配差异
Claude 对规则的理解能力最强,基本上写进去就能生效,不需要额外解释。GPT 系列对规则的执行稍弱一些,有时候会“选择性忽略”,需要在规则里加上更强的语气词,比如MUST、NEVER。Gemini 对格式比较敏感,规则最好用列表形式,不要用长段落。
我在 Claude Code 和 Cursor 里用的同一套规则,Claude Code 的输出明显更稳定,Cursor 偶尔会漏掉一两条。后来我在 Cursor 的规则里加了CRITICAL:前缀,漏规则的情况少了很多。
5.4 独家避坑技巧
第一个坑:不要把规则写得太抽象。比如“要好看”这种词,模型理解不了。要具体到“背景色亮度不低于 90%”“按钮圆角 8px”“标题字号是正文的 2 倍”。
第二个坑:不要一次性加载所有规则。按场景加载,写代码时只挂 UI 规则,写文案时只挂文案规则。全挂上会让模型“注意力分散”。
第三个坑:定期清理规则。用了两周之后,你会发现有些规则从来没被触发过,或者有些规则已经过时了。每个月花十分钟清理一次,保持规则集精简。
第四个坑:不要依赖规则解决所有问题。Taste-Skill 能提升输出的“下限”,但“上限”还是取决于你的提示词质量和模型本身的能力。规则是辅助,不是万能药。
6. 进阶用法:把 Taste-Skill 变成团队规范
6.1 团队共享规则集的做法
如果你在团队里推广这套东西,建议把规则文件纳入版本控制,放在项目仓库的根目录。每个人拉取代码后自动获得同一套规则,保证团队输出的一致性。
具体做法:
- 在项目仓库创建
taste-rules/目录。 - 把规则文件按场景拆分成多个文件:
ui.md、copy.md、scoring.md。 - 在
CLAUDE.md或.cursorrules里用@import语法引用这些文件。 - 在 README 里说明规则的使用方法和更新流程。
这样新成员加入时,不需要额外培训,拉代码就能用上统一的审美标准。
6.2 结合 CI 做自动化检查
更进一步的做法是把 Taste-Skill 的评分规则做成 CI 检查项。比如在 GitHub Actions 里加一个步骤,用脚本解析生成的 HTML,检查是否包含纯黑背景、是否使用了 8px 网格、按钮是否有 hover 状态。不通过就阻止合并。
这个做法适合对 UI 一致性要求高的项目,比如设计系统或者组件库。普通项目手动检查就够了,上 CI 有点重。
6.3 规则集的持续迭代
Taste-Skill 不是一成不变的。你的审美会变,项目需求会变,规则也要跟着变。建议每个月做一次回顾:
- 哪些规则从来没触发过?删掉。
- 哪些规则经常被违反?加强语气或者调整阈值。
- 有没有新的审美趋势需要加入?比如最近流行的“新拟态”或者“玻璃拟态”。
规则集保持精简、动态、可迭代,才能真正发挥作用。我自己的规则集从最初的 50 多条精简到了现在的 18 条,效果反而更好。
最后分享一个小技巧:如果你不确定某条规则该不该加,先加上跑一周。如果一周内它没有对你的输出产生任何可见的影响,就删掉。规则的价值在于“改变输出”,不在于“数量多”。
这个项目后续还可以这样扩展:把 Taste-Skill 的评分逻辑做成一个独立的 CLI 工具,输入 HTML 或文案,输出审美评分和改进建议。这样即使不用 AI 生成内容,也可以用它来检查人工写的内容。我目前正在尝试这个方向,跑通之后再来分享。