- 创建 monorepo 结构(Turborepo) - 初始化前端项目(Next.js + TypeScript + Tailwind CSS) - 初始化后端项目(NestJS + TypeScript) - 配置开发工具(ESLint, Prettier, VS Code) - 创建项目文档(README, 开发规范) Closes #1
5.8 KiB
| name | description | arguments | |||||||
|---|---|---|---|---|---|---|---|---|---|
| gitea-process-issue | 手动处理单个 Issue |
|
手动处理指定的 Issue,启动 Agent 实现代码和创建 PR。
工作流程
第一步:获取 Issue 详情
依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 文档中的 Issue 操作指南获取 Issue 详情。
第二步:解析 Issue 信息
从 Issue 提取:
- 标题和描述
- 标签(类型、优先级)
- 依赖关系(从描述中解析)
第三步:检查依赖
解析 Issue 描述中的依赖标记:
## 依赖关系
- 前置 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. 创建特性分支
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. 运行测试(如果有测试框架)
# 如果是 Unity 项目,使用 Unity Test Runner
# 如果有其他测试框架,运行相应命令
如果测试失败:
- 分析失败原因
- 修复代码
- 重新运行测试
- 重复直到测试通过
8. 提交代码
git add .
git commit -m "feat(${module}): 实现 Issue #${issue_number} - ${feature_name}
- 实现了 XXX 功能
- 添加了 YYY 测试
- 修复了 ZZZ 问题
Closes #${issue_number}"
9. 推送到远程
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。
重要提示
- 增量式开发: 不要重新生成整个项目,只添加新的功能
- 测试覆盖: 必须生成测试代码,测试覆盖率目标 > 80%
- 代码质量: 遵循项目代码规范,保持代码整洁
- 原子提交: 每次提交应该是一个完整的、可工作的变更
- 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: chen/task-manager-unity#3 • Issue: chen/task-manager-unity#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
选项:
- 继续在现有分支上工作
- 创建新分支: feature/issue-3-v2
- 取消操作
请选择: _
### 测试失败
❌ 测试失败
失败的测试: • TaskManagerTests.CreateTask_ShouldSetDefaultValues • TaskManagerTests.DeleteTask_ShouldRemoveFromList
💡 Agent 正在尝试修复...
## 相关命令
- `/gitea-status` - 查看项目状态
- `/gitea-start-scheduler` - 启动自动处理
- `/gitea-init-project` - 初始化项目