api-patterns – skill Lập trình cho agent AI
Nguyên tắc thiết kế API và cách ra quyết định. Lựa chọn REST vs GraphQL vs tRPC, định dạng response, versioning, pagination.
Cài skill api-patterns bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/api-patterns-a9069.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /api-patterns – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/api-patterns-a9069.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $api-patterns – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/api-patterns-a9069.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /api-patterns – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/api-patterns-a9069.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /api-patterns – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
API Patterns
> API design decisions tied to the consumers and deployment constraints.
> 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-architect] |
| Data structure | @[skills/database-design] |
| Security details | @[skills/api-security-best-practices] |
---
✅ 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 | Local heuristic source scan (not schema validation) | python3 skills/api-patterns/scripts/api_validator.py <project_path> |
When to Use
Use when defining a new endpoint contract, selecting REST/GraphQL/tRPC for known consumers, or changing pagination, errors, authentication or compatibility behavior. For a bug inside an existing contract, preserve that contract unless the task authorizes a change.
Inputs and procedure
Record consumers and deployed versions, expected payload size, access rules, compatibility obligations and one concrete operation. Read the relevant files in the map, compare the realistic choices, then specify request/response examples and rejection cases. Types shared at build time do not ensure that independently deployed clients remain compatible.
Worked example
Input: a public order list changes while clients page through it. Choose a bounded page size and cursor over a stable (created_at, id) order. Define the next-cursor format, authorization filter and behavior for a removed record or invalid cursor. Test two equal timestamps and an insertion between pages. Expected: no duplicate IDs within the promised snapshot semantics; document whether newly inserted rows can appear.
Limitations
- The Python helper scans at most 15 matching files using regular expressions and shallow JSON/YAML checks. Its output is a triage hint, not OpenAPI validation, an authorization audit or deployment approval.
- GraphQL query shape, tRPC inference and HTTP method names do not enforce resource authorization or backwards compatibility.
- Rate limiting cannot alone prevent all resource exhaustion; size, concurrency, time and provider-cost bounds depend on the operation.
- Perform security checks only against authorized local/test targets with isolated accounts and a defined scope.
Skill liên quan
- api-rate-limit-handler – Triển khai cơ chế giới hạn tần suất API (throttling) có giới hạn, nhận biết idempotency…
- api-sdk-generator – Tạo mã SDK client, thư viện wrapper cho API, model request/response và cách dùng theo…
- api-security-best-practices – Triển khai các mẫu thiết kế API an toàn gồm xác thực, phân quyền, kiểm tra đầu vào, giới…
- api-security-testing – Quy trình kiểm thử bảo mật cho REST và GraphQL API, bao gồm xác thực, phân quyền, rate…
- dotnet-backend-patterns – Nắm vững các mẫu phát triển backend C#/.NET để xây dựng API, MCP server và ứng dụng…
- e2e-testing-patterns – Nắm vững kiểm thử end-to-end với Playwright và Cypress để xây dựng bộ test đáng tin cậy…
- cco-review – /c-level-agents:cco-review [plan] — Chief Customer Officer ám ảnh về việc giữ chân khách…
- playwright – Dùng khi tác vụ cần tự động hóa trình duyệt thật từ terminal (điều hướng, điền form…