← スキル一覧に戻る

api-contract-validator
by j0KZ
8 powerful AI development tools for Claude Code, Cursor, Windsurf - Code review, testing, architecture, security, and more
⭐ 0🍴 0📅 2025年12月26日
SKILL.md
name: api-contract-validator description: "Validate API contracts and ensure compatibility. Use when checking OpenAPI specs, running contract tests, detecting breaking changes, or generating types from API specifications."
API Contract Validator
Ensure API compatibility and prevent breaking changes through contract testing
Quick Commands
# Validate OpenAPI spec
npx @apidevtools/swagger-cli validate api-spec.yml
# Run contract tests
npm run test:contracts
# Check breaking changes
npx oasdiff breaking api-v1.yml api-v2.yml
# Generate types from spec
npx openapi-typescript api-spec.yml --output types.ts
Core Functionality
Key Features
- Schema Validation: OpenAPI/Swagger spec validation
- Contract Testing: Consumer-driven contracts
- Breaking Change Detection: API compatibility checking
- Mock Generation: Generate mocks from contracts
- Type Safety: TypeScript types from API specs
Detailed Information
For comprehensive details, see:
cat .claude/skills/api-contract-validator/references/contract-testing-guide.md
cat .claude/skills/api-contract-validator/references/openapi-best-practices.md
cat .claude/skills/api-contract-validator/references/versioning-strategy.md
Usage Examples
Example 1: Validate API Response
import { APIContractValidator } from '@j0kz/api-contract-validator';
const validator = new APIContractValidator('./api-spec.yml');
// Validate response against contract
const response = await fetch('/api/users/123');
const validation = await validator.validateResponse(
'GET',
'/users/{id}',
response
);
if (!validation.valid) {
console.error('Contract violation:', validation.errors);
}
Example 2: Consumer-Driven Contracts
// Consumer defines expectations
const contract = {
consumer: 'mobile-app',
provider: 'user-service',
interactions: [{
description: 'get user by id',
request: {
method: 'GET',
path: '/users/123'
},
response: {
status: 200,
body: {
id: '123',
name: 'John Doe',
email: 'john@example.com'
}
}
}]
};
await validator.verifyContract(contract);
Contract Testing Patterns
Pact Testing
const { Pact } = require('@pact-foundation/pact');
const provider = new Pact({
consumer: 'MyConsumer',
provider: 'MyProvider'
});
// Define interactions
await provider.addInteraction({
state: 'user exists',
uponReceiving: 'a request for user',
withRequest: {
method: 'GET',
path: '/users/1'
},
willRespondWith: {
status: 200,
body: expectedUser
}
});
Configuration
{
"api-contract-validator": {
"specFile": "./api/openapi.yml",
"strict": true,
"allowAdditionalProperties": false,
"contracts": {
"directory": "./contracts",
"publish": true,
"broker": "https://pact-broker.example.com"
},
"breaking": {
"allowRemoval": false,
"allowTypeChange": false,
"allowRequired": false
}
}
}
CI/CD Integration
# GitHub Actions
- name: Validate API Contract
run: |
npx @j0kz/api-contract-validator validate
npx @j0kz/api-contract-validator check-breaking
- name: Publish Contracts
run: npx @j0kz/api-contract-validator publish
Notes
- Supports OpenAPI 3.0, Swagger 2.0, and AsyncAPI
- Integrates with Pact for consumer-driven contracts
- Can generate API documentation automatically
- Supports GraphQL schema validation
スコア
総合スコア
70/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です