跳转到主内容

让 AI 停止生成过期代码:.cursor/rules 与 CLAUDE.md 配置

2026-06-06cursor · claude-code · 规则 · 配置 · 规范性

使用 AI 编程工具时,一个常见的问题是 AI 生成的代码与项目实际技术栈不匹配——比如项目用的是 Next.js 16 App Router,AI 却生成 Pages Router 的旧代码;或者使用 Vue 3 组合式 API,AI 输出 Vue 2 的 Options API。这种问题不仅浪费 Token,还可能引入构建错误。

解决这个问题的关键是项目规则文件——通过声明式配置告诉 AI 当前项目的技术栈、编码规范和约束条件。本文介绍 Cursor 和 Claude Code 两种工具的项目规则配置方法。

一、Cursor 项目规则:.cursor/rules 目录

Cursor 在 2025 年底重构了规则系统。原有的单文件 .cursorrules 已被新的 .cursor/rules/ 目录取代。新系统使用 .mdc(Markdown Context) 格式,每个规则文件通过 YAML 属性头控制触发条件。

注意:如果你还在使用旧的 .cursorrules 单文件,建议尽快迁移到 .cursor/rules/ 目录。旧格式仍然兼容(截至 2026 年 6 月),但无法使用按文件类型触发的精细控制。

规则文件结构

在项目根目录创建 .cursor/rules/ 文件夹,每个 .mdc 文件包含两个部分:

  1. YAML 属性头:定义规则的描述、适用文件范围、触发方式
  2. Markdown 正文:具体的规则内容

示例:Next.js 16 项目规则

创建 .cursor/rules/nextjs-convention.mdc

yaml
---
description: "Next.js 页面与组件开发规约,修改或新建时自动触发"
globs: ["src/app/**/*.tsx", "src/components/**/*.tsx"]
alwaysApply: false
---

## 技术栈
- 核心框架:Next.js 16 (App Router) + Tailwind CSS 4 + TypeScript
- 禁止使用 Pages Router API(如 `next/router` 或 `getServerSideProps`)
- 客户端组件必须在文件首行声明 `'use client'`

## 编码规范
- 所有新组件使用函数式写法,禁止 class 组件
- 样式使用 Tailwind 原子类,不手写独立 CSS 文件
- 颜色引用统一使用 CSS 变量,如 `var(--color-text-primary)`

## 主题相关
- 禁止在全局 CSS 的 body 或 html 上添加 transition 属性
- 主题切换通过 CSS 变量驱动,不通过 JS 操作 DOM 样式

属性头字段说明

字段说明示例
description规则描述,在 Cursor 设置中显示"Next.js 页面开发规约"
globs触发该规则的文件匹配模式["src/app/**/*.tsx"]
alwaysApply是否在所有场景下始终应用true / false
建议:将 .cursor/rules/ 目录提交到 Git 仓库。这样团队成员共享一致的 AI 编码规范,新成员 clone 项目后自动获得规则。

二、Claude Code 项目规则:CLAUDE.md

Claude Code 是纯终端 CLI 工具,它的项目规则系统更简洁。在项目根目录创建一个 CLAUDE.md 文件(注意全大写),Claude Code 在启动时会自动读取并遵循其中的指令。

CLAUDE.md 模板

markdown
# 项目专属指南 (CLAUDE.md)

## 构建命令
- 开发环境:`npm run dev`
- 生产构建:`npm run build`
- 代码检查:`npm run lint`
- 类型检查:`npx tsc --noEmit`

## 技术栈
- Next.js 16 (App Router) + TypeScript strict
- Tailwind CSS 4 + shadcn/ui
- 状态管理:React Context + useReducer

## 编码规约
- 必须使用 TypeScript,禁止 `any` 类型
- 新组件放在 `src/components/ui/` 下
- 样式使用 Tailwind 原子类
- API 路由放在 `src/app/api/` 下

## 注意事项
- 不要直接修改 `prisma/schema.prisma`,通过 migration 修改
- 颜色统一使用 CSS 变量,不硬编码色值
- 修改前先列出计划,确认后再执行
与 Cursor 规则的区别:CLAUDE.md 是一个全局文件,没有按文件类型触发的机制。Claude Code 会在每次会话启动时读取它的全部内容作为上下文。因此建议保持 CLAUDE.md 精简,避免塞入过多信息导致 Token 浪费。

三、两种规则配合使用

如果你的工作流中同时使用 Cursor(IDE 端)和 Claude Code(终端端),两种规则文件可以共存且互补:

  • CLAUDE.md:描述项目全局信息(技术栈、构建命令、核心约定),供 Claude Code CLI 使用
  • .cursor/rules/*.mdc:描述特定文件类型的编码规范,通过 globs 精准触发,供 Cursor IDE 使用
  • 两者不冲突——Cursor 不会读取 CLAUDE.md(截至 2026 年 6 月,Cursor 尚未支持 CLAUDE.md,但此情况可能随版本更新而变化),Claude Code 也不会读取 .cursor/rules

四、验证规则是否生效

配置完成后,可以通过以下方式验证:

  1. Cursor:修改一个匹配 globs 的 .tsx 文件,在 Composer 中描述一个需求,观察 AI 是否遵循了规则中的编码规范
  2. Claude Code:在终端中启动 Claude Code,输入 "这个项目用什么技术栈",观察回复是否与 CLAUDE.md 中的描述一致
  3. 如果规则没有生效,检查:文件路径是否正确、YAML 格式是否有语法错误、是否重启了编辑器或终端

有疑问?来这里找答案

如果对本站内容有疑问,推荐到视频或其他知识性平台寻求解决方法,也可直接向 AI 提问获得参考性回答(注意分辨 AI 回答的正确性)

视频教程
B站搜索教程
视频演示 + 疑难解答