- 创建 monorepo 结构(Turborepo) - 初始化前端项目(Next.js + TypeScript + Tailwind CSS) - 初始化后端项目(NestJS + TypeScript) - 配置开发工具(ESLint, Prettier, VS Code) - 创建项目文档(README, 开发规范) Closes #1
249 lines
5.8 KiB
Markdown
249 lines
5.8 KiB
Markdown
---
|
||
name: gitea-process-issue
|
||
description: 手动处理单个 Issue
|
||
arguments:
|
||
- name: issue_number
|
||
description: Issue 编号
|
||
required: true
|
||
---
|
||
|
||
手动处理指定的 Issue,启动 Agent 实现代码和创建 PR。
|
||
|
||
## 工作流程
|
||
|
||
### 第一步:获取 Issue 详情
|
||
|
||
依据 `.claude/commands/gitea/API-QUICK-REFERENCE.md` 文档中的 Issue 操作指南获取 Issue 详情。
|
||
|
||
### 第二步:解析 Issue 信息
|
||
|
||
从 Issue 提取:
|
||
- 标题和描述
|
||
- 标签(类型、优先级)
|
||
- 依赖关系(从描述中解析)
|
||
|
||
### 第三步:检查依赖
|
||
|
||
解析 Issue 描述中的依赖标记:
|
||
```markdown
|
||
## 依赖关系
|
||
- 前置 Issue: #1, #2
|
||
```
|
||
|
||
依据 `.claude/commands/gitea/API-QUICK-REFERENCE.md` 文档中的 Issue 操作指南检查前置 Issue 是否已完成。
|
||
|
||
### 第四步:启动 Code Agent
|
||
|
||
使用 Agent 工具启动 general-purpose Agent 处理 Issue。
|
||
|
||
**Agent 提示词模板**:
|
||
```
|
||
处理 Gitea Issue #${issue_number}
|
||
|
||
## Issue 信息
|
||
标题: ${issue_title}
|
||
描述: ${issue_body}
|
||
标签: ${labels}
|
||
|
||
## 工作流程
|
||
|
||
### 1. 准备工作
|
||
首先检查当前 Git 状态:
|
||
```bash
|
||
git status
|
||
git branch
|
||
```
|
||
|
||
### 2. 创建特性分支
|
||
```bash
|
||
git checkout main
|
||
git pull origin main
|
||
git checkout -b feature/issue-${issue_number}
|
||
```
|
||
|
||
### 3. 分析需求
|
||
仔细阅读 Issue 描述,理解需要实现的功能。
|
||
|
||
### 4. 探索现有代码
|
||
使用 Glob 和 Grep 工具了解项目结构:
|
||
- 查找相关的源代码文件
|
||
- 了解现有的代码组织方式
|
||
- 识别可以复用的模块
|
||
|
||
### 5. 增量式实现代码
|
||
重要原则:
|
||
- 只实现 Issue 要求的功能
|
||
- 不重复已有代码
|
||
- 遵循项目代码规范
|
||
- 保持代码简洁
|
||
|
||
使用 Read 工具读取现有代码,然后使用 Edit 或 Write 工具添加新代码。
|
||
|
||
### 6. 生成测试代码
|
||
根据功能特点生成适当的测试:
|
||
- 对于数据模型:单元测试
|
||
- 对于业务逻辑:单元测试 + 集成测试
|
||
- 对于 UI 组件:UI 测试(如果适用)
|
||
|
||
测试文件命名规范:
|
||
- 单元测试: `Tests/Editor/{ClassName}Tests.cs`
|
||
- 集成测试: `Tests/Integration/{FeatureName}Tests.cs`
|
||
|
||
### 7. 运行测试(如果有测试框架)
|
||
```bash
|
||
# 如果是 Unity 项目,使用 Unity Test Runner
|
||
# 如果有其他测试框架,运行相应命令
|
||
```
|
||
|
||
如果测试失败:
|
||
- 分析失败原因
|
||
- 修复代码
|
||
- 重新运行测试
|
||
- 重复直到测试通过
|
||
|
||
### 8. 提交代码
|
||
```bash
|
||
git add .
|
||
git commit -m "feat(${module}): 实现 Issue #${issue_number} - ${feature_name}
|
||
|
||
- 实现了 XXX 功能
|
||
- 添加了 YYY 测试
|
||
- 修复了 ZZZ 问题
|
||
|
||
Closes #${issue_number}"
|
||
```
|
||
|
||
### 9. 推送到远程
|
||
```bash
|
||
git push -u origin feature/issue-${issue_number}
|
||
```
|
||
|
||
### 10. 创建 Pull Request
|
||
|
||
依据 `.claude/commands/gitea/API-QUICK-REFERENCE.md` 文档中的 Pull Request 操作指南创建 PR。
|
||
|
||
### 11. 在 Issue 中添加评论
|
||
|
||
依据 `.claude/commands/gitea/API-QUICK-REFERENCE.md` 文档中的 Issue 评论操作指南在 Issue 中添加评论说明已创建 PR。
|
||
|
||
## 重要提示
|
||
|
||
1. **增量式开发**: 不要重新生成整个项目,只添加新的功能
|
||
2. **测试覆盖**: 必须生成测试代码,测试覆盖率目标 > 80%
|
||
3. **代码质量**: 遵循项目代码规范,保持代码整洁
|
||
4. **原子提交**: 每次提交应该是一个完整的、可工作的变更
|
||
5. **PR 描述**: PR 描述应该清晰说明变更内容和测试结果
|
||
|
||
## 错误处理
|
||
|
||
- 如果依赖未满足:报告并退出
|
||
- 如果分支已存在:询问是否继续或使用新分支名
|
||
- 如果测试失败:分析失败原因,修复代码,重试
|
||
- 如果 PR 创建失败:报告错误并建议手动创建
|
||
```
|
||
|
||
### 第五步:等待 Agent 完成
|
||
|
||
使用 TaskOutput 监控 Agent 的执行进度和结果。
|
||
|
||
### 第六步:报告结果
|
||
|
||
显示处理结果:
|
||
- 创建的分支名称
|
||
- 创建的 PR 编号
|
||
- 测试结果
|
||
- 下一步建议
|
||
|
||
## 示例输出
|
||
|
||
```
|
||
🔧 处理 Issue #3
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
✅ 获取 Issue 详情
|
||
• 标题: [功能] 任务增删改查核心功能
|
||
• 标签: 功能, 优先级:中
|
||
• 依赖: Issue #2
|
||
|
||
✅ 检查依赖
|
||
• Issue #2: ✅ 已完成
|
||
|
||
🤖 启动 Code Agent
|
||
• 分支: feature/issue-3
|
||
• Agent ID: agent-xyz789
|
||
|
||
⏳ Agent 工作中...
|
||
[Agent 输出会实时显示]
|
||
|
||
✅ Agent 完成
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📋 处理结果:
|
||
|
||
✅ 分支创建成功: feature/issue-3
|
||
✅ 代码实现完成: 5 个文件
|
||
✅ 测试通过: 12/12
|
||
✅ Pull Request 创建: #3
|
||
✅ Issue 评论已添加
|
||
|
||
🔗 链接:
|
||
• PR: http://192.168.2.200:3000/chen/task-manager-unity/pulls/3
|
||
• Issue: http://192.168.2.200:3000/chen/task-manager-unity/issues/3
|
||
|
||
💡 下一步:
|
||
• 等待 PR 审核
|
||
• 或使用 /gitea-status 查看状态
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **依赖检查**: 必须确保依赖 Issue 已完成
|
||
2. **分支命名**: 使用 `feature/issue-{number}` 格式
|
||
3. **测试要求**: 测试覆盖率必须 > 80%
|
||
4. **原子性**: 每个 Issue 应该是一个完整的功能单元
|
||
5. **冲突处理**: 如果有冲突,需要手动解决
|
||
|
||
## 错误场景
|
||
|
||
### 依赖未满足
|
||
```
|
||
❌ 无法处理 Issue #3
|
||
|
||
原因: 依赖 Issue #2 未完成
|
||
状态: Issue #2 当前状态为 open
|
||
|
||
💡 建议:
|
||
• 先完成 Issue #2
|
||
• 或修改 Issue #3 的依赖关系
|
||
```
|
||
|
||
### 分支已存在
|
||
```
|
||
⚠️ 分支已存在: feature/issue-3
|
||
|
||
选项:
|
||
1. 继续在现有分支上工作
|
||
2. 创建新分支: feature/issue-3-v2
|
||
3. 取消操作
|
||
|
||
请选择: _
|
||
```
|
||
|
||
### 测试失败
|
||
```
|
||
❌ 测试失败
|
||
|
||
失败的测试:
|
||
• TaskManagerTests.CreateTask_ShouldSetDefaultValues
|
||
• TaskManagerTests.DeleteTask_ShouldRemoveFromList
|
||
|
||
💡 Agent 正在尝试修复...
|
||
```
|
||
|
||
## 相关命令
|
||
|
||
- `/gitea-status` - 查看项目状态
|
||
- `/gitea-start-scheduler` - 启动自动处理
|
||
- `/gitea-init-project` - 初始化项目
|