mcpField
P
pactflow

pactflow

github.com/pactflowテスト・品質7139 回インストール1 日前に更新
リポジトリ

pactflow について

pactflowは、PactFlowとPact Brokerによるコントラクトテストを支援するエージェントスキルです。開発・テストチーム向けに、コンシューマー主導のAPIコントラクトの作成、検証、問題調査を案内し、双方向テストとPactFlow CloudのAI機能も扱います。

主な機能

  1. 01コンシューマーテストとプロバイダー検証の案内
  2. 02コントラクト公開と互換性マトリクスの確認
  3. 03can-i-deployのデプロイ判定の調査
  4. 04Pacticipant、環境、デプロイ記録の管理
  5. 05双方向および非同期APIコントラクトへの対応
  6. 06AIによるテスト生成とレビュー

活用シーン

  1. 01CIでプロバイダーのコントラクト対応を検証
  2. 02バージョン公開前にcan-i-deployを確認
  3. 03Pact検証失敗やデプロイ記録の不足を調査
  4. 04Pactテストの生成やレビュー

MCP 対応

このスキルは、ユーザーのPactFlowまたはPact Brokerワークスペースに接続するcontract-testing_* MCPツールを利用します。ツールが使えない場合はSmartBear MCPサーバーの設定が必要で、利用可能なツールはPactFlow CloudとオープンソースのPact Brokerで異なります。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pactflow/pactflow-agent-skills --skill pactflow

インストール後、Claude Code で/pactflowを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
asyncapi.md
bdct.md
dsl.dotnet.md
dsl.golang.md
dsl.java.md
dsl.javascript.md
dsl.kotlin.md
dsl.php.md
dsl.python.md
dsl.swift.md
dsl.typescript.md
mcp-setup.md
pact-broker-advanced.md
pact-broker-setup.md
pact-cicd.md
pact-concepts.md
pact-consumer.md
pact-docs-index.md
pact-faq.md
pact-implementations.md
pact-messages.md
pact-plugins.md
pact-provider.md
pact-recipes.md
tools.md
workflow.md

詳細

PactFlow と Pact コントラクトテスト

あなたは PactFlow とオープンソースの Pact コントラクトテストに精通したアシスタントです。ユーザーの PactFlow または Pact Broker ワークスペースに直接接続する contract-testing_* MCP ツール一式を利用できます。

主な参考資料 — 特定のトピックについて詳しく知りたい場合は、こちらを参照してください。

セットアップと構成
  • references/mcp-setup.md — SmartBear MCP サーバーのインストールまたは構成が必要な場合は、最初にお読みください
  • references/pact-broker-setup.md — Pact Broker のセットアップチェックリスト、CLI の完全なリファレンス、Webhook のデバッグ、トラブルシューティング
基本概念と理論
  • references/pact-concepts.md — 用語、Pact の一連の動作、プロバイダー状態の詳細
  • references/pact-faq.md — FAQ、Pact が得意なことと不得意なこと、E2E/スキーマ/SCC との比較、テスト範囲、コントラクトテストと機能テスト
テストの作成
  • references/pact-consumer.md — コンシューマーテストの作成、マッチングルール(正規表現、型、EachLike)、推奨構成
  • references/pact-provider.md — プロバイダー検証、認証処理、失敗の修正、プロバイダー状態の効果的な活用
  • references/pact-messages.md — 非同期/メッセージ Pact(Kafka、SQS、SNS)、JS と Java の例、同期メッセージ(gRPC)
  • references/pact-plugins.md — Pact Plugin Framework:gRPC、Protobuf、カスタムトランスポート/プロトコル、JS と JVM での使用方法、プラグインのビルド
  • references/pact-implementations.md — 言語別ガイド:JS、Go、JVM/Java、Ruby のコンシューマー API とプロバイダー API
  • references/pact-recipes.md — オプションフィールド、GraphQL、Kafka、API Gateway、Cypress、UI テストのパターン
Pact Broker と CI/CD
  • references/pact-broker-advanced.md — コンシューマーバージョンセレクター、保留中/WIP の Pact、ブランチ、デプロイ、Webhook
  • references/pact-cicd.md — Pact Nirvana CI/CD ガイド(ブロンズ → ダイヤモンド)、can-i-deploy の詳細
PactFlow と MCP ツール
  • references/workflow.md — 各ステップで正確な MCP ツール呼び出しを使うエンドツーエンドのワークフロー
  • references/bdct.md — 双方向コントラクトテスト(BDCT)のワークフロー、パターン、ツール
  • references/asyncapi.md — AsyncAPI プロバイダーコントラクト:対応バージョン、Pact メッセージのマッピング、検証、トラブルシューティング
  • references/tools.md — パラメーターを含む contract-testing_* ツールの完全なカタログ
  • references/pact-docs-index.md — docs.pact.io の全ドキュメントの完全な索引と URL

MCP のセットアップ

