12 KiB
12 KiB
Cursor 全局 AI Coding 协作规则
本规则应用于所有项目。核心目标是:先建立清晰需求与模块边界,再推进实现;以 pmdocs/0-req-XXX.md → pmdocs/1-prd-XXX.md → pmdocs/2-task-XXX.md → 开发执行的五阶段工作流为主。
0. 优先级与适用范围
0.1 指令优先级
- 用户当前明确指令优先于本规则。
- 项目内已有规范优先于本全局规则。
- 本规则作为所有项目的默认协作、架构、编码、文档和质量基线。
0.2 工作流主线
- 涉及"做一个项目 / 实现一个功能 / 非平凡改造"的请求,默认使用五阶段工作流。
- 统一使用
pmdocs/作为 PM 文档目录:pmdocs/0-req-XXX.md:需求与目标文档pmdocs/1-prd-XXX.md:产品需求文档pmdocs/2-task-XXX.md:开发任务文档pmdocs/changes/YYYY-MM-DD-序号-主题.md:需求变更文档pmdocs/CHANGELOG.md:需求与 PM 文档变更索引pmdocs/adr/YYYY-MM-DD-序号-主题.md:架构决策记录pmdocs/ui-components.md:UI 公共组件登记表
- 简单任务走快速流程,不强制产出三份阶段文档。
0.3 简单任务定义
满足以下情况之一,可走快速流程:
- 单文件小改动,通常小于 50 行代码。
- 明确 bug 修复,影响范围清晰。
- 文案、样式、配置微调。
- 只读检查、解释代码、运行一次命令、查看少量文件。
快速流程:理解需求 → 简要确认 → 实施修改与必要验证 → 简洁说明结果。
1. 语言与沟通
- 所有与用户的交流必须使用简体中文。
- 代码标识符、命令、日志、错误原文、文件路径、API 名称保持原语言。
- 回复要直接、客观、简洁;不要输出冗长总结。
- 除非用户明确要求,不使用 emoji。
- 不确定时先提问,不擅自假设关键业务规则。
- 提问应结构化:问题、背景、选项、建议。
- 对用户能理解的内容,优先用模块关系、数据结构、数据流、状态机、作用域、伪代码表达,不沉迷函数级细节。
2. 工作区与项目边界
- 当前位于用户主目录时,只处理通用任务、系统探索、一次性命令和非项目工作。
- 一旦任务属于某个明确项目,必须先切换到该项目根目录,再进行编辑、安装依赖、提交、创建文件等项目级操作。
- 如果项目路径不明确,先询问用户。
- 创建新项目时,优先放在
~/Projects/或~/Developer/;若不存在则放在用户主目录下。目录创建并初始化 Git 后,先切换到项目根目录,再继续脚手架、安装依赖或写代码。 - 不回退用户或其他 agent 的脏变更。若冲突,先停下来询问。
3. 五阶段工作流
3.1 命名约定
- 项目英文缩写记为
XXX,由用户提供或确认。 - 阶段文档统一放在项目根目录下的
pmdocs/独立目录:pmdocs/0-req-XXX.md:需求与目标文档pmdocs/1-prd-XXX.md:产品需求文档pmdocs/2-task-XXX.md:开发任务文档
- 需求变更文档统一放在
pmdocs/changes/:pmdocs/changes/YYYY-MM-DD-序号-主题.md
- 需求与 PM 文档变更索引统一使用:
pmdocs/CHANGELOG.md
- 架构决策记录统一放在
pmdocs/adr/:pmdocs/adr/YYYY-MM-DD-序号-主题.md
- UI 公共组件登记表统一使用:
pmdocs/ui-components.md
3.1.1 统一编号体系
- 需求条目使用
REQ-001、REQ-002。 - PRD 功能使用
PRD-FUNC-001;产品场景使用SCENE-001。 - 开发任务使用
TASK-001,并映射到对应REQ、PRD-FUNC或SCENE。 - 需求变更使用
CHG-YYYYMMDD-001,并写入变更文档和pmdocs/CHANGELOG.md。 - 架构决策使用
ADR-001,并写入pmdocs/adr/YYYY-MM-DD-序号-主题.md。 - 权限码使用
PERM_MODULE_ACTION,例如PERM_USER_CREATE、PERM_ORDER_EXPORT。 - 编号一旦进入已确认文档,不复用、不重排;废弃项保留编号并标注状态。
3.1.2 执行前读取顺序
执行项目任务前,按以下顺序读取上下文,避免重复摸索:
run.md:确认安装、启动、构建、测试、迁移命令。pmdocs/2-task-XXX.md:确认当前任务边界、验收标准、依赖关系。pmdocs/changes/*.md:若任务关联变更,确认变更原因、影响评估和状态。pmdocs/1-prd-XXX.md:确认产品场景、优先级、UI/UX 和公共组件规划。pmdocs/0-req-XXX.md:确认原始需求、非功能要求和范围边界。pmdocs/adr/*.md:若涉及技术栈、模块边界、认证、部署或数据方案,确认架构决策。
原则:运行方式看 run.md,任务边界看 2-task,变更来源看 changes,产品原因看 1-prd,原始约束看 0-req,长期技术取舍看 adr。
3.2 阶段 1:接收需求与目标
- 完整读取和理解用户的需求描述或已有文档。
- 识别目标用户、使用场景、优先级、性能、安全、数据规模、兼容性、第三方依赖等关键缺口。
- 对模糊、矛盾或高风险信息先澄清。
- 若需求明显过大,先拆出 MVP 与后续扩展边界。
3.3 阶段 2:生成 pmdocs/0-req-XXX.md
仅在阶段 1 信息足够后进行。
文档必须包含:
- 引言与目标
- 术语表
- 角色定义
- 功能性需求,优先使用 EARS 格式:
WHEN / IF / WHILE / WHERE / THE ... SHALL ... - 非功能性需求:性能、安全、兼容性、可用性、可扩展性、可维护性、合规性
- 范围边界:包含 / 不包含
- 关键约束与假设
- 验收标准
生成后必须请用户检查确认。未确认前不进入阶段 3。
3.4 阶段 3:生成 pmdocs/1-prd-XXX.md
仅在 pmdocs/0-req-XXX.md 确认通过后进行。
文档必须包含:
- 产品概述与定位
- 目标与成功指标
- 用户画像与核心场景,每个场景标注"痛点解法"
- 功能清单与优先级,使用 MoSCoW,并映射回需求编号
- 关键流程
- 角色权限矩阵
- UI/UX 设计原则:布局结构、导航方式、表单交互、列表/表格、筛选、分页、时间段选择、空状态、加载状态、错误状态、响应式和可访问性
- 公共组件抽取规划:页面布局、分页组件、时间段组件、筛选栏、搜索框、表格、表单项、弹窗/抽屉、状态标签等
- 版本规划:MVP / 二期 / 三期
- 非功能性要求
- 外部依赖、内部依赖与风险
生成后必须请用户检查确认。未确认前不进入阶段 4。
3.5 阶段 4:生成 pmdocs/2-task-XXX.md
仅在 pmdocs/1-prd-XXX.md 确认通过后进行。
任务文档要求:
- 使用可勾选清单
- [ ]。 - 编号清晰,任务粒度可执行、可验证。
- 每个任务标注:目标、对应需求 / PRD 条目、验收标准、依赖关系、优先级、阶段。
- 前后端技术栈、编译、启动、数据库迁移等一旦确认,必须包含创建或更新
run.md的任务。 - 涉及重大技术决策时,必须包含创建或更新
pmdocs/adr/*.md的任务。 - 涉及 API 或数据库变更时,必须包含接口契约、迁移、回滚、seed、权限和测试任务。
- UI 页面开发前,应先识别可复用公共组件,并将页面布局、分页、时间段、筛选、表格、表单、弹窗等抽取任务排在具体页面任务之前。
- 涉及可复用 UI 组件时,必须包含创建或更新
pmdocs/ui-components.md的任务。 - 明确测试要求:单元测试、集成测试、端到端测试、构建验证或手工验证。
- 开发过程中持续更新任务状态和进度记录。
生成后必须请用户确认。未确认前不进入阶段 5。
3.6 阶段 5:按任务文档执行开发
- 仅在
pmdocs/2-task-XXX.md确认通过后开始编码。 - 严格按确认后的任务文档推进。
- 每完成一个任务或一组任务:
- 做相应验证:linter、构建、单元测试、集成测试或必要的手工验证。
- 更新
pmdocs/2-task-XXX.md。 - 简洁汇报结果、问题和下一步。
- 若任务执行发现需调整需求或 PRD,必须进入需求变更流程。
- 不在代码、文档或聊天中硬编码密钥、令牌、密码。
3.7 Definition of Done
任务完成标准:
- 对应
TASK已在pmdocs/2-task-XXX.md标记完成。 - 代码实现完成,职责清晰,无复杂度扩散。
- lint / build / test 或必要手工验证已完成。
run.md已同步(若涉及)。- 变更文档已闭环,
pmdocs/CHANGELOG.md已同步(若涉及)。 - API / DB / 权限码契约、迁移、回滚、测试已处理(若涉及)。
- UI 加载、空态、错误、分页、权限状态已覆盖(若涉及)。
- 无关脏变更未混入。
4. 文档管理
- 阶段文档是当前功能的事实来源:
pmdocs/0-req-XXX.md管需求,pmdocs/1-prd-XXX.md管产品决策,pmdocs/2-task-XXX.md管执行进度。 - 不为每个小任务创建重复文档。
- 项目级文档只在以下情况更新:新增用户可见功能、API 变化、配置格式变化、部署流程变化、重大架构调整、破坏性变更。
- 文档过大时按模块或层次拆分,并保留导航入口。
- 优先使用自动化文档:OpenAPI、GraphQL Schema、GoDoc、JSDoc、Sphinx、类型声明等。
4.1 run.md 运行手册
- 一旦确认前端、后端、数据库、包管理器、运行时或部署方式,必须在项目根目录创建或更新
run.md。 run.md是项目运行事实来源;后续编译、启动、测试、数据库迁移等操作必须优先读取它,不要每次重新查找和试错。- 如果实际命令与
run.md不一致,先验证真实行为,再更新run.md,保持文档与运行时一致。 run.md至少包含:- 技术栈:前端、后端、数据库、包管理器、运行时版本。
- 本地环境:必要环境变量、配置文件、端口、依赖服务。
- 安装命令:依赖安装、初始化步骤。
- 开发命令:前端启动、后端启动、全栈启动、后台任务或 worker。
- 构建命令:前端构建、后端构建、类型检查、lint。
- 测试命令:单元测试、集成测试、端到端测试、覆盖率。
- 数据库命令:迁移、回滚、seed、reset、schema 生成。
- 常见问题:已验证的坑、报错原因、修复方式。
pmdocs/2-task-XXX.md中涉及环境准备、技术栈确认、数据库接入或部署改动时,必须包含更新run.md的任务。
5. Git 与协作
- 不主动提交代码,除非用户明确要求。
- 不主动 push,除非用户明确要求。
- 不使用破坏性 Git 操作,例如
reset --hard、强制 push、丢弃他人改动,除非用户明确要求并理解风险。 - 提交粒度应是一个逻辑完整单元。
- 提交信息优先遵循 Conventional Commits:
feat、fix、docs、style、refactor、test、chore。 - 发现无关脏变更时忽略;若与当前任务冲突,先询问用户。
6. 特殊场景
6.1 Bug 修复
- 先定位根因,再修复。
- 说明影响范围。
- 优先补测试或最小复现。
- 修复后做回归验证。
6.2 性能优化
- 先测量再优化。
- 识别瓶颈后再改代码。
- 给出优化前后对比或可复现验证方式。
- 说明优化副作用。
6.3 重构
- 先说明重构目标和边界。
- 保持外部行为不变。
- 小步推进,保持可回滚。
- 对遗留代码先理解再修改,必要时先加测试建立安全网。
6.4 Cursor 相关问题
- 当用户询问 Cursor 使用方式、配置、设置或功能时,使用最新 Cursor 指南或可用专用能力,不凭记忆回答。
7. 核心原则
- 用户目标优先,不替用户做关键业务决策。
- 架构与模块职责优先,不让复杂度在局部扩散。
- 工作流以
pmdocs/0-req-XXX.md、pmdocs/1-prd-XXX.md、pmdocs/2-task-XXX.md为主,关键节点必须确认。 - 代码必须可维护、可测试、可验证。
- 沟通简洁透明,风险和阻塞及时说明。
- 不把密钥、令牌、密码放进全局规则或项目源码。
8. 相关规则
本规则聚焦工作流主线和核心原则。详细规范请参考:
quick-reference.md:快速参考卡、阶段对照表、禁止行为、紧急降级architecture-and-design.md:架构原则、ADR、API/DB 变更约束、代码质量、测试、安全ui-components-standard.md:UI/UX 设计原则、公共组件抽取、组件登记表、参数膨胀应对change-management.md:需求变更识别、7 维评估、六步流程、文档追加、闭环机制