1 / 25
Harness Engineering
AI Coding
Skill 设计

TikTok Platform Design 分享

概念背景
Skill 结构
实战思路
导入与使用
质量复盘
Problem
AI 编程的两个核心痛点

发散性强

上下文窗口限制 + AI 的本性,同一套 Prompt 可能导致完全不同的结果

// 你的 Prompt 没变
// 但 AI 今天换了个组件库
💥

破坏性强

AI 编程时容易破坏已有组件嵌套关系,甚至覆写线上全局样式,陷入无限 Debug

// 修复一个节点
// 崩溃三个模块
业界的解法:Harness Engineering

严苛的指令约束 (Skill) + 绝对安全的运行沙盒 (Mockup),通过这种方式限制 AI 的自由发挥。对于设计来说,Skill 的意义是让 AI 在我们限定的设计风格 / 系统内产出

Definition
什么是 Skill?

结构化 Prompt,本质是一套模块化提示词
就像一份 SOP,教 AI "怎么想""怎么做"

🧠
封装思考链路

把人类专家的决策流程,拆解成机器能理解的线性步骤

🔒
约束输出范围

通过 MUST NOT 红线,防止 AI 在设计规范之外自由发挥

♻️
沉淀团队资产

一次撰写,团队共用;有规律、重复执行的任务最适合包装为 Skill

Architecture
Skill 能做什么

Skill 作为大脑,调用包含 MCP 在内的所有工具,遵循标准工作流完成产出

Skill

大脑

决定何时调用哪个工具、如何按规范思考和执行

示例指令:
"当遇到这种 UI 需求时,按照我们的规范思考,必须用 Semi 组件,必须用标准 Token"
MCP 扩展

外部工具手

通过标准协议插入,操作 Figma、组件库、外部数据库等

示例:
Semi MCP:"现在提供 120 种组件,你可以在这里选择"
原生工具 Built-in

内部执行手

由 IDE 直接提供,无需额外安装,Linter 检查、代码格式化等

示例:
Linter:"这里写了硬编码的颜色,检查不通过"
Comparison
Skill 与 MCP 的区别
Skill

本地级"思维流"

结构化 Prompt,封装执行逻辑
教 AI "怎么想、怎么做"
能力边界只能控制 IDE 内部操作,需配合工具才能操作外部
部署分发.md 文件,复制粘贴或 Git 同步
迭代成本直接改文字即可,个人开发者极速迭代
适合场景特定项目快速调优,个人工作流封装
MCP

服务器级"动作流"

AI 界的 USB-C 接口
让 AI 能真正操作外部世界
能力边界能真正操作 Figma、外部数据库,甚至发送物理快递
部署分发像 API 一样,改动后所有连接方立即生效,可做权限隔离
迭代成本需要写 TS/Python,工程化程度更高
适合场景团队级、稳定的工具集成
VoC Design System Skill · 评测结论
近期团队效果评测 · 案例一

Skill 对初始产出质量有明显提升,尤其在 页面结构、组件选择和视觉一致性方面 —— 3 个 Case 中使用 Skill 后结构崩坏和明显风格偏移显著减少

Without Skill
结构层 ⚠ 警告 视觉层 ✗ 不通过
无Skill
详情多字段 SideSheet · 原始产出
With Skill
结构层 ✓ 通过 视觉层 ⚠ 警告
使用Skill
详情多字段 SideSheet · 使用 Skill 后
VoC Design System Skill · 评测结论
近期团队效果评测 · 案例二

Skill 对初始产出质量有明显提升,尤其在 页面结构、组件选择和视觉一致性方面 —— 3 个 Case 中使用 Skill 后结构崩坏和明显风格偏移显著减少

Without Skill
结构层 ✗ 不通过 视觉层 ✗ 不通过
无Skill Case2
单一卡片 数据可视化 · 原始产出
With Skill
结构层 ✓ 通过 视觉层 ⚠ 警告
使用Skill Case2
单一卡片 数据可视化 · 使用 Skill 后
File Structure
Skill 的文件结构

遵循 2 级结构(文件夹—文件),不要再深了

📁 my-design-skill/ 📄 SKILL.md 必须 📁 assets/ 📁 references/ 📁 scripts/ 📁 evals/

点击左侧节点查看详情

每个目录各司其职,合理分工控制 Token 消耗,提升 AI 注意力精度。

