--- name: gitea-init-project description: 初始化项目,创建 Gitea 仓库和 Issues arguments: - name: requirements_file description: requirements 文件路径(可选,支持相对路径。如果不指定,将自动查找最相关的 requirements.md) required: false - name: repo_name description: 仓库名称(可选,如果不提供则从 requirements.md 读取) required: false --- 读取 requirements.md,分析需求,拆分为 Issues,并创建 Gitea 仓库。 ## 工作流程 ### 第一步:选择需求文档 #### 情况 1:用户指定了文件路径 如果用户提供了 `requirements_file` 参数: 1. 检查文件是否存在 2. 如果存在,直接使用该文件 3. 如果不存在,提示错误并退出 #### 情况 2:用户未指定文件路径 自动查找最合适的 requirements.md: **步骤 2.1: 搜索所有 requirements.md 文件** ```bash # 搜索项目中所有的 requirements*.md 文件 find . -type f -name "*requirements*.md" 2>/dev/null ``` **步骤 2.2: 分析 Git 历史** ```bash # 获取每个文件的 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: 内容相似度检查(可选)** 如果找到多个文件且评分接近,进行内容相似度分析: 1. 读取每个文件的前 100 行 2. 比较项目名称、描述等关键信息 3. 选择内容最完整的文档 #### 示例输出 ``` 🔍 搜索需求文档 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 找到 3 个 requirements 文件: • ./requirements.md (评分: 85) • ./docs/requirements-v2.md (评分: 78) • ./archive/requirements-old.md (评分: 45) ✅ 选择最相关的文档: ./requirements.md 📊 选择依据: • 最后修改: 2 天前 • 修改次数: 5 次 • 文件位置: 根目录 • 文件大小: 132 行 ``` ### 第二步:读取需求文档 1. 使用 Read 工具读取选定文件的内容 2. 如果文件不存在或无法读取,提示用户先运行 `/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 之间的依赖关系: 1. **项目基础设置** → 无依赖 2. **数据模型** → 依赖项目基础设置 3. **核心功能** → 依赖数据模型 4. **增强功能** → 依赖核心功能 5. **测试** → 依赖核心功能 6. **文档** → 依赖所有功能 在 Issue 描述中添加依赖标记: ```markdown ## 依赖关系 - 前置 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: 使用默认查找 ```bash /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 文件 ```bash /gitea:init-project docs/requirements-v2.md ``` 输出: ``` 📁 使用指定的需求文档: docs/requirements-v2.md 📦 初始化项目:在线商城系统 ✅ 读取需求文档 ... ``` ### 示例 3: 指定 requirements 文件和仓库名 ```bash /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): - 基于文件行数和内容丰富度 ## 注意事项 1. **原子性**:每个 Issue 应该是一个最小可部署单元 2. **可测试性**:每个功能 Issue 应该有明确的验收标准 3. **依赖清晰**:明确标注依赖关系,避免循环依赖 4. **优先级合理**:按照依赖关系和重要程度排序 5. **可追溯性**:Issue 描述中引用 requirements.md 的相关部分 ## 下一步 初始化完成后,可以: 1. 使用 `/gitea-start-scheduler` 启动自动化工作流 2. 使用 `/gitea-status` 查看项目状态 3. 使用 `/gitea-process-issue ` 手动处理单个 Issue