Backend Development

MoizIbnYousaf/ai-agent-skills/skills/backend-development

作者 MoizIbnYousaf6d95c788aa22ce39a4807b9a4c31c758a2036dc6MIT收錄於 2026年10月9日更新於 2026年10月9日

Backend API design, database architecture, microservices patterns, and test-driven development. Use for designing APIs, database schemas, or backend system architecture.

AI 產生的概覽

提供後端 API 設計、資料庫結構、驗證、快取、限流與可觀測性的參考指引。

功能
此技能提供後端工程的參考資料與程式碼模式:RESTful 端點慣例、JSON 回應與錯誤格式、SQL 結構與查詢模式、搭配中介軟體的 JWT 驗證、cache-aside 快取、限流,以及可觀測性實務。它僅含說明,不會產生檔案或指令碼;由代理在設計或審查後端系統時套用這些模式。
適用情境
適用於設計 API、資料庫結構或後端系統架構,或任務需要驗證、快取、限流、可觀測性等慣用模式時。
執行需求
不需要任何工具、套件或憑證;此技能未附指令碼,僅為說明文件。範例中提及 PostgreSQL、Redis 以及 jsonwebtoken、express-rate-limit 等 TypeScript 套件,但僅為示意,並未隨技能提供。

Backend Development

API Design

RESTful Conventions

GET    /users          # List usersPOST   /users          # Create userGET    /users/:id      # Get userPUT    /users/:id      # Update user (full)PATCH  /users/:id      # Update user (partial)DELETE /users/:id      # Delete user
GET    /users/:id/posts  # List user's postsPOST   /users/:id/posts  # Create post for user

Response Format

json
{  "data": { ... },  "meta": {    "page": 1,    "per_page": 20,    "total": 100  }}

Error Format

json
{  "error": {    "code": "VALIDATION_ERROR",    "message": "Invalid input",    "details": [      { "field": "email", "message": "Invalid format" }    ]  }}

Database Patterns

Schema Design

sql
-- Use UUIDs for public IDsCREATE TABLE users (  id SERIAL PRIMARY KEY,  public_id UUID DEFAULT gen_random_uuid() UNIQUE,  email VARCHAR(255) UNIQUE NOT NULL,  created_at TIMESTAMPTZ DEFAULT NOW(),  updated_at TIMESTAMPTZ DEFAULT NOW());
-- Soft deletesALTER TABLE users ADD COLUMN deleted_at TIMESTAMPTZ;
-- IndexesCREATE INDEX idx_users_email ON users(email);CREATE INDEX idx_users_created ON users(created_at DESC);

Query Patterns

sql
-- Pagination with cursorSELECT * FROM postsWHERE created_at < $cursorORDER BY created_at DESCLIMIT 20;
-- Efficient countingSELECT reltuples::bigint AS estimateFROM pg_class WHERE relname = 'users';

Authentication

JWT Pattern

typescript
interface TokenPayload {  sub: string;      // User ID  iat: number;      // Issued at  exp: number;      // Expiration  scope: string[];  // Permissions}
function verifyToken(token: string): TokenPayload {  return jwt.verify(token, SECRET) as TokenPayload;}

Middleware

typescript
async function authenticate(req: Request, res: Response, next: Next) {  const token = req.headers.authorization?.replace('Bearer ', '');  if (!token) {    return res.status(401).json({ error: 'Unauthorized' });  }
  try {    req.user = verifyToken(token);    next();  } catch {    res.status(401).json({ error: 'Invalid token' });  }}

Caching Strategy

typescript
// Cache-aside patternasync function getUser(id: string): Promise<User> {  const cached = await redis.get(`user:${id}`);  if (cached) return JSON.parse(cached);
  const user = await db.users.findById(id);  await redis.setex(`user:${id}`, 3600, JSON.stringify(user));  return user;}
// Cache invalidationasync function updateUser(id: string, data: Partial<User>) {  await db.users.update(id, data);  await redis.del(`user:${id}`);}

Rate Limiting

typescript
const limiter = rateLimit({  windowMs: 60 * 1000,  // 1 minute  max: 100,             // 100 requests per window  keyGenerator: (req) => req.ip,  handler: (req, res) => {    res.status(429).json({ error: 'Too many requests' });  }});

Observability

  • Logging: Structured JSON logs with request IDs
  • Metrics: Request latency, error rates, queue depths
  • Tracing: Distributed tracing with correlation IDs
  • Health checks: /health and /ready endpoints

來源與署名

來源:MoizIbnYousaf/ai-agent-skills位於skills/backend-development提交6d95c78

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架