api-contract-testing
Verify API contracts between services to ensure compatibility and prevent breaking changes. Use for contract testing, Pact, API contract validation, schema validation, and consumer-driven contracts.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o api-contract-testing.zip https://jpskill.com/download/21325.zip && unzip -o api-contract-testing.zip && rm api-contract-testing.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21325.zip -OutFile "$d\api-contract-testing.zip"; Expand-Archive "$d\api-contract-testing.zip" -DestinationPath $d -Force; ri "$d\api-contract-testing.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
api-contract-testing.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
api-contract-testingフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 8
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
API契約テスト
目次
概要
契約テストは、APIがコンシューマーとプロバイダー間の契約を遵守していることを検証します。これにより、完全な統合テストを必要とせずに、サービス変更が依存するコンシューマーを破壊しないことを保証します。契約テストは、リクエスト/レスポンスの形式、データ型、およびAPIの動作を独立して検証します。
使用する場面
- マイクロサービス間の通信のテスト
- 破壊的なAPI変更の防止
- APIバージョニングの検証
- コンシューマーとプロバイダーの契約のテスト
- 後方互換性の確保
- OpenAPI/Swagger仕様の検証
- サードパーティAPI統合のテスト
- CIでの契約違反の検出
クイックスタート
最小限の動作例:
// tests/pact/user-service.pact.test.ts
import { PactV3, MatchersV3 } from "@pact-foundation/pact";
import { UserService } from "../../src/services/UserService";
const { like, eachLike, iso8601DateTimeWithMillis } = MatchersV3;
const provider = new PactV3({
consumer: "OrderService",
provider: "UserService",
port: 1234,
dir: "./pacts",
});
describe("User Service Contract", () => {
const userService = new UserService("http://localhost:1234");
describe("GET /users/:id", () => {
test("returns user when found", async () => {
await provider
.given("user with ID 123 exists")
.uponReceiving("a request for user 123")
.withRequest({
method: "GET",
path: "/users/123",
headers: {
// ... (see reference guides for full implementation)
リファレンスガイド
references/ ディレクトリ内の詳細な実装:
| ガイド | 内容 |
|---|---|
| Pact for Consumer-Driven Contracts | コンシューマー駆動型契約のためのPact |
| OpenAPI Schema Validation | OpenAPIスキーマ検証 |
| JSON Schema Validation | JSONスキーマ検証 |
| REST Assured for Java | Java用REST Assured |
| Contract Testing with Postman | Postmanによる契約テスト |
| Pact Broker Integration | Pact Broker統合 |
ベストプラクティス
✅ 実施すべきこと
- コンシューマーの視点から契約をテストする
- 柔軟なマッチングのためにマッチャーを使用する
- 特定の値ではなく、スキーマ構造を検証する
- 契約をバージョン管理する
- エラーレスポンスをテストする
- 契約共有のためにPact brokerを使用する
- CIで契約テストを実行する
- 後方互換性をテストする
❌ 実施すべきでないこと
- 契約テストでビジネスロジックをテストする
- 契約に特定の値をハードコードする
- エラーシナリオをスキップする
- 契約テストでUIをテストする
- 契約のバージョン管理を無視する
- 契約検証なしでデプロイする
- 実装の詳細をテストする
- 契約テストをモックする
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
API Contract Testing
Table of Contents
Overview
Contract testing verifies that APIs honor their contracts between consumers and providers. It ensures that service changes don't break dependent consumers without requiring full integration tests. Contract tests validate request/response formats, data types, and API behavior independently.
When to Use
- Testing microservices communication
- Preventing breaking API changes
- Validating API versioning
- Testing consumer-provider contracts
- Ensuring backward compatibility
- Validating OpenAPI/Swagger specifications
- Testing third-party API integrations
- Catching contract violations in CI
Quick Start
Minimal working example:
// tests/pact/user-service.pact.test.ts
import { PactV3, MatchersV3 } from "@pact-foundation/pact";
import { UserService } from "../../src/services/UserService";
const { like, eachLike, iso8601DateTimeWithMillis } = MatchersV3;
const provider = new PactV3({
consumer: "OrderService",
provider: "UserService",
port: 1234,
dir: "./pacts",
});
describe("User Service Contract", () => {
const userService = new UserService("http://localhost:1234");
describe("GET /users/:id", () => {
test("returns user when found", async () => {
await provider
.given("user with ID 123 exists")
.uponReceiving("a request for user 123")
.withRequest({
method: "GET",
path: "/users/123",
headers: {
// ... (see reference guides for full implementation)
Reference Guides
Detailed implementations in the references/ directory:
| Guide | Contents |
|---|---|
| Pact for Consumer-Driven Contracts | Pact for Consumer-Driven Contracts |
| OpenAPI Schema Validation | OpenAPI Schema Validation |
| JSON Schema Validation | JSON Schema Validation |
| REST Assured for Java | REST Assured for Java |
| Contract Testing with Postman | Contract Testing with Postman |
| Pact Broker Integration | Pact Broker Integration |
Best Practices
✅ DO
- Test contracts from consumer perspective
- Use matchers for flexible matching
- Validate schema structure, not specific values
- Version your contracts
- Test error responses
- Use Pact broker for contract sharing
- Run contract tests in CI
- Test backward compatibility
❌ DON'T
- Test business logic in contract tests
- Hard-code specific values in contracts
- Skip error scenarios
- Test UI in contract tests
- Ignore contract versioning
- Deploy without contract verification
- Test implementation details
- Mock contract tests
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (3,250 bytes)
- 📎 references/contract-testing-with-postman.md (1,080 bytes)
- 📎 references/json-schema-validation.md (3,443 bytes)
- 📎 references/openapi-schema-validation.md (1,288 bytes)
- 📎 references/pact-broker-integration.md (1,150 bytes)
- 📎 references/pact-for-consumer-driven-contracts.md (6,027 bytes)
- 📎 references/rest-assured-for-java.md (2,423 bytes)
- 📎 scripts/scaffold-tests.sh (574 bytes)