ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
Backend code review patterns. Use when reviewing API routes, database operations, auth middleware, and server utilities. Covers injection, boundary validation, authorization coverage, secret/PII exposure, error leakage, and query patterns.
$ npx -y skills add agents-inc/skills --skill meta-reviewing-api-reviewing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/meta-reviewing-api-reviewingContext preview
The summary Claude sees to decide when to auto-load this skill.
Backend code review patterns. Use when reviewing API routes, database operations, auth middleware, and server utilities. Covers injection, boundary validation, authorization coverage, secret/PII exposure, error leakage, and query patterns.
name: meta-reviewing-api-reviewing description: Backend code review patterns. Use when reviewing API routes, database operations, auth middleware, and server utilities. Covers injection, boundary validation, authorization coverage, secret/PII exposure, error leakage, and query patterns.
> **Quick Guide:** When a diff touches server code, trace every external input to where it is used - it must pass schema validation at the boundary and never reach a query or shell as a concatenated string. Verify every new route names its auth expectation and checks object-level access. Check what errors and logs expose. Security findings outrank everything else in the diff.
---
<critical_requirements>
> **All code must follow project conventions in CLAUDE.md** (kebab-case, named exports, import ordering, `import type`, named constants)
**(You MUST trace every external input in the diff - body, params, query, headers - to its use, verifying schema validation at the boundary)**
**(You MUST verify no user input is concatenated into SQL, shell commands, or file paths - parameterized queries and validated paths only)**
**(You MUST verify every route the diff adds declares its authentication requirement and checks authorization for the object it touches)**
**(You MUST check that secrets, tokens, passwords, and PII do not reach logs, error responses, or client payloads)**
**(You MUST verify error handling in the diff returns intentional messages - no stack traces or raw driver errors to the client)**
</critical_requirements>
---
**Auto-detection:** review API, backend PR review, route review, endpoint review, database query review, auth middleware review, server code review
**When to use:**
**When NOT to use:**
**Key patterns covered:**
**Detailed Resources:**
---
<philosophy>
**Server code is the trust boundary.** A UI bug annoys one user; an injection or authorization gap exposes every user's data. Review the diff's inputs and outputs before its style: what enters unvalidated, and what leaves that shouldn't.
**When reviewing API code:**
**When NOT to flag:**
**Core principles:**
</philosophy>
---
<patterns>
No external input reaches an interpreter as a string fragment.
## Injection Review For EACH place the diff sends data to SQL, a shell, or the filesystem: - [ ] SQL uses parameterized queries or the ORM's binding - no template literals with user input - [ ] Shell commands use argument arrays (execFile/spawn), never string-built exec with input - [ ] File paths derived from input are validated against a base directory (no ../ traversal) - [ ] Dynamic column/table names come from an allowlist, not from the request
// Must Fix: classic injection
const rows = await db.query(
`SELECT * FROM users WHERE name = '${req.query.name}'`,
);
// Good: parameterized
const rows = await db.query("SELECT * FROM users WHERE name = $1", [
req.query.name,
]);**Why this matters:** String-built queries and commands turn any input field into an execution vector. This is always a blocking finding, regardless of how internal the endpoint seems.
---
Every input the diff reads gets a schema before it gets used.
## Validation Review For EACH route or handler in the diff: - [ ] Body, params, and query are parsed through a schema (Zod or the codebase's equivalent) before use - [ ] Validation failures return 400 with a safe message - not a 500 from downstream - [ ] The schema is as narrow as the contract: enums for enums, bounds on numbers, formats on ids - [ ] Handler code reads the schema's OUTPUT type, not the raw request
// Should Fix: trusts the wire shape
const { limit } = req.query;
const items =The official skills marketplace for Agents Inc. 150+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?
Repo: agents-inc/skills
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking, virtual keys, and production…
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client patterns
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output, model management, and…
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning, deployments, and training
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling, embeddings, image generation,…