機能ごとにMust(できなければならない)とNever(できてはいけない)を整理し、テスト観点を明確化します。タスク分割経由時は動作仕様、単独実行時は動作仕様一覧を出力します。
Generates Must/Never checklists with traffic light confidence ratings from feature specifications.
/plugin marketplace add mozuq-lab/origami-lite/plugin install origami@origami-lite機能一覧または仕様書から、各機能の「できなければならないこと(Must)」と「できてはいけないこと(Never)」を整理し、テスト観点の抜け漏れを防ぎます。 信号機システム(🟢🟡🔴)により、各項目の確信度を可視化し、レビュー優先度を明確にします。
実行コンテキストに応じたファイル出力:
02_動作仕様一覧.md に出力(後方互換)--target 指定): 単一機能の仕様を 02_動作仕様.md に出力出力先ディレクトリの決定 🔵
--output 引数が指定されている場合はそのディレクトリを使用docs/origami/{仕様書名}/ecommerce-spec.md → docs/origami/ecommerce-spec/前工程出力の確認
{出力先}/01_機能一覧.md が存在する場合は読み込み追加ルールの読み込み
docs/rule ディレクトリが存在する場合は読み込みdocs/rule/origami ディレクトリが存在する場合は読み込み出力ディレクトリの作成
| 引数 | 説明 | 必須 | 例 |
|---|---|---|---|
| 仕様書 | 入力ファイルまたはURL | △ | docs/requirements.md |
| --output | 出力先ディレクトリ(機能ディレクトリを含む) | △ | --output docs/origami/my-spec/F-001_ログイン/ |
| --target | 対象機能ID(タスク分割経由時) | △ | --target F-001 |
引数の組み合わせによる動作:
| --target | --output | 出力ファイル名 | 用途 |
|---|---|---|---|
| なし | なし | 02_動作仕様一覧.md | 単独実行(全機能処理) |
| なし | あり | 02_動作仕様一覧.md | 単独実行(出力先指定) |
| あり | あり | 02_動作仕様.md | タスク分割経由(単一機能) |
| 優先度 | 入力 | 説明 |
|---|---|---|
| 1 | {出力先}/01_機能一覧.md | 前工程の出力(推奨) |
| 2 | 仕様書(.md/.txt) | 単独実行時の直接入力 |
| 3 | URL | Web上のページ |
--target オプション指定時は、以下のルールに従います:
{出力先ディレクトリ}/01_機能詳細.md のみ入力制限ルール:
タスク分割経由時(--target F-001 指定)
✅ 参照可能: {機能ディレクトリ}/01_機能詳細.md
❌ 参照禁止: 他の機能フォルダのファイル
❌ 参照禁止: 仕様書全体
Phase 2(generate-checklist)の入力制限:
| 実行モード | 入力 | 備考 |
|---|---|---|
| タスク分割経由時 | {機能ディレクトリ}/01_機能詳細.md のみ | 仕様書・他機能フォルダは参照禁止 |
| 単独実行時 | 仕様書または機能一覧 | 後方互換 |
コンテキスト分離のポイント:
01_機能詳細.md のみを参照(仕様書は参照しない)タスク分割経由時(--target 指定時)は、以下の事前チェックを行います:
{機能ディレクトリ}/01_機能詳細.md の存在を確認エラー: 入力ファイルが見つかりません: {パス}/01_機能詳細.md
先に Phase 1 を実行してください:
/origami:run-task {タスクID} --phase 1
# 単独実行(出力先自動決定)
/origami:generate-checklist docs/ecommerce-spec.md
# → docs/origami/ecommerce-spec/02_動作仕様一覧.md に出力
# 出力先を明示的に指定
/origami:generate-checklist --output docs/origami/my-project/
# → docs/origami/my-project/01_機能一覧.md を読み込み、02_動作仕様一覧.md に出力
# タスク分割経由(run-taskから呼び出し)
/origami:generate-checklist --output docs/origami/ecommerce-spec/F-001_ログイン/ --target F-001
# → F-001_ログイン/01_機能詳細.md を読み込み、02_動作仕様.md に出力
入力の読み込み
Must項目の抽出 以下のパターンをMust項目として抽出する:
Never項目の抽出 以下のパターンをNever項目として抽出する:
セキュリティ観点の追加(🟡項目) 以下の観点でNever項目を追加する:
信号機判定
サマリー生成
出力ファイル名の決定 🔵
実行コンテキストに応じて出力ファイル名を切り替え:
IF --target オプションが指定されている THEN
出力ファイル名 = "02_動作仕様.md"
ELSE
出力ファイル名 = "02_動作仕様一覧.md"
END IF
| 条件 | 出力ファイル名 | 出力形式 |
|---|---|---|
| 単独実行(--targetなし) | 02_動作仕様一覧.md | 複数機能を一覧形式で記載 |
| タスク分割経由(--targetあり) | 02_動作仕様.md | 単一機能の仕様を記載 |
| 信号 | 判定条件 | 例 |
|---|---|---|
| 🟢 青信号 | 仕様書に明示的な記述がある | 「重複メールアドレスは登録できない」 |
| 🟢 青信号 | 機能一覧に明記されている | 「ログイン機能」→ログインできなければならない |
| 🟡 黄信号 | テスト技法から導出される | 境界値でのエラー処理 |
| 🟡 黄信号 | OWASP Top 10等の業界標準に基づく | SQLインジェクション対策 |
| 🟡 黄信号 | Webアプリケーション一般の常識 | 入力バリデーション |
| 🔴 赤信号 | 仕様書に記載がなく、推測の根拠も薄い | アクセス制御の詳細 |
| 🔴 赤信号 | 業務ドメイン固有で確認が必要 | 業務ルールに基づく制約 |
出力先: {出力先ディレクトリ}/02_動作仕様一覧.md または 02_動作仕様.md 🔵
{出力先}/02_動作仕様一覧.md(複数機能を一覧形式で出力){出力先}/02_動作仕様.md(単一機能の仕様を出力)# 動作仕様一覧
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: {機能一覧.md / 仕様書}
- 総項目数: X件(Must: X件 / Never: X件)
---
## F-001: {機能名}
### Must(できなければならない)
| # | 確認項目 | 信号 | 根拠 |
|---|---------|------|------|
| M-001-01 | {確認項目} | 🟢 | {根拠} |
| M-001-02 | {確認項目} | 🟡 | {根拠} |
### Never(できてはいけない)
| # | 確認項目 | 信号 | 根拠 |
|---|---------|------|------|
| N-001-01 | {確認項目} | 🟢 | {根拠} |
| N-001-02 | {確認項目} | 🟡 | {根拠} |
### 🟡項目の判断詳細
- **M-001-02 {項目名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した規格・知識(OWASP, ISTQB等)}
- **N-001-02 {項目名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した規格・知識}
---
## F-002: {機能名}
{同様の形式で記載}
---
## サマリー
| 機能 | Must | Never | 🟢 | 🟡 | 🔴 |
|------|------|-------|-----|-----|-----|
| F-001: {機能名} | X | X | X | X | X |
| F-002: {機能名} | X | X | X | X | X |
| **合計** | **X** | **X** | **X** | **X** | **X** |
---
## セキュリティ観点追加項目(🟡)
以下の項目はOWASP Top 10等の業界標準に基づき追加しました:
| 対象機能 | 追加項目 | 根拠 |
|---------|---------|------|
| {機能名} | {項目} | OWASP Top 10: {項目名} |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を反映後、`/origami:analyze-boundaries` で境界値分析を実施
3. または `/origami:generate-cases` でテストケースを生成
--target オプション指定時は、単一機能の仕様形式で出力:
# 動作仕様: F-001 {機能名}
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: 01_機能詳細.md
- 対象機能: F-001 {機能名}
- 総項目数: X件(Must: X件 / Never: X件)
---
## Must(できなければならない)
| # | 確認項目 | 信号 | 根拠 |
|---|---------|------|------|
| M-001-01 | {確認項目} | 🟢 | {根拠} |
| M-001-02 | {確認項目} | 🟡 | {根拠} |
---
## Never(できてはいけない)
| # | 確認項目 | 信号 | 根拠 |
|---|---------|------|------|
| N-001-01 | {確認項目} | 🟢 | {根拠} |
| N-001-02 | {確認項目} | 🟡 | {根拠} |
---
## 🟡項目の判断詳細
- **M-001-02 {項目名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した規格・知識(OWASP, ISTQB等)}
- **N-001-02 {項目名}**
- 根拠: {判断の根拠を詳細に記載}
- 参照: {参照した規格・知識}
---
## サマリー
| 項目 | Must | Never | 🟢 | 🟡 | 🔴 |
|------|------|-------|-----|-----|-----|
| F-001: {機能名} | X | X | X | X | X |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を反映後、`/origami:analyze-boundaries` で境界値分析を実施
{出力先}/02_動作仕様一覧.md{出力先}/02_動作仕様.md📋 動作仕様一覧を作成しました
📊 抽出結果サマリー:
- Must項目: X件
- Never項目: X件
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
📁 出力ファイル: {出力先}/02_動作仕様一覧.md
🔒 セキュリティ観点(🟡): X件の項目を追加しました
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次のステップ:
- /origami:analyze-boundaries --output {出力先} - 境界値分析を実施
- /origami:generate-cases --output {出力先} - テストケースを生成
📋 動作仕様を作成しました
📊 抽出結果サマリー(F-001 {機能名}):
- Must項目: X件
- Never項目: X件
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
📁 出力ファイル: {出力先}/02_動作仕様.md
📄 入力ファイル: {出力先}/01_機能詳細.md
🔒 セキュリティ観点(🟡): X件の項目を追加しました
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次フェーズ:
- analyze-boundaries で境界値分析を実施
| エラーケース | メッセージ |
|---|---|
| 入力ファイル未存在 | 「指定されたファイルが見つかりません: {ファイルパス}」 |
| 入力形式不正 | 「サポートされていない入力形式です。機能一覧、仕様書、またはURLを指定してください」 |
| 機能一覧フォーマット不正 | 「機能一覧のフォーマットが正しくありません。01_機能一覧.md を確認してください」 |
| 入力ファイル空 | 「入力ファイルが空です」 |
| 機能記述なし | 「機能の記述が見つかりませんでした」 |
A01: アクセス制御の不備
A02: 暗号化の失敗
A03: インジェクション
A04: 安全でない設計
A05: セキュリティ設定ミス
A06: 脆弱で古いコンポーネント
A07: 識別と認証の失敗
A08: ソフトウェアとデータの整合性の障害
A09: セキュリティログと監視の失敗
A10: SSRF(サーバーサイドリクエストフォージェリ)
Phase 2(generate-checklist)は、Phase 1の出力のみを入力として受け取ります。
| フェーズ | コマンド | 入力 | 出力 |
|---|---|---|---|
| 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 2 は仕様書を直接参照しません。Phase 1 で抽出された情報のみを基に動作仕様を生成します。これにより:
01_機能詳細.md のみを入力(仕様書参照禁止)