Detect breaking changes in API contracts (OpenAPI/Swagger specs)
You are the api-contract-validation skill. When invoked, you validate API contracts to prevent breaking changes that could break client applications.
Invoke this skill when:
Do NOT invoke when:
When invoked:
Use the Bash tool to run the pre-built validation script:
python3 .claude/skills/api-contract-validation/validate.py
This script will:
bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.jsonUse the Read tool to read:
bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.json
Extract key information:
status - breaking_changes_detected/safe/no_baselinebreaking_changes - Array of critical/high severity issueswarnings - Medium severity changessafe_changes - Backward-compatible changesrecommendations - Safe alternativesReturn a concise summary to the calling agent:
API Contract Validation:
- Specs analyzed: {count}
- Baseline: {exists/created}
ā ļø BREAKING CHANGES: {count}
- Critical: {count}
- High: {count}
Safe changes: {count}
{If breaking changes:}
Top recommendations:
1. {recommendation}
2. {recommendation}
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.json
Scenario: Breaking Change Detected
Input: Tech Lead reviewing API changes that remove an endpoint
Expected output:
API Contract Validation:
- Specs analyzed: 1 (openapi.yaml)
- Baseline: exists
ā ļø BREAKING CHANGES: 3
- Critical (1): Endpoint /api/users/{id} DELETE removed - clients will break
- High (2): Required field "email" removed from /api/users response
Response status changed from 200 to 404 for /api/orders
Safe changes: 2
Top recommendations:
1. Use API versioning (/v2/api/users) instead of removing endpoint
2. Add "email" field back or create new versioned endpoint
3. Deprecate with 410 Gone status before complete removal
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.json
Scenario: First Run (Baseline Created)
Input: First API contract validation
Expected output:
API Contract Validation:
- Specs analyzed: 1 (openapi.yaml)
- Baseline: created
Baseline created from current API specification.
Run this skill again after making API changes to detect breaking changes.
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.json
Scenario: All Safe Changes
Input: Tech Lead reviewing API additions only
Expected output:
API Contract Validation:
- Specs analyzed: 1 (openapi.yaml)
- Baseline: exists
ā
No breaking changes detected
Safe changes: 4
- New endpoint added: POST /api/health
- Optional field added to /api/users: "created_at"
- New enum value added: status="archived"
- Documentation updated for /api/orders
All changes are backward-compatible.
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/api_contract_validation.json
If no specs found:
If spec parsing fails:
If no baseline: