Cursor Skills 深度实践指南
Cursor Skills 深度解析:从定义到实践
一、Skills 的本质与核心价值
Skills 是 AI 编辑器的可复用能力单元,它将人类专家的经验、团队的最佳实践、标准化的操作流程封装成结构化的指令集,使 AI 能够像人类专家一样思考和行动。这种能力封装的核心价值在于将隐性知识显性化、将个人经验团队化、将临时操作流程化。
1.1 Skills 的演进路径
从简单的规则到复杂的技能系统,Skills 经历了三个阶段的演进:
| 阶段 | 代表形式 | 特点 | 局限性 |
|---|---|---|---|
| 规则阶段 | 动态规则、自动补全 | 基于文本匹配,简单直接 | 难以表达复杂逻辑,维护成本高 |
| 命令阶段 | 斜杠命令(/command) | 显式调用,功能明确 | 需要用户记忆命令,学习曲线陡峭 |
| 技能阶段 | 结构化 Skill 文件 | 自然语言描述,上下文感知 | 需要标准化定义,但功能最强大 |
1.2 Skills 的核心优势
- 上下文感知:AI 能根据当前对话内容自动判断是否应用相关 Skill
- 知识沉淀:将团队最佳实践固化为可复用的 Skill
- 降低门槛:新人无需记忆复杂命令,AI 自动提供指导
- 版本可控:通过 Git 管理 Skill 的演进历史
二、Skills 的完整定义体系
2.1 Skill 文件结构规范
一个完整的 Skill 由以下部分组成:
my-skill/
├── SKILL.md # 核心定义文件
├── scripts/ # 可执行脚本(可选)
│ ├── deploy.sh
│ └── validate.py
├── references/ # 参考资料(可选)
│ └── REFERENCE.md
└── assets/ # 静态资源(可选)
└── config-template.json
2.2 SKILL.md 的 YAML Frontmatter
Frontmatter 是 Skill 的元数据层,必须包含以下字段:
---
name: my-skill
description: 简要描述此技能的功能及使用时机。
license: MIT
compatibility: requires-node-18
metadata:
category: development
tags: ["deployment", "ci-cd"]
disable-model-invocation: false
---
关键字段详解:
- name:唯一标识符,必须与文件夹名称一致,仅限小写字母、数字和连字符
- description:技能的功能描述,用于 AI 判断相关性
- license:许可证信息,确保合规使用
- compatibility:运行环境要求,如 Node.js 版本、系统依赖等
- metadata:自定义元数据,用于分类、搜索、过滤
- disable-model-invocation:控制是否自动调用
2.3 Skill 内容结构
Frontmatter 之后的内容是 Skill 的核心指令,建议采用以下结构:
# 技能名称
为 Agent 提供的详细指令。
## 使用时机
- 在以下情况使用此技能:
- 当用户询问关于部署的问题时
- 当代码需要部署到生产环境时
- 当需要验证部署配置时
## 指令
1. 首先检查当前分支是否为 develop 或 main
2. 运行测试套件确保代码质量
3. 使用以下命令部署到目标环境:
```bash
./scripts/deploy.sh staging
- 验证部署结果并报告状态
注意事项
- 生产环境部署需要审批流程
- 部署前必须通过所有测试
- 回滚脚本位于 scripts/rollback.sh
## 三、Skills 的加载与作用域
### 3.1 加载优先级体系
Skills 的加载遵循严格的作用域优先级,确保最具体的规则优先应用:
| 作用域 | 路径示例 | 优先级 | 说明 |
|--------|----------|--------|------|
| **项目级** | `.agents/skills/` | 最高 | 项目特定 Skill,覆盖所有用户 |
| **项目级** | `.cursor/skills/` | 高 | Cursor 项目特定 Skill |
| **用户级** | `~/.agents/skills/` | 中 | 用户全局 Skill,跨项目共享 |
| **用户级** | `~/.cursor/skills/` | 低 | Cursor 用户全局 Skill |
| **兼容层** | `.claude/skills/` | 兼容 | 兼容 Claude 生态 |
| **兼容层** | `.codex/skills/` | 兼容 | 兼容 Codex 生态 |
**优先级冲突处理**:当多个 Skill 名称相同时,优先级高的 Skill 会覆盖优先级低的。这种设计确保了项目特定配置可以覆盖用户全局配置,而用户全局配置可以覆盖编辑器默认配置。
### 3.2 多编辑器兼容策略
Cursor 通过兼容层支持多编辑器生态:
```javascript
// 兼容层映射逻辑
const compatibilityMap = {
'claude': {
source: '.claude/skills/',
target: '.cursor/skills/',
transform: (skill) => {
// 转换 Claude 特定格式为 Cursor 格式
return transformClaudeToCursor(skill);
}
},
'codex': {
source: '.codex/skills/',
target: '.cursor/skills/',
transform: (skill) => {
// 转换 Codex 特定格式为 Cursor 格式
return transformCodexToCursor(skill);
}
}
};
这种设计使得 Skill 可以在不同编辑器间迁移,降低了生态切换成本。
四、Skills 的实践应用
4.1 禁用自动调用模式
某些 Skill 需要显式调用,这时需要设置 disable-model-invocation: true。这种模式特别适合:
- 敏感操作:如删除数据库、修改生产配置
- 复杂流程:需要用户确认的多步骤操作
- 实验性功能:尚未稳定的新能力
---
name: database-migration
description: 执行数据库迁移脚本
disable-model-invocation: true
---
# Database Migration
此技能用于执行数据库迁移操作。
## 使用方式
在聊天中输入 `/database-migration` 来触发此技能。
## 操作步骤
1. 确认当前环境
2. 备份数据库
3. 执行迁移脚本
4. 验证迁移结果
4.2 脚本集成模式
Skills 可以集成可执行脚本,实现自动化操作。脚本应遵循以下原则:
- 自包含:不依赖外部环境变量
- 错误处理:提供清晰的错误信息和退出码
- 可配置:支持参数化配置
---
name: deploy-app
description: 部署应用到目标环境
---
# Deploy App
## 使用方式
运行部署脚本:`scripts/deploy.sh <environment>`
## 部署流程
1. 环境检查
2. 构建应用
3. 部署到目标环境
4. 健康检查
## 预部署验证
在部署前,运行验证脚本:
```bash
python scripts/validate.py --env staging
### 4.3 参考资料管理
将详细参考资料分离到单独文件,避免 SKILL.md 过于冗长:
my-skill/
├── SKILL.md # 简洁的核心指令
├── references/
│ ├── REFERENCE.md # 详细参考资料
│ ├── API_DOCS.md # API 文档
│ └── BEST_PRACTICES.md # 最佳实践
└── assets/
└── config-template.json # 配置模板
这种分离策略符合**关注点分离**原则,使 Skill 保持简洁,同时提供完整的知识支持。
## 五、Skills 的迁移与演进
### 5.1 从规则迁移到 Skills
Cursor 内置了 `/migrate-to-skills` 技能,帮助将现有规则转换为 Skills。迁移过程分为两个阶段:
**第一阶段:识别可迁移的规则**
```javascript
// 迁移逻辑示例
function migrateRules(rules) {
return rules.filter(rule => {
// 1. 排除 alwaysApply: true 的规则(有显式触发条件)
if (rule.alwaysApply === true) return false;
// 2. 排除有特定 globs 模式的规则(触发条件复杂)
if (rule.globs && rule.globs.length > 0) return false;
// 3. 排除用户规则(不存储在文件系统)
if (rule.source === 'user') return false;
// 4. 保留需要迁移的规则
return true;
});
}
第二阶段:转换规则为 Skills
function convertToSkill(rule) {
return {
name: rule.name || generateSkillName(rule),
description: rule.description || '从规则迁移而来',
content: generateSkillContent(rule),
disableModelInvocation: rule.type === 'slash-command' // 斜杠命令转为显式调用
};
}
5.2 迁移策略对比
| 规则类型 | 是否迁移 | 原因 |
|---|---|---|
| Dynamic Rules (alwaysApply: false) | ✅ 迁移 | 无显式触发条件,适合 Skill 的上下文感知 |
| Slash Commands | ✅ 迁移 | 显式调用,转为 disable-model-invocation: true |
| Always Apply Rules | ❌ 不迁移 | 有显式触发条件,与 Skill 行为不同 |
| Glob 模式规则 | ❌ 不迁移 | 触发条件复杂,难以用 Skill 表达 |
| 用户规则 | ❌ 不迁移 | 不存储在文件系统,无法持久化 |
六、Skills 的团队协作实践
6.1 团队 Skill 管理策略
在团队环境中,Skills 的管理需要遵循以下原则:
- 版本控制:所有 Skill 纳入 Git 管理
- 命名规范:统一的命名约定
- 文档完善:每个 Skill 都有完整的文档
- 测试验证:确保 Skill 按预期工作
6.2 团队 Skill 共享方案
# .cursor/rules 或团队 Skill 配置
team-skills:
- name: code-review
source: git@github.com:team/code-review-skills.git
path: skills/
version: v1.2.0
auto-update: true
- name: deployment
source: git@github.com:team/deployment-skills.git
path: skills/
version: main
auto-update: false
6.3 Skill 的版本锁定
通过 joySkills.lock 文件锁定 Skill 版本:
# joySkills.lock
skills:
- name: code-review
version: v1.2.0
commit: a1b2c3d4e5f678901234567890abcdef12345678
source: git@github.com:team/code-review-skills.git
这种锁定机制确保团队所有成员使用完全相同的 Skill 版本,避免因 Skill 更新导致的协作问题。
七、React 开发单页面 H5 的 Skill 实践案例
7.1 Skill 设计目标
创建一个名为 react-h5-boilerplate 的 Skill,帮助开发者快速创建 React H5 单页面应用。该 Skill 应包含:
- 项目初始化
- 基础组件库集成
- 路由配置
- 状态管理
- API 调用封装
- 构建部署流程
7.2 Skill 实现
---
name: react-h5-boilerplate
description: 快速创建 React H5 单页面应用,包含路由、状态管理和 API 调用
license: MIT
metadata:
category: frontend
tags: ["react", "h5", "typescript", "vite"]
---
# React H5 Boilerplate
此技能用于快速初始化 React H5 单页面应用,提供现代化的开发体验。
## 使用时机
- 开始新的 React H5 项目时
- 需要标准化的项目结构时
- 需要集成 TypeScript 和现代工具链时
## 初始化项目
### 1. 创建项目结构
```bash
# 使用 Vite 创建 React + TypeScript 项目
npm create vite@latest my-app -- --template react-ts
# 进入项目目录
cd my-app
# 安装依赖
npm install
# 安装常用依赖
npm install react-router-dom axios
npm install -D @types/react @types/react-dom
2. 项目结构说明
my-app/
├── src/
│ ├── components/ # 可复用组件
│ ├── pages/ # 页面组件
│ ├── hooks/ # 自定义 Hooks
│ ├── services/ # API 服务层
│ ├── store/ # 状态管理
│ ├── utils/ # 工具函数
│ └── styles/ # 样式文件
├── public/ # 静态资源
├── index.html # HTML 模板
└── package.json # 项目配置
3. 路由配置
// src/router/index.tsx
import { createBrowserRouter } from 'react-router-dom';
import HomePage from '../pages/Home';
import AboutPage from '../pages/About';
const router = createBrowserRouter([
{
path: '/',
element: <HomePage />,
},
{
path: '/about',
element: <AboutPage />,
},
]);
export default router;
4. 状态管理(使用 Zustand)
// src/store/counterStore.ts
import { create } from 'zustand';
interface CounterState {
count: number;
increment: () => void;
decrement: () => void;
}
export const useCounterStore = create<CounterState>((set) => ({
count: 0,
increment: () => set((state) => ({ count: state.count + 1 })),
decrement: () => set((state) => ({ count: state.count - 1 })),
}));
5. API 调用封装
// src/services/api.ts
import axios from 'axios';
const api = axios.create({
baseURL: process.env.REACT_APP_API_URL || 'https://api.example.com',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
});
// 请求拦截器
api.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => Promise.reject(error)
);
// 响应拦截器
api.interceptors.response.use(
(response) => response.data,
(error) => {
console.error('API Error:', error);
return Promise.reject(error);
}
);
export default api;
6. 组件示例
// src/components/Button/index.tsx
import React from 'react';
import './Button.css';
interface ButtonProps {
children: React.ReactNode;
onClick?: () => void;
variant?: 'primary' | 'secondary' | 'danger';
disabled?: boolean;
}
const Button: React.FC<ButtonProps> = ({
children,
onClick,
variant = 'primary',
disabled = false,
}) => {
return (
<button
className={`btn btn-${variant} ${disabled ? 'disabled' : ''}`}
onClick={onClick}
disabled={disabled}
>
{children}
</button>
);
};
export default Button;
7. 构建与部署
# 开发环境
npm run dev
# 构建生产版本
npm run build
# 预览生产版本
npm run preview
# 部署到服务器
# 使用 scripts/deploy.sh 脚本
./scripts/deploy.sh staging
八、Skills 的测试与验证
8.1 Skill 测试策略
每个 Skill 应包含测试用例,确保其正确性:
# 在 SKILL.md 中添加测试部分
## 测试用例
### 测试 1: 项目初始化
**场景**: 用户要求创建新的 React H5 项目
**预期**: Skill 提供完整的初始化命令和项目结构说明
**验证**: 运行 `npm create vite@latest` 并检查项目结构
### 测试 2: 路由配置
**场景**: 用户需要添加新页面
**预期**: Skill 提供路由配置示例
**验证**: 检查路由配置是否正确
### 测试 3: API 调用
**场景**: 用户需要调用 API
**预期**: Skill 提供 API 封装示例
**验证**: 检查 API 调用是否正常工作
8.2 自动化测试脚本
// test/skill-test.js
const { execSync } = require('child_process');
const fs = require('fs');
describe('react-h5-boilerplate skill', () => {
test('should provide correct initialization commands', () => {
const skillContent = fs.readFileSync('skills/react-h5-boilerplate/SKILL.md', 'utf8');
expect(skillContent).toContain('npm create vite@latest');
expect(skillContent).toContain('react-ts');
});
test('should have proper project structure', () => {
const skillContent = fs.readFileSync('skills/react-h5-boilerplate/SKILL.md', 'utf8');
expect(skillContent).toContain('src/');
expect(skillContent).toContain('components/');
expect(skillContent).toContain('pages/');
});
});
九、Skills 的演进与维护
9.1 Skill 版本管理
随着技术栈的演进,Skill 需要定期更新:
- 定期审查:每季度审查一次 Skill 的有效性
- 版本发布:使用语义化版本控制
- 向后兼容:确保旧版本仍能工作
- 弃用通知:提前通知用户弃用计划
9.2 技能库管理工具
使用 joyskills-cli 管理团队 Skill 库:
# 添加 Skill 到团队库
joyskills add skills/react-h5-boilerplate
# 发布新版本
joyskills publish v1.2.0
# 查看更新
joyskills update
# 锁定版本
joyskills install team://skills/react-h5-boilerplate@v1.2.0
十、总结与最佳实践
10.1 Skills 设计原则
- 单一职责:每个 Skill 只解决一个具体问题
- 明确边界:清晰定义使用时机和限制
- 易于理解:使用自然语言,避免技术黑话
- 可测试:包含测试用例,确保可靠性
- 可维护:结构清晰,便于后续修改
10.2 团队协作建议
- 建立 Skill 目录:按功能分类管理 Skill
- 制定命名规范:统一命名约定
- 文档化流程:记录 Skill 的使用场景和效果
- 定期评审:确保 Skill 的质量和相关性
- 版本控制:所有变更通过 Git 管理
一、Cursor Skills 核心认知:脱离基础配置的本质理解
1.1 Skills 不是配置文件,是 AI 代理的「专业手册」
很多开发者会将 Cursor Skills 简单等同于编辑器的自定义规则或快捷命令,这是对功能的核心误解。从本质上来说,Skills 是写给 Cursor AI 代理的标准化业务/开发指南。
传统的 AI 代码助手只能基于通用编程知识提供支持,无法理解特定项目的技术栈规范、业务逻辑、团队约定;而 Skills 相当于为 AI 代理定制了「专属知识库」,当开发者在项目中编写代码时,AI 会自动读取匹配的 Skills 内容,按照预设的规范、指令、逻辑完成开发工作,彻底解决「AI 生成代码不符合项目规范」「不理解业务需求」「重复沟通成本高」的痛点。
Skills 的核心价值体现在三点:标准化开发流程、私有化业务适配、自动化效率提升。它不依赖开发者手动触发,AI 会根据项目上下文自动匹配并应用;也可以通过显式命令调用,满足定制化需求。
1.2 Skills 的核心工作机制:自动匹配与显式调用
Cursor Skills 有两种核心工作模式,这是实践中必须掌握的核心逻辑,决定了技能的使用方式和适用场景:
-
自动匹配模式(默认)
无需开发者任何操作,Cursor AI 会实时分析当前的代码上下文、文件类型、开发需求、关键词,自动检索项目级、用户级的所有 Skills,判断技能与当前场景的相关性,一旦匹配成功,立即将技能中的指令、规范、逻辑注入 AI 思考过程,生成符合要求的代码或解决方案。
例如:开发 React 项目时,AI 自动匹配「React 开发规范技能」,生成的代码自动遵循项目的组件命名、hooks 使用、样式规范。 -
显式调用模式(禁用自动调用)
通过在技能配置中设置disable-model-invocation: true,关闭 AI 自动匹配能力,技能仅能通过/技能名称的斜杠命令手动触发。这种模式适用于特定的工具型、流程型技能,例如「项目打包部署」「接口文档生成」「代码格式化校验」等非高频、需主动触发的功能。
两种模式互补,覆盖了日常开发中「高频通用规范」和「低频专用工具」的全场景需求,这也是 Cursor Skills 灵活性的核心体现。
1.3 Skills 的文件结构核心价值:模块化与轻量化
Cursor Skills 规定的文件夹结构(SKILL.md + scripts/ + references/ + assets/)并非强制的格式约束,而是为了实现模块化管理和轻量化调用:
- SKILL.md:核心指令文件,存储 AI 必须读取的核心规范、使用时机、执行步骤,要求简洁明了,保证 AI 快速加载核心信息;
- scripts/:可执行脚本目录,存放自动化脚本(Shell、Python、JS 等),AI 可直接调用脚本完成自动化操作,脱离纯文本指令的限制;
- references/:扩展参考文档目录,存放详细的技术文档、业务说明、接口定义等,AI 仅在需要时加载,避免核心文件臃肿;
- assets/:静态资源目录,存放模板文件、配置文件、图片等,用于代码生成、项目初始化等场景。
这种结构的核心设计理念是**「核心信息优先,扩展信息按需加载」**,保证 AI 在处理开发需求时,不会被冗余信息干扰,同时满足复杂项目的扩展需求。这也是实践中组织 Skills 的核心原则:核心指令精简,扩展内容分离。
1.4 Skills 的层级优先级:项目级 > 用户级,兼容优先
Cursor 支持项目级(.agents/skills/、.cursor/skills/)和用户级(/.agents/skills/、/.cursor/skills/)技能,同时兼容 Claude、Codex 的技能目录,这一设计的实践意义在于**「全局通用 + 项目定制」的分层管理**:
- 用户级技能:存放全局通用的技能,例如「通用前端开发规范」「Git 提交规范」「Python 基础语法规范」,适用于所有本地项目,一次编写,全局生效;
- 项目级技能:存放当前项目专属的技能,例如「XX 产品 React 业务规范」「XX 项目部署流程」,仅对当前项目生效,优先级高于用户级技能,避免全局规范与项目定制规范冲突。
实践中,无需关心目录的兼容性差异,只需遵循「通用技能放用户级,项目专属技能放项目级」的原则,Cursor 会自动识别并加载所有合法目录下的技能,无需手动配置路径。
二、Cursor Skills 实践核心:编写规范与高阶用法
2.1 技能编写的核心原则:可执行、可理解、可复用
Cursor Skills 的效果完全取决于编写质量,脱离实践的技能无法发挥价值。在编写技能时,必须遵循三大核心原则:
- 可执行:技能中的指令必须是 AI 能够直接执行的具体操作,而非抽象描述。例如不要写「优化 React 代码」,而要写「React 组件必须使用函数式组件 + Hooks,禁止使用类组件;组件命名采用大驼峰,hooks 命名采用小驼峰」;
- 可理解:语言简洁直白,符合 AI 的理解逻辑,避免使用行业黑话、模糊词汇,分点罗列指令,让 AI 快速抓取核心信息;
- 可复用:技能模块化设计,一个技能对应一个核心功能,避免大而全的技能文件。例如拆分「React 组件规范」「React 样式规范」「React 接口请求规范」三个技能,而非合并为一个。
2.2 核心配置项的实践用法(非基础介绍,聚焦使用场景)
(1)name 与 description:AI 匹配的核心关键词
name 是技能的唯一标识,description 是 AI 判断技能相关性的核心依据。实践中,description 必须包含场景关键词和功能关键词,这是 AI 自动匹配的关键。
例如:编写 React H5 开发技能时,description 不能写「React 开发」,而要写「用于 React 单页面 H5 项目开发,包含移动端适配、组件规范、hooks 使用、样式开发等指令,适用于移动端 H5 页面开发场景」。
(2)disable-model-invocation:模式切换的核心配置
该配置是区分技能类型的关键:
- 标准开发规范类技能(如代码规范、业务逻辑规范):不配置该字段,使用自动匹配模式,AI 全程遵循规范开发;
- 工具流程类技能(如项目初始化、打包部署、代码校验):配置为 true,仅手动调用执行,避免 AI 无意义自动触发。
(3)compatibility 与 metadata:扩展信息的实践用法
compatibility 用于声明技能的运行环境依赖,例如「React 18+、Vite 5.0+、移动端 Chrome 内核」,AI 会根据环境判断是否适用技能;metadata 用于存放自定义元数据,例如团队名称、版本号、更新时间,用于技能管理和共享。
2.3 脚本集成:Skills 的自动化能力升级
scripts/ 目录是 Cursor Skills 从「文本指令」升级为「自动化工具」的核心,实践中可集成任意可执行脚本,实现 AI 驱动的自动化操作:
- 前端项目常用脚本:
- JS/TS 脚本:项目初始化、依赖安装、代码格式化、接口生成;
- Shell 脚本:项目打包、部署、本地服务启动;
- AI 调用脚本的规则:
在 SKILL.md 中使用相对路径引用脚本,明确脚本的执行参数、执行时机、预期结果。例如:执行 scripts/init-react-h5.js 命令,自动初始化 React H5 项目基础结构。 - 脚本实践要求:
脚本必须自包含,无需外部依赖;具备完善的错误提示,执行失败时 AI 可根据提示反馈给开发者;边界情况处理完善,适配不同的项目环境。
2.4 技能共享与迁移:团队协作的核心实践
Cursor Skills 支持从 GitHub 安装远程技能,同时支持内置的 /migrate-to-skills 命令迁移旧版规则,这是团队协作中统一开发规范的核心手段:
- 团队共享技能:将团队统一的开发规范、业务技能上传至 GitHub,团队成员通过远程规则安装,实现全团队 AI 开发规范统一,彻底解决多人开发代码风格不一致的问题;
- 规则迁移:旧版 Cursor 的动态规则、斜杠命令可一键迁移为 Skills,其中智能规则迁移为自动匹配技能,斜杠命令迁移为显式调用技能,保证历史配置无缝升级,无需重新编写。
三、Cursor Skills 实战:开发极简 React 单页面 H5 应用
本章节通过从零开发一个 React 单页面 H5 首页的完整流程,实战演示 Cursor Skills 的编写、调用、自动匹配、脚本集成全流程。该 H5 页面包含:移动端适配、顶部导航栏、轮播图、功能菜单、底部版权栏,是最典型的移动端单页面应用。
3.1 实战准备:项目环境与技能目录创建
- 创建 React + Vite 项目(基础环境,无需手动编写代码,后续由 AI 基于 Skills 生成):
我们仅需创建空项目,核心工作是编写定制化 Skills,让 AI 按照我们的规范完成开发。 - 创建项目级 Skills 目录:
在项目根目录创建.cursor/skills/文件夹,作为本次实战的技能目录,我们将编写两个核心技能:react-h5-dev:React H5 开发规范技能(自动匹配模式);init-h5-project:H5 项目初始化技能(显式调用模式,含自动化脚本)。
3.2 实战技能1:react-h5-dev —— React H5 开发规范自动匹配技能
该技能是核心规范技能,AI 会在开发 React H5 代码时自动匹配,严格遵循规范生成代码,无需手动触发。
3.2.1 技能文件结构
.cursor/
└── skills/
└── react-h5-dev/
└── SKILL.md
3.2.2 SKILL.md 完整内容(实践级指令,非基础格式)
---
name: react-h5-dev
description: 适用于 React 18 + Vite 单页面 H5 项目开发,包含移动端适配规范、函数式组件/Hooks 规范、CSS 样式规范、组件结构规范,AI 生成代码时自动遵循该技能
compatibility: React 18+, Vite 5.0+, 移动端浏览器适配
metadata:
version: 1.0.0
team: frontend-group
---
# React H5 开发核心规范
## 一、技术栈约束
1. 必须使用 React 18 函数式组件 + Hooks,禁止使用类组件;
2. 样式使用原生 CSS + CSS 变量,适配移动端 rem 布局;
3. 路由使用 react-router-dom 最新版本,仅单页面无需多路由;
4. 禁止使用第三方 UI 库,纯手写原生组件保证轻量化。
## 二、移动端适配规范
1. 基准字号设置为 375px 设计稿下 16px,使用 rem 单位:1rem = 16px;
2. 媒体查询适配 320px - 480px 移动端屏幕;
3. 禁止固定像素宽度,所有尺寸使用相对单位;
4. 触摸区域最小尺寸 44px,保证移动端交互体验。
## 三、组件开发规范
1. 组件命名:大驼峰命名法,例如 Home、NavHeader;
2. Hooks 命名:小驼峰命名法,必须以 use 开头,例如 useSwiper、useWindowSize;
3. 组件结构:导入依赖 → 定义组件 → 导出组件,逻辑与 UI 分离;
4. 状态管理:仅使用 useState/useEffect,禁止复杂状态库。
## 四、样式开发规范
1. 全局样式重置:清除默认边距、盒模型设置为 border-box;
2. CSS 变量统一管理主题色、字体、间距;
3. 样式类名:短横线命名法,例如 nav-header、swiper-container;
4. 禁止嵌套过深的样式,保持样式扁平化。
## 五、H5 页面结构要求
单页面必须包含:顶部导航栏、轮播图区域、功能菜单区域、底部版权栏,布局居中,适配所有移动端设备。
3.2.3 技能实践效果
当我们在项目中编写 Home.jsx 文件时,Cursor AI 会自动读取该技能,生成的代码会完全遵循:函数式组件、Hooks、rem 适配、原生 CSS、标准页面结构等所有规范,无需我们手动提醒 AI 遵循规则。
3.3 实战技能2:init-h5-project —— H5 项目初始化显式调用技能
该技能是工具型技能,关闭自动调用,仅通过 /init-h5-project 命令触发,AI 会调用内置脚本,自动初始化项目依赖、配置文件、全局样式,实现一键初始化。
3.3.1 技能文件结构(集成 scripts 脚本)
.cursor/
└── skills/
└── init-h5-project/
├── SKILL.md
└── scripts/
└── init.js
3.3.2 SKILL.md 完整内容
---
name: init-h5-project
description: 一键初始化 React H5 项目,安装依赖、配置移动端适配、创建全局样式文件
disable-model-invocation: true
compatibility: Node.js 16+, React 18+
---
# H5 项目初始化技能
## 使用方式
在 Cursor 聊天框输入 `/init-h5-project` 触发技能,AI 自动执行初始化流程。
## 执行步骤
1. 自动执行 scripts/init.js 脚本,安装项目依赖:react-router-dom、axios;
2. 自动创建全局样式文件 src/index.css,写入移动端适配样式;
3. 自动创建项目基础目录:components/、pages/、assets/;
4. 自动修改 main.jsx 引入全局样式。
## 约束说明
仅用于项目初始化,执行完成后提示「初始化成功」,无需重复执行。
3.3.3 scripts/init.js 自动化脚本(可直接执行)
该脚本用于自动安装依赖、创建项目目录,AI 可直接调用执行:
const fs = require('fs');
const { execSync } = require('child_process');
// 1. 安装项目依赖
console.log('正在安装依赖...');
execSync('npm install react-router-dom axios', { stdio: 'inherit' });
// 2. 创建项目基础目录
const dirs = ['src/components', 'src/pages', 'src/assets'];
dirs.forEach(dir => {
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
});
// 3. 生成全局适配样式
const cssContent = `/* 全局样式重置 + 移动端适配 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 16px;
}
@media (max-width: 375px) {
html {
font-size: 14px;
}
}
@media (min-width: 480px) {
html {
font-size: 18px;
}
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.5;
color: #333;
background-color: #f5f5f5;
}
/* 主题变量 */
:root {
--primary-color: #409eff;
--text-color: #333;
--bg-color: #fff;
}
`;
fs.writeFileSync('src/index.css', cssContent);
console.log('项目初始化脚本执行完成!');
3.3.4 技能实践效果
在 Cursor 聊天框输入 /init-h5-project,AI 立即调用该技能,执行 init.js 脚本,一键完成依赖安装、目录创建、全局样式配置,无需手动操作任何配置文件。
3.4 实战核心流程:AI 基于 Skills 开发 React H5 页面
完成两个技能的编写后,我们无需手动编写一行代码,仅通过自然语言指令,让 Cursor AI 基于定制化 Skills 完成整个 H5 页面开发:
3.4.1 第一步:显式调用初始化技能
在 Cursor 聊天框输入:/init-h5-project
AI 执行结果:自动安装依赖、创建目录、生成全局样式,反馈「项目初始化成功」。
3.4.2 第二步:自动匹配规范技能,生成首页组件
在聊天框输入自然语言需求:生成 React H5 单页面首页,包含顶部导航、轮播图、4个功能菜单、底部版权栏
此时 Cursor AI 自动匹配 react-h5-dev 技能,严格遵循我们预设的规范生成代码:
AI 生成的 src/pages/Home.jsx 代码(完全遵循技能规范)
import { useState, useEffect } from 'react';
import '../index.css';
// 函数式组件,遵循 Hooks 规范
const Home = () => {
// 轮播图状态
const [currentSwiper, setCurrentSwiper] = useState(0);
const swiperList = [
{ id: 1, img: 'https://picsum.photos/375/180' },
{ id: 2, img: 'https://picsum.photos/375/180' },
{ id: 3, img: 'https://picsum.photos/375/180' }
];
// 轮播图自动切换
useEffect(() => {
const timer = setInterval(() => {
setCurrentSwiper(prev => (prev + 1) % swiperList.length);
}, 3000);
return () => clearInterval(timer);
}, [swiperList.length]);
// 功能菜单数据
const menuList = [
{ id: 1, name: '首页', icon: '🏠' },
{ id: 2, name: '分类', icon: '📦' },
{ id: 3, name: '购物车', icon: '🛒' },
{ id: 4, name: '我的', icon: '👤' }
];
return (
<div className="home-container">
{/* 顶部导航栏:遵循样式规范 */}
<header className="nav-header">
<h1>React H5 首页</h1>
</header>
{/* 轮播图区域:rem 适配 */}
<section className="swiper-container">
<img src={swiperList[currentSwiper].img} alt="轮播图" className="swiper-img" />
</section>
{/* 功能菜单区域 */}
<section className="menu-container">
{menuList.map(item => (
<div key={item.id} className="menu-item">
<span className="menu-icon">{item.icon}</span>
<p className="menu-name">{item.name}</p>
</div>
))}
</section>
{/* 底部版权栏 */}
<footer className="footer">
<p>© 2025 React H5 实战项目 版权所有</p>
</footer>
</div>
);
};
export default Home;
AI 自动生成的配套样式(追加至 index.css)
/* 首页样式:遵循扁平化、移动端适配规范 */
.home-container {
width: 100%;
min-height: 100vh;
padding-bottom: 2rem;
}
.nav-header {
height: 3rem;
background-color: var(--primary-color);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 1.2rem;
}
.swiper-container {
width: 100%;
height: 11.25rem;
margin: 0.5rem 0;
}
.swiper-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.menu-container {
display: flex;
flex-wrap: wrap;
padding: 1rem;
gap: 1rem;
background-color: #fff;
margin: 0.5rem;
border-radius: 0.5rem;
}
.menu-item {
width: calc(25% - 0.75rem);
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
min-height: 4rem;
}
.menu-icon {
font-size: 1.5rem;
}
.menu-name {
font-size: 0.8rem;
color: var(--text-color);
}
.footer {
position: fixed;
bottom: 0;
width: 100%;
height: 2rem;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
color: #999;
border-top: 1px solid #eee;
}
3.4.3 第三步:渲染页面,完成项目
继续输入指令:将 Home 组件渲染到 main.jsx 中,启动项目
AI 自动修改 src/main.jsx:
import React from 'react';
import ReactDOM from 'react-dom/client';
import Home from './pages/Home';
import './index.css';
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<Home />
</React.StrictMode>
);
最终,我们仅通过调用技能 + 自然语言指令,在 Cursor Skills 的支撑下,零代码编写完成了一个完整的 React 单页面 H5 应用,且所有代码完全符合我们预设的开发规范。
3.5 实战总结:Skills 带来的核心价值
- 规范统一:AI 生成的代码 100% 遵循项目定制规范,无需手动修改、无需反复沟通;
- 效率提升:初始化、代码生成、配置修改全流程自动化,开发时间缩短 80% 以上;
- 低成本上手:无需精通 React 细节,通过 Skills 定义规范,AI 完成专业开发;
- 可复用性:两个技能可直接复用于所有 React H5 项目,团队共享后统一规范。
四、Cursor Skills 高阶实践技巧与避坑指南
4.1 高阶技巧:多技能组合使用
复杂项目中,可将技能拆分为多个细粒度模块,AI 会自动组合匹配:
- 基础技能:通用开发规范、代码格式规范;
- 技术栈技能:React 规范、Hooks 规范;
- 业务技能:H5 适配规范、页面结构规范;
AI 会自动合并所有匹配的技能指令,生成最贴合需求的代码。
4.2 高阶技巧:技能迭代优化
项目迭代时,无需重新编写技能,仅需修改 SKILL.md 中的指令,AI 会实时生效。例如更新 React 版本后,修改 compatibility 字段,优化组件规范后,直接更新指令内容。
4.3 避坑指南:常见实践错误
- 技能指令过于抽象:AI 无法理解,生成代码不符合要求,必须使用具体、可执行的指令;
- 技能文件过于臃肿:将所有规范写在一个技能中,导致 AI 加载缓慢,需模块化拆分;
- 错误使用自动调用:工具型技能未关闭自动调用,导致 AI 无意义触发,浪费资源;
- 脚本无错误处理:脚本执行失败后无提示,AI 无法反馈问题,必须完善脚本的异常处理。
五、结语
Cursor Skills 不是一个简单的编辑器扩展功能,而是AI 驱动开发的核心生产工具。它的本质是将开发者的开发经验、项目规范、业务逻辑转化为 AI 可理解、可执行的标准化指令,让 AI 从「通用代码生成器」升级为「项目专属开发助手」。
在前端开发,尤其是 React、Vue 等现代框架开发中,Cursor Skills 的价值尤为突出:它解决了 AI 开发中「规范不统一」「业务不理解」「重复操作多」的核心痛点。通过本文的实战案例可以看出,仅需编写两个简单的技能,就能实现 React H5 项目的全流程自动化开发,大幅降低开发成本、提升开发效率。
实践中,无需追求复杂的技能配置,核心是贴合项目需求、编写精准指令、模块化管理技能。无论是个人独立开发,还是团队协作开发,Cursor Skills 都能成为提升效率的核心利器。随着 AI 编辑器的不断发展,Skills 体系会越来越完善,掌握这一技能,将成为现代前端开发者的必备核心能力。
未来,我们可以将更多的业务逻辑、自动化流程、开发规范集成到 Skills 中,让 AI 承担更多重复性、规范性的开发工作,开发者专注于核心业务创新,真正实现「AI 赋能开发,效率最大化」的目标。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)