- 创建 monorepo 结构(Turborepo) - 初始化前端项目(Next.js + TypeScript + Tailwind CSS) - 初始化后端项目(NestJS + TypeScript) - 配置开发工具(ESLint, Prettier, VS Code) - 创建项目文档(README, 开发规范) Closes #1
8.8 KiB
8.8 KiB
| name | description | arguments | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gitea-init-project | 初始化项目,创建 Gitea 仓库和 Issues |
|
读取 requirements.md,分析需求,拆分为 Issues,并创建 Gitea 仓库。
工作流程
第一步:选择需求文档
情况 1:用户指定了文件路径
如果用户提供了 requirements_file 参数:
- 检查文件是否存在
- 如果存在,直接使用该文件
- 如果不存在,提示错误并退出
情况 2:用户未指定文件路径
自动查找最合适的 requirements.md:
步骤 2.1: 搜索所有 requirements.md 文件
# 搜索项目中所有的 requirements*.md 文件
find . -type f -name "*requirements*.md" 2>/dev/null
步骤 2.2: 分析 Git 历史
# 获取每个文件的 Git 历史
for file in $(find . -type f -name "*requirements*.md"); do
# 最后修改时间
last_modified=$(git log -1 --format="%at" "$file" 2>/dev/null || echo "0")
# 修改次数
commit_count=$(git log --oneline "$file" 2>/dev/null | wc -l)
# 最后修改者
last_author=$(git log -1 --format="%an" "$file" 2>/dev/null || echo "Unknown")
echo "$file|$last_modified|$commit_count|$last_author"
done
步骤 2.3: 评分和选择
基于以下因素计算评分:
- 最近修改时间(权重 40%):最近修改的文件得分更高
- 修改次数(权重 30%):修改次数多说明文档更完善
- 文件位置(权重 20%):根目录的文件优先级更高
- 文件内容(权重 10%):内容更丰富的文件优先
选择评分最高的文件。
步骤 2.4: 内容相似度检查(可选)
如果找到多个文件且评分接近,进行内容相似度分析:
- 读取每个文件的前 100 行
- 比较项目名称、描述等关键信息
- 选择内容最完整的文档
示例输出
🔍 搜索需求文档
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
找到 3 个 requirements 文件:
• ./requirements.md (评分: 85)
• ./docs/requirements-v2.md (评分: 78)
• ./archive/requirements-old.md (评分: 45)
✅ 选择最相关的文档: ./requirements.md
📊 选择依据:
• 最后修改: 2 天前
• 修改次数: 5 次
• 文件位置: 根目录
• 文件大小: 132 行
第二步:读取需求文档
- 使用 Read 工具读取选定文件的内容
- 如果文件不存在或无法读取,提示用户先运行
/gitea-start创建需求文档
第二步:解析需求文档
解析以下信息:
- 项目基本信息:名称、描述、类型
- 核心功能:列出所有核心功能点
- 技术栈:
- 编程语言
- 框架(前端/后端)
- 数据库
- 其他工具
- 功能模块:识别所有功能模块
- 依赖关系:模块间的依赖关系
- 开发里程碑:开发阶段和任务
第三步:拆分 Issues
根据需求拆分为以下类型的 Issues:
1. 项目基础设置 Issue
- 标题:
[基础] 项目初始化和环境配置 - 内容:
- 初始化项目结构
- 配置开发环境
- 设置依赖管理
- 配置代码规范工具
- 标签:
基础,优先级:高 - 优先级:1
2. 数据模型/架构 Issue
- 标题:
[架构] 数据模型设计和数据库初始化 - 内容:
- 设计核心数据模型
- 创建数据库 schema
- 设置 ORM/数据访问层
- 标签:
架构,优先级:高 - 依赖:项目基础设置
- 优先级:2
3. 核心功能 Issues
- 为每个核心功能创建一个 Issue
- 标题格式:
[功能] {功能名称} - 内容包含:
- 功能描述
- 实现要点
- 验收标准
- 标签:
功能,优先级:中 - 依赖:数据模型
4. 增强功能 Issues
- 为增强功能创建 Issues
- 标题格式:
[增强] {功能名称} - 标签:
增强,优先级:低 - 依赖:核心功能
5. 测试 Issue
- 标题:
[测试] 单元测试和集成测试 - 内容:
- 单元测试(覆盖率 > 80%)
- 集成测试
- E2E 测试
- 标签:
测试,优先级:高 - 依赖:核心功能
- 优先级:n-1
6. 文档 Issue
- 标题:
[文档] API 文档和用户文档 - 内容:
- API 文档
- 用户手册
- 部署文档
- 标签:
文档,优先级:中 - 依赖:所有功能
- 优先级:n
第四步:确定依赖关系
分析 Issues 之间的依赖关系:
- 项目基础设置 → 无依赖
- 数据模型 → 依赖项目基础设置
- 核心功能 → 依赖数据模型
- 增强功能 → 依赖核心功能
- 测试 → 依赖核心功能
- 文档 → 依赖所有功能
在 Issue 描述中添加依赖标记:
## 依赖关系
- 前置 Issue: #1, #2
- 阻塞 Issue: 无
第五步:创建 Gitea 仓库
依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 文档中的仓库操作指南创建或更新仓库。
第六步:创建 Issues
依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 文档中的 Issue 操作指南为每个拆分的 Issue 创建 Issue。
第七步:创建项目看板(可选)
如果需要,依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 文档中的项目看板操作指南创建项目看板来跟踪进度。
配置要求
需要的环境变量(从 .env 文件读取):
GITEA_URL: Gitea 实例地址GITEA_TOKEN: API 访问令牌GITEA_OWNER: 仓库所有者
Issue 标签系统
创建以下标签:
- 类型:基础、架构、功能、增强、测试、文档
- 优先级:优先级:高、优先级:中、优先级:低
- 状态:进行中、已阻塞、待审核
使用示例
示例 1: 使用默认查找
/gitea:init-project
输出:
🔍 搜索需求文档
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
找到 2 个 requirements 文件:
• ./requirements.md (评分: 92)
• ./docs/requirements-v1.md (评分: 67)
✅ 选择最相关的文档: ./requirements.md
📦 初始化项目:任务管理器
✅ 读取需求文档
✅ 解析需求:发现 4 个核心功能,3 个功能模块
✅ 拆分为 8 个 Issues
✅ 创建/更新仓库:chen/task-manager
✅ 创建 8 个 Issues
✅ 创建项目看板
📋 Issues 列表:
#1 [基础] 项目初始化和环境配置
#2 [架构] 数据模型设计和数据库初始化
#3 [功能] 任务的增删改查
#4 [功能] 任务状态管理
#5 [功能] 任务分类与标签
#6 [功能] 数据统计与可视化
#7 [测试] 单元测试和集成测试
#8 [文档] API 文档和用户文档
🔗 依赖关系:
#2 → 依赖 #1
#3-6 → 依赖 #2
#7 → 依赖 #3-6
#8 → 依赖 #3-7
✨ 项目初始化完成!
示例 2: 指定 requirements 文件
/gitea:init-project docs/requirements-v2.md
输出:
📁 使用指定的需求文档: docs/requirements-v2.md
📦 初始化项目:在线商城系统
✅ 读取需求文档
...
示例 3: 指定 requirements 文件和仓库名
/gitea:init-project docs/requirements.md my-custom-repo
错误处理
- 如果找不到任何 requirements.md 文件,提示用户创建
- 如果指定的文件不存在,显示错误并列出可用的文件
- 如果 Gitea API 调用失败,显示错误信息并建议检查配置
- 如果仓库已存在,询问是否更新 Issues
智能选择算法
评分公式
总分 = 时间分 × 0.4 + 修改次数分 × 0.3 + 位置分 × 0.2 + 内容分 × 0.1
其中:
-
时间分(0-100):
- 最近 1 天内修改: 100
- 1-7 天前修改: 80
- 7-30 天前修改: 60
- 30 天前修改: 40
-
修改次数分(0-100):
- 10 次以上: 100
- 5-10 次: 80
- 2-5 次: 60
- 1 次: 40
-
位置分(0-100):
- 根目录: 100
- docs/ 目录: 80
- 其他一级子目录: 60
- 更深层次的目录: 40
-
内容分(0-100):
- 基于文件行数和内容丰富度
注意事项
- 原子性:每个 Issue 应该是一个最小可部署单元
- 可测试性:每个功能 Issue 应该有明确的验收标准
- 依赖清晰:明确标注依赖关系,避免循环依赖
- 优先级合理:按照依赖关系和重要程度排序
- 可追溯性:Issue 描述中引用 requirements.md 的相关部分
下一步
初始化完成后,可以:
- 使用
/gitea-start-scheduler启动自动化工作流 - 使用
/gitea-status查看项目状态 - 使用
/gitea-process-issue <number>手动处理单个 Issue