doc-bdd について
EARS 要件から構造化された YAML の BDD シナリオを作成・確認するスキルです。シナリオ形式、SPEC セクションへのトレース、検証、インデックス更新を案内し、YAML を正式な記録として扱います。
主な機能
- 01YAML の Given/When/Then シナリオ
- 025種類のシナリオ分類
- 03EARS の要素単位トレース
- 04SPEC セクションへのリンク
- 05シナリオ構造と ID の確認
- 06インデックスと品質ゲートの案内
活用シーン
- 01EARS 要件を受け入れシナリオに変換
- 02シナリオを要件や SPEC セクションに対応付け
- 03シナリオ構造と必須項目を確認
- 04BDD インデックスと文書リンクを管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vladm3105/ aidoc-flow-framework --skill doc-bddインストール後、Claude Code で/doc-bddを入力して読み込まれたか確認します。
詳細
doc-bdd
目的
SDD フローのレイヤー 4 にあたる 振る舞い駆動開発(BDD) シナリオを作成します。BDD スイートでは、EARS の形式的な要件を、構造化された YAML シナリオ(```yaml ブロックに記述する Given/When/Then のフェーズリスト。Gherkin の @ タグではありません)に変換します。各シナリオには、要素レベルの ears: トレースリストと、対象となる SPEC セクションへの前方リンク spec_trace が含まれます。(ランナーで .feature ファイルが必要になった場合は、YAML を正式な記録として、必要に応じて .feature への変換機能を作成できます。現時点では、そのような変換機能は同梱されていません。同梱されているトランスコーダーは、レガシーな Gherkin を YAML 形式に移行するための一回限りの逆方向変換ツール tools/gherkin_to_bdd_yaml.py のみです。)
レイヤー:4。上流:EARS(必須上流契約に基づく。上流の PRD/BRD 系譜には、@ タグの連鎖を通じて推移的にたどれます)。
下流:ADR → SPEC → TDD → IPLAN → Code。
BDD シナリオは受け入れ条件の正式な基準であり、TDD(レイヤー 7)ではこれを具体的なテストケースに対応付けます。実行は QA ステージングのみです。CI では BDD を実行しないでください(CI では TDD の単体テスト/統合テストを使用してください)。
使用するタイミング
次の場合に doc-bdd を使用します。
- EARS(レイヤー 3)が作成済みで、実行可能な受け入れシナリオが必要な場合。
- 具体的な Given/When/Then の振る舞いで EARS 要件を検証する場合。
- ADR/SPEC の前に、要件から SPEC へのトレースブリッジ(
spec_trace)を定義する場合。
EARS、プロンプト、または IPLAN からエンドツーエンドで生成するには、
../doc-bdd-autopilot/SKILL.md を使用してください。まず上流の成果物を作成してください。EARS-XXX のようなプレースホルダーを作成したり、まだ存在しないドキュメントを参照したりしないでください。
前提条件
BDD はレイヤー 4 であるため、必須の上流 EARS がすでに存在している必要があります。作成前に存在を確認し、仕様を読んでください。
- テンプレート(正式な基準):
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/BDD-TEMPLATE.yaml - レイヤー README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/README.md - ID とタグの標準:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 作成スタイル:
${CLAUDE_PLUGIN_ROOT}/framework/governance/AUTHORING_STYLE.md
上流の成果物を確認し、ID の重複がないことを確認します。
ls docs/03_EARS/ docs/04_BDD/ 2>/dev/null。トレースタグでは、実在する EARS 要素のみを参照してください。上流の PRD/BRD 系譜には、EARS ドキュメント自体の @ タグの連鎖を通じて推移的にたどれます。
レイヤーのガイダンス
必須の構成(5 セクション)
BDD-TEMPLATE.yaml に従い、すべての BDD ドキュメントには次の内容を含めます。
- ドキュメント管理 — バージョン、ステータス、日付、作成者、優先度、および ADR 対応スコア。(
@ears/@prd/@brdの参照行はありません。上流へのトレースは各シナリオのears:リストに記述します。) - フィーチャー定義 —
feature:ブロックを含む```yamlブロック。EARS 要件と一致する名前、As a / I want / So thatの説明、およびbackground(ステップテキストのみと IANA タイムゾーン。デフォルトはAmerica/New_York)を含みます。フィーチャー自体にはearsを含めません。その EARS カバレッジは各シナリオのカバレッジの合計です。 - シナリオ構造 —
```yamlブロック内のフラットなscenarios:リスト(Given/When/Then のフェーズリスト)。各シナリオには、5 つのカテゴリ(下記)のいずれかに該当するtype:が必要です。 - トレーサビリティ — 算出したカバレッジの概要、下流への期待事項、および健全性/カバレッジスコア。
- 用語集 — プロジェクト固有の用語のフラットなリスト。
各セクションの内容と規範となるシナリオスキーマについては、BDD-TEMPLATE.yaml を参照してください。
シナリオのカテゴリ(セクション 3)
各シナリオは、id: BDD.NN.03.xxxx、name、type、priority(p0-critical … p3-low)、要素レベルの ears: リスト、given / when / then の各フェーズリスト、および spec_trace リスト(notes は任意)を含む YAML マッピングです。
| カテゴリ | type: の値 | 最小数 | 優先度 |
|---|---|---|---|
| 成功 | success | 1 / EARS | p0–p1 |
| エラー | error | 1 / エラー | p1–p2 |
| 復旧 | recovery | 1 / サーキットブレーカー | p1 |
| パラメーター化 | parameterized | 1 / 複数値 | p1–p2 |
| 任意 | optional | 1 / 任意のパラメーター | p2–p3 |
parameterized シナリオには、outline: true と examples: {headers, rows} を追加します。
シナリオ YAML のルール
- シナリオは 構造化 YAML であり、Gherkin の
@タグではありません。トレースにはears:リストを使用します(要素レベルのみ —REFGRAN01はドキュメント形式のEARS-NNを拒否します)。id/type/priorityはフィールドであり、タグではありません。 - 時刻には秒(
HH:MM:SS)と IANA タイムゾーン(America/New_York)を含めます。ESTのような略称は使用しません。 - 定量値には、ステップの文章内に インラインで 記述した
@threshold:キーを使用します(例:… WITHIN @threshold:PRD.NN.perf.api.p95)。マジックナンバーは使用しません。 - シナリオはアトミックに保ちます(各シナリオにつき 1 つの振る舞い)。モジュールごとに BDD ドキュメントを 1 つ作成し、約 50,000 トークンを超える場合は、自己完結した新しい BDD ドキュメントを作成します。
要素 ID と上流トレース
- 階層型の要素 ID:
BDD.{doc_id}.{section_id}.{hash}(例:BDD.01.03.d7a2)。各要素に 安定した 4 桁の 16 進数識別子 を付与し、セクション内で一意にします(HASH01)。衝突した場合は 8 桁に拡張します。このプロンプトで SHA-256 を計算 しないでください — ハッシュ形式は、決定論的なツール処理で生成される正規化の TARGET であり、バイト単位で正確なフィールド抽出が定義されているのは BRD §7 のみです(BDD は Phase 2 以降)。根拠:framework/governance/ID_NAMING_STANDARDS.md。シナリオはセクション03にあり、各シナリオのid:フィールドに記述します。 - BDD で必要な上流トレースは、各シナリオの要素レベルの
ears:リストです(必要な上流契約に従い、required_tags: [ears]を満たします)。下流の成果物では、@bdd: BDD.01.03.8f4cタグを使用して BDD シナリオを参照します(変更しません)。上流の PRD/BRD 系譜は、EARS ドキュメント自体の @ タグチェーンを介して推移的にたどれます。BDD に@brd:/@prd:/@earsタグを出力しないでください。 - 廃止されたパターン(使用しないでください):
SCENARIO-XXX、SCEN-XXX、TS-XXX、STEP-XXX、数値の type コード、従来の 3 セグメント形式BDD.NN.xxxx、および Gherkin の@ears/@scenario-type/@scenario-idタグ(現在は YAML フィールドです)。
下流トレース(spec_trace)
各シナリオには、対応する SPEC セクションを記録します。例:spec_trace: ["SPEC Section 3 (Interfaces)", "SPEC Section 5 (Behavior)"]。これは、下流レイヤーが利用する要件から SPEC への橋渡しです。
作成プロセス
- 上流ドキュメントを読む — この BDD を動かす EARS と、@タグの連鎖を通じて EARS の派生元となる PRD/BRD を読み、テストする振る舞いを理解します。
- IDを確保する — 次に空いている
BDD-NNを使います(2桁で、先頭に余分なゼロを付けません。例:BDD-01、BDD-99、BDD-102)。 レイヤーごとの独立性(CLEANUP-PR-F item 18): 自分のレイヤーのインデックスで次に空いている番号を選びます。上流の番号は自分の番号ではありません(ドキュメント番号はレイヤーごとに独立して順番に付与されます。framework/governance/ID_NAMING_STANDARDS.md§Cross-layer cardinality を参照)。 - ドキュメントを作成する —
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/BDD-TEMPLATE.yamlを使い、最初に Document Control を記入して、5つのセクションすべてを完成させます。 feature:ブロックとscenarios:リストを記述する — EARS の要件に従い、5つのカテゴリにわたって YAML で記述します。各シナリオにはid、type、priority、要素レベルのears:リスト、given/when/thenフェーズリスト、インラインの@threshold:、およびspec_traceを含めます。feature のbackgroundも追加します。- 各シナリオの要素レベルの
ears:リストを設定する — これは必須の上流トレースです。また、一意のid:を設定します。Gherkin の@タグは使用しません。 - 同じ変更で BDD インデックスを更新する —
docs/04_BDD/BDD-00_index.mdを更新します。 - 検証する(以下を参照)— BDD とインデックスをまとめてコミットします。
検証
このスキルがバリデーターです(ランタイムコードはありません)。${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/README.md および ${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md に照らして適用します。
- Document Control が最初のセクションであり、5つのセクションがすべて存在し、空でないこと。
- すべてのシナリオに要素レベルの
ears:リストがあること(必須の上流トレース要件を満たすこと)。feature にearsがないこと。 - すべてのシナリオに
id、type、priority、given/when/thenフェーズリスト、spec_traceがあること(BDD-SCHEMA-001 に準拠)。 - 5つすべてのシナリオ
typeカテゴリが含まれていること。シナリオがアトミックであること。 - 定量値にはインラインの
@threshold:キーを使用すること。時刻は IANA タイムゾーンを使用したHH:MM:SS形式であること。 - 要素 ID が
BDD.NN.SS.xxxxに一致すること。削除済みのパターンや Gherkin タグがないこと。 - トレーサビリティセクション/インデックスが更新されていること。リンク切れがないこと。
- 図の要件:シナリオのフローを図示する場合は、シーケンス図のタグがあること(
../charts-flow/SKILL.mdを使用)。
エラーコード(すべて重大度 error):XDOC-006 タグ形式が無効 · XDOC-008 内部リンク切れ · XDOC-009 トレーサビリティセクションがない
品質ゲート(ブロッキング): 次に進む前に ADR-Ready スコアが 90/100 以上であること。問題が見つかった場合は修正して再確認します。修正できない場合は手動レビュー用に記録します。
次のスキル
../doc-adr/SKILL.md — ADR では、この BDD(@bdd: BDD.NN.SS.xxxx)と必須の @ears を参照し、Context-Decision-Consequences 形式でアーキテクチャ上の決定を記録して、各決定を検証する BDD シナリオを引用します。
適用
.aidoc/profile.yaml を読み、このスキルの設定項目(section_toggles、glossary)のみを適用します。不明なキーは無視します。プロファイルがない場合は、フレームワークのデフォルトを使用します。適用の基準:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ADAPTATION.md。
関連リソース
- テンプレート/作成ルール:
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/BDD-TEMPLATE.yaml - レイヤー README:
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/README.md - インデックステンプレート:
${CLAUDE_PLUGIN_ROOT}/framework/layers/04_BDD/BDD-00_index.TEMPLATE.md - ID とタグの標準:
${CLAUDE_PLUGIN_ROOT}/framework/governance/ID_NAMING_STANDARDS.md - 品質ゲート:
../doc-bdd-audit/SKILL.md· 修正:../doc-bdd-fixer/SKILL.md - 生成パイプライン:
../doc-bdd-autopilot/SKILL.md
クイックリファレンス
| 目的 | Given/When/Then形式の構造化されたYAML受け入れシナリオ |
| レイヤー | 4 |
| 上流トレース | シナリオの ears: リスト(必要な上流契約に基づく) |
| 主要な考え方 | EARS → SPECへの spec_trace を含むYAMLシナリオ |
| 必須項目 | ドキュメント管理(最初に配置)、5つのシナリオカテゴリ、しきい値 |
| 実行 | QAステージングのみ — CIでは実行しない |
| 次 | doc-adr |