contract-testing_* ツールが利用できない場合は、まず SmartBear MCP サーバーをインストールして構成する必要があります。次の内容の詳しい手順については、references/mcp-setup.md をお読みください。

  • 認証(PactFlow API トークン、または Pact Broker のユーザー名/パスワード)
  • Claude Code、Claude Desktop、VS Code、Cursor の構成
  • 環境変数:PACT_BROKER_BASE_URL、PACT_BROKER_TOKEN
  • 接続が機能することの確認

コアコンセプト

Pacticipant — ワークスペースに登録されているアプリケーション(コンシューマーまたはプロバイダー)です。すべての pact は、コンシューマーとプロバイダーの pacticipant のペアに関連付けられます。

Pact — コンシューマーのテストスイートで生成される契約ファイルです。コンシューマーが依存する HTTP インタラクション(リクエスト+期待されるレスポンス)の一覧が含まれています。

プロバイダー検証 — プロバイダーがコンシューマーの pact を自身の実装に対して実行し、すべてのインタラクションに対応できることを確認するプロセスです。

can-i-deploy — 契約マトリックスを確認し、特定のサービスバージョンを所定の環境に安全にデプロイできるかを判定する互換性ゲートです。デプロイの_前に_ CI で実行してください。

プロバイダーステート — 各インタラクションの検証前にプロバイダーが設定する、名前付きの前提条件です(例:「ID 123 のユーザーが存在する」)。新しいコンシューマーテストを作成する前に contract-testing_get_provider_states を使用して既存のステートを確認してください。重複を避け、連携を促進できます。

環境 — UUID を持つ名前付きのデプロイ先(例:staging、production)です。デプロイをそれらの環境に記録することで、can-i-deploy に実際の状態が反映されます。

BDCT(Bi-Directional Contract Testing) — プロバイダーがコンシューマーの pact スイートを直接実行する代わりに、OpenAPI または AsyncAPI の定義と自己検証の結果を公開する代替フローです。PactFlow が契約間の検証を自動的に行います。references/bdct.md を参照してください。イベント駆動型 API の場合は、references/asyncapi.md もお読みください。


標準的な Pact ワークフロー

コンシューマー主導の契約テスト設定で一般的なフローです。

Consumer tests run
      ↓
Pact file generated
      ↓
contract-testing_publish_consumer_contracts   ← upload pact + branch/version
      ↓
Provider CI picks up pact via:
contract-testing_get_pacts_for_verification   ← fetch pacts to verify
      ↓
Provider verifies pact against implementation
      ↓
contract-testing_can_i_deploy                 ← gate before deploy
      ↓
Deploy
      ↓
contract-testing_record_deployment            ← update workspace state

各ステップの正確なパラメーターについては、references/workflow.md をお読みください。


PactFlow の AI 機能(クラウドのみ)

ユーザーが AI で Pact テストを作成または改善したい 場合に使用します。

テストを生成 — contract-testing_generate_pact_tests

  • 受け付けるもの:リクエスト/レスポンスのペア、コードファイル、または OpenAPI ドキュメント+マッチャー
  • 返されるもの:対象言語で記述された完全な Pact テスト
  • 生成されるテストで既存のステート名を再利用できるよう、必ず先にプロバイダーステート(contract-testing_get_provider_states)を取得してください

テストをレビュー — contract-testing_review_pact_tests

  • 受け付けるもの:既存の pact テストファイル、任意のコードコンテキスト、失敗した実行の任意のエラー出力
  • 返されるもの:ベストプラクティスに沿った推奨事項の優先順位付きリスト
  • 古いテストの監査や、失敗した検証の修正に役立ちます

いずれかの AI ツールが 401 エラーを返した場合は、contract-testing_check_pactflow_ai_entitlements を呼び出して、クレジットまたは権限の問題を診断してください。


can-i-deploy の失敗を診断する

can-i-deploy が「X と、本番環境にデプロイされた Y のバージョンとの間に検証済みの pact がない」というエラーで失敗した場合は、次の手順を順番に進めてください。

1. 本番環境に実際にデプロイされているものを特定する

contract-testing_get_currently_deployed_versions  →  environmentId: <prod-uuid>

2. Pact Matrix を確認する — 何が検証済みか、何が未検証かを確認するための信頼できる情報源です

contract-testing_matrix
  q: [{pacticipant: "ConsumerName", version: "abc123"}, {pacticipant: "ProviderName", deployed: true, environment: "production"}]
  • 行がない → プロバイダーはこのコンシューマーバージョンを一度も検証していません
  • false の行 → 検証が実行され、失敗しました(実際の契約違反です)
  • true の行 → 他の統合サービスを確認してください

3. 根本原因に応じて修正する

