仕様書・URLから機能一覧を抽出し、テスト対象を明確化します。タスク分割経由時は機能詳細、単独実行時は機能一覧を出力します。
Extracts features from specifications or URLs and organizes them into a prioritized list with traffic light indicators.
/plugin marketplace add mozuq-lab/origami-lite/plugin install origami@origami-lite入力された仕様書やURLから機能を抽出し、テスト対象を明確化する機能一覧を作成します。 信号機システム(🟢🟡🔴)により、各機能の確信度を可視化し、レビュー優先度を明確にします。
実行コンテキストに応じたファイル出力:
01_機能一覧.md に出力(後方互換)--target 指定): 単一機能の詳細を 01_機能詳細.md に出力追加ルールの読み込み
docs/rule ディレクトリが存在する場合は読み込みdocs/rule/origami ディレクトリが存在する場合は読み込み出力先ディレクトリの決定 🔵
--output 引数が指定されている場合はそのディレクトリを使用docs/origami/{仕様書名}/ecommerce-spec.md → docs/origami/ecommerce-spec/| 引数 | 説明 | 必須 | 例 |
|---|---|---|---|
| 仕様書 | 入力ファイルまたはURL | ○ | docs/requirements.md |
| --output | 出力先ディレクトリ(機能ディレクトリを含む) | △ | --output docs/origami/my-spec/F-001_ログイン/ |
| --target | 対象機能ID(タスク分割経由時) | △ | --target F-001 |
引数の組み合わせによる動作:
| --target | --output | 出力ファイル名 | 用途 |
|---|---|---|---|
| なし | なし | 01_機能一覧.md | 単独実行(全機能抽出) |
| なし | あり | 01_機能一覧.md | 単独実行(出力先指定) |
| あり | あり | 01_機能詳細.md | タスク分割経由(単一機能) |
以下の形式を受け付けます:
| 形式 | 説明 | 例 |
|---|---|---|
| Markdown | .md拡張子のファイル | docs/requirements.md を参照して |
| テキスト | .txt拡張子のファイル | spec.txt を参照して |
| URL | Web上のページ | https://example.com/api-spec を分析して |
v3.1.0 対応: --target オプション指定時(run-task経由)は、以下のルールに従います:
| 実行モード | 入力範囲 | 目的 |
|---|---|---|
| タスク分割経由時(run-task経由) | 仕様書の対象機能部分のみ | コンテキストサイズを一定に保つ |
| 単独実行時 | 仕様書全体 | 全機能の一覧抽出 |
重要: タスク分割経由時は、仕様書全体ではなく、対象機能(F-XXX)に関連する部分のみを参照してください。これにより、各フェーズのコンテキストサイズが一定に保たれ、品質の安定した出力が得られます。
入力範囲の例:
# 単独実行時(全機能抽出)
仕様書全体を読み込み、すべての機能を抽出
# タスク分割経由時(F-001 ログイン機能の場合)
仕様書から「ログイン」に関連するセクションのみを抽出
- 「## ログイン機能」セクション
- 「### 認証フロー」セクション
- 関連するAPI仕様(POST /api/auth/login 等)
# 単独実行(出力先自動決定)
/origami:extract-features docs/ecommerce-spec.md
# → docs/origami/ecommerce-spec/01_機能一覧.md に出力
# 出力先を明示的に指定
/origami:extract-features docs/spec.md --output docs/origami/my-project/
# → docs/origami/my-project/01_機能一覧.md に出力
# タスク分割経由(run-taskから呼び出し)
/origami:extract-features --output docs/origami/ecommerce-spec/F-001_ログイン/ --target F-001
# → docs/origami/ecommerce-spec/F-001_ログイン/01_機能詳細.md に出力
入力の読み込み
機能の抽出 以下のパターンを機能として抽出する:
GET /api/xxx, POST /api/xxx等)の記載機能IDの付与
信号機判定
サマリー生成
出力ファイル名の決定 🔵
実行コンテキストに応じて出力ファイル名を切り替え:
IF --target オプションが指定されている THEN
出力ファイル名 = "01_機能詳細.md"
ELSE
出力ファイル名 = "01_機能一覧.md"
END IF
| 条件 | 出力ファイル名 | 出力形式 |
|---|---|---|
| 単独実行(--targetなし) | 01_機能一覧.md | 複数機能を一覧形式で記載 |
| タスク分割経由(--targetあり) | 01_機能詳細.md | 単一機能の詳細を記載 |
| 信号 | 判定条件 | 例 |
|---|---|---|
| 🟢 青信号 | 入力に「〜できる」「〜する」等の明示的記述がある | 「ユーザーは新規登録できる」 |
| 🟢 青信号 | 具体的なエンドポイント・画面名の記載がある | 「POST /api/users」「ログイン画面」 |
| 🟡 黄信号 | 記載された機能から一般的に必要と類推される | ログインがあればログアウトも必要 |
| 🟡 黄信号 | テスト技法・業界標準(OWASP等)から導出される | 認証機能にはセッション管理が必要 |
| 🟡 黄信号 | Webアプリケーション一般の常識から導出される | フォームには入力バリデーションが必要 |
| 🔴 赤信号 | 「検討中」「予定」等の不明確な表現がある | 「将来的に実装予定」 |
| 🔴 赤信号 | URL解析で推測の根拠が薄い | 画面要素のみから推測した機能 |
出力先: {出力先ディレクトリ}/01_機能一覧.md または 01_機能詳細.md 🔵
{出力先}/01_機能一覧.md(複数機能を一覧形式で出力){出力先}/01_機能詳細.md(単一機能の詳細を出力)# 機能一覧
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: {ファイル名/URL}
- 総機能数: X件(🟢: X件 / 🟡: X件 / 🔴: X件)
---
## 🟢 高確信度(入力ドキュメントに明記)
| # | 機能名 | 機能概要 | 根拠 |
|---|--------|---------|------|
| F-001 | {機能名} | {概要} | {仕様書の該当箇所} |
| F-002 | {機能名} | {概要} | {仕様書の該当箇所} |
---
## 🟡 中確信度(一般的知識から推測)
| # | 機能名 | 機能概要 | 推測根拠 |
|---|--------|---------|---------|
| F-0XX | {機能名} | {概要} | {推測の理由} |
### 🟡項目の判断詳細
- **F-0XX {機能名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した知識・規格(OWASP, ISTQB等)}
---
## 🔴 要確認(推測・根拠不明確)
| # | 機能名 | 機能概要 | 確認が必要な理由 |
|---|--------|---------|-----------------|
| F-0XX | {機能名} | {概要} | {確認が必要な理由} |
---
## サマリー
| 信号 | 件数 | レビュー優先度 |
|------|-----|---------------|
| 🟢 高確信度 | X件 | 低(確認程度) |
| 🟡 中確信度 | X件 | 中(内容確認) |
| 🔴 要確認 | X件 | 高(必ず確認) |
| **合計** | **X件** | - |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を反映後、`/origami:generate-checklist` で動作仕様一覧を作成
3. または `/origami:analyze-boundaries` で境界値分析を実施
--target オプション指定時は、単一機能の詳細形式で出力:
# 機能詳細: F-001 {機能名}
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: {ファイル名/URL}
- 対象機能: F-001 {機能名}
---
## 機能概要
{機能の詳細な説明}
---
## 🟢 高確信度(入力ドキュメントに明記)
| # | サブ機能名 | 概要 | 根拠 |
|---|-----------|------|------|
| F-001-01 | {サブ機能名} | {概要} | {仕様書の該当箇所} |
| F-001-02 | {サブ機能名} | {概要} | {仕様書の該当箇所} |
---
## 🟡 中確信度(一般的知識から推測)
| # | サブ機能名 | 概要 | 推測根拠 |
|---|-----------|------|---------|
| F-001-0X | {サブ機能名} | {概要} | {推測の理由} |
### 🟡項目の判断詳細
- **F-001-0X {サブ機能名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した知識・規格(OWASP, ISTQB等)}
---
## 🔴 要確認(推測・根拠不明確)
| # | サブ機能名 | 概要 | 確認が必要な理由 |
|---|-----------|------|-----------------|
| F-001-0X | {サブ機能名} | {概要} | {確認が必要な理由} |
---
## サマリー
| 信号 | 件数 | レビュー優先度 |
|------|-----|---------------|
| 🟢 高確信度 | X件 | 低(確認程度) |
| 🟡 中確信度 | X件 | 中(内容確認) |
| 🔴 要確認 | X件 | 高(必ず確認) |
| **合計** | **X件** | - |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を反映後、`/origami:generate-checklist` で動作仕様を作成
{出力先}/01_機能一覧.md{出力先}/01_機能詳細.md📋 機能一覧を作成しました
📊 抽出結果サマリー:
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
- 合計: X件
📁 出力ファイル: {出力先}/01_機能一覧.md
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次のステップ:
- /origami:generate-checklist --output {出力先} - Must/Never動作仕様を整理
- /origami:analyze-boundaries --output {出力先} - 境界値分析を実施
📋 機能詳細を作成しました
📊 抽出結果サマリー(F-001 {機能名}):
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
- 合計: X件
📁 出力ファイル: {出力先}/01_機能詳細.md
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次フェーズ:
- generate-checklist で動作仕様を作成
Phase 1(extract-features)はフェーズ間入力制限の起点です。以降のフェーズは、このフェーズの出力のみを入力として受け取ります。
| フェーズ | コマンド | 入力 | 出力 |
|---|---|---|---|
| Phase 1 | extract-features | 仕様書(対象機能部分) | 01_機能詳細.md |
| Phase 2 | generate-checklist | 01_機能詳細.md のみ | 02_動作仕様.md |
| Phase 3 | analyze-boundaries | 02_動作仕様.md のみ | 03_境界値分析.md |
| Phase 4 | generate-cases | 01 + 02 + 03 | 04_テストケース.md |
重要: Phase 1 で仕様書から必要な情報を抽出し、以降のフェーズは前フェーズの出力のみを参照します。これにより:
| エラーケース | メッセージ |
|---|---|
| 入力ファイル未存在 | 「指定されたファイルが見つかりません: {ファイルパス}」 |
| 入力形式不正 | 「サポートされていない入力形式です。Markdown、テキスト、またはURLを指定してください」 |
| URL到達不能 | 「指定されたURLにアクセスできません: {URL}」 |
| 入力ファイル空 | 「入力ファイルが空です」 |
| 機能記述なし | 「機能の記述が見つかりませんでした。仕様書の内容を確認してください」 |