遵循 2 级结构,不要再深了。

← 点击文件 / 文件夹查看说明
Language
三种语言混合撰写

为了让 Skill 跨平台可用,推荐 Markdown + JSON + 伪代码混合

📝

Markdown

架构与信息层级

文本过长时 AI 抓不住重点,Markdown 用标题结构划定优先级

# Role
# Workflow
# MUST NOT
🔷

JSON

数据契约与强类型

约定输出结构,防止字段遗漏,拒绝 AI 输出额外废话

{
"reasoning": "...",
"imports": [...],
"code": "..."
}
⚙️

伪代码

控制流与逻辑边界

自然语言过于含糊,用代码逻辑强制阻断 AI 自由发挥

if (missing_props) {
throw Request_User_Info;
}
💡 SKILL.md 主文件建议英文(节省 Token + 提高准确度),references 里的文档可以先中文撰写再翻译
Live Example
一个真实 SKILL.md 长什么样
SKILL.md
---  ① 元数据
name: semi-component-builder
description: Build Semi Design React
  components from Figma or screenshots
---

# Role
You are a senior Design Engineer.
Generate Semi Design React components
that match our design system.

# Workflow  ② Workflow
1. Read references/tokens.json
2. Call Semi MCP → get component API
3. Map design to components
4. Use assets/template.tsx skeleton
5. Run scripts/check_linter.sh

# MUST NOT  ③ MUST NOT
- Never use inline styles
- Never hardcode hex colors
- Never use non-Semi UI libraries
- If uncertain: STOP and ask user

# Output Format  ④ 输出格式
{
  "reasoning": "why this",
  "imports": ["Semi comps"],
  "code": "tsx here"
}
① 元数据区

name + description 始终加载进 Context,写清楚触发条件,让 AI 知道何时自动启用。

② Workflow 区

用序号强制执行顺序,引用具体文件路径,让 AI 知道去哪里找规范。

③ MUST NOT 区

红线规则。每次发现 AI 出现新的坏习惯,回来这里加一条——这是调优最有效的手段。

④ 输出格式区

JSON Schema 约束输出结构,AI 必须按格式返回,不能夹杂额外废话。

Step 1 · 明确场景
三种 Skill 类型

首先明确:谁在什么场景下使用,典型输入是什么

01
C 端设计师

实现型

将 Figma 设计高质量还原成代码,关注组件映射与 Token 落地

输入:截图 / Figma / mockup
输出:可运行 UI + Token 讲解
02
B 端设计师

平台流程型

在复杂后台产品中做正确的设计决策,关注信息架构与组件选型

输入:一段业务需求 / 后台新页面
输出:页面类型 + 组件选型理由
03
PM / 协作角色

治理约束型

防止业务系统在持续迭代中违背设计规范,强制复用优先策略

输入:"帮我优化一下这个 UI"
输出:复用优先级 + 约束清单
Step 2 · 明确工作流
设计工作流的三步法
01
找到真实起点
回顾该任务人类专家的"第一步"。设计 B 端页面,第一步是看数据结构、定导航层级——不是打开 Figma 画框。
02
编排线性执行流
1. 2. 3. 序号建立强制顺序:先寻址规范文档 → 再决策布局 → 最后按骨架输出。
03
设定异常阻断机制
埋入风控兜底:需求在组件库找不到对应模式时,必须停止并向用户提问,绝对禁止自行硬编码。
❌ 失败写法"请仔细阅读需求,设计一个 B 端列表页,注意符合规范,保证体验良好。"
✅ 正确写法1. 判断页面层级,下钻页保留面包屑
2. 检索规范文档,寻找匹配业务组件
3. 按"筛选区 + 操作栏 + 表格"骨架映射
4. 检查输出中是否含硬编码颜色值
💡 明确工作流后,在 Trae 里直接 Prompt 输入"我需要你帮我做一个 skill……"唤起 skill creator 内置技能,即可完成 SKILL.md 撰写
🗺️
Step 3 · 撰写 References
设计规范分四层放入
🌟
战略层
交互原则 · 品牌价值观 · 核心理念
MVP 必选
🏗
结构层
跨页面交互 · 反馈机制 · 布局规则
🧩
框架层
业务组件路由 · 文案设计规范
🎨
表现层
颜色 · 圆角 · 字体 · 间距 Token
MVP 必选
🗂️← 点击查看各层详情

