acceptance-pipeline-catalog について
acceptance-pipeline-catalogは、GherkinからJSON IR、受け入れテスト生成、ミューテーションテストまでのパイプラインを構築するための言語非依存の仕様スキルです。パーサーやランナーなどの実装・検証に取り組む開発者向けです。
主な機能
- 0114カテゴリにわたるパイプライン規則
- 02GherkinパーサーとJSON IRの要件
- 03受け入れテスト生成とランタイムの指針
- 04ミューテーション規則と結果分類
- 05実行、レポート、適合性の指針
活用シーン
- 01Gherkinからテストへのパイプライン設計
- 02例データを対象とするミューテーションテストの実装
- 03パーサー、ジェネレーター、ランナーの障害調査
- 04適合性要件に基づくパイプラインの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill acceptance-pipeline-catalogインストール後、Claude Code で/acceptance-pipeline-catalogを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
gotchas.mdmetadata.jsonreferences/_sections.mdconform-checklist.mdexec-parallelism.mdexec-timeout.mdexec-work-directory.mdexec-workflow.mdgen-command-interface.mdgen-requirements.mdhandler-matching.mdhandler-unsupported.mdhandler-value-handling.mdhandler-world-state.mdir-example-object.mdir-feature-object.mdir-scenario-object.mdir-step-object.mdlayout-commands.mdlayout-required-paths.mdlayout-scripts.mdmut-command-interface.mdmut-deep-copy.mdmut-identity.mdmut-scope.mdparser-background.mdparser-command-interface.mdparser-examples-tables.mdparser-feature-declaration.mdparser-general-rules.md詳細
Robert C. Martin の受け入れパイプラインのベストプラクティス
移植可能な受け入れテストパイプラインの言語非依存仕様です。Gherkin のフィーチャーファイルから JSON IR、生成された受け入れテスト、ミューテーションテストまでを扱います。Robert C. Martin の Acceptance Pipeline Specification に基づいています。影響度順に優先順位付けされた 14 カテゴリー、約 50 のルールが含まれています。
適用する場面
以下の場合に、これらのルールを参照してください。
- JSON IR を出力する Gherkin パーサーを構築する場合
- JSON IR から受け入れテストを生成する機能を実装する場合
- シナリオを展開してステップを振り分ける受け入れテストランタイムを作成する場合
- 受け入れテストのサンプル値に対するミューテーションテストを実装する場合
- 新しいプロジェクトでパイプライン全体(パーサー、ジェネレーター、ランナー、ミューテーター)をセットアップする場合
- パイプラインの失敗(解析エラー、生成の問題、ミューテーションの分類)をデバッグする場合
パイプラインの概要
パイプラインには 2 つのモードがあります。
通常の受け入れテスト実行:
feature file -> gherkin parser -> JSON IR -> acceptance generator -> generated tests -> test runner
ミューテーション実行:
feature file -> gherkin parser -> base JSON IR -> mutator (one changed IR per mutation)
-> generator (tests per mutation) -> test runner (evaluate each) -> mutation report
通常の実行では、プロジェクトがフィーチャーを満たしていることを確認します。ミューテーション実行では、サンプルデータが変更されたときにテストが失敗するほど十分に強力かどうかを検証します。
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス | ルール数 |
|---|---|---|---|---|
| 1 | パーサー | 重大 | parser- | 9 |
| 2 | JSON IR | 重大 | ir- | 4 |
| 3 | ジェネレーター | 重大 | gen- | 2 |
| 4 | ランタイム | 高 | rt- | 3 |
| 5 | ステップハンドラー | 高 | handler- | 4 |
| 6 | テストランナー | 高 | runner- | 2 |
| 7 | ミューテーターのコア | 高 | mut- | 4 |
| 8 | 値のミューテーションルール | 高 | val- | 10 |
| 9 | 結果の分類 | 高 | result- | 2 |
| 10 | 適合性 | 高 | conform- | 1 |
| 11 | エージェントのセットアップ | 高 | setup- | 1 |
| 12 | ミューテーションの実行 | 中 | exec- | 4 |
| 13 | レポート | 中 | report- | 3 |
| 14 | プロジェクトのレイアウト | 中 | layout- | 3 |
クイックリファレンス
1. パーサー(重大)
parser-command-interface- 位置引数 2 つ、終了コード 0/1/2parser-feature-declaration- Feature: キーワード必須、名前の前後の空白を除去parser-background- Given/And ステップを含む Background: セクションは任意parser-scenarios- Scenario: と Scenario Outline: の両方をサポートparser-steps- Given/When/Then/And キーワードに対応し、キーワードは別個に格納parser-parameters- 山括弧のプレースホルダーは、パーサーでは展開しないparser-examples-tables- パイプ区切りのテーブル。最初の行はヘッダーparser-general-rules- 空行、コメント、空白、順序parser-unsupported-syntax- タグ、ルール、ローカライズされたキーワード、ドキュメント文字列
2. JSON IR(重大)
ir-feature-object- name、scenarios、任意の backgroundir-scenario-object- name、steps、examples の配列ir-step-object- keyword、text、任意の parametersir-example-object- キーと値が文字列のマップ
3. ジェネレーター(重大)
gen-command-interface- 位置引数 2 つ、終了コード 0/1/2gen-requirements- IR を埋め込み、Gherkin の解析は行わず、決定論的な出力
4. ランタイム(高)
rt-responsibilities- IR の読み込み、展開、振り分け、レポートrt-scenario-expansion- サンプルの各行につき 1 回実行し、background を先頭に追加rt-execution-naming- シナリオ名/サンプルインデックスの命名規則
5. ステップハンドラー(HIGH)
handler-matching- キーワードではなく、完全一致するテキスト値で照合しますhandler-world-state- シナリオを実行するたびに、ワールド/状態を新しく用意しますhandler-value-handling- 値を取得して解析し、欠落または不正な形式の場合は失敗させますhandler-unsupported- サポートされていないステップテキストではテストを失敗させます
6. テストランナー(HIGH)
runner-interface- テストランナーアダプターの入出力コントラクトrunner-classification- 3 種類に分類します:失敗、成功、インフラストラクチャエラー
7. ミューテーターのコア(HIGH)
mut-command-interface- CLI オプション、終了コード 0/1/2mut-scope- 変更するのはサンプルセルの値のみですmut-identity- 安定した決定論的な ID、パス、説明mut-deep-copy- 元の IR はその場で変更しません
8. 値の変更ルール(HIGH)
val-rule-order- 8 つのルールを優先順位順に適用しますval-comma-list- カンマ区切りリストの変更val-boolean- true/false の切り替えval-null- null/nil/none を揺らぎのある文字列に変換val-integer- 整数に疑似乱数の差分を加えますval-float- 浮動小数点数に疑似乱数の差分を加えますval-datetime- ISO-8601 の日付/時刻をシフトしますval-duration- 構文を保ったまま期間をシフトしますval-string-dither- 文字単位で文字列を編集しますval-determinism- 固定入力に対して決定論的な疑似乱数を使用します
9. 結果の分類(HIGH)
result-statuses- killed、survived、errorresult-classification-rules- テスト結果からステータスへの対応付け
10. 適合性(HIGH)
conform-checklist- 21 項目すべての検証
11. エージェントのセットアップ(HIGH)
setup-checklist- 15 ステップのインストールガイド
12. 変更の実行(MEDIUM)
exec-work-directory- 変更ごとのディレクトリ構成exec-workflow- IR の書き込み、生成、実行、分類exec-parallelism- 並行ワーカーと独立したディレクトリexec-timeout- 実行全体のタイムアウト。未完了の場合はエラー
13. レポート(MEDIUM)
report-text-format- サマリー行と結果ごとの行report-json-format- サマリーと結果配列を含む JSON オブジェクトreport-field-requirements- サマリーと結果に必須のフィールド
14. プロジェクト構成(MEDIUM)
layout-required-paths- features/、build/、acceptance/ ディレクトリlayout-commands- gherkin-parser、acceptance-generator、gherkin-mutatorlayout-scripts- 通常の受け入れテスト用スクリプトと変更用スクリプト
使い方
詳細な仕様要件とその理由については、個々のリファレンスファイルをお読みください。
- 構築するコンポーネントに関連するカテゴリから始めてください
- 各ルールファイルは独立しており、WHY の説明、仕様要件、例を記載しています
- 新しいプロジェクトをセットアップする場合は、まず
setup-checklistをお読みください - 検証には
conform-checklistを使用してください - 既知の問題点については、gotchas.md を確認してください
参照ファイル
| ファイル | 説明 |
|---|---|
| metadata.json | バージョンと参照情報 |
| gotchas.md | 既知の失敗しやすい箇所(追記のみ) |
| references/ | プレフィックス別に整理されたすべてのルールファイル |
コメント
Markdown 対応