Files
s2f/cursor-rules/ai-coding-workflow.md
2026-07-06 22:03:22 +08:00

241 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 执行前读取顺序
执行项目任务前,按以下顺序读取上下文,避免重复摸索:
1. `run.md`:确认安装、启动、构建、测试、迁移命令。
2. `pmdocs/2-task-XXX.md`:确认当前任务边界、验收标准、依赖关系。
3. `pmdocs/changes/*.md`:若任务关联变更,确认变更原因、影响评估和状态。
4. `pmdocs/1-prd-XXX.md`:确认产品场景、优先级、UI/UX 和公共组件规划。
5. `pmdocs/0-req-XXX.md`:确认原始需求、非功能要求和范围边界。
6. `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. 核心原则
1. 用户目标优先,不替用户做关键业务决策。
2. 架构与模块职责优先,不让复杂度在局部扩散。
3. 工作流以 `pmdocs/0-req-XXX.md``pmdocs/1-prd-XXX.md``pmdocs/2-task-XXX.md` 为主,关键节点必须确认。
4. 代码必须可维护、可测试、可验证。
5. 沟通简洁透明,风险和阻塞及时说明。
6. 不把密钥、令牌、密码放进全局规则或项目源码。
## 8. 相关规则
本规则聚焦工作流主线和核心原则。详细规范请参考:
- `quick-reference.md`:快速参考卡、阶段对照表、禁止行为、紧急降级
- `architecture-and-design.md`:架构原则、ADR、API/DB 变更约束、代码质量、测试、安全
- `ui-components-standard.md`:UI/UX 设计原则、公共组件抽取、组件登记表、参数膨胀应对
- `change-management.md`:需求变更识别、7 维评估、六步流程、文档追加、闭环机制