战略层 — 宏观决策兜底

方便 AI 在缺少具体细节指引时,能通过宏观价值观推导出正确设计方向,避免跑偏。

  • 交互原则:产品和用户特性,核心价值观(如削减概念、消除干扰)
  • 品牌价值观:视觉调性、世界观,为什么我们要做这样的视觉
  • 包含这层后,AI 遇到规范空白区时不会随意发挥
Figma MCP
用 Figma MCP 生成 References

无需手动整理,让 AI 直接从 Figma 画板读取并生成结构化 .md 文档

🔄 操作流程
STEP 01
连接 Figma MCP
在 Claude Code / Trae 中配置 Figma MCP 服务
STEP 02
指向目标画板
告诉 AI:"读取这个 Figma 画板的设计规范"
STEP 03
生成 .md 文档
AI 自动提取 Token、组件、布局规则,输出结构化 Markdown
STEP 04
放入 references/
将生成的文档直接放入 Skill 的 references/ 目录
✅ 可以自动提取的内容
所有颜色 Token 的名称与 Hex 值
字体层级、字号、行高规则
间距、圆角、阴影 Token
组件结构与变体关系
⚠️ 注意

Figma MCP 写权限目前只对 Codex 和 Claude Code 开放,Trae 可使用只读模式生成文档。实际使用时需人工核查提取结果是否完整。

🔌
⚠️ Anti-Pattern
哪些资产不该放进 References

上下文窗口有限,Skill 不是越大越好

🔴 矢量 Icon 库

全量放入导致 Token 爆炸,AI 易幻觉出不存在的 Icon Name。

✅ 解法在 SKILL.md 中写死 NPM 包引用路径,要求 AI 只输出 Icon Name。

🔴 原子级基础组件

Button、Input 等 API 极其繁多,名称不匹配时直接编译崩溃。

✅ 短期解法利用 Semi / Arco 官方 MCP,让 AI 动态查阅,而非静态存储。

⚠️ 过度细化的规范文档

字数过多后 AI 注意力下降,精简才是关键。

✅ 解法拆成多个细粒度 .md 文件,按需加载。

⚠️ 高频变动的业务数据

路由配置、权限枚举等静态放入会频繁失效。

✅ 长期解法(DesignOps)持续推进高内聚封装——积木块越大,AI 组装出错概率越低,对底层上下文依赖越少。通过 MCP 动态拉取或写自动同步脚本。
MCP In Action
MCP 实战:Figma → 代码
Without MCP

截图 → 手动描述 → AI 靠猜 → 反复对齐 → 人工核对 Token

截图
手动描述
AI 靠猜
反复对齐
人工核对
平均来回 5+ 轮对话
WITH FIGMA MCP

AI 直接读取 Figma 节点 → 获取真实 Token → 映射到组件库 → 一次性输出

Figma节点
真实Token
组件映射
一次输出
1 次调用,自动对齐

// 可用的设计工具 MCP

Figma MCP
读取画板节点、Token、组件层级
Claude CodeCodex写权限
Semi Design MCP
120+ 组件动态查询,API 永远最新
Claude CodeTrae只读
Arco Design MCP
组件 API + 代码示例实时获取
Claude CodeTrae只读
Deploy
导入与使用

// 导入 Trae 的步骤

STEP 01
打包 Skill
将 Skill 文件夹打成 .zip 压缩包
STEP 02
进入设置
Trae → 设置 → 规则与技能
Step 02 截图
STEP 03
上传解析
【创建技能】→【上传智能解析】→【确认】
Step 03 截图
STEP 04
使用
导入后自动触发,或 Prompt 句首 / 显式调用
Step 04 截图
Skill 运行中
Skill 运行过程截图

AI 自动调用 design-skill-specifier,进入诊断阶段

⚠️ MCP 可能不跨平台(如 Figma 写权限只对 Claude Code 开放),导入后需人工验证工作流是否适配
Before vs After
是否使用 Skill 的效果对比

同一需求 Prompt,输出质量差异一目了然

✕ 未使用 Skill 仅输入需求 Prompt
未使用 Skill 效果截图
点击放大
主要问题
Checkbox 无法勾选
间距有误
颜色有误
无视觉引导,难以与图中数据关联
出现归属不明的冗余图标
单元格边距不符合规范
✓ 使用 Skill 后 整体准确度显著提升
使用 Skill 后效果截图
点击放大
仍存在的细节问题(可接受)
字重有误(部分细节)
间距有误(部分细节)
整体准确度较高,无大问题,可微调后交付
Team
团队如何共用 Skill

