189 lines
7.5 KiB
Markdown
189 lines
7.5 KiB
Markdown
### 1. 产品愿景与 MVP 范围书 (`PRD_MVP.md`)
|
||
|
||
AI 需要知道“终点”在哪里,以及“当前阶段”的界限。
|
||
|
||
- **核心功能清单:** 明确第一阶段(MVP)必须实现的 3-5 个核心功能。
|
||
|
||
- **非目标 (Out of Scope):** 明确哪些功能在 MVP 阶段**绝对不做**,防止 Claude 在生成代码时过度设计。
|
||
|
||
- **用户故事:** 简单的 `As a [user], I want to [action], so that [value]`,这有助于 Claude 理解业务逻辑的优先级。
|
||
|
||
|
||
### 2. 技术栈与规范定义 (`TECH_STACK.md`)
|
||
|
||
Vibe Coding 最怕 AI 随意引入不兼容的库。
|
||
|
||
- **固定技术栈:** 例如 Frontend (Next.js 14, Tailwind), Backend (Supabase/PostgreSQL), Auth (Clerk)。
|
||
|
||
- **代码风格:** 比如“使用 Functional Components”、“优先使用 TypeScript 严格模式”、“所有的 API 调用必须遵循 RESTful 规范”。
|
||
|
||
- **项目结构:** 预定义文件夹结构(如 `/components`, `/hooks`, `/lib`, `/types`),让 AI 生成的代码能够准确归位。
|
||
|
||
|
||
### 3. 领域模型与数据库 Schema (`DATA_MODEL.md`)
|
||
|
||
这是项目的“骨架”。即便你使用 NoSQL,也要先定义好数据关系。
|
||
|
||
- **实体关系图 (ERD):** 描述 User, Project, Task 等实体的关系。
|
||
|
||
- **Schema 定义:** 提供 SQL DDL 或 Prisma Schema 示例。
|
||
|
||
- **核心业务状态机:** 如果有复杂逻辑(如订单状态、工作流状态),定义好状态转换矩阵。
|
||
|
||
|
||
### 4. UI/UX 风格与组件指南 (`UI_SYSTEM.md`)
|
||
|
||
为了让生成的页面不至于太丑或不统一:
|
||
|
||
- **设计语言:** 明确使用哪个组件库(如 shadcn/ui, Ant Design)。
|
||
|
||
- **核心页面路由:** 定义 MVP 阶段的所有 URL 路径及对应的功能页面。
|
||
|
||
- **全局布局:** 描述 Header, Sidebar, Footer 的行为。
|
||
|
||
|
||
### 5. 项目骨架设计(`ARCHITECTURE.md`)
|
||
- **技术栈**
|
||
- Backend: Django 4.x
|
||
- 前端交互: HTMX 1.x + Alpine.js 3.x
|
||
- 样式: [Tailwind / 你的选择]
|
||
- 数据库: [PostgreSQL / SQLite]
|
||
|
||
- **目录结构说明**
|
||
[说明每个目录的职责]
|
||
|
||
- **Django App 划分原则**
|
||
- 每个 App 对应一个业务域,不跨域
|
||
- App 列表:accounts / dashboard / [其他]
|
||
|
||
- **模板约定**
|
||
- base.html 定义全局布局和 block 插槽
|
||
- HTMX 局部刷新的模板放在 partials/ 下
|
||
- block 结构:title / content / extra_css / extra_js
|
||
|
||
- **HTMX 使用约定**
|
||
- 所有 HTMX 请求的 view 需判断 HX-Request header
|
||
- 局部响应只返回对应的 partial 模板
|
||
- 示例:
|
||
def my_view(request):
|
||
if request.htmx:
|
||
return render(request, 'partials/xxx.html', context)
|
||
return render(request, 'full/xxx.html', context)
|
||
|
||
- **Alpine.js 使用约定**
|
||
- 只负责纯客户端状态(下拉展开、tab 切换、表单校验提示)
|
||
- 不处理需要服务端数据的逻辑,那部分交给 HTMX
|
||
|
||
- **URL 命名规范**
|
||
- 格式:app_name:resource-action
|
||
- 示例:accounts:login, dashboard:report-list
|
||
|
||
- **环境变量**
|
||
- 使用 .env 文件管理,通过 django-environ 读取
|
||
- 敏感配置不进 settings.py 硬编码
|
||
|
||
### 6. 任务清单(`TASK.md`)
|
||
这是 Vibe Coding 中最关键的"指挥文件"。它不只是任务清单,更是 AI 在每次对话中快速定位上下文的锚点。
|
||
|
||
**分解 User Story 的标准方法**
|
||
每个 User Story 在交给 AI 编码前,需要满足 **INVEST 原则** 中最关键的三条:
|
||
|
||
| 原则 | 实操含义 |
|
||
| ------------------- | ------------------------------------ |
|
||
| **Independent(独立)** | 这个 Story 能单独开发、单独测试,不强依赖其他未完成的 Story |
|
||
| **Small(小)** | 一个 Story 的编码工作控制在一次对话内能完成 |
|
||
| **Testable(可验证)** | 有明确的验收标准,你能用眼睛或操作来判断是否完成 |
|
||
**拆分的实用规则:** 如果一个 Story 的描述里出现了"并且"或"还可以",就应该拆成两个。
|
||
|
||
|
||
|
||
### 6. AI 指令手册 (`.cursorrules` 或 `AI_INSTRUCTIONS.md`)
|
||
|
||
这是 Vibe Coding 的“灵魂”,专门给 Claude 看的“说明书”。
|
||
|
||
- **角色设定:** “你是一个资深的 Full-stack Engineer,擅长编写可维护的、高性能的 React 代码。”
|
||
|
||
- **禁止事项:** “禁止使用任何未在 TECH_STACK.md 中定义的第三方库。”
|
||
|
||
- **报错处理:** “如果遇到错误,优先检查类型定义,并输出详细的 Debug Log。”
|
||
|
||
## 针对 Vibe Coding 的特化建议
|
||
|
||
### 1. 采用“模块化文档”而非“长篇大论”
|
||
|
||
不要给 Claude 一个 5000 字的文档。将文档拆分为上述的 `.md` 文件。在对话时,使用 `@` 功能(在 Cursor/OpenCode 中)按需引用。例如:“基于 `@DATA_MODEL.md` 实现 `@PRD_MVP.md` 中的用户注册流程。”
|
||
|
||
### 2. 准备“上下文脚手架”
|
||
|
||
在开始第一行代码前,先让 Claude 生成一个 `README.md`,概括整个项目的架构。这会成为后续对话中最重要的上下文参考。
|
||
|
||
### 3. 动态更新的“决策记录” (`ADR.md`)
|
||
|
||
在 Vibe Coding 过程中,AI 可能会建议一些架构改动。一旦你接受了某个改动,**立即**记录在 `Architecture Decision Records (ADR)` 中。这样当你在后续对话中开启新 Session 时,可以把这个文档丢给它,避免它推翻之前的设计方案。
|
||
|
||
---
|
||
|
||
## 建议的执行流程
|
||
|
||
1. **初始化阶段:** 编写上述 5 份 Markdown 文档。
|
||
|
||
2. **环境对齐:** 将文档喂给 Claude,问它:“基于这些文档,你认为实现 MVP 的第一步是什么?请列出任务清单。”
|
||
|
||
3. **循环迭代:** 按照 `任务清单 -> 生成代码 -> 测试反馈 -> 更新文档` 的循环进行。
|
||
|
||
```
|
||
准备阶段(你现在所在的位置)
|
||
↓
|
||
① 整理 TASK.md,按 P0/P1/P2 排优先级
|
||
↓
|
||
② 从 Phase 1 挑第一个 Story 开始
|
||
↓
|
||
③ 每次开启新对话,给 AI 提供以下上下文包:
|
||
- TASK.md(让 AI 知道全局和当前任务)
|
||
- 相关模块的 PRD 片段
|
||
- 对应的 UI HTML 原型
|
||
- Tech Stack 文档
|
||
- 相关的 Data Model
|
||
↓
|
||
④ AI 完成编码后,你验收(对照验收标准)
|
||
↓
|
||
⑤ 验收通过 → 在 TASK.md 勾选 [x] → 进入下一个 Story
|
||
↓
|
||
⑥ 每完成一个模块,检查是否需要更新 Data Model 或 Tech 文档
|
||
```
|
||
|
||
### 给 AI 的标准开场提示词
|
||
|
||
每次开始一个新 Story 时,用这个模板开场:
|
||
|
||
```
|
||
## 当前任务
|
||
我正在开发 [项目名],现在要实现 US-XXX:[Story 标题]
|
||
|
||
## 上下文文件(我将依次提供)
|
||
1. TASK.md - 了解项目全局状态和本任务优先级
|
||
2. Tech Stack 文档 - 了解技术约束
|
||
3. Data Model - 了解数据结构
|
||
4. 本模块 PRD - 了解功能需求
|
||
5. 本模块 UI 原型 HTML - 了解视觉要求
|
||
|
||
## 本次任务的验收标准
|
||
- [条件1]
|
||
- [条件2]
|
||
|
||
## 约束
|
||
- 只实现本 Story 范围内的功能,Phase 2/3 的内容不要提前实现
|
||
- 如遇到需要修改 Data Model 的情况,先告知我,不要擅自修改
|
||
- 完成后告诉我你新建或修改了哪些文件
|
||
```
|
||
|
||
**TASK.md 是活文档,AI 也要帮你维护它。**
|
||
|
||
每次 Story 完成后,让 AI 顺手输出一行更新指令,比如:
|
||
|
||
```
|
||
请在 TASK.md 中将 US-003 标记为已完成,并在备注中记录:
|
||
"Session 存储改用 httpOnly cookie,与原方案不同"
|
||
```
|
||
|
||
这样你的 TASK.md 不只是任务清单,还成了项目的**决策日志**,下一次换新对话时 AI 能快速理解为什么某些事情是现在这样做的。 |