datai/docs/skill/phase10-code-commit.md

412 lines
14 KiB
Markdown
Raw Permalink Normal View History

2026-01-22 10:52:30 +08:00
# 阶段 10代码提交技能书
## A. 元数据 (Metadata)
**name**: `phase10-code-commit`
**description**: 在 Datai 项目中,基于已完成的复盘和 API 文档,提交代码到本地仓库,询问用户是否提交到远程仓库,并更新索引和会话记录。此技能确保代码的可管理性和版本控制。
---
## B. 触发与定位 (Triggers & Scope)
### 触发关键词
当用户输入包含以下关键词时,必须觉醒此技能:
- "代码提交"、"提交代码"、"git commit"
- "进入阶段 10"、"下一阶段"
- "git"、"commit"、"push"
### 触发场景
- 用户确认阶段 9 完成,要求进入阶段 10
- 用户要求提交代码
- 用户询问如何提交代码
- 用户提到"按照项目规则"或"SSOT 流程"进行代码提交
### 操作路径
此技能涉及以下文件和目录的操作:
- **检查**: 所有生成的代码文件
- **检查**: 所有生成的文档文件
- **执行**: git 命令add, commit, push
- **更新**: `docs/index.md`(记录代码提交信息)
- **更新**: `docs/sessions/YYYY-MM-DD-00X-session.md`
- **读取**: `.trae/rules/project_rules.md` (项目规则)
- **读取**: `docs/Prompt/0004-单一真源文档驱动架构师.md` (SSOT 架构师提示词)
### SSOT 依赖
必须参考以下"唯一真源"
- [会话记录](file:///d:\idea_demo\datai\docs\sessions\YYYY-MM-DD-00X-session.md) - 阶段 9 更新的会话记录
- [项目规则](file:///d:\idea_demo\datai\.trae\rules\project_rules.md) - 项目规则和阶段定义
- [0004-单一真源文档驱动架构师.md](file:///d:\idea_demo\datai\docs\Prompt\0004-单一真源文档驱动架构师.md) - SSOT 架构师提示词
---
## C. 核心指令集 (Instructions)
### 架构约束
#### 1. 代码检查约束(强制)
- 必须检查所有生成的代码文件
- 必须检查所有生成的文档文件
- 确保代码文件符合项目规范
- 确保文档文件符合项目规范
#### 2. 提交信息约束(强制)
- 提交信息格式:`feat: [需求编号] 需求描述`
- 示例:`feat: [001] 实现用户登录功能`
- 提交信息必须清晰、准确,描述本次提交的主要内容
#### 3. 本地提交约束(强制)
- 必须使用 `git add` 添加所有变更
- 必须使用 `git commit` 提交到本地仓库
- 确保所有文件都已添加到提交中
#### 4. 远程提交约束(强制)
- 必须询问用户是否提交到远程仓库
- 如果用户确认,使用 `git push` 推送到远程
- 如果用户不确认,跳过推送
#### 5. 索引更新约束(强制)
- 必须在提交代码后更新 `docs/index.md`
- 必须记录代码提交信息
- 采用增量更新策略,**严禁**删除现有内容
#### 6. 会话记录约束(强制)
- 必须更新 `docs/sessions/YYYY-MM-DD-00X-session.md`
- 必须更新当前阶段为"阶段 10代码提交"
- 必须记录代码提交信息
- 必须标记需求为已完成
### 业务逻辑 SOP标准操作流程
#### 步骤 1代码和文档检查Let's think step by step
在提交代码前,必须执行以下检查:
1. **检查所有生成的代码文件**
- 确认代码文件的路径和命名是否符合项目规范
- 确认代码文件的内容是否符合项目规范
- 确认代码文件是否包含单元测试
- 确认代码文件是否通过编译和测试
2. **检查所有生成的文档文件**
- 确认文档文件的路径和命名是否符合项目规范
- 确认文档文件的内容是否符合项目规范
- 确认文档文件之间的引用是否正确
- 确认文档文件是否完整、准确
3. **确认提交信息**
- 确定提交信息的格式:`feat: [需求编号] 需求描述`
- 确保提交信息清晰、准确
- 确保提交信息描述了本次提交的主要内容
#### 步骤 2提交代码到本地
1. **添加所有变更**
- 使用 `git add .` 添加所有变更到暂存区
- 或使用 `git add <file>` 添加特定文件到暂存区
- 确保所有生成的代码文件和文档文件都已添加
2. **提交到本地仓库**
- 使用 `git commit -m "feat: [需求编号] 需求描述"` 提交到本地仓库
- 确保提交信息符合项目规范
- 确保提交成功
#### 步骤 3询问用户是否提交到远程
1. **向用户询问**
- 显示本地提交的信息
- 询问:"是否需要提交到远程仓库?"
2. **根据用户反馈执行**
- 如果用户确认,使用 `git push` 推送到远程仓库
- 如果用户不确认,跳过推送
- 确保推送成功(如果执行)
#### 步骤 4更新索引
1. **读取现有索引**
- 使用 Read 工具读取 `docs/index.md`
- 找到"代码提交记录"部分
- 如果不存在,则创建该部分
2. **添加代码提交信息**
- 在"代码提交记录"部分追加新的提交信息
- 格式:`- YYYY-MM-DD: [提交信息] - [本地/远程]`
- 示例:`- 2026-01-21: feat: [001] 实现用户登录功能 - 本地+远程`
3. **保存索引**
- 使用 Write 工具更新 `docs/index.md`
- **严禁**删除现有内容,只追加新内容
#### 步骤 5更新会话记录
1. **读取现有会话记录**
- 使用 Read 工具读取 `docs/sessions/YYYY-MM-DD-00X-session.md`
2. **更新阶段 10 信息**
- 更新"当前阶段"为"阶段 10代码提交"
- 更新"阶段 10代码提交"的状态为"已完成"
- 添加代码提交信息
- 标记需求为已完成
3. **保存会话记录**
- 使用 Write 工具更新会话记录
#### 步骤 6确认与总结
1. **向用户确认**
- 显示代码提交的结果
- 显示更新后的索引链接
- 显示更新后的会话记录链接
- 询问:"代码是否已提交到本地?"
- 询问:"是否需要提交到远程仓库?"(如果尚未询问)
2. **总结本次执行**
- 总结本次执行的主要内容
- 总结生成的文档和代码
- 总结遇到的问题和解决方案
- 总结学到的经验和教训
### 工具调用
#### 必须使用的工具
1. **RunCommand 工具**:执行 git 命令
- 使用场景:添加变更、提交到本地、推送到远程
- 命令:`RunCommand(command="git add .", blocking=true, requires_approval=false, target_terminal="new")`
- 命令:`RunCommand(command="git commit -m \"feat: [001] 实现用户登录功能\"")`, blocking=true, requires_approval=false, target_terminal="new")`
- 命令:`RunCommand(command="git push", blocking=true, requires_approval=false, target_terminal="new")`
2. **Read 工具**:读取现有文件
- 使用场景:读取索引、会话记录
- 命令:`Read(file_path="d:\\idea_demo\\datai\\docs\\index.md")`
3. **Write 工具**:创建或更新文件
- 使用场景:更新索引、更新会话记录
- 命令:`Write(file_path="d:\\idea_demo\\datai\\docs\\index.md", content="...")`
#### 可选使用的工具
1. **TodoWrite 工具**:管理任务
- 使用场景:跟踪阶段执行进度
- 命令:`TodoWrite(todos=[...])`
2. **GetDiagnostics 工具**:获取代码诊断
- 使用场景:检查代码的语法错误和类型错误
- 命令:`GetDiagnostics()`
---
## D. 错误陷阱与验证 (Anti-Patterns & Checklist)
### 常见错误Anti-Patterns
#### 错误 1不检查代码和文档就提交
**错误示例**
```
AI直接执行 git add .
AI直接执行 git commit
AI完成
```
**问题**
- 没有检查代码和文档的正确性
- 可能提交错误的代码或文档
- 违反了项目规则
**正确示例**
```
AI检查所有生成的代码文件
AI检查所有生成的文档文件
AI确认代码和文档符合项目规范
AI执行 git add .
AI执行 git commit
AI完成
```
#### 错误 2提交信息不符合规范
**错误示例**
```
AIgit commit -m "完成功能"
```
**问题**
- 提交信息过于简单
- 没有遵循项目规范的提交信息格式
- 其他开发人员无法快速了解提交的内容
**正确示例**
```
AIgit commit -m "feat: [001] 实现用户登录功能"
```
#### 错误 3不询问用户就推送到远程
**错误示例**
```
AI执行 git add .
AI执行 git commit
AI直接执行 git push
AI完成
```
**问题**
- 违反了项目规则
- 没有尊重用户的决策权
- 可能导致不必要的远程分支污染
**正确示例**
```
AI执行 git add .
AI执行 git commit
AI询问用户是否提交到远程仓库
AI如果用户确认执行 git push
AI完成
```
#### 错误 4不更新索引和会话记录
**错误示例**
```
AI执行 git add .
AI执行 git commit
AI询问用户是否提交到远程仓库
AI完成忘记更新索引和会话记录
```
**问题**
- 违反了项目规则
- 索引中没有记录代码提交信息
- 会话记录中没有记录代码提交信息
- 其他开发人员无法快速了解代码提交情况
**正确示例**
```
AI执行 git add .
AI执行 git commit
AI询问用户是否提交到远程仓库
AI更新索引记录代码提交信息
AI更新会话记录记录代码提交信息
AI完成
```
### 验收清单Checklist
在完成阶段 10 前,必须检查以下项目:
#### 代码和文档检查
- [ ] 已检查所有生成的代码文件
- [ ] 已检查所有生成的文档文件
- [ ] 代码文件的路径和命名符合项目规范
- [ ] 代码文件的内容符合项目规范
- [ ] 代码文件包含单元测试
- [ ] 代码文件通过编译和测试
- [ ] 文档文件的路径和命名符合项目规范
- [ ] 文档文件的内容符合项目规范
- [ ] 文档文件之间的引用正确
- [ ] 文档文件完整、准确
#### 本地提交检查
- [ ] 已使用 `git add` 添加所有变更
- [ ] 已使用 `git commit` 提交到本地仓库
- [ ] 提交信息格式符合要求:`feat: [需求编号] 需求描述`
- [ ] 提交信息清晰、准确
- [ ] 所有文件都已添加到提交中
#### 远程提交检查
- [ ] 已询问用户是否提交到远程仓库
- [ ] 如果用户确认,已使用 `git push` 推送到远程
- [ ] 如果执行了推送,推送成功
#### 索引更新检查
- [ ] `docs/index.md` 已更新
- [ ] 已记录代码提交信息
- [ ] 索引更新采用增量更新策略,未删除现有内容
#### 会话记录更新检查
- [ ] 会话记录已更新
- [ ] 会话记录的"当前阶段"已更新为"阶段 10代码提交"
- [ ] 会话记录的"阶段 10代码提交"状态已更新为"已完成"
- [ ] 会话记录包含代码提交信息
- [ ] 会话记录标记需求为已完成
#### 用户确认检查
- [ ] 已向用户显示代码提交的结果
- [ ] 已向用户显示更新后的索引链接
- [ ] 已向用户显示更新后的会话记录链接
- [ ] 已询问用户"代码是否已提交到本地?"
- [ ] 已询问用户"是否需要提交到远程仓库?"(如果尚未询问)
### Correct vs Incorrect 代码对比
#### Incorrect错误示例
```
AI直接执行 git add .
AIgit commit -m "完成登录功能"
AI直接执行 git push
AI完成
```
#### Correct正确示例
```
AI检查所有生成的代码文件和文档文件
AI确认代码和文档符合项目规范
AIgit add .
AIgit commit -m "feat: [001] 实现用户登录功能"
AI询问用户是否提交到远程仓库
AI如果用户确认git push
AI更新 docs/index.md记录代码提交信息
AI更新会话记录记录代码提交信息并标记需求为已完成
AI向用户确认代码提交结果
AI完成
```
---
## 附录:快速参考
### 文件路径速查
- 主索引:`docs/index.md`
- 会话记录:`docs/sessions/YYYY-MM-DD-00X-session.md`
- 项目规则:`.trae/rules/project_rules.md`
- SSOT 架构师提示词:`docs/Prompt/0004-单一真源文档驱动架构师.md`
### 工具命令速查
```powershell
# 添加所有变更
RunCommand(command="git add .", blocking=true, requires_approval=false, target_terminal="new")
# 提交到本地仓库
RunCommand(command="git commit -m \"feat: [001] 实现用户登录功能\"")`, blocking=true, requires_approval=false, target_terminal="new")`
# 推送到远程仓库
RunCommand(command="git push", blocking=true, requires_approval=false, target_terminal="new")
# 读取索引
Read(file_path="d:\\idea_demo\\datai\\docs\\index.md")
# 更新索引
Write(file_path="d:\\idea_demo\\datai\\docs\\index.md", content="...")
```
### 阶段 10 输出清单
- [ ] 代码提交到本地仓库
- [ ] 代码推送到远程仓库(如果用户确认)
- [ ] 更新的索引:`docs/index.md`
- [ ] 更新的会话记录:`docs/sessions/YYYY-MM-DD-00X-session.md`
### 项目完成总结
当完成阶段 10 后,整个 SSOT 流程即告完成。此时,你已经:
1. **需求定义与入库**:创建了需求文档,建立了需求追踪
2. **方案设计**:创建设计文档,明确了技术方案
3. **方案决策**:创建决策记录,记录了架构决策
4. **数据库结构生成**:生成 SQL 脚本,记录了数据库变更
5. **提示词生成**:生成针对当前需求的提示词
6. **执行代码生成**:根据需求和设计生成了代码
7. **记录当前会话**:完整记录了当前会话的所有信息
8. **变更记录与归档**:创建了变更日志,记录了所有变更
9. **闭环复盘和接口文档**:创建了复盘文档和 API 文档
10. **代码提交**:提交代码到本地仓库,并询问是否提交到远程
通过严格执行 SSOT 流程,确保了所有开发活动都有文档依据,提高了代码的可追溯性、可维护性和质量。同时,通过复盘和 API 文档,确保了项目的持续改进和 API 的可文档化。
---
## 最终确认
当完成所有 10 个阶段后,你可以向用户提供最终确认,包括:
1. 总结本次执行的主要内容
2. 列出所有生成的文档和代码
3. 询问用户是否对整个执行过程满意
4. 询问用户是否需要进行其他操作
通过这种方式,确保用户对整个执行过程有清晰的了解和控制,提高用户的满意度和参与度。