# Implementation Plan: aitool CLI

## Overview

基于 Node.js + TypeScript 实现 aitool 命令行工具，采用增量开发方式，先搭建项目基础结构，然后逐步实现各个命令功能。

## Tasks

- [x] 1. 项目初始化和基础配置
  - [x] 1.1 创建 package.json 并配置项目信息
    - 设置 name 为 "aitool"
    - 配置 bin 字段指向编译后的入口文件
    - 添加 dependencies: commander, inquirer, fs-extra, chalk
    - 添加 devDependencies: typescript, @types/node, @types/inquirer, @types/fs-extra
    - _Requirements: 1.1, 1.2_
  - [x] 1.2 创建 tsconfig.json 配置 TypeScript 编译选项
    - 配置 outDir 为 dist
    - 配置 target 为 ES2020
    - 启用 strict 模式
    - _Requirements: 1.1_

- [x] 2. 实现 CLI 入口和版本命令
  - [x] 2.1 创建 src/index.ts CLI 入口文件
    - 使用 Commander.js 配置 CLI
    - 注册 -v/--version 选项
    - 注册 -h/--help 选项
    - _Requirements: 1.1, 1.2, 4.1, 4.2, 4.3_
  - [x] 2.2 创建 src/commands/version.ts 版本命令
    - 从 package.json 读取版本号
    - 格式化输出版本信息
    - _Requirements: 1.1, 1.2, 1.3_
  - [ ]* 2.3 编写版本一致性属性测试
    - **Property 1: Version Consistency**
    - **Validates: Requirements 1.3**

- [x] 3. Checkpoint - 验证版本命令
  - 确保 `aitool -v` 和 `aitool --version` 正常工作
  - 确保所有测试通过，如有问题请询问用户

- [-] 4. 实现模板管理器
  - [x] 4.1 创建 src/utils/templateManager.ts
    - 实现 getAvailableTemplates() 获取可用模板列表
    - 实现 templateExists() 检查模板是否存在
    - 实现 copyTemplate() 复制模板到目标目录
    - _Requirements: 2.2, 2.3, 3.1, 3.2_
  - [ ]* 4.2 编写模板可用性属性测试
    - **Property 2: Template Availability**
    - **Validates: Requirements 2.2, 3.2**
  - [ ]* 4.3 编写模板复制完整性属性测试
    - **Property 3: Template Copy Integrity**
    - **Validates: Requirements 2.3**

- [x] 5. 实现 init 命令
  - [x] 5.1 创建 src/commands/init.ts 初始化命令
    - 使用 Inquirer.js 实现交互式模板选择
    - 调用 templateManager 复制选中的模板
    - 使用 chalk 输出成功/错误信息
    - _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5_
  - [x] 5.2 在 src/index.ts 中注册 init 命令
    - 添加 init 子命令
    - 配置命令描述
    - _Requirements: 2.1_

- [x] 6. 创建内置模板
  - [x] 6.1 创建 template/uniapp 模板目录
    - 添加基础的 uniapp 项目结构文件
    - _Requirements: 3.1, 3.2_
  - [x] 6.2 创建 template/uniappx 模板目录
    - 添加基础的 uniappx 项目结构文件
    - _Requirements: 3.1, 3.2_

- [x] 7. Checkpoint - 验证 init 命令
  - 确保 `aitool init` 交互式选择正常工作
  - 确保模板复制功能正常
  - 确保所有测试通过，如有问题请询问用户

- [ ] 8. 完善帮助信息和错误处理
  - [x] 8.1 完善 CLI 帮助信息
    - 添加命令描述
    - 添加使用示例
    - _Requirements: 4.1, 4.2, 4.3_
  - [x] 8.2 实现错误处理
    - 处理模板不存在的情况
    - 处理文件系统错误
    - _Requirements: 2.5_
  - [ ]* 8.3 编写单元测试
    - 测试帮助信息输出
    - 测试错误处理场景
    - _Requirements: 2.5, 4.1, 4.2, 4.3_

- [x] 9. Final Checkpoint - 最终验证
  - 确保所有命令正常工作
  - 确保所有测试通过
  - 如有问题请询问用户

- [-] 10. 实现规则管理器
  - [x] 10.1 创建 src/utils/rulesManager.ts
    - 实现 scanRulesFiles() 扫描规则文件
    - 实现 compareRules() 对比规则文件
    - 实现 syncRules() 同步规则文件
    - 支持 .cursor/rules 和 .kiro/steering 目录
    - 支持 .md 和 .mdc 文件扩展名
    - _Requirements: 5.2, 5.3, 5.4, 5.5, 5.6_
  - [ ]* 10.2 编写规则同步正确性属性测试
    - **Property 4: Rules Sync Correctness**
    - **Validates: Requirements 5.3, 5.4, 5.5, 5.6**

- [x] 11. 实现 updateRules 命令
  - [x] 11.1 创建 src/commands/updateRules.ts
    - 使用 Inquirer.js 实现交互式模板选择
    - 调用 rulesManager 同步规则文件
    - 输出同步结果摘要（新增、更新、未变更文件数）
    - _Requirements: 5.1, 5.7, 5.8_
  - [x] 11.2 在 src/index.ts 中注册 updateRules 命令
    - 添加 updateRules 子命令
    - 配置命令描述和帮助信息
    - _Requirements: 5.1_

- [x] 12. Checkpoint - 验证 updateRules 命令
  - 确保 `aitool updateRules` 交互式选择正常工作
  - 确保规则文件同步逻辑正确
  - 如有问题请询问用户

## Notes

- 标记 `*` 的任务为可选任务，可跳过以加快 MVP 开发
- 每个任务都关联了具体的需求以便追溯
- Checkpoint 任务用于阶段性验证
- 属性测试验证核心正确性属性
- 单元测试验证具体示例和边界情况
