Skip to content
Back to skills

Api Skill

ASecurity

Mandatory middleware, validation boilerplate, error safe-listing, and performance rules for fast, consistent, and secure endpoints.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 3, 2026
ai-agentstypescriptrustexpressrefactoringapidatabasebackendsecurityperformance

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned June 3, 2026

npx -y skills add kinqsradiollc/BrainRouter --skill api-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Api Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kinqsradiollc-api-skill/badge)](https://www.skillsdirectory.com/skills/kinqsradiollc-api-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: api-skill
description: Mandatory middleware, validation boilerplate, error safe-listing, and performance rules for fast, consistent, and secure endpoints.
hints: |
  - Verify existing API routes, schemas, and specs in the project before drafting new endpoints.
  - Implement a strong validation layer (e.g. Zod, Joi) covering all incoming body, query, and path parameters.
  - Apply security middleware, rate-limiting, and authentication gates to all non-public endpoints.
  - Safe-list user-visible errors and never leak database stack traces or internal secrets to the client.
  - Optimize query performance by selecting explicit columns and using cursor-based pagination for lists.
---

# API Standards Skill

## Overview

This skill ensures every network endpoint is fast, consistent, secure, and well-designed. Standardizing input validation, error mapping, rate limiting, and database interactions prevents security vulnerabilities and performance bottlenecks at the entry point of the application.

## Workflow

### 1. Document & Align Check
Before crafting or modifying any endpoint, review the project's active API specification files (e.g., `API.md`, `openapi.yaml`, or `docs/api/`). Ensure your endpoints adhere exactly to the defined naming schemes, payload structures, and architectural standards.

### 2. Implement the "Security Shield" Ingress
Use the following pattern for every new route to guarantee input hygiene, authentication, and rate limiting:

```typescript
import { Request, Response } from 'express';
import { z } from 'zod';
import { redisRateLimit } from '../../middleware/rateLimit';
import { requireAuth } from '../../middleware/auth';
import { sendSuccess, ErrorResponses } from '../../utils/response';

// 1. Define Input Schema
const InputSchema = z.object({
  id: z.string().uuid(),
  // ... other fields
});

export const myNewEndpoint = [
  // 2. Apply Rate Limit
  redisRateLimit({ windowMs: 60000, max: 10 }), 
  
  // 3. Authenticate
  requireAuth, 
  
  async (req: Request, res: Response) => {
    try {
      // 4. Validate Input
      const data = InputSchema.parse(req.body);
      
      // 5. Derive Identity
      const userId = req.user.id; 

      // ... Business Logic ...

      return sendSuccess(res, { result });
    } catch (error) {
      if (error instanceof z.ZodError) {
        return ErrorResponses.badRequest(res, 'Invalid input', 'VALIDATION_ERROR');
      }
      console.error('API Error:', error);
      return ErrorResponses.internalError(res);
    }
  }
];
```

## Error Safe-Listing

Map all internal system errors to secure, generic client-facing errors. Never leak raw database queries, connection failures, or environment details.

| Internal Code / Error Type | HTTP Status | Visible to Client? | Exposed Client Code |
|---|---|---|---|
| `ZodError` / Input validation | 400 Bad Request | Yes (with field details) | `VALIDATION_ERROR` |
| Missing Session Token / Expired | 401 Unauthorized | Yes | `AUTH_REQUIRED` |
| Insufficient Permissions / Roles | 403 Forbidden | Yes | `FORBIDDEN` |
| Database Entity Missing | 404 Not Found | Yes | `NOT_FOUND` |
| Raw Database Exception (`DB_ERROR`) | 500 Internal Error | **NO** | `INTERNAL_ERROR` |
| Third-Party API Failure | 500 Internal Error | **NO** | `INTERNAL_ERROR` |

---

## Performance Rules

- **No `SELECT *`**: Always explicitly select the required columns. Scanning and returning unused database fields wastes database memory and network bandwidth.
- **Cursors Only**: Use cursor-based keys (`before`/`after` or comparable token indices) for list pagination. Avoid `OFFSET` pagination, which degrades rapidly as tables grow.
- **Cache-Aside Pattern**: Wrap resource-intensive, read-heavy query operations (like listings, configs, or stats) in cached gets/sets (e.g., Redis) with explicit TTLs.

---

## When to Use

- Implementing new REST, GraphQL, or RPC endpoints in backend routers.
- Modifying existing request/response structures or validation schemas.
- Refactoring data fetch APIs, database pagination, caching logic, or error handling.

**When NOT to use:**
- Internal utility functions, helper libraries, or offline CLI commands that do not expose public network endpoints.
- Developing pure client-side markup or styling layout elements.

## Common Rationalizations

| Rationalization | Reality |
|---|---|
| "I'll add validation and security middlewares later." | Security and input validation are baseline requirements, not post-implementation decorations. Out-of-order security leads to leaked data. |
| "Leaking internal stack traces helps me debug faster in staging." | Stack traces and DB messages leak structural details about database models, schemas, and packages, giving attackers vectors to exploit. |
| "Offset pagination is easier to implement." | Offset pagination (`LIMIT/OFFSET`) scales poorly. As datasets grow, the database must scan millions of rows to discard them, causing severe latency degradation. |

## Red Flags

- Request handler reading raw untrusted `req.body` variables without structural validation.
- Database query executing `SELECT *` or lack of explicit select fields.
- Returning raw server errors or database exceptions directly in JSON response blocks.
- Pagination endpoints that do not accept cursor boundaries or rely solely on page offsets.

## Verification

After completing the API endpoint, verify:
- [ ] Route uses the "Security Shield" pattern (Rate limits, Authentication, Validation).
- [ ] Zod or equivalent validation schemas strictly validate all parameters (body, query, params).
- [ ] Malformed or invalid payloads return safe `VALIDATION_ERROR` responses with 400 statuses.
- [ ] System logs stack traces on exceptions, but clients receive a generic `INTERNAL_ERROR` 500 status.
- [ ] Large list responses enforce cursor-based pagination and select explicit database columns.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…