Skip to Content
BlogCursor 终于支持 Skills 了,一条命令从 Rules 迁移过去

Cursor 终于支持 Skills 了,一条命令从 Rules 迁移过去

2026 年 1 月 22 日,Cursor 终于在正式版中推出了 Agent Skills 功能!

这个功能在 nightly 通道测试了一段时间,现在所有用户都可以使用了。如果你已经在用 Cursor Rules 来定制 AI 的行为,那么恭喜你——你已经走在了大多数开发者前面。而 Agent Skills 带来了一种全新的扩展方式,可能会彻底改变你组织 AI 指令的方式。

这篇文章将帮助你理解 Rules 和 Skills 的本质区别,以及如何智能地进行迁移——不是简单地把所有 Rules 都变成 Skills,而是让它们各得其所

Rules 和 Skills:两种不同的扩展机制

先来明确一个核心概念:Rules 和 Skills 不是替代关系,而是互补关系

Rules:静态上下文

Rules 提供持续生效的指令,Agent 在每次对话开始时都会看到这些内容。适合:

  • 🔧 项目命令npm run buildbun test 等常用命令
  • 📐 代码风格:ES 模块 vs CommonJS、命名规范等
  • 📁 项目结构:API 路由放在哪、组件如何组织
  • 🔗 规范引用:指向代码库中的标准示例文件
# .cursor/rules/project-conventions.mdc --- alwaysApply: true --- # 项目规范 ## 命令 - `bun run build` : 构建项目 - `bun run typecheck` : 类型检查 - `bun run test` : 运行测试 ## 代码风格 - 使用 ES 模块(import/export),而非 CommonJS(require) - 参考 `components/Button.tsx` 了解标准组件结构 ## 工作流 - 代码修改后始终运行类型检查 - API 路由放在 `app/api/` 目录

Skills:动态能力

Skills 是按需加载的专业能力包,只有当 Agent 判断相关时才会加载。适合:

  • 自定义命令:通过 /命令名 触发的可复用工作流
  • 🔄 自动化流程:配合 Hooks 实现自动化
  • 📚 领域知识:特定任务的详细指令(如部署流程、数据库迁移等)
# .cursor/skills/deploy-app/SKILL.md --- name: deploy-app description: 将应用部署到预发布或生产环境。在部署代码、发布或切换环境时使用。 --- # 部署应用 使用以下脚本部署应用。 ## 使用方式 运行部署脚本: `scripts/deploy.sh <environment>` 其中 `<environment>``staging``production` ## 部署前验证 部署前先运行验证脚本: `python scripts/validate.py`

为什么需要区分?

关键在于上下文窗口的效率

特性RulesSkills
加载时机每次对话开始按需加载
上下文占用始终占用仅在需要时
适合内容简短、高频使用详细、特定场景
触发方式自动应用Agent 判断 或 /命令

如果你把所有内容都放在 Rules 里,Agent 的上下文窗口会被大量可能用不到的指令塞满。而 Skills 的按需加载机制,让你可以提供丰富的专业能力而不牺牲效率。

官方迁移命令的局限

Cursor 2.4 内置了 /migrate-to-skills 命令,但它的迁移策略比较简单:

