请提供需要优化的【原始标题】,我将根据您的需求生成一个符合SEO规范的优化标题。
用 AI Skill 封装工作流:从代码规范到全流程提效实战
前言:你正在充当AI的“人肉提示词引擎”
在使用AI开发工具(OpenClaw / Cursor / Windsurf 等)一段时间后,多数人会陷入以下循环:
- 启动新项目时,仍需口头交代“我用 React + TypeScript + Tailwind”
- 编写代码时,必须重复强调“遵循 ESLint 规则,禁用 var”
- 进行代码审查时,常提醒“检查空值处理、错误边界、类型安全”
- 撰写文档时,需要指定“使用中文、Markdown 格式、标题不超过三级”
你正在用自然语言手动维护一套“规范系统”,每次对话都需重新加载这些指令。
这一问题的本质是什么?
┌───────────────────────────────────────────────────────────┐
│ 你的行为模式 │
│ │
│ 你的工作流程 / 规范 / 偏好 │
│ ↓ │
│ 每次对话都用自然语言重复叙述 │
│ ↓ │
│ AI 执行(本次能够记住) │
│ ↓ │
│ 新会话 → 遗忘殆尽 → 重新交代 │
│ │
│ 痛点: │
│ ├── 效率低下:每次都在执行“人肉提示词注入” │
│ ├── 一致性差:每次表述可能存在偏差 │
│ ├── 覆盖不完整:容易遗漏部分规则 │
│ └── 复用困难:换项目需从头适配 │
│ │
│ 解决方案:将工作流封装为 Skill 文件 │
│ ├── 一次编写,长期生效 │
│ ├── 跨项目复用 │
│ ├── 版本化管理(通过 Git 追踪变更) │
│ └── 按需加载,节省 Token 开销 │
└───────────────────────────────────────────────────────────┘
一、什么是 Skill?30 秒快速理解
Skill 是一个 Markdown 文件(通常命名为 SKILL.md),存放于指定目录下,AI 工具会在适当时机自动载入。本质上是为 AI 编写的标准作业流程(SOP)。
人类世界 AI 世界
────────────────────────────────────────────────
员工手册 ←对应→ SOUL.md(身份认知)
岗位SOP ←对应→ SKILL.md(技能包)
项目规范文档 ←对应→ AGENTS.md(项目规则)
经验教训库 ←对应→ MEMORY.md(历史记忆)
Skill 文件的基本结构
# Ja va Spring Boot 开发规范 Skill
## 触发条件
当开发 Ja va Spring Boot 项目时自动加载。
## 技术栈
- Ja va 17+
- Spring Boot 3.x
- MyBatis-Plus
- Ma ven
## 代码规范
### 命名规范
- 类名:大驼峰(UserService)
- 方法名:小驼峰(getUserById)
- 常量:全大写下划线(MAX_RETRY_COUNT)
- 包名:全小写(com.example.user)
### 分层结构
controller/ → 只做参数校验和返回值封装
service/ → 业务逻辑
mapper/ → 数据访问
dto/ → 数据传输对象
vo/ → 视图对象
### 必须遵守
- 所有 API 返回统一 Result 包装
- 异常使用全局异常处理器
- 禁止在 Controller 中写业务逻辑
- 所有查询必须分页
一旦 AI 加载此 Skill,它便如同通过入职培训的工程师,明确你的规范,无需每次重复说明。
二、Skill 的存放位置与加载机制
2.1 目录结构
你的项目/
├── .cursor/
│ └── skills/ ← Cursor 的 Skill 目录
│ ├── ja va-spring/
│ │ └── SKILL.md
│ ├── react-ts/
│ │ └── SKILL.md
│ └── code-review/
│ └── SKILL.md
│
├── .openclaw/
│ └── skills/ ← OpenClaw 的 Skill 目录
│ └── ...
│
├── AGENTS.md ← 项目级规则
└── src/
└── ...
2.2 加载逻辑
Skill 采用“按需加载”策略,并非全部加载:
全局 Skill(~/.cursor/skills/ 或 ~/.openclaw/skills/):
├── 所有项目均会检查
├── 适合放置通用规范(代码风格、Git 提交规范)
└── 注意控制篇幅,因每次会话均会加载
项目级 Skill(项目/.cursor/skills/):
├── 仅在当前项目生效
├── 适合放置项目特有规范(API 设计、数据库规范)
└── 更具针对性,避免影响其他项目
触发匹配机制:
├── AI 根据当前任务内容自动匹配相关 Skill
├── 例如编写 Ja va 代码时触发 ja va-spring Skill
├── 进行 Code Review 时触发 code-review Skill
└── 不相关的 Skill 不会被加载 → 有效节省 Token
三、实战:提供 6 个可直接套用的 Skill 模板
3.1 Ja va Spring Boot 规范
# Ja va Spring Boot 开发规范
## 适用场景
Ja va 后端项目,采用 Spring Boot 框架。
## 核心规则
### 分层架构
- Controller:参数校验 + 调用 Service + 返回 VO
- Service:业务逻辑,注入 Mapper,事务在此层处理
- Mapper:继承 BaseMapper,复杂 SQL 使用 XML 文件
- DTO:接收前端参数,通过 @Valid 进行校验
- VO:定义返回给前端的数据结构
### 统一返回格式
所有 API 返回 Result 结构:
{"code": 200, "message": "success", "data": {}}
### 异常处理
- 业务异常使用自定义 BusinessException 类
- 全局异常由 @RestControllerAdvice 统一捕获
- 严禁在代码中吞没异常(禁止 catch 空块)
### 数据库规范
- 表名采用小写下划线格式:user_order
- 每张表必须包含 id, create_time, update_time 字段
- 逻辑删除字段:is_deleted
- 禁止使用 SELECT *
### 禁止事项
- 禁止在 Controller 层编写业务逻辑
- 禁止硬编码魔法数值
- 禁止直接拼接 SQL(防范注入风险)
- 禁止使用 System.out.println(应使用日志框架)
3.2 React + TypeScript 前端规范
# React + TypeScript 前端开发规范
## 适用场景
React 18+ 项目,采用 TypeScript + Tailwind CSS 技术栈。
## 核心规则
### 组件规范
- 使用函数式组件搭配 Hooks,禁止 Class 组件
- 组件文件名采用 PascalCase(如 UserProfile.tsx)
- 每个组件独立文件,行数不超过 200 行
- Props 必须定义 interface 类型,禁止使用 any
- 导出方式:使用 named export(避免 default export)
### 状态管理
- 简单状态:使用 useState
- 复杂状态:使用 useReducer
- 全局状态:推荐 Zustand(替代 Redux)
- 服务端状态:采用 TanStack Query
### 样式规范
- 使用 Tailwind CSS,避免编写自定义 CSS
- 响应式设计:mobile-first 原则(sm → md → lg)
- 暗色模式:使用 dark: 前缀处理
### TypeScript 规范
- 启用严格模式(strict: true)
- 禁止使用 any,用 unknown 替代
- 接口使用 interface,类型别名使用 type
- 枚举使用 const enum 或 as const
### 禁止事项
- 禁止使用 var(使用 const/let)
- 禁止使用索引作为 key(静态列表除外)
- 禁止在 useEffect 中直接调用 async 函数
- 禁止使用 !important
3.3 Code Review 检查清单
# Code Review Skill
## 适用场景
当用户要求执行代码审查时加载。
## 审查维度(按优先级排序)
### P0 — 安全性
- [ ] SQL 注入风险
- [ ] XSS 跨站脚本风险
- [ ] 敏感信息硬编码(密码、密钥、Token)
- [ ] 权限校验完整性
- [ ] 输入参数校验是否到位
### P1 — 正确性
- [ ] 空值处理(null/undefined/空数组/空字符串)
- [ ] 边界条件(空集合、负数、超大数值)
- [ ] 并发安全性(竞态条件、死锁风险)
- [ ] 错误处理(异常是否被正确捕获并处理)
- [ ] 资源释放(连接、流、锁)
### P2 — 性能
- [ ] N+1 查询问题
- [ ] 不必要的重复计算
- [ ] 大集合操作(是否需要分页或流式处理)
- [ ] React 不必要的重渲染
- [ ] 接口响应体是否过大
### P3 — 可维护性
- [ ] 命名是否清晰(读代码能理解其意图)
- [ ] 函数是否过长(超过 50 行考虑拆分)
- [ ] 是否存在重复代码(遵循 DRY 原则)
- [ ] 注释质量:仅注释“为什么这样做”,不注释“做了什么”
- [ ] 类型定义是否完整
## 输出格式
按 P0→P3 优先级排列问题,每个问题包含:
1. 问题描述
2. 代码位置
3. 修复建议
4. 严重程度(Critical/Major/Minor)
3.4 Git 提交规范
# Git Commit Message 规范
## 适用场景
执行 git commit 操作时加载。
## 格式
():
## Type 类型
- feat: 新增功能
- fix: 修复缺陷
- docs: 文档变更
- style: 代码格式调整(不影响逻辑)
- refactor: 代码重构
- perf: 性能优化
- test: 测试相关
- chore: 构建或工具变更
## 规则
- subject 使用中文或英文均可,但项目内需统一
- 字符数不超过 72 个
- 末尾不加句号
- 使用现在时态(如 "add feature" 而非 "added feature")
## 示例
feat(user): 新增用户注册接口
fix(order): 修复订单金额计算精度丢失
refactor(auth): 重构登录逻辑,抽取 TokenService
3.5 API 设计规范
# RESTful API 设计规范
## 适用场景
设计或审查 API 接口时加载。
## URL 规范
- 使用名词复数形式:/api/v1/users(非 /getUser)
- 层级关系:/api/v1/users/{id}/orders
- 版本号置于 URL 中:/api/v1/
## HTTP 方法
- GET:查询操作(幂等)
- POST:创建资源
- PUT:全量更新
- PATCH:部分更新
- DELETE:删除资源
## 状态码
- 200:请求成功
- 201:资源创建成功
- 400:请求参数错误
- 401:未认证
- 403:无权限
- 404:资源不存在
- 500:服务器内部错误
## 分页响应格式
{
"data": [],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 100,
"totalPages": 5
}
}
## 错误响应格式
{
"code": 40001,
"message": "用户名不能为空",
"details": [
{ "field": "username", "message": "required" }
]
}
3.6 需求分析 Skill(非开发场景)
# 需求分析 Skill
## 适用场景
当用户提出需求或想法需要分析可行性时加载。适用于产品经理、项目经理、创业者等角色。
## 分析框架
### 第一步:需求澄清
- 目标用户是谁?
- 核心痛点是什么?
- 现有解决方案是什么?为何不够好?
- 最小可行产品(MVP)应包含哪些功能?
### 第二步:可行性评估
- 技术可行性:现有技术能否实现?
- 市场可行性:潜在用户规模有多大?
- 商业可行性:盈利模式如何?客单价多少?
- 时间可行性:MVP 开发周期需多久?
### 第三步:优先级排序
采用 MoSCoW 方法:
- Must ha ve:必须包含,否则无法上线
- Should ha ve:重要但可推迟
- Could ha ve:锦上添花的功能
- Won't ha ve:本次明确不做
### 输出格式
使用表格展示功能清单、优先级、预估工时及风险点。
四、进阶:超越代码规范的 Skill 封装
Skill 并非仅限开发者使用。任何存在重复流程的工作均可封装:
┌───────────────────────────────────────────────────────────────┐
│ Skill 的适用领域 │
│ │
│ 开发类: │
│ ├── 代码规范(Ja va/TS/Python/Go 等) │
│ ├── Code Review 检查清单 │
│ ├── API 设计规范 │
│ ├── 数据库设计规范 │
│ ├── Git 工作流 │
│ └── 测试用例编写规范 │
│ │
│ 非开发类: │
│ ├── 周报/日报撰写模板 │
│ ├── 需求评审流程 │
│ ├── 竞品分析框架 │
│ ├── 商业计划书结构 │
│ ├── 技术方案评审清单 │
│ ├── 面试评估模板 │
│ ├── 邮件回复规范 │
│ └── 文章写作风格指南 │
│ │
│ 个人效率类: │
│ ├── 每日计划制定流程 │
│ ├── 读书笔记整理模板 │
│ ├── 知识卡片生成规范 │
│ └── 学习路径规划框架 │
│ │
│ 核心决策标准: │
│ 你曾在 AI 对话中重复下达过 3 次以上的相同指令吗? │
│ 如果是 → 立即封装为 Skill │
│ │
└───────────────────────────────────────────────────────────────┘
五、Skill 编写的 5 个黄金法则
法则 1:每个 Skill 聚焦单一职责
✗ 错误:一个 SKILL.md 文件同时包含 Ja va 规范、前端规范、Git 规范与 API 设计
→ 文件过长,Token 浪费严重,且所有场景均会加载无关内容
✓ 正确:每项规范独立为一个 Skill 文件
→ skills/ja va-spring/SKILL.md
→ skills/react-ts/SKILL.md
→ skills/git-commit/SKILL.md
→ skills/api-design/SKILL.md
法则 2:编写“规则”而非“教程”
✗ 错误(教程式):
"React 的 useEffect 是一个 Hook,用于在函数组件中执行
副作用操作,接受两个参数……"
→ AI 已熟知 useEffect 定义,无需再教育
✓ 正确(规则式):
"useEffect 的依赖数组不可为空(除非确认仅执行一次)。
禁止在 useEffect 回调中直接使用 async。
清理函数必须处理组件卸载后的异步回调。"
→ 直接指明“怎么做”,无需解释“是什么”
法则 3:用具体示例替代抽象描述
✗ 模糊描述:“函数命名需清晰表达意图”
✓ 具体示例:
命名规范:
- getUserById ✓
- getData ✗(语义模糊)
- processInfo ✗(process 指代不明)
- handleUserLoginAndSendWelcomeEmail ✗(过长,应拆分为两个函数)
法则 4:明确列出“禁止事项”
AI 对明确的禁止规则执行效果最佳。建议使用“禁止”替代“最好不要”:
模糊:尽量避免使用 any 类型
明确:禁止使用 any。若类型不明确,使用 unknown 配合类型守卫。
法则 5:控制文件篇幅
理想行数:200-500 行
├── 过短(<100 行):规则不够具体,AI 仍有较大自由度
├── 适中(200-500 行):覆盖核心规则,Token 消耗可控
└── 过长(>1000 行):占用过多上下文,影响 AI 响应质量
各篇幅 Skill 的 Token 消耗估算:
├── 200 行 ≈ 600-800 Tokens
├── 500 行 ≈ 1,500-2,000 Tokens
└── 1,000 行 ≈ 3,000-4,000 Tokens
六、实战案例:用 Skill 体系管理多个项目
以下是典型的多项目 Skill 目录结构示例:
~/.cursor/skills/ ← 全局 Skill(所有项目共用)
├── code-style/
│ └── SKILL.md ← 通用代码风格(命名、注释)
├── git-commit/
│ └── SKILL.md ← Git 提交规范
└── code-review/
└── SKILL.md ← Code Review 检查清单
项目 A(Ja va 后端)/.cursor/skills/
├── ja va-spring/
│ └── SKILL.md ← Spring Boot 开发规范
└── api-design/
└── SKILL.md ← RESTful API 设计规范
项目 B(React 前端)/.cursor/skills/
├── react-ts/
│ └── SKILL.md ← React + TS 规范
└── component-design/
└── SKILL.md ← 组件设计规范
项目 C(iOS App)/.cursor/skills/
├── swiftui/
│ └── SKILL.md ← SwiftUI 开发规范
└── admob/
└── SKILL.md ← AdMob 集成规范
实际效果对比:
| 关键指标 | 未使用 Skill | 使用 Skill |
|---|---|---|
| 新会话启动效率 | 前 5 分钟用于描述规范 | 立即进入编码状态 |
| 代码一致性 | 每次风格可能不同 | 严格遵循统一标准 |
| 代码审查通过率 | 约 60%(常遗忘规范) | 约 90% 以上 |
| 重复指令次数 | 每会话 3-5 次 | 0 次 |
| 项目切换成本 | 需重新“训练”AI | 自动加载匹配项目规范 |
七、从 0 到 1 构建你的 Skill 体系
Step 1:回顾近期 AI 对话记录
识别出你重复使用的指令:
- “使用 TypeScript,而非 Ja vaScript”
- “返回格式采用 Result 统一包装”
- “不要在代码中添加注释”
- “使用 Tailwind,避免编写 CSS 文件”
Step 2:按场景进行分类
将这些指令归类至不同 Skill:
- 语言或框架规范类
- 流程规范类(Code Review、Git、API)
- 输出格式类(文档、报告)
Step 3:编写首个 Skill
从你最常用场景入手,参考上述模板,撰写一个 200-300 行的 Skill 文件。
Step 4:测试并持续迭代
- 开启新会话,验证 AI 是否遵守 Skill 中的规则
- 发现未覆盖场景 → 补充相应规则
- 发现冗余或过时规则 → 及时删除
- 每两周 review 一次 Skill 文件内容
八、总结
┌───────────────────────────────────────────────────────────────┐
│ │
│ Skill 封装的本质: │
│ 将“你大脑中的工作流程”转化为“AI 可自动执行的 SOP” │
│ │
│ ┌────────────┐ ┌────────────────────┐ │
│ │ 你的大脑 │ │ Skill 文件 │ │
│ │(会遗忘) │ →→→ │(持久可靠) │ │
│ │ │ │ │ │
│ │ - 编码规范 │ │ - ja va-spring.md │ │
│ │ - 审查习惯 │ │ - code-review.md │ │
│ │ - 设计偏好 │ │ - api-design.md │ │
│ │ - 工作流程 │ │ - requirement.md │ │
│ └────────────┘ └────────────────────┘ │
│ │
│ 三条核心原则: │
│ 1. 一个 Skill 专注一件事 → 按需加载,高效利用 Token │
│ 2. 编写规则而非教材 → AI 无需你教它 React 基础 │
│ 3. 示例优于描述 → “getUserById ✓ / getData ✗” 胜过千言万语 │
│ │
└───────────────────────────────────────────────────────────────┘
Skill 体系搭建完成后,你的 AI 开发工具将从“每次都需要调教的实习生”转变为“熟悉你所有规范的资深协作搭档”。
相关资源
- Cursor Rules 官方文档
- OpenClaw Skills 指南
