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

332 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 <number>` 手动处理单个 Issue