diff --git a/MANUAL.md b/MANUAL.md index bb82e0d..70491a9 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -139,7 +139,7 @@ Kairoは以下を生成します: - 各タスクの詳細(テスト要件、UI/UX要件含む) - 実行順序とスケジュール -生成されたファイル: `/docs/tasks/{要件名}-tasks.md` +生成されたファイル: `/docs/tasks/{要件名}/overview.md`、`/docs/tasks/{要件名}/TASK-XXXX.md` #### 5. 実装 @@ -198,14 +198,17 @@ Kairoは各タスクに対して内部的にTDDコマンドを使用して以下 ###### rev-tasks(タスク構造分析) -**目的**: 既存コードから実装済み機能をタスクとして抽出・整理 +**目的**: 既存コードから機能単位で実装済み機能をタスクとして抽出・整理 **生成されるファイル**: -- `docs/reverse/{プロジェクト名}-discovered-tasks.md` + +- `docs/tasks/{要件名}/overview.md` - 機能ごとのタスク一覧 +- `docs/tasks/{要件名}/TASK-XXXX.md` - 個別タスクファイル **分析内容**: - コードベース構造の把握 -- 実装済み機能の特定 +- 機能の特定と分類 +- 実装済み機能のタスク分解 - API エンドポイントの抽出 - データベース構造の分析 - タスクの依存関係推定 @@ -215,11 +218,11 @@ Kairoは各タスクに対して内部的にTDDコマンドを使用して以下 **目的**: 実装されたアーキテクチャから技術設計文書を生成 **生成されるファイル**: -- `docs/reverse/{プロジェクト名}-architecture.md` -- `docs/reverse/{プロジェクト名}-dataflow.md` -- `docs/reverse/{プロジェクト名}-api-specs.md` -- `docs/reverse/{プロジェクト名}-database.md` -- `docs/reverse/{プロジェクト名}-interfaces.ts` +- `docs/design/{要件名}/architecture.md` +- `docs/design/{要件名}/dataflow.md` +- `docs/design/{要件名}/api-endpoints.md` +- `docs/design/{要件名}/database-schema.sql` +- `docs/design/{要件名}/interfaces.ts` **分析内容**: - アーキテクチャパターンの特定 @@ -233,9 +236,9 @@ Kairoは各タスクに対して内部的にTDDコマンドを使用して以下 **目的**: 実装コードからテストケースと仕様書を逆生成 **生成されるファイル**: -- `docs/reverse/{プロジェクト名}-test-specs.md` -- `docs/reverse/{プロジェクト名}-test-cases.md` -- `docs/reverse/tests/` - 生成されたテストコード +- `docs/spec/{要件名}/test-specs.md` - テスト仕様書 +- `docs/spec/{要件名}/test-cases.md` - テストケース一覧 +- `docs/spec/{要件名}/tests/` - 生成されたテストコード **分析内容**: - 既存テストの分析 @@ -249,7 +252,9 @@ Kairoは各タスクに対して内部的にTDDコマンドを使用して以下 **目的**: 実装機能から要件定義書をEARS記法で逆生成 **生成されるファイル**: -- `docs/reverse/{プロジェクト名}-requirements.md` +- `docs/spec/{要件名}/requirements.md` +- `docs/spec/{要件名}/user-stories.md` +- `docs/spec/{要件名}/acceptance-criteria.md` **分析内容**: - ユーザーストーリーの逆算 @@ -289,11 +294,13 @@ Kairoは各タスクに対して内部的にTDDコマンドを使用して以下 │ └── commands/ # Kairoコマンド ├── docs/ │ ├── implements/ # 実装コード -│ │ └── {タスクID}/ +│ │ └── {要件名}/{タスクID}/ │ ├── spec/ # 要件定義書 +│ │ └── {要件名}/ │ ├── design/ # 設計文書 -│ ├── tasks/ # タスク一覧 -│ └── reverse/ # リバース文書 +│ │ └── {要件名}/ +│ └── tasks/ # タスク一覧 +│ └── {要件名}/ ├── backend/ # バックエンドコード ├── frontend/ # フロントエンドコード └── database/ # データベース関連 diff --git a/README.md b/README.md index 8664c84..95af3a9 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,8 @@ Kairoは要件定義から実装までの開発プロセスを自動化・支援 - `tdd-verify-complete` - TDD完了確認 ### リバースエンジニアリングコマンド -- `rev-tasks` - 既存コードからタスク一覧を逆生成 + +- `rev-tasks` - 既存コードから機能単位でタスク一覧を逆生成 - `rev-design` - 既存コードから設計文書を逆生成 - `rev-specs` - 既存コードからテスト仕様書を逆生成 - `rev-requirements` - 既存コードから要件定義書を逆生成 diff --git a/commands/rev-design.md b/commands/rev-design.md index 49b5c91..da8c42a 100644 --- a/commands/rev-design.md +++ b/commands/rev-design.md @@ -11,7 +11,7 @@ description: 既存のコードベースから技術設計文書を逆生成し ## 前提条件 - 分析対象のコードベースが存在する -- `docs/reverse/` ディレクトリが存在する(なければ作成) +- `docs/design/{要件名}/` ディレクトリが存在する(なければ作成) - 可能であれば事前に `/tsumiki:rev-tasks` を実行済み ## 実行内容 @@ -53,18 +53,18 @@ description: 既存のコードベースから技術設計文書を逆生成し - ルーティング設計 7. **ファイルの作成** - - `docs/reverse/{プロジェクト名}-architecture.md` - アーキテクチャ概要 - - `docs/reverse/{プロジェクト名}-dataflow.md` - データフロー図 - - `docs/reverse/{プロジェクト名}-api-specs.md` - API仕様 - - `docs/reverse/{プロジェクト名}-database.md` - DB設計 - - `docs/reverse/{プロジェクト名}-interfaces.ts` - 型定義集約 + - `docs/design/{要件名}/architecture.md` - アーキテクチャ概要 + - `docs/design/{要件名}/dataflow.md` - データフロー図 + - `docs/design/{要件名}/api-endpoints.md` - API仕様 + - `docs/design/{要件名}/database-schema.sql` - DB設計 + - `docs/design/{要件名}/interfaces.ts` - 型定義集約 ## 出力フォーマット例 ### architecture.md ```markdown -# {プロジェクト名} アーキテクチャ設計(逆生成) +# {要件名} アーキテクチャ設計(逆生成) ## 分析日時 {実行日時} diff --git a/commands/rev-requirements.md b/commands/rev-requirements.md index 54e3ba8..c482575 100644 --- a/commands/rev-requirements.md +++ b/commands/rev-requirements.md @@ -11,7 +11,7 @@ description: 既存のコードベースから要件定義書を逆生成しま ## 前提条件 - 分析対象のコードベースが存在する -- `docs/reverse/` ディレクトリが存在する(なければ作成) +- `docs/spec/{要件名}/` ディレクトリが存在する(なければ作成) - 可能であれば事前に `/tsumiki:rev-tasks` および `/tsumiki:rev-design` を実行済み ## 実行内容 @@ -51,12 +51,14 @@ description: 既存のコードベースから要件定義書を逆生成しま - 未実装のテストケースを推奨事項として提示 7. **ファイルの作成** - - `docs/reverse/{プロジェクト名}-requirements.md` として保存 + - `docs/spec/{要件名}/requirements.md` として保存 + - `docs/spec/{要件名}/user-stories.md` としてユーザーストーリーを保存 + - `docs/spec/{要件名}/acceptance-criteria.md` として受け入れ基準を保存 ## 出力フォーマット例 ```markdown -# {プロジェクト名} 要件定義書(逆生成) +# {要件名} 要件定義書(逆生成) ## 分析概要 diff --git a/commands/rev-specs.md b/commands/rev-specs.md index b4e1db6..c0019c9 100644 --- a/commands/rev-specs.md +++ b/commands/rev-specs.md @@ -11,7 +11,7 @@ description: 既存のコードベースから包括的なテストケースと ## 前提条件 - 分析対象のコードベースが存在する -- `docs/reverse/` ディレクトリが存在する(なければ作成) +- `docs/spec/{要件名}/` ディレクトリが存在する(なければ作成) - 可能であれば事前に `/tsumiki:rev-requirements`, `/tsumiki:rev-design` を実行済み ## 実行内容 @@ -52,16 +52,16 @@ description: 既存のコードベースから包括的なテストケースと - テスト手順書 7. **ファイルの作成** - - `docs/reverse/{プロジェクト名}-test-specs.md` - テスト仕様書 - - `docs/reverse/{プロジェクト名}-test-cases.md` - テストケース一覧 - - `docs/reverse/tests/` - 生成されたテストコード + - `docs/spec/{要件名}/test-specs.md` - テスト仕様書 + - `docs/spec/{要件名}/test-cases.md` - テストケース一覧 + - `docs/spec/{要件名}/tests/` - 生成されたテストコード ## 出力フォーマット例 ### test-specs.md ```markdown -# {プロジェクト名} テスト仕様書(逆生成) +# {要件名} テスト仕様書(逆生成) ## 分析概要 @@ -507,7 +507,7 @@ process.env.NODE_ENV = 'test'; ### test-cases.md ```markdown -# {プロジェクト名} テストケース一覧(逆生成) +# {要件名} テストケース一覧(逆生成) ## テストケース概要 diff --git a/commands/rev-tasks.md b/commands/rev-tasks.md index 60334d8..367491a 100644 --- a/commands/rev-tasks.md +++ b/commands/rev-tasks.md @@ -11,9 +11,41 @@ description: 既存のコードベースを分析し、実装されている機 ## 前提条件 - 分析対象のコードベースが存在する -- `docs/reverse/` ディレクトリが存在する(なければ作成) +- `docs/tasks/` ディレクトリが存在する(なければ作成) - TypeScript/JavaScript、Python、その他のコードを分析可能 +## {要件名}の命名規則 + +コードベースを**機能単位**(feature単位)に分解し、各機能を{要件名}として出力する。 + +- 簡潔な英語に変換する +- ケバブケース(kebab-case)を使用 +- 最大50文字程度に収める +- 例: + - ユーザー認証 → "user-authentication" + - 商品検索 → "product-search" + - 注文管理 → "order-management" + - 通知配信 → "notification-delivery" + +### 出力ディレクトリ構造 + +各機能ごとに独立したディレクトリを作成する: + +``` +docs/tasks/ +├── user-authentication/ +│ ├── overview.md +│ ├── TASK-0001.md +│ └── TASK-0002.md +├── product-search/ +│ ├── overview.md +│ ├── TASK-0001.md +│ └── TASK-0002.md +└── order-management/ + ├── overview.md + └── TASK-0001.md +``` + ## 実行内容 1. **コードベースの構造分析** @@ -52,20 +84,24 @@ description: 既存のコードベースを分析し、実装されている機 - E2Eテストの存在 - テストカバレッジ -7. **タスクの逆算と整理** - - 実装された機能をタスクとして分解 - - タスクIDの自動割り当て +7. **機能の特定とタスクの逆算** + - コードベースから機能を特定し、各機能を独立した{要件名}として分解 + - 各{要件名}内で実装された機能をタスクとして分解 + - タスクIDの自動割り当て(各{要件名}スコープ内で TASK-0001 から採番) - 依存関係の推定 - 実装工数の推定 8. **ファイルの作成** - - `docs/reverse/{プロジェクト名}-discovered-tasks.md` として保存 - - 発見されたタスクを構造化して文書化 + - 各機能({要件名})ごとにディレクトリを作成 + - `docs/tasks/{要件名}/overview.md` として機能ごとのタスク一覧を保存 + - 各タスクを `docs/tasks/{要件名}/{TASK-ID}.md` として個別ファイルに保存 ## 出力フォーマット例 +### overview.md + ````markdown -# {プロジェクト名} 発見タスク一覧 +# {要件名} タスク一覧 ## 概要 @@ -74,175 +110,86 @@ description: 既存のコードベースを分析し、実装されている機 **発見タスク数**: {数} **推定総工数**: {時間} -## コードベース構造 - -### プロジェクト情報 -- **フレームワーク**: {使用フレームワーク} -- **言語**: {使用言語} -- **データベース**: {使用DB} -- **主要ライブラリ**: {主要な依存関係} - -### ディレクトリ構造 -``` -{ディレクトリツリー} -``` - -## 発見されたタスク - -### 基盤・設定タスク - -#### DISCOVERED-001: プロジェクト初期設定 - -- [x] **タスク完了** (実装済み) -- **タスクタイプ**: DIRECT -- **実装ファイル**: - - `package.json` - - `tsconfig.json` - - `.env.example` -- **実装詳細**: - - {発見された設定内容} -- **推定工数**: {時間} - -#### DISCOVERED-002: データベース設定 - -- [x] **タスク完了** (実装済み) -- **タスクタイプ**: DIRECT -- **実装ファイル**: - - `src/database/connection.ts` - - `migrations/001_initial.sql` -- **実装詳細**: - - {発見されたDB設定内容} -- **推定工数**: {時間} +## タスク一覧 -### API実装タスク - -#### DISCOVERED-101: ユーザー認証API +#### TASK-0001: {タスク名} - [x] **タスク完了** (実装済み) -- **タスクタイプ**: TDD -- **実装ファイル**: - - `src/auth/auth.controller.ts` - - `src/auth/auth.service.ts` - - `src/auth/jwt.strategy.ts` +- **タスクタイプ**: {DIRECT|TDD} +- **実装ファイル**: + - `{ファイルパス}` - **実装詳細**: - - ログイン/ログアウト機能 - - JWT トークン発行 - - 認証ミドルウェア -- **APIエンドポイント**: - - `POST /auth/login` - - `POST /auth/logout` - - `POST /auth/refresh` -- **テスト実装状況**: - - [x] 単体テスト: `auth.service.spec.ts` - - [x] 統合テスト: `auth.controller.spec.ts` - - [ ] E2Eテスト: 未実装 + - {発見された内容} - **推定工数**: {時間} -### UI実装タスク - -#### DISCOVERED-201: ログイン画面 +#### TASK-0002: {タスク名} - [x] **タスク完了** (実装済み) -- **タスクタイプ**: TDD -- **実装ファイル**: - - `src/components/Login/LoginForm.tsx` - - `src/components/Login/LoginForm.module.css` - - `src/hooks/useAuth.ts` +- **タスクタイプ**: {DIRECT|TDD} +- **実装ファイル**: + - `{ファイルパス}` - **実装詳細**: - - ログインフォーム - - バリデーション機能 - - エラーハンドリング -- **UI/UX実装状況**: - - [x] レスポンシブデザイン - - [x] ローディング状態 - - [x] エラー表示 - - [ ] アクセシビリティ: 部分的実装 + - {発見された内容} - **テスト実装状況**: - - [x] コンポーネントテスト: `LoginForm.test.tsx` + - [x] 単体テスト: `{テストファイル}` - [ ] E2Eテスト: 未実装 - **推定工数**: {時間} -## 未実装・改善推奨事項 - -### 不足しているテスト - -- [ ] **E2Eテストスイート**: 主要ユーザーフローのテスト -- [ ] **パフォーマンステスト**: API応答時間テスト -- [ ] **セキュリティテスト**: 認証・認可テスト - -### コード品質改善 - -- [ ] **TypeScript型安全性**: 一部でany型の使用 -- [ ] **エラーハンドリング**: 統一的なエラー処理 -- [ ] **ログ出力**: 構造化ログの実装 - -### ドキュメント不足 - -- [ ] **API仕様書**: OpenAPI/Swagger未実装 -- [ ] **開発者ガイド**: セットアップ手順書 -- [ ] **デプロイ手順書**: 本番環境構築手順 - ## 依存関係マップ ```mermaid graph TD - A[DISCOVERED-001: プロジェクト初期設定] --> B[DISCOVERED-002: データベース設定] - B --> C[DISCOVERED-101: ユーザー認証API] - C --> D[DISCOVERED-201: ログイン画面] - D --> E[未実装: E2Eテスト] - - F[未実装: API仕様書] --> G[未実装: 開発者ガイド] + A[TASK-0001] --> B[TASK-0002] ``` +```` -## 実装パターン分析 +### {TASK-ID}.md -### アーキテクチャパターン -- **実装パターン**: {発見されたパターン} -- **状態管理**: {使用されている状態管理} -- **認証方式**: {実装されている認証方式} +```markdown +# {TASK-ID}: {タスク名} -### コーディングスタイル -- **命名規則**: {発見された命名規則} -- **ファイル構成**: {ファイル構成パターン} -- **エラーハンドリング**: {エラー処理パターン} +## タスク概要 -## 技術的負債・改善点 +- **タスクタイプ**: {DIRECT|TDD} +- **推定工数**: {時間} +- **依存タスク**: {なし|TASK-XXXX} -### パフォーマンス -- {発見されたパフォーマンス課題} +## 実装ファイル -### セキュリティ -- {発見されたセキュリティ課題} +- `{ファイルパス}` -### 保守性 -- {発見された保守性課題} +## 実装詳細 -## 推奨次ステップ +{発見された内容の詳細} -1. **不足テストの実装** - 特にE2Eテストスイート -2. **ドキュメント整備** - API仕様書とセットアップガイド -3. **コード品質改善** - TypeScript型安全性とエラーハンドリング -4. **セキュリティ強化** - 認証・認可の詳細レビュー +## テスト実装状況 -```` +- [ ] 単体テスト +- [ ] 統合テスト +- [ ] E2Eテスト +``` ## 分析対象ファイルの自動検出 ### フロントエンド + - React: `*.tsx`, `*.jsx`, `*.ts`, `*.js` - Vue: `*.vue`, `*.ts`, `*.js` - Angular: `*.component.ts`, `*.service.ts`, `*.module.ts` ### バックエンド + - Node.js: `*.ts`, `*.js` (Express, NestJS等) - Python: `*.py` (Django, FastAPI等) - Java: `*.java` (Spring Boot等) ### データベース + - SQL: `*.sql`, `migrations/*` - ORM: モデルファイル、設定ファイル ### 設定ファイル + - `package.json`, `tsconfig.json`, `webpack.config.js` - `requirements.txt`, `Pipfile`, `pyproject.toml` - `pom.xml`, `build.gradle` @@ -271,4 +218,4 @@ claude code rev-tasks --format json - 発見されたタスク数と推定工数を表示 - 実装済み/未実装の機能一覧を表示 - 技術的負債・改善推奨事項をサマリー表示 -- 次のリバースエンジニアリングステップ(設計書生成等)を提案 +- 次のリバースエンジニアリングステップ(設計書生成等)を提案