{"id":"1018a9f2-dcf5-490d-8e85-f89ed418192e","shortId":"2JbWbe","kind":"skill","title":"api-patterns","tagline":"API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.","description":"# API Patterns\n\n> API design principles and decision-making for 2025.\n> **Learn to THINK, not copy fixed patterns.**\n\n## 🎯 Selective Reading Rule\n\n**Read ONLY files relevant to the request!** Check the content map, find what you need.\n\n---\n\n## 📑 Content Map\n\n| File | Description | When to Read |\n|------|-------------|--------------|\n| `api-style.md` | REST vs GraphQL vs tRPC decision tree | Choosing API type |\n| `rest.md` | Resource naming, HTTP methods, status codes | Designing REST API |\n| `response.md` | Envelope pattern, error format, pagination | Response structure |\n| `graphql.md` | Schema design, when to use, security | Considering GraphQL |\n| `trpc.md` | TypeScript monorepo, type safety | TS fullstack projects |\n| `versioning.md` | URI/Header/Query versioning | API evolution planning |\n| `auth.md` | JWT, OAuth, Passkey, API Keys | Auth pattern selection |\n| `rate-limiting.md` | Token bucket, sliding window | API protection |\n| `documentation.md` | OpenAPI/Swagger best practices | Documentation |\n| `security-testing.md` | OWASP API Top 10, auth/authz testing | Security audits |\n\n---\n\n## 🔗 Related Skills\n\n| Need | Skill |\n|------|-------|\n| API implementation | `@[skills/backend-development]` |\n| Data structure | `@[skills/database-design]` |\n| Security details | `@[skills/security-hardening]` |\n\n---\n\n## ✅ Decision Checklist\n\nBefore designing an API:\n\n- [ ] **Asked user about API consumers?**\n- [ ] **Chosen API style for THIS context?** (REST/GraphQL/tRPC)\n- [ ] **Defined consistent response format?**\n- [ ] **Planned versioning strategy?**\n- [ ] **Considered authentication needs?**\n- [ ] **Planned rate limiting?**\n- [ ] **Documentation approach defined?**\n\n---\n\n## ❌ Anti-Patterns\n\n**DON'T:**\n- Default to REST for everything\n- Use verbs in REST endpoints (/getUsers)\n- Return inconsistent response formats\n- Expose internal errors to clients\n- Skip rate limiting\n\n**DO:**\n- Choose API style based on context\n- Ask about client requirements\n- Document thoroughly\n- Use appropriate status codes\n\n---\n\n## Script\n\n| Script | Purpose | Command |\n|--------|---------|---------|\n| `scripts/api_validator.py` | API endpoint validation | `python scripts/api_validator.py <project_path>` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["api","patterns","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-api-patterns","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/api-patterns","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 37911 github stars · SKILL.md body (2,639 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:50:29.021Z","embedding":null,"createdAt":"2026-04-18T20:36:03.246Z","updatedAt":"2026-05-18T18:50:29.021Z","lastSeenAt":"2026-05-18T18:50:29.021Z","tsv":"'/getusers':208 '10':141 '2025':31 'action':260 'anti':194 'anti-pattern':193 'api':2,4,21,23,73,84,113,120,130,139,150,164,168,171,223,243 'api-pattern':1 'api-style.md':64 'applic':254 'approach':191 'appropri':235 'ask':165,228,298 'audit':145 'auth':122 'auth.md':116 'auth/authz':142 'authent':185 'base':225 'best':134 'boundari':306 'bucket':127 'check':49 'checklist':160 'choos':72,222 'chosen':170 'clarif':300 'clear':273 'client':217,230 'code':81,237 'command':241 'consid':100,184 'consist':178 'consum':169 'content':51,57 'context':175,227 'copi':36 'criteria':309 'data':153 'decis':9,28,70,159 'decision-mak':8,27 'default':198 'defin':177,192 'describ':261,277 'descript':60 'design':5,24,82,95,162 'detail':157 'document':136,190,232 'documentation.md':132 'endpoint':207,244 'envelop':86 'environ':289 'environment-specif':288 'error':88,215 'everyth':202 'evolut':114 'execut':256 'expert':294 'expos':213 'file':44,59 'find':53 'fix':37 'format':18,89,180,212 'fullstack':108 'graphql':13,67,101 'graphql.md':93 'http':78 'implement':151 'inconsist':210 'input':303 'intern':214 'jwt':117 'key':121 'learn':32 'limit':189,220,265 'make':10,29 'map':52,58 'match':274 'method':79 'miss':311 'monorepo':104 'name':77 'need':56,148,186 'oauth':118 'openapi/swagger':133 'output':283 'overview':264 'owasp':138 'pagin':20,90 'passkey':119 'pattern':3,22,38,87,123,195 'permiss':304 'plan':115,181,187 'practic':135 'principl':6,25 'project':109 'protect':131 'purpos':240 'python':246 'rate':188,219 'rate-limiting.md':125 'read':40,42,63 'relat':146 'relev':45 'request':48 'requir':231,302 'resourc':76 'respons':17,91,179,211 'response.md':85 'rest':11,65,83,200,206 'rest.md':75 'rest/graphql/trpc':176 'return':209 'review':295 'rule':41 'safeti':106,305 'schema':94 'scope':276 'script':238,239 'scripts/api_validator.py':242,247 'secur':99,144,156 'security-testing.md':137 'select':16,39,124 'skill':147,149,252,268 'skill-api-patterns' 'skills/backend-development':152 'skills/database-design':155 'skills/security-hardening':158 'skip':218 'slide':128 'source-sickn33' 'specif':290 'status':80,236 'stop':296 'strategi':183 'structur':92,154 'style':172,224 'substitut':286 'success':308 'task':272 'test':143,292 'think':34 'thorough':233 'token':126 'top':140 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':281 'tree':71 'trpc':15,69 'trpc.md':102 'ts':107 'type':74,105 'typescript':103 'uri/header/query':111 'use':98,203,234,250,266 'user':166 'valid':245,291 'verb':204 'version':19,112,182 'versioning.md':110 'vs':12,14,66,68 'window':129 'workflow':258","prices":[{"id":"6795dd1e-0590-4d9d-af69-f5b8b13cc75f","listingId":"1018a9f2-dcf5-490d-8e85-f89ed418192e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:36:03.246Z"}],"sources":[{"listingId":"1018a9f2-dcf5-490d-8e85-f89ed418192e","source":"github","sourceId":"sickn33/antigravity-awesome-skills/api-patterns","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/api-patterns","isPrimary":false,"firstSeenAt":"2026-04-18T21:31:09.510Z","lastSeenAt":"2026-05-18T18:50:29.021Z"},{"listingId":"1018a9f2-dcf5-490d-8e85-f89ed418192e","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/api-patterns","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/api-patterns","isPrimary":true,"firstSeenAt":"2026-04-18T20:36:03.246Z","lastSeenAt":"2026-05-07T22:40:42.012Z"}],"details":{"listingId":"1018a9f2-dcf5-490d-8e85-f89ed418192e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"api-patterns","github":{"repo":"sickn33/antigravity-awesome-skills","stars":37911,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-05-18T08:24:49Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"4351004fcd914024b7a9cbefe0603b9ded7b7588","skill_md_path":"skills/api-patterns/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/api-patterns"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"api-patterns","description":"API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/api-patterns"},"updatedAt":"2026-05-18T18:50:29.021Z"}}