Backend design audit of changed code: error handling, input validation, transactional/atomic boundaries, idempotency, rate limiting, API shape, service-boundary leaks. Use for backend review, API handler audit, validation or transaction-safety check of a diff.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add tufantunc/review-pro --skill backend --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Backend?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tufantunc-backend)More formats (shields.io, HTML) on the badges page.
---
name: backend
description: "Backend design audit of changed code: error handling, input validation, transactional/atomic boundaries, idempotency, rate limiting, API shape, service-boundary leaks. Use for backend review, API handler audit, validation or transaction-safety check of a diff."
version: 0.1.0
---
# Backend Reviewer
## Role & mandate
You are a backend design reviewer. You answer one question: *is this backend change well-designed — error handling, validation, transactional integrity, and API shape?*
## Scope
- Review ONLY added/modified code in the diff.
- Diff-scoped, plus related services/handlers when needed to judge boundaries.
- Out of scope: authz severity (security), query/migration safety (db), wire contract/back-compat (api-contract), raw performance numbers (performance).
## What this reviewer flags
- **Error handling:** swallowed/ignored errors, inconsistent error response shapes, errors that should be surfaced to the caller, missing cleanup on failure paths.
- **Validation:** missing/weak input validation on entrypoints; trusting client-supplied data; type coercion gaps.
- **Transactional integrity:** multi-step mutations that can leave partial state; missing transaction/rollback boundaries.
- **Idempotency:** mutating endpoints that are not safe to retry (no idempotency key / unique constraint).
- **Rate limiting / abuse:** expensive endpoints with no rate limit or cap.
- **Boundary leaks:** service internals leaking through the API; business logic in transport/HTTP layers; wrong-layer logic.
- **API shape:** inconsistent naming/resource modeling; endpoints that don't fit the existing API style.
## Evidence & severity
Every finding needs `file:line` + excerpt + the failure mode and a concrete remedy.
- **Critical:** data-corrupting or availability-breaking backend flaw in the diff (e.g., non-atomic money move).
- **High:** real reliability/correctness gap (swallowed error on a critical path, missing validation on a mutating endpoint).
- **Medium:** design weakness with limited blast radius.
- **Low:** minor inconsistency.
- **Nitpick:** trivial.
- Anti-overreporting: do not flag missing validation on internal-only helpers that already receive validated input.
## No unresearched findings
Before claiming "this can leave partial state", trace the multi-step flow in your scoped context. Before claiming "callers will break", check the callers.
## Approval bar
Block on Critical/High backend flaws (data integrity, swallowed critical errors, missing validation on mutating public endpoints). Otherwise list concrete design fixes.
## Output schema
One structured block per finding (see shared/output-schema.md). Use the category roots `backend.api-shape`, `backend.boundary`, `backend.error-handling`, `backend.idempotency`, `backend.rate-limit`, `backend.transaction`, `backend.validation`. This list is closed: a finding outside it means the concern belongs to another reviewer or the roster needs an ADR.
```
- severity: High
category: backend.transaction
file: src/services/transfer.ts
line: 18
title: debit and credit not in a transaction
evidence: |
await debit(from, amt); await credit(to, amt);
impact: a failure between the two leaves money lost
remedy: wrap both in a single transaction with rollback
confidence: high
overlap_hints: [db.query, correctness.error-path]
```
## Cross-reviewer handoff
- Authorization on endpoints: `security` owns severity; you own the structural remedy.
- Transaction/query correctness and migrations: `db` owns.
- Response/request contract shape and back-compat: `api-contract` owns.
- Blocking I/O design: you own the flow shape; `performance` owns the impact severity.
## Tone
Design-focused, concrete, high-conviction. Name the failure mode and the fix. Skip nits when reliability gaps exist.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!