home / skills / vudovn / antigravity-kit / api-patterns
This skill helps you choose the right API style and design consistent, scalable responses across REST, GraphQL, and tRPC.
npx playbooks add skill vudovn/antigravity-kit --skill api-patternsReview the files below or copy the command above to add this skill to your agents.
---
name: api-patterns
description: API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
allowed-tools: Read, Write, Edit, Glob, Grep
---
# API Patterns
> API design principles and decision-making for 2025.
> **Learn to THINK, not copy fixed patterns.**
## 🎯 Selective Reading Rule
**Read ONLY files relevant to the request!** Check the content map, find what you need.
---
## đź“‘ Content Map
| File | Description | When to Read |
|------|-------------|--------------|
| `api-style.md` | REST vs GraphQL vs tRPC decision tree | Choosing API type |
| `rest.md` | Resource naming, HTTP methods, status codes | Designing REST API |
| `response.md` | Envelope pattern, error format, pagination | Response structure |
| `graphql.md` | Schema design, when to use, security | Considering GraphQL |
| `trpc.md` | TypeScript monorepo, type safety | TS fullstack projects |
| `versioning.md` | URI/Header/Query versioning | API evolution planning |
| `auth.md` | JWT, OAuth, Passkey, API Keys | Auth pattern selection |
| `rate-limiting.md` | Token bucket, sliding window | API protection |
| `documentation.md` | OpenAPI/Swagger best practices | Documentation |
| `security-testing.md` | OWASP API Top 10, auth/authz testing | Security audits |
---
## đź”— Related Skills
| Need | Skill |
|------|-------|
| API implementation | `@[skills/backend-development]` |
| Data structure | `@[skills/database-design]` |
| Security details | `@[skills/security-hardening]` |
---
## âś… Decision Checklist
Before designing an API:
- [ ] **Asked user about API consumers?**
- [ ] **Chosen API style for THIS context?** (REST/GraphQL/tRPC)
- [ ] **Defined consistent response format?**
- [ ] **Planned versioning strategy?**
- [ ] **Considered authentication needs?**
- [ ] **Planned rate limiting?**
- [ ] **Documentation approach defined?**
---
## ❌ Anti-Patterns
**DON'T:**
- Default to REST for everything
- Use verbs in REST endpoints (/getUsers)
- Return inconsistent response formats
- Expose internal errors to clients
- Skip rate limiting
**DO:**
- Choose API style based on context
- Ask about client requirements
- Document thoroughly
- Use appropriate status codes
---
## Script
| Script | Purpose | Command |
|--------|---------|---------|
| `scripts/api_validator.py` | API endpoint validation | `python scripts/api_validator.py <project_path>` |
This skill teaches practical API design principles and decision-making for modern services. It helps choose between REST, GraphQL, and tRPC, and covers response formats, versioning, pagination, and related operational concerns. The focus is on thinking through trade-offs and applying patterns appropriately rather than copy-pasting templates.
It guides you through a decision flow that matches API style to consumer needs, team constraints, and deployment patterns. It inspects common concerns—naming, HTTP semantics, type safety, response envelopes, error handling, and versioning—and gives concrete recommendations. It also highlights anti-patterns and a checklist to validate design choices before implementation.
When should I pick GraphQL over REST?
Choose GraphQL if clients need flexible queries, efficient bundling of related data, or when you cannot predict client data needs. Avoid it for simple CRUD APIs or when caching and predictable endpoints are priorities.
Is tRPC only for full TypeScript stacks?
tRPC shines in TypeScript monorepos because of runtime-free type safety; avoid it for polyglot clients or public APIs where language-agnostic contracts are required.
How do I handle breaking changes?
Use versioning (URI or header) and deprecation headers, document migration steps, and support old versions for a defined window. Prefer additive changes and non-breaking evolutions when possible.