Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/roborracle-contract-test
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, backend, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/contract-test
What's inside
- Skill name
contract-test- Description
- Detect breaking API changes before merge. Covers response shape validation, backward compatibility checks, deprecation workflows, and consumer-driven contract testing patterns.
- License
- MIT
- Instructions
- 117 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Contract Testing & API Compatibility
## Breaking Change Detection
### What Constitutes a Breaking Change
| Change | Breaking? | Safe Alternative |
|--------|-----------|-----------------|
| Remove a field from response | Yes | Deprecate first, remove after grace period |
| Rename a field | Yes | Add new field, keep old one, deprecate old |
| Change field type (string → number) | Yes | Add new field with new type |
| Change field from optional to required | Yes | Keep optional, validate in business logic |
| Add a new optional field | No | Safe to add anytime |
| Add a new required field to request | Yes | Make it optional with a default |
| Change error response format | Yes | Version the error format |
| Remove an endpoint | Yes | Return 410 Gone with migration guide |
| Change URL path | Yes | Keep old path as redirect/alias |
### Pre-Merge Compatibility Check
Before merging any API change:
1. **Diff response types** — Compare before/after TypeScript types or JSON schemas
2. **Check all consumers** — grep for endpoint usage across services and client apps
3. **Run contract tests** — verify existing consumers still work with new response shape
4. **Check generated clients** — if using OpenAPI codegen, regenerate and check for compile errors
### Response Shape Validation
```typescript
// Define the contract as a schema
const UserResponseSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
name: z.string(),
createdAt: z.string().datetime(),
// Optional fields can be added without breaking
avatar: z.string().url().optional(),
});
// Validate in integration tests
test('GET /users/:id returns valid response shape', async () => {
const response = await api.get('/users/test-id');
const result = UserResponseSchema.safeParse(response.data);
expect(result.success).toBe(true);
});
```
## Deprecation Workflow
### Timeline
```
Week 0: Add deprecation header + docs
Deprecation: @{DEPRECATION_UNIX_SECONDS}
Sunset: {SUNSET_HTTP_DATE}
Week 1-4: Monitor usage of deprecated endpoint/field
Log warnings when deprecated features are accessed
Week 4: Contact remaining consumers directly
Week 8: Remove deprecated feature (or extend if consumers remain)
```
### Deprecation Header Pattern
```typescript
// Add to deprecated endpoints
// RFC 9745: Deprecation is a structured-field Date (@ + Unix seconds).
// RFC 8594: Sunset is an HTTP-date and must not be earlier than Deprecation.
res.setHeader('Deprecation', '@{DEPRECATION_UNIX_SECONDS}');
res.setHeader('Sunset', '{SUNSET_HTTP_DATE}'); // e.g. 'Wed, 30 Jun 2027 23:59:59 GMT'
res.setHeader('Link', '</api/v2/users>; rel="successor-version"');
```
## Consumer-Driven Contract Testing
### Provider Side (API)
```typescript
// Contract test: verify the API still satisfies consumer expectations
describe('User API Contract', () => {
it('returns fields that Consumer A depends on', async () => {
const response = await request(app).get('/api/users/1');
// Consumer A uses: id, email, name
expect(response.body).toHaveProperty('id');
expect(response.body).toHaveProperty('email');
expect(response.body).toHaveProperty('name');
expect(typeof response.body.id).toBe('string');
expect(typeof response.body.email).toBe('string');
});
});
```
### Consumer Side (Client)
```typescript
// Contract test: verify the client handles the expected response shape
describe('User API Client Contract', () => {
it('correctly parses user response', () => {
const mockResponse = { id: '123', email: 'test@example.com', name: 'Test' };
const user = parseUserResponse(mockResponse);
expect(user.id).toBe('123');
});
});
```
## API Versioning Strategy
| Strategy | Pros | Cons | When to Use |
|----------|------|------|-------------|
| URL path (`/v1/`, `/v2/`) | Clear, easy to route | URL pollution | Public APIs with long-lived consumers |
| No versioning (evolve in place) | Simplest | Must never break | Internal + careful evolution |
## Rules
- New fields: always optional (additive changes are safe)
- Removed fields: deprecate with sunset date, never remove without warning
- Type changes: add new field, never change existing field type
- Every breaking change must bump the API version
- Contract tests run in CI — failures block mergeFrom roborracle/agent-workflow-kit, MIT.
More from roborracle/agent-workflow-kit
- 0.524score
code-cleanup-guardian
roborracle
Safely refactor and clean up code without breaking existing functionality.
SkillBFreshness: BClaude Code +9 - 0.524score
ai-engineer
roborracle
Build AI-powered applications with LLMs, embeddings, RAG systems, and AI agents.
SkillBFreshness: BClaude Code +9 - 0.524score
git-commit-helper
roborracle
Create properly formatted, detailed commit messages following Conventional Commits specification.
SkillBFreshness: BClaude Code +9 - 0.524score
github-issues-manager
roborracle
Automatically create GitHub issues for every quantifiable task during planning and development.
SkillBFreshness: BClaude Code +9 - 0.524score
handoff
roborracle
Use when ending, pausing, or wrapping up a working session, or when asked to write or update hand-off, continuity, or session-state docs (session end, hand…
SkillBFreshness: BClaude Code +9 - 0.524score
devops-automator
roborracle
Set up CI/CD pipelines, configure cloud infrastructure, implement monitoring systems, and automate deployment processes.
SkillBFreshness: BClaude Code +9 - 0.521score
api-client
roborracle
Integrate with third-party APIs and webhooks.
SkillBFreshness: BClaude Code +9 - 0.521score
code-reviewer
roborracle
Comprehensive code review from senior engineering perspective following OWASP standards and industry best practices.
SkillBFreshness: BClaude Code +9 - 0.521score
db-migrate
roborracle
Design and execute safe database migrations.
SkillBFreshness: BClaude Code +9 - 0.521score
env-config
roborracle
Design and manage application configuration across environments.
SkillBFreshness: BClaude Code +9 - 0.521score
error-observability
roborracle
Implement structured error handling, logging, metrics, and observability.
SkillBFreshness: BClaude Code +9 - 0.521score
incident-response
roborracle
Handle production incidents with structured triage, communication, and blameless postmortems.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 24, 2026 (1 month ago)
- Last release
- Aug 11, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/roborracle/agent-workflow-kit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from roborracle
- 0.524score
git-commit-helper
roborracle
Create properly formatted, detailed commit messages following Conventional Commits specification.
SkillBFreshness: BClaude Code +9 - 0.524score
github-issues-manager
roborracle
Automatically create GitHub issues for every quantifiable task during planning and development.
SkillBFreshness: BClaude Code +9 - 0.524score
ai-engineer
roborracle
Build AI-powered applications with LLMs, embeddings, RAG systems, and AI agents.
SkillBFreshness: BClaude Code +9 - 0.524score
devops-automator
roborracle
Set up CI/CD pipelines, configure cloud infrastructure, implement monitoring systems, and automate deployment processes.
SkillBFreshness: BClaude Code +9 - 0.524score
code-cleanup-guardian
roborracle
Safely refactor and clean up code without breaking existing functionality.
SkillBFreshness: BClaude Code +9 - 0.524score
handoff
roborracle
Use when ending, pausing, or wrapping up a working session, or when asked to write or update hand-off, continuity, or session-state docs (session end, hand…
SkillBFreshness: BClaude Code +9
Cite this page
contract-test skill. Agent Mart. https://agentmart.dev/skills/roborracle-contract-test (last updated 2026-10-24)