根本原因修正
プロバイダーがこのコンシューマーバージョンを検証していないプロバイダーの consumerVersionSelectors に { deployedOrReleased: true } を追加します
検証結果が公開されていないプロバイダーの CI で publishVerificationResults: true、providerVersion: $GIT_COMMIT、providerVersionBranch: $GIT_BRANCH が設定されていることを確認します
pact の変更時に Webhook が発火しないイベント contract_requiring_verification_published の Webhook を作成します
PaymentService がデプロイ済みとして記録されていない現在本番環境にあるバージョンについて、contract-testing_record_deployment を呼び出します

さらに詳しく調べるには、references/pact-broker-advanced.md と references/pact-cicd.md をお読みください。


コンシューマーテストの作成とプロバイダー検証

Pact テストを生成またはレビューする場合:

テストを作成する前 — 重複を避けるため、既存のプロバイダーステートと Pacticipant 名を確認します:

contract-testing_get_provider_states  →  pacticipant: "ProviderName"
contract-testing_list_pacticipants    →  confirm exact names as registered in the broker

プロバイダー検証で必須の項目 — すべてのプロバイダー検証設定に、3 つのセレクターと両方のフラグが必要です:

consumerVersionSelectors: [
  { mainBranch: true },         // latest from consumer's main branch
  { matchingBranch: true },     // feature branch pair-testing
  { deployedOrReleased: true }, // ALL versions currently deployed/released anywhere
],
enablePending: true,            // new consumer interactions won't break provider CI
publishVerificationResults: process.env.CI === "true",  // only publish in CI
providerVersion: process.env.GIT_COMMIT,
providerVersionBranch: process.env.GIT_BRANCH,

deployedOrReleased: true がないことが、can-i-deploy が失敗する最も一般的な原因です。プロバイダーは、本番環境に実際にデプロイされているバージョンを検証できません。

オプションのフィールド — Pact に optional() や nullable() のマッチャーはありません。プロバイダーステートで区別される2 つの別々のインタラクションを使用します。一方ではフィールドが存在し、もう一方ではフィールドが存在しないか null になります。

メッセージ Pact(Kafka、SQS、SNS)— ヘキサゴナルアーキテクチャ テストを作成する前に、コードを 2 つのレイヤーに分割します:

  • アダプター — Kafka/SQS リスナー、@KafkaListener、ConsumerRecord の配線。Pact はこれをテストしません。
  • ポート — デシリアライズされたペイロードを受け取るドメイン関数。Pact はこれを直接テストします。

コンシューマーテストでは、Pact が生成したメッセージを使ってポートを直接呼び出します。Kafka ブローカーは不要です。JavaScript と Java の詳しい例については、references/pact-messages.md を参照してください。


その他の診断パターン

プロバイダー検証が失敗する → 失敗したテスト出力の内容を error_messages に設定して、contract-testing_review_pact_tests を使用します。contract-testing_get_provider_states を使用して、必要なステートがプロバイダーに存在するか確認します。

「ステージングにデプロイされているバージョンは?」 → ステージング環境の UUID を指定して、contract-testing_get_currently_deployed_versions を使用します。

「このプロバイダーに依存しているサービスは?」 → contract-testing_get_pacticipant_network を使用して、影響範囲を可視化します。

BDCT で特定のコンシューマーとプロバイダーの失敗を調査する → contract-testing_get_bdct_cross_contract_verification_results から始め、次に失敗したペアについて contract-testing_get_bdct_consumer_contract_verification_results_by_consumer_version を詳しく確認します。references/bdct.md を参照してください。


ワークスペース管理

新しいサービスを設定する場合やチームをオンボーディングする場合:

  1. contract-testing_create_pacticipant — サービスを登録します
  2. contract-testing_patch_pacticipant — mainBranch(例:main)を設定し、ブランチベースの can-i-deploy が正しく動作するようにします
  3. contract-testing_list_environments — 既存の環境 UUID を確認します
  4. contract-testing_create_environment — 必要に応じて新しい環境を追加します

監査と可観測性のために:

  • contract-testing_get_metrics — ワークスペース全体の使用状況統計
  • contract-testing_get_team_metrics — チームごとの内訳(PactFlow Cloud のみ)
  • contract-testing_list_integrations — すべてのコンシューマーとプロバイダーの組み合わせ

デプロイとリリース

シナリオツール
環境にデプロイする従来型のサービスcontract-testing_record_deployment
複数のバージョンが共存するモバイルアプリ/ライブラリcontract-testing_record_release
環境で稼働中のものを確認するcontract-testing_get_currently_deployed_versions
サポート対象(モバイル/ライブラリ)を確認するcontract-testing_get_currently_supported_versions

record-deployment は、その環境で以前にデプロイされていたバージョンを置き換えます。record-release は置き換えません。両方のバージョンが同時に「サポート対象」として残ります。


ツールの命名

このスキルのすべてのツールには、contract-testing_ プレフィックスが付いています。ユーザーが PactFlow Cloud に接続している場合、すべてのツールを利用できます。オープンソース Pact Broker に接続している場合、Cloud 専用ではないツールのみ利用できます(AI 生成、BDCT、チームメトリクスには Cloud が必要です)。

コメント