taskmanager/.claude/commands/gitea/init-project.md
bojunC 38c5a466cd feat: 实现 Issue #1 - 项目初始化和环境配置
- 创建 monorepo 结构(Turborepo)
- 初始化前端项目(Next.js + TypeScript + Tailwind CSS)
- 初始化后端项目(NestJS + TypeScript)
- 配置开发工具(ESLint, Prettier, VS Code)
- 创建项目文档(README, 开发规范)

Closes #1
2026-03-19 16:14:26 +08:00

8.8 KiB
Raw Blame History

name description arguments
gitea-init-project 初始化项目,创建 Gitea 仓库和 Issues
name description required
requirements_file requirements 文件路径(可选,支持相对路径。如果不指定,将自动查找最相关的 requirements.md false
name description required
repo_name 仓库名称(可选,如果不提供则从 requirements.md 读取) false

读取 requirements.md分析需求拆分为 Issues并创建 Gitea 仓库。

工作流程

第一步:选择需求文档

情况 1用户指定了文件路径

如果用户提供了 requirements_file 参数:

  1. 检查文件是否存在
  2. 如果存在,直接使用该文件
  3. 如果不存在,提示错误并退出

情况 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: 内容相似度检查(可选)

如果找到多个文件且评分接近,进行内容相似度分析:

  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 描述中添加依赖标记:

## 依赖关系
- 前置 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

    • 基于文件行数和内容丰富度

注意事项

  1. 原子性:每个 Issue 应该是一个最小可部署单元
  2. 可测试性:每个功能 Issue 应该有明确的验收标准
  3. 依赖清晰:明确标注依赖关系,避免循环依赖
  4. 优先级合理:按照依赖关系和重要程度排序
  5. 可追溯性Issue 描述中引用 requirements.md 的相关部分

下一步

初始化完成后,可以:

  1. 使用 /gitea-start-scheduler 启动自动化工作流
  2. 使用 /gitea-status 查看项目状态
  3. 使用 /gitea-process-issue <number> 手动处理单个 Issue