指定されたタスクを実行し、対象機能のテストドキュメントを機能別ディレクトリに生成します。
Executes a specific task by calling sub-commands in sequence to generate test documentation in a feature-specific directory.
/plugin marketplace add mozuq-lab/origami-lite/plugin install origami@origami-lite/origami:split-spec で生成されたタスク一覧から、指定されたタスクID(TASK-XXX)の機能のみを処理します。既存の4コマンド(extract-features, generate-checklist, analyze-boundaries, generate-cases)を内部的に呼び出し、**機能別ディレクトリ(F-XXX_{機能名}/)**に結果を出力します。
機能別ディレクトリ方式: 各タスクは独立した機能ディレクトリに出力し、他機能のファイルは参照しません。これによりコンテキストの肥大化を防止します。
追加ルールの読み込み
docs/rule ディレクトリが存在する場合は読み込みdocs/rule/origami ディレクトリが存在する場合は読み込みタスクファイルと出力先の確認 🔵
docs/origami/*/tasks/task-list.md(仕様書別ディレクトリ)docs/origami/tasks/task-list.md(レガシー形式、後方互換)/origami:split-spec の実行を案内docs/origami/{仕様書名}/F-XXX_{機能名}/ 形式)仕様書ルートディレクトリの検証 🔵
/origami:split-spec の再実行を案内| 引数 | 説明 | 必須 | 例 |
|---|---|---|---|
| タスクID | 実行するタスクのID | ○ | /origami:run-task TASK-001 |
| --phase | 実行するフェーズ(1-4)。省略時は全フェーズ順次実行 | - | --phase 1 |
信頼性: 🔵 PRD「フェーズ指定」表より
| --phase | 実行コマンド | 入力 | 出力 |
|---|---|---|---|
| 1 | extract-features | 仕様書 | 01_機能詳細.md |
| 2 | generate-checklist | 01_機能詳細.md | 02_動作仕様.md |
| 3 | analyze-boundaries | 02_動作仕様.md | 03_境界値分析.md |
| 4 | generate-cases | 01 + 02 + 03 | 04_テストケース.md |
【信頼性レベル指示】: 各項目について、入力仕様書との照合状況を以下の信号でコメントしてください:
信頼性: 🔵 PRD「実行内容(Option A)」より
コマンド引数の --phase オプションを解析し、実行モードを決定します:
F-001)ログイン)docs/origami/ecommerce-spec/F-001_ログイン/)エラー: タスク {タスクID} に出力先情報が見つかりません。
split-specコマンドを再実行してください:
/origami:split-spec {仕様書パス}
タスクの「依存タスク」フィールドを確認
依存タスクがある場合、そのチェックボックスの状態を確認
依存タスクが未完了の場合:
⚠️ 警告: 依存タスクが未完了です
未完了の依存タスク:
- TASK-001: {機能名} (未完了)
続行しますか? (y/n)
依存タスクがすべて完了している場合、または依存タスクがない場合は処理を続行
信頼性: 🔵 PRD「実行内容(Option A)」より
--phase オプションが指定された場合、前フェーズの完了を確認します:
| --phase | 前提条件 |
|---|---|
| 1 | なし(仕様書が存在すること) |
| 2 | 01_機能詳細.md が存在すること |
| 3 | 02_動作仕様.md が存在すること |
| 4 | 01, 02, 03 が存在すること |
前提条件が満たされていない場合:
エラー: Phase {N} を実行するには、先に Phase {N-1} を完了してください
未完了のフェーズ:
- Phase {N-1}: {必要なファイル名}
次のコマンド:
/origami:run-task {タスクID} --phase {N-1}
信頼性: 🔵 PRD「run-task変更点」より
タスク実行開始時に、機能ディレクトリを作成します。
📁 機能ディレクトリを作成しています: F-XXX_{機能名}/
F-XXX_{機能名}/)が存在しない場合は作成指定されたタスクIDに対応する機能(F-XXX)を処理します。
各コマンドは機能ディレクトリを --output 引数で受け取ります 🔵
各フェーズは自機能フォルダ内のファイルのみを参照します(コンテキスト分離) 🔵
信頼性: 🔵 PRD「実行内容(Option A)」より
指定されたフェーズのみを実行します。
| --phase | 実行コマンド | 入力 | 出力 |
|---|---|---|---|
| 1 | /origami:extract-features --output {機能ディレクトリ} --target F-XXX | 仕様書 | 01_機能詳細.md |
| 2 | /origami:generate-checklist --output {機能ディレクトリ} --target F-XXX | 01_機能詳細.md | 02_動作仕様.md |
| 3 | /origami:analyze-boundaries --output {機能ディレクトリ} --target F-XXX | 02_動作仕様.md | 03_境界値分析.md |
| 4 | /origami:generate-cases --output {機能ディレクトリ} --target F-XXX | 01 + 02 + 03 | 04_テストケース.md |
フェーズ完了後、task-list.md の該当フェーズのステータスを更新し、次のフェーズを案内します。
信頼性: 🔵 PRD「実行内容(Option A)」より
全4フェーズを順次実行します。各フェーズ完了後にユーザーへの確認プロンプトを表示します:
Phase 1 (extract-features) を実行
01_機能詳細.mdPhase 2 (generate-checklist) を実行
01_機能詳細.md のみ(コンテキスト分離)02_動作仕様.mdPhase 3 (analyze-boundaries) を実行
02_動作仕様.md のみ(コンテキスト分離)03_境界値分析.mdPhase 4 (generate-cases) を実行
01 + 02 + 03(コンテキスト分離)04_テストケース.md{機能ディレクトリ}/01_機能詳細.md に出力/origami:extract-features --output {機能ディレクトリ} --target F-XXX01_機能詳細.md(単一機能形式){機能ディレクトリ}/02_動作仕様.md に出力/origami:generate-checklist --output {機能ディレクトリ} --target F-XXX{機能ディレクトリ}/01_機能詳細.md のみ(他機能のファイルは参照しない)02_動作仕様.md(単一機能形式){機能ディレクトリ}/03_境界値分析.md に出力/origami:analyze-boundaries --output {機能ディレクトリ} --target F-XXX{機能ディレクトリ}/02_動作仕様.md のみ(他機能のファイルは参照しない)03_境界値分析.md(単一機能形式){機能ディレクトリ}/04_テストケース.md に出力/origami:generate-cases --output {機能ディレクトリ} --target F-XXX{機能ディレクトリ}/01〜03 のみ(他機能のファイルは参照しない)04_テストケース.md(単一機能形式)信頼性: 🔵 PRD「task-list.md フォーマット変更」より
各フェーズ完了時に、task-list.md の該当フェーズのステータスを更新します:
## TASK-001: F-001 ログイン機能
| Phase | Status | Output |
|-------|--------|--------|
| 1 | ✅ | 01_機能詳細.md |
| 2 | ✅ | 02_動作仕様.md |
| 3 | 🔄 | - |
| 4 | ⏳ | - |
ステータス凡例:
4フェーズすべてが ✅ になった場合、タスク全体を完了状態としてマークします。
🚀 タスク実行開始: {タスクID} --phase {N}
📋 タスク詳細:
- タスクID: {タスクID}
- 機能ID: F-XXX
- 機能名: {機能名}
- 実行フェーズ: Phase {N}
- 出力先: docs/origami/{仕様書名}/F-XXX_{機能名}/
🔄 Phase {N} を開始します...
🚀 タスク実行開始: {タスクID}
📋 タスク詳細:
- タスクID: {タスクID}
- 機能ID: F-XXX
- 機能名: {機能名}
- 実行モード: 全フェーズ順次実行
- 出力先: docs/origami/{仕様書名}/F-XXX_{機能名}/
- 依存タスク: {あり/なし}
📁 機能ディレクトリを作成しました: F-XXX_{機能名}/
🔄 全フェーズを順次実行します...
✅ Phase {N} 完了: {コマンド名}
→ F-XXX_{機能名}/{出力ファイル名} を作成しました
→ 入力: {入力ファイル} のみ(コンテキスト分離)
→ 🟢: X件 / 🟡: X件 / 🔴: X件
✅ Phase {N} 完了: {コマンド名}
→ F-XXX_{機能名}/{出力ファイル名} を作成しました
→ 入力: {入力ファイル} のみ(コンテキスト分離)
→ 🟢: X件 / 🟡: X件 / 🔴: X件
📁 更新されたファイル:
- docs/origami/{仕様書名}/tasks/task-list.md (Phase {N} = ✅)
🔜 次のフェーズ:
→ /origami:run-task {タスクID} --phase {N+1}
💡 ヒント: 出力ファイルを確認・修正してから次のフェーズを実行してください
✅ Phase {N} 完了: {コマンド名}
→ F-XXX_{機能名}/{出力ファイル名} を作成しました
→ 🟢: X件 / 🟡: X件 / 🔴: X件
📄 出力ファイル: docs/origami/{仕様書名}/F-XXX_{機能名}/{出力ファイル名}
続行しますか? (y: 続行 / n: 中断して後でレビュー)
🎉 タスク完了: {タスクID}
📊 実行サマリー:
- 機能ID: F-XXX
- 機能名: {機能名}
- 出力先: docs/origami/{仕様書名}/F-XXX_{機能名}/
- 完了フェーズ: 4/4
- 生成テストケース数: X件
- 信号分布: 🟢 X件 / 🟡 X件 / 🔴 X件
📁 作成されたファイル:
- docs/origami/{仕様書名}/F-XXX_{機能名}/01_機能詳細.md
- docs/origami/{仕様書名}/F-XXX_{機能名}/02_動作仕様.md
- docs/origami/{仕様書名}/F-XXX_{機能名}/03_境界値分析.md
- docs/origami/{仕様書名}/F-XXX_{機能名}/04_テストケース.md
📁 更新されたファイル:
- docs/origami/{仕様書名}/tasks/task-list.md (全フェーズ完了)
🔜 次のステップ:
- 次のタスクを実行: /origami:run-task {次のタスクID}
- 進捗確認: /origami:verify-tasks {仕様書名}
信頼性: 🔵 設計文書より(一部は設計文書から妥当な推測 🟡)
| エラーケース | メッセージ |
|---|---|
| タスクファイル未存在 | 「タスク一覧ファイルが見つかりません。先に /origami:split-spec を実行してください」 |
| 出力先情報なし | 「タスク {タスクID} に出力先情報が見つかりません。/origami:split-spec を再実行してください」 |
| 仕様書ディレクトリ未存在 | 「仕様書ディレクトリが存在しません: {パス}。/origami:split-spec を再実行してください」 |
| タスクID未指定 | 「タスクIDを指定してください。例: /origami:run-task TASK-001」 |
| 不正なタスクID形式 | 「タスクIDの形式が不正です。TASK-XXX 形式で指定してください」 |
| タスクが見つからない | 「タスク {タスクID} が見つかりません。有効なタスクID: TASK-001, TASK-002, ...」 |
| 依存タスク未完了(中断時) | 「依存タスクの完了後に再実行してください」 |
| タスク既に完了 | 「タスク {タスクID} は既に完了しています。再実行しますか? (y/n)」 |
| 機能ディレクトリ作成失敗 | 「機能ディレクトリを作成できません: {パス}」 |
| 不正なフェーズ番号 🟡 | 「--phase は 1〜4 の範囲で指定してください」 |
| 前フェーズ未完了 🔵 | 「Phase {N} を実行するには、先に Phase {N-1} を完了してください」 |
| 入力ファイル未存在 🟡 | 「入力ファイルが見つかりません: {ファイルパス}」 |
task-list.md の新フォーマット(フェーズ単位進捗管理形式)から機能情報と出力先を取得する方法:
## TASK-001: F-001 ログイン機能
**出力先**: docs/origami/ecommerce-spec/F-001_ログイン/
| Phase | Status | Output |
|-------|--------|--------|
| 1 | ✅ | 01_機能詳細.md |
| 2 | ✅ | 02_動作仕様.md |
| 3 | 🔄 | - |
| 4 | ⏳ | - |
解析ルール:
## TASK-XXX:)を検索TASK-001F-001ログイン機能/ がない場合は追加後方互換のため、従来形式も解析可能:
### TASK-001: F-001 ログイン
| 項目 | 内容 |
|------|------|
| タスクID | TASK-001 |
| 機能ID | F-001 |
| 機能名 | ログイン |
| 出力先 | docs/origami/ecommerce-spec/F-001_ログイン/ |
| 依存タスク | なし |
| 状態 | 未完了 |
F-XXX_{機能名}/)が作成されたことを確認01_機能詳細.md〜04_テストケース.md)が作成されたことを確認| コマンド | 説明 |
|---|---|
/origami:split-spec | タスク分割計画を生成(run-taskの前に実行、機能情報と出力先を生成) |
/origami:verify-tasks | 機能ディレクトリ構造とタスク完了状況を確認 |
/origami:extract-features | 機能詳細を抽出(run-task内で呼び出される、--outputで機能ディレクトリを指定) |
/origami:generate-checklist | 動作仕様を作成(run-task内で呼び出される、入力は同一機能フォルダのみ) |
/origami:analyze-boundaries | 境界値分析を作成(run-task内で呼び出される、入力は同一機能フォルダのみ) |
/origami:generate-cases | テストケースを生成(run-task内で呼び出される、入力は同一機能フォルダのみ) |
run-task実行後のディレクトリ構造:
docs/origami/{仕様書名}/
├── F-001_ログイン/
│ ├── 01_機能詳細.md
│ ├── 02_動作仕様.md
│ ├── 03_境界値分析.md
│ └── 04_テストケース.md
├── F-002_ユーザー登録/
│ └── ...(別タスクで生成)
└── tasks/
└── task-list.md
信頼性: 🔵 PRD「提案方式」・REQ-101〜103より
各フェーズは自機能フォルダ内のファイルのみを参照します:
| フェーズ | 入力 | 出力 |
|---|---|---|
| Phase 1 (--phase 1) | 仕様書(対象機能部分のみ) | 01_機能詳細.md |
| Phase 2 (--phase 2) | 01_機能詳細.md のみ | 02_動作仕様.md |
| Phase 3 (--phase 3) | 02_動作仕様.md のみ | 03_境界値分析.md |
| Phase 4 (--phase 4) | 01 + 02 + 03 | 04_テストケース.md |
重要: 他機能ディレクトリ(F-002_ユーザー登録/等)のファイルは参照しません。
フェーズ別実行の利点:
01_機能一覧.md への追記)との互換性はありません信頼性: 🔵 PRD「Breaking Changes」より
--phase オプションの追加(後方互換: 省略時は全フェーズ順次実行)