个人 Skill → 团队资产的三级演进路径

👤

Level 1:个人

本地 .md 文件,服务自己的工作流,快速迭代不影响他人

分发方式:直接发 .zip 文件
👥

Level 2:小组

Git 仓库管理,PR Review 确保质量,版本化迭代有据可查

分发方式:Git clone / submodule
🏢

Level 3:团队

bnpm 包发布,统一版本管理,一键升级,权限隔离

分发方式:字节 Skill 市场 / bnpm
💡 建议从 Level 1 开始,跑通 3 个真实业务场景后再沉淀为团队资产,避免过早标准化制约迭代
Evolution
Skill 的生命周期
起草
明确场景
写 SKILL.md
添加基础 References
调试
标准用例测试
发现漏洞
补充 MUST NOT
稳定
3 轮调优后
添加 evals/
发布给小组
迭代
规范变更时
更新 References
重跑 evals 验证
退役
业务场景消失
或被更高级
Skill 替代

✅ 健康的 Skill 信号

  • MUST NOT 规则在持续增长
  • References 按需精简而非堆积
  • Evals 测试全部通过
  • 新人能直接上手,无需培训

⚠️ 需要重构的信号

  • 同一个错误反复出现
  • References 超过 50KB
  • AI 经常忽略 Workflow 步骤
  • 每次用都需要额外补充说明
Quality Review
五个质量评估维度
🎯

设计质量

对齐设计规范,组件样式选型正确,设计决策合理

检查:组件是否来自规范库?Token 是否正确引用?
🛡

稳定性

边界场景支持好(长文本、高密度、错误状态);模糊 Prompt 支持好

检查:极端数据下是否崩溃?
🔁

一致性

同一 Prompt 输出质量稳定;小改动只带来小影响

检查:连续运行 3 次结果是否相近?
💬

可解释

能对每一个设计决策给出合理说明

检查:AI 能否说明为何选择该组件?
🔧

易维护

开箱即用,无需复杂指令;易于对齐新业务规范,迭代成本低

检查:新成员是否能直接上手?更新规范后是否只需改 1 处?
Tuning
调优方法:3 轮趋于稳定
ROUND 01
标准用例测试
输入最标准的业务需求,验证执行流是否标准,References 是否被正确读取,assets 模板骨架是否被遵循。
ROUND 02
定位失败原因
不要在聊天框里反复纠正,而是要求 AI 说出决策原因,找到 Skill 中的漏洞。
ROUND 03
回写 Skill 本身
把失败路径抽象成新的 MUST NOT 规则,或在 scripts/ 里加拦截正则。迭代 Skill,而不是迭代对话。
AUTO
自动化测试
将 Skill 给到 Claude Code,调用 skill-create 功能进行评估,快速发现一致性问题。
⚠️ 核心原则

每次在聊天框纠正都是"训练这一次对话",下次新对话问题还会复现。根本解法是回到 SKILL.md,把约束写死。

MUST NOT 示例

  • 绝对禁止使用内联样式(Inline Styles)
  • 绝对禁止使用 Semi 基础组件外的第三方 UI 库
  • 遇到不确定的交互状态,必须停止并提问
  • 绝对禁止自行幻觉编造不存在的 Token
⚙️
Anti-Patterns
最常见的 5 个错误
#1
Workflow 写成散文
用自然语言描述步骤,AI 忽略执行顺序。→ 改用序号 + 强制动词("必须先…"、"禁止…")
#2
References 一次性全塞
Token 爆炸,AI 注意力分散。→ 拆分为细粒度文件,按需加载
#3
在对话里反复纠正 AI
下次新对话问题依然复现。→ 立即回写 SKILL.md,而不是打对话补丁
#4
Skill 覆盖范围太宽
一个 Skill 试图解决所有场景,导致指令冲突。→ 每个 Skill 只服务一个具体场景,宁可多个小 Skill
#5
跳过 Evals 直接上线
AI 模型升级后 Skill 悄悄失效,没有任何检测机制。→ 哪怕只写 3 个测试用例,也能捕捉大多数回归问题
Resources
可参考的资源
Thank You
Thanks

TikTok Platform Design