会迁移的

  • 设置为”智能应用”的规则(有 description,无 globs,无 alwaysApply: true
  • 所有斜杠命令

不会迁移的

  • 设置了 alwaysApply: true 的规则
  • 指定了 globs 模式的规则

这种机械式的迁移没有考虑内容本身是否适合成为 Skill。比如,一个”智能应用”的规则如果内容是项目级的代码风格约定,其实更适合保留为 Rule。

智能迁移:让 Rules 和 Skills 各得其所

基于 Cursor 官方最佳实践 ,我设计了一个更智能的迁移策略。

判断标准

应该保留为 Rules 的内容

  1. 项目命令清单:build、test、lint 等常用命令
  2. 代码风格规范:命名规则、导入方式、文件组织
  3. 规范文件引用:指向代码库中的标准示例
  4. 工作流指令:如”修改代码后运行类型检查”
  5. 简短且高频使用:每次对话都可能用到的内容

应该迁移为 Skills 的内容

  1. 详细的操作流程:多步骤的部署、发布、数据库迁移等
  2. 特定场景的指令:只在特定任务中需要的详细知识
  3. 可复用的工作流:PR 创建、Issue 处理、代码审查等
  4. 包含脚本的能力:需要执行脚本或复杂命令的流程
  5. 内容较长:超过 50 行的详细指令

智能迁移命令

在 Agent 聊天中输入以下提示词,执行智能迁移分析:

## 任务:智能分析并迁移 Cursor Rules 到 Skills 请分析项目中的所有 Cursor Rules,根据最佳实践决定哪些应该迁移为 Skills,哪些应该保留为 Rules。 ### 分析范围 扫描以下位置的规则文件: - 项目级:`{workspaceFolder}/**/.cursor/rules/*.mdc` - 项目命令:`{workspaceFolder}/**/.cursor/commands/*.md` - 用户命令:`~/.cursor/commands/*.md` 忽略: - `~/.cursor/worktrees` 目录 - `~/.cursor/skills-cursor` 目录(系统内置) ### 分类标准 **保留为 Rules** 的内容特征: 1. 项目命令清单(build、test、lint 等) 2. 代码风格规范(命名、导入、文件组织) 3. 对项目中规范文件的引用 4. 简短的工作流指令(< 30 行) 5. 每次对话都可能用到的高频内容 6. 已设置 `alwaysApply: true` 的规则 7. 指定了 `globs` 模式的规则(针对特定文件类型) **迁移为 Skills** 的内容特征: 1. 详细的多步骤操作流程(部署、发布、迁移等) 2. 特定场景才需要的详细指令 3. 可复用的工作流(PR、Issue、审查等) 4. 包含或引用可执行脚本的流程 5. 内容较长(> 50 行)的详细指南 6. 原本就是斜杠命令的内容 ### 执行步骤 1. **扫描阶段** - 列出所有找到的规则和命令文件 - 读取每个文件的内容 2. **分析阶段** - 对每个文件进行分类分析 - 输出分析表格: | 文件 | 当前类型 | 建议 | 原因 | |------|----------|------|------| | xxx.mdc | Rule | 保留 | 包含项目命令清单,高频使用 | | yyy.mdc | Rule | 迁移 | 详细的部署流程,特定场景使用 | | zzz.md | Command | 迁移 | 可复用的 PR 工作流 | 3. **确认阶段** - 展示分析结果,等待用户确认 - 用户可以调整个别文件的处理方式 4. **执行阶段**(用户确认后) - 对于"迁移"的文件: -`.cursor/skills/{name}/` 创建 `SKILL.md` - 保留原始内容,添加正确的 frontmatter - 斜杠命令添加 `disable-model-invocation: true` - 删除原文件 - 对于"保留"的文件: - 不做任何修改 - 如果是"智能应用"规则但内容适合 Rules,建议添加 `alwaysApply: true` 5. **报告阶段** - 输出迁移摘要 - 列出新创建的 Skills - 列出保留的 Rules - 提供撤销说明 ### SKILL.md 格式 迁移后的 Skill 文件格式: ```markdown --- name: skill-name description: 描述此技能的功能及使用时机 disable-model-invocation: true # 仅斜杠命令添加此行 --- # 标题 原始内容(保持不变)... ``` ### 注意事项 - `name` 字段必须是小写字母和连字符 - `description` 是 Agent 发现技能的关键,务必准确描述 - **严格保留原始内容**,不要修改、重排或"改进" - 如果用户要求撤销,执行反向操作恢复原文件

迁移示例

假设你有这样的 Rules 结构:

.cursor/rules/ ├── project-commands.mdc # 项目命令清单 ├── code-style.mdc # 代码风格规范 ├── deployment-guide.mdc # 详细的部署流程 ├── api-conventions.mdc # API 约定(针对 *.api.ts) └── pr-workflow.mdc # PR 创建工作流

智能迁移后:

.cursor/ ├── rules/ │ ├── project-commands.mdc # 保留 - 高频使用的命令 │ ├── code-style.mdc # 保留 - 代码风格规范 │ └── api-conventions.mdc # 保留 - 有 globs 限定 └── skills/ ├── deployment-guide/ │ └── SKILL.md # 迁移 - 详细流程,特定场景 └── pr-workflow/ └── SKILL.md # 迁移 - 可复用工作流

最佳实践建议

1. 从简单开始

只有当你发现 Agent 反复犯同样的错误时,再新增规则。在真正理解自己的模式之前,不要过度优化。

不要急于创建大量 Rules 或 Skills。观察 Agent 的行为,针对性地添加。

2. Rules 保持简洁

Rules 应该聚焦在要点上:

  • ✅ 引用文件而不是复制内容
  • ✅ 列出关键命令和模式
  • ❌ 不要复制整份风格指南(用 linter)
  • ❌ 不要记录所有可能的命令(Agent 已了解常用工具)

3. Skills 提供丰富细节

Skills 可以包含详细的分步指令、脚本引用、边界情况处理等。因为只在需要时加载,不用担心占用上下文。

4. 提交到 Git

将 Rules 和 Skills 都提交到 Git,让整个团队受益。当 Agent 犯错时,更新对应的规则或技能。

5. 利用 Hooks 增强 Skills

Skills 可以配合 Hooks 实现强大的自动化,比如:

// .cursor/hooks.json { "version": 1, "hooks": { "stop": [{ "command": "bun run .cursor/hooks/verify-tests.ts" }] } }

这个 Hook 可以让 Agent 持续工作直到所有测试通过。

总结

RulesSkills
定位静态上下文动态能力
加载每次对话按需加载
适合简短、高频、规范性详细、特定场景、流程性
格式.mdc 文件SKILL.md + 可选脚本
触发自动/GlobsAgent 判断 / /命令

迁移不是目的,让 AI 更高效地理解和执行你的意图才是目的

使用本文提供的智能迁移策略,让你的 Rules 和 Skills 各司其职,构建一个高效的 Cursor 开发环境。

进阶:从代码库自动提取 Rules 和 Skills

如果你是从零开始,或者想让 Cursor 自动分析你的项目并生成合适的 Rules 和 Skills,可以使用以下命令。

这个命令会扫描你的代码库,分析项目结构、技术栈、配置文件和代码模式,然后自动生成:

  • Rules:项目级的规范和约定
  • Skills:可复用的工作流和专业能力

代码库扫描与提取命令

在 Agent 聊天中输入以下提示词:

## 任务:扫描代码库,自动提取 Rules 和 Skills 请全面分析当前项目的代码库,自动生成合适的 Cursor Rules 和 Agent Skills。 ### 第一步:项目分析 扫描并分析以下内容: 1. **项目配置** - `package.json` / `Cargo.toml` / `pyproject.toml` 等依赖管理文件 - `tsconfig.json` / `jsconfig.json` 等编译配置 - `.eslintrc` / `prettier.config` / `biome.json` 等代码风格配置 - `Dockerfile` / `docker-compose.yml` 等容器配置 - CI/CD 配置文件(`.github/workflows/``.gitlab-ci.yml` 等) 2. **项目结构** - 目录组织方式(src/、app/、lib/、components/ 等) - 文件命名约定(kebab-case、camelCase、PascalCase) - 模块划分模式(按功能、按领域、按层级) 3. **代码模式** - 导入/导出风格(ES modules、CommonJS) - 组件结构(函数组件、类组件、组合式 API) - 状态管理方案(Redux、Zustand、Pinia、Context) - API 调用模式(fetch、axios、SWR、React Query) - 错误处理模式 - 测试组织方式 4. **常用命令** - 从 package.json scripts 提取 - 从 Makefile 提取 - 从 README 提取 5. **现有规范文档** - README.md - CONTRIBUTING.md - docs/ 目录下的文档 - 已有的 .cursor/rules/ 文件 ### 第二步:生成 Rules 根据分析结果,生成以下 Rules(放在 `.cursor/rules/` 目录): **1. project-overview.mdc**(始终应用) ```markdown --- alwaysApply: true --- # 项目概述 ## 技术栈 [从分析中提取] ## 项目结构 [从分析中提取目录说明] ## 常用命令 [从 package.json scripts 等提取] ``` **2. code-style.mdc**(始终应用) ```markdown --- alwaysApply: true --- # 代码风格 [从分析中提取的代码风格规范] [引用项目中的规范示例文件] ``` **3. 针对特定文件类型的 Rules**(使用 globs) ```markdown --- globs: ["*.tsx", "*.jsx"] --- # React 组件规范 [针对该文件类型的具体规范] ``` ### 第三步:生成 Skills 根据分析结果,生成以下 Skills(放在 `.cursor/skills/` 目录): **1. 根据项目类型生成对应的工作流 Skills** 例如,如果是 Web 项目: - `create-component/SKILL.md`:创建新组件的标准流程 - `create-api-route/SKILL.md`:创建 API 路由的标准流程 - `add-feature/SKILL.md`:添加新功能的完整流程 如果有 CI/CD: - `deploy/SKILL.md`:部署流程 - `release/SKILL.md`:发布流程 如果有测试: - `add-tests/SKILL.md`:为现有代码添加测试 - `tdd/SKILL.md`:测试驱动开发流程 **2. Git 工作流 Skills** - `pr/SKILL.md`:创建 Pull Request - `fix-issue/SKILL.md`:修复 Issue 的标准流程 ### 第四步:输出报告 完成后输出: 1. **分析摘要** - 识别到的技术栈 - 识别到的代码模式 - 识别到的项目规范 2. **生成的文件列表** | 类型 | 文件路径 | 说明 | |------|----------|------| | Rule | .cursor/rules/xxx.mdc | 描述 | | Skill | .cursor/skills/xxx/SKILL.md | 描述 | 3. **建议** - 可能需要手动补充的内容 - 推荐添加的额外 Rules 或 Skills ### 注意事项 - **不要复制整份文档**:Rules 应该引用文件,而不是复制内容 - **保持简洁**:Rules 聚焦要点,详细内容放到 Skills - **使用规范示例**:在 Rules 中引用项目中的规范文件作为示例 - **遵循命名规范**:文件名使用 kebab-case,Skill name 使用小写字母和连字符 - **提供准确的 description**:这是 Agent 发现 Skill 的关键

使用示例

运行命令后,Cursor 会自动分析你的项目并生成类似这样的结构:

.cursor/ ├── rules/ │ ├── project-overview.mdc # 项目概述、技术栈、常用命令 │ ├── code-style.mdc # 代码风格规范 │ ├── react-components.mdc # React 组件规范 (globs: *.tsx) │ └── api-routes.mdc # API 路由规范 (globs: */api/*) └── skills/ ├── create-component/ │ └── SKILL.md # 创建组件的标准流程 ├── create-api-route/ │ └── SKILL.md # 创建 API 路由的流程 ├── pr/ │ └── SKILL.md # 创建 PR 的流程 └── deploy/ └── SKILL.md # 部署流程

这样,你就拥有了一个根据项目实际情况定制的 Cursor 配置,而不是从网上复制来的通用模板。

总结

RulesSkills
定位静态上下文动态能力
加载每次对话按需加载
适合简短、高频、规范性详细、特定场景、流程性
格式.mdc 文件SKILL.md + 可选脚本
触发自动/GlobsAgent 判断 / /命令

迁移不是目的,让 AI 更高效地理解和执行你的意图才是目的

本文提供了两个实用命令:

  1. 智能迁移命令:分析现有 Rules,智能决定保留还是迁移
  2. 代码库扫描命令:从零开始,自动提取项目规范生成 Rules 和 Skills

让你的 Rules 和 Skills 各司其职,构建一个高效的 Cursor 开发环境。


📌 提示:Agent Skills 功能需要 Cursor 2.4 及以上版本。

💬 有问题或建议?欢迎在评论区交流,或提交 Issue 到 GitHub 仓库 

最后更新于: