> common-api-design
Apply REST API conventions — HTTP semantics, status codes, versioning, pagination, and OpenAPI standards for any framework. Use when designing endpoints, choosing HTTP methods, implementing pagination, or writing OpenAPI specs. (triggers: **/*.controller.ts, **/*.router.ts, **/*.routes.ts, **/routes/**, **/controllers/**, **/handlers/**, rest api, endpoint, http method, status code, versioning, pagination, openapi, api design, api contract)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/common-api-design?format=md"Common API Design Standards
Priority: P1 (OPERATIONAL)
Consistent, predictable API contracts reduce integration friction and prevent breaking changes from reaching consumers.
🔧 HTTP Verb Semantics
GETread-only, idempotent — never mutates state.POSTcreate or trigger;PUTfull replace;PATCHpartial update;DELETEremove.- Non-CRUD actions as sub-resources:
POST /orders/:id/cancel.
📡 Status Code Correctness
200success;201created (addLocationheader);204no body.400validation (withdetails[]);401unauthenticated;403unauthorized;404not found.409conflict;422business rule violation;429rate limit (addRetry-After);500unhandled.
📦 URL Design Rules
- Lowercase, kebab-case:
/user-profiles, not/UserProfilesor/user_profiles. - Plural nouns:
/orders,/products. Not/order,/getProducts. - No verbs in paths (except action sub-resources):
/orders/:id/cancel✅,/cancelOrder❌. - Hierarchy: Use nesting only up to 2 levels:
/users/:id/orders✅,/users/:id/orders/:orderId/items/:itemId❌.
🔢 API Versioning
- Strategy: URL path versioning is the default:
/v1/users,/v2/users. - Header versioning (
Api-Version: 2) is acceptable for internal APIs. - Never mix versions in the same controller — each version gets its own route module.
- Support previous major version for minimum 6 months after a new one is released.
- Deprecation: Add
Deprecation: true+Sunset: <date>headers when a version will be retired.
📄 Pagination
- Prefer cursor-based (
cursor+limit) for large/live datasets; offset only for small static ones. - Default
limit: 20, max100. Reject requests exceeding max. - Response envelope:
{ data: [], pagination: { nextCursor, hasNextPage } }.
📝 OpenAPI Contract
- Every API MUST have an OpenAPI 3.1 spec.
- Generate spec from code annotations (not hand-written YAML) to prevent drift.
- Include: request/response schemas, error shapes, auth requirements, examples.
- Review OpenAPI spec as part of PR process — breaking changes require version bump.
🔒 API Security Baseline
- Require auth on all routes by default; use
@Public()or equivalent opt-out. - Validate and sanitize all query params, path params, and request bodies.
- Set
Content-Type: application/jsonexplicitly. Reject unexpected content types. - Include
X-Content-Type-Options: nosniffandX-Frame-Options: DENYheaders.
Anti-Patterns
- No
GETmutations: Search engines and CDNs cache GET — mutating state is catastrophic. - No 200 for errors:
{ "success": false, "data": null }with HTTP 200 breaks monitoring. - No deeply nested URLs: Hard to document, version, and cache.
- No breaking changes without versioning: Removing/renaming fields in-place breaks consumers silently.
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)