Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:39:29 +08:00
commit f2613ae15b
26 changed files with 5240 additions and 0 deletions

View File

@@ -0,0 +1,247 @@
---
argument-hint: <タスク名> [調査項目名]
allowed-tools: ["Read", "Write", "Edit", "Bash", "WebSearch", "Task"]
---
# overview.mdの調査項目を実施し、個別ファイルとして保存します
このコマンドは `specs/[taskname]/overview.md` の調査セクションから調査項目を読み取り、調査を実施して `specs/research/[調査項目名].md` として保存します。
## コマンドの役割
**`/sdd:conduct-research`(このコマンド)の役割**:
- **技術的な調査・検証**を実施
- AIが自律的に調査・実験・ベンチマークなどを行って判断できる項目
- 例:
- ライブラリやフレームワークの選定(性能比較、機能比較)
- 実装方法の検証PoC作成、パフォーマンス測定
- アーキテクチャの実現可能性調査
- セキュリティ手法の選定と検証
**`/sdd:clarify-spec` との違い**:
- **clarify-spec**: ビジネス要件やユーザーの意思決定が必要な項目をユーザーに質問
- **conduct-research**: 技術的な調査が必要な項目をAIが調査・検証
- clarify-specは「ユーザーに聞く」、conduct-researchは「AIが調べる」
**使い分けの例**:
- ✅ research: 「JWT vs セッション認証のパフォーマンス比較」(技術的検証)
- ✅ clarify: 「ログイン時にメールアドレスとユーザー名のどちらを使うか」(ビジネス要件)
- ✅ research: 「PostgreSQL vs MySQL のベンチマーク」(技術的検証)
- ✅ clarify: 「管理者画面の公開範囲(社内のみ or 顧客も使用)」(ビジネス要件)
【引数】
$ARGUMENTS
## 引数の形式
- `[taskname]` - タスク名のみ指定した場合、全ての未完了調査項目を順に実施
- `[taskname] [調査項目名]` - 特定の調査項目のみ実施
- 例: `user-authentication JWT認証のパフォーマンス検証` → 指定された調査項目のみ実施
## 実行手順
### 1. タスクと調査項目の特定
1. **引数が指定されている場合**
- `[taskname]`のみ: specs/[taskname]/overview.mdの調査セクションから未完了の調査項目を抽出
- `[taskname] [調査項目名]`: 指定された調査項目のみを対象
2. **引数が指定されていない場合**
- `specs/`ディレクトリ内のサブディレクトリを一覧表示
- 複数のタスクがある場合、AskUserQuestionツールでユーザーに選択させる
- 単一のタスクのみの場合は自動選択
3. **指定されたタスクディレクトリが存在しない場合**
- エラーメッセージを表示: 「specs/[taskname]/ ディレクトリが見つかりません」
- specs/配下の利用可能なタスクを一覧表示
### 2. overview.mdの確認
1. **ファイルの存在確認**
- `specs/[taskname]/overview.md` の存在を確認
- 存在しない場合: エラーメッセージを表示し、`/sdd:init-task` コマンドの実行を提案
2. **調査項目の抽出**
- overview.mdの「調査項目」セクション表形式から調査項目を抽出
- 各調査項目の以下の情報を取得:
- 状態(未着手/完了)
- 調査項目名
- 理由
3. **未完了調査項目のリスト表示**
- 状態が「未着手」の項目を表示
- 調査項目が全て完了している場合: 完了メッセージを表示して終了
### 3. ステアリングドキュメントの読み込み
プロジェクト全体のコンテキストを把握するため、以下のステアリングドキュメントを読み込みます:
**`specs/_steering/product.md`**:
- プロダクトの目的とビジョン
- ターゲットユーザー
- 主要機能とビジネス目標
**`specs/_steering/tech.md`**:
- 技術スタックとアーキテクチャ
- 開発標準(型安全性、コード品質、テスト戦略)
- 重要な技術的決定事項
**`specs/_steering/structure.md`**:
- プロジェクト構造と命名規則
- コード組織原則
- モジュール境界
**ステアリングドキュメントが存在しない場合**:
- 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。プロジェクト固有のコンテキストなしで進めます。」
- `/sdd:steering` コマンドでステアリングドキュメントを作成することを推奨
- 処理は続行(ステアリングドキュメントは必須ではない)
### 4. 調査項目の選択
**調査項目名が指定されている場合**:
- 指定された名前の調査項目を特定
- その調査項目の詳細を表示
- 手順5へ進む
**調査項目名が指定されていない場合**:
- 未完了の調査項目を表示
- AskUserQuestionツールを使用してユーザーに選択させる
- 各調査項目を選択肢として提示
- 「全て順番に実施」オプションも含める
### 5. 調査の実施
選択された調査項目について、以下の手順で調査を実施:
#### 5-1. 調査内容の確認
1. **調査項目の詳細を確認**
- overview.mdから調査項目名と理由を取得
- 何を調査すべきかを明確に理解
2. **調査プランの作成(内部処理)**
- TodoWriteツールを使用して調査ステップを計画
- 例:
- コードベースの既存実装を調査
- ドキュメント・ベストプラクティスを調査WebSearchツール使用
- PoC実装必要な場合
- ベンチマーク実施(必要な場合)
- 結果の比較と分析
- **調査プランはspecファイルには書かない**(内部処理のみ)
#### 5-2. 調査の実行
調査方法に応じて適切なアプローチを選択:
**A. コードベース調査**
- 既存の実装パターンを確認
- 使用されているライブラリやフレームワークを確認
- 類似機能の実装方法を分析
**B. ドキュメント調査**
- WebSearchツールを使用して最新のベストプラクティスを調査
- 公式ドキュメントを参照
- 技術記事やブログを調査
**C. PoCProof of Concept実装**
- 小規模な実装例を作成
- 動作確認とパフォーマンス測定
- 実装の難易度や工数を評価
**D. ベンチマーク**
- 複数の選択肢を比較
- パフォーマンス測定
- リソース使用量の確認
#### 5-3. 調査結果のまとめと保存
調査完了後、以下の情報をまとめて `specs/[taskname]/research/[調査項目名].md` として保存:
```markdown
# [調査項目名]
## 結論
- 選択: [選択した技術/手法]
- 理由: [選択の理由を1-3行で簡潔に]
## 詳細(必要な場合のみ)
- パフォーマンス測定結果
- セキュリティ考慮事項
- 実装の難易度評価
- 注意点やリスク
## 関連タスク
- specs/[taskname]/
```
**ファイル名の決定**:
- 調査項目名をそのままファイル名にする
- 例: 「JWT認証のパフォーマンス検証」→ `JWT認証のパフォーマンス検証.md`
### 6. overview.mdの調査セクション更新
#### 6-1. 表の更新
- overview.mdの調査項目表で、該当行の「状態」列を「完了」に更新
- 「概要」列に調査結果の簡潔なサマリーと結果ファイルへのリンクを追加:
```markdown
| 完了 | [調査項目名] | [理由] | [選択した技術/手法](research/[調査項目名].md) |
```
#### 6-2. 全調査項目完了時の処理
- 全ての調査項目の状態が「完了」になっている場合
- overview.mdの「次のステップ」を更新:
```markdown
**次のステップ**: `/sdd:define-requirements [taskname]` で要件定義を開始してください
```
### 7. 完了報告
```
✅ 調査項目を完了しました
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 対象タスク: [taskname]
📝 完了した調査項目: [調査項目名]
🔍 結論: [選択した技術/手法]
📄 保存先: specs/[taskname]/research/[調査項目名].md
📊 調査の進捗: 完了 {完了数} / {総数}
💡 次のアクション:
- 残りの調査項目: `/sdd:conduct-research [taskname]`
- 全調査完了: `/sdd:define-requirements [taskname]`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**複数の調査項目を順に実施する場合**:
- 1つの調査項目が完了したら、次の未完了項目を自動的に表示
- ユーザーに「続けて次の調査項目を実施しますか?」と確認
- 承認されたら手順4に戻って次の調査項目を実施
## 重要な注意事項
- **調査は丁寧に**: 調査は実装の品質を左右する重要なステップです。時間をかけて丁寧に調査してください
- **エビデンスベース**: 推測ではなく、調査結果ベンチマーク、ドキュメント、PoCに基づいて判断すること
- **調査結果は簡潔に**: 結論と理由を明確に。詳細は必要な場合のみ記載
- **個別ファイルで管理**: 各調査項目は `specs/research/[調査項目名].md` として個別に保存
- **調査プランはspecに書かない**: 調査プランは内部処理のみ。結果だけをファイルに保存
## 使用例
1. タスク全体の調査を順に実施:
`/sdd:conduct-research user-authentication`
2. 特定の調査項目のみ実施:
`/sdd:conduct-research user-authentication JWT認証のパフォーマンス検証`
3. 引数なしで対話的に選択:
`/sdd:conduct-research`
## 内部品質チェック
**重要**: 以下のチェックはコマンド内部で実施し、**生成されるspecファイルには結果を記載しません**。
### ステアリングドキュメントレビュー(内部処理)
調査結果ファイル生成後、内部的にステアリングドキュメントとの整合性を確認:
- tech.mdの技術方針と調査結果の整合性
- product.mdのビジネス目標との整合性
問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。