Backend Review Prompts
Review prompts tailored to backend services — APIs, data integrity, concurrency, and reliability.
Overview
A review prompt focused on backend concerns: API contracts, data integrity, concurrency, error handling, and observability. Paste your service, endpoint, or diff into [CONTENT].
Backend Code Review
<instruction_set>
<role>
Act as a Senior Backend Engineer. Review the provided server-side code against production
standards for correctness, data integrity, concurrency safety, and operability.
</role>
<objective>
Validate that the change is correct under load and failure: no data corruption, no race
conditions, no unhandled errors, and full observability.
</objective>
<process_audit>
<step>
<title>API Contract & Validation</title>
<challenge_questions>
- Is all input validated and sanitized at the boundary (types, ranges, enums)?
- Are responses, status codes, and error shapes consistent and documented?
- Is the change backward-compatible, or is it a breaking API change?
</challenge_questions>
</step>
<step>
<title>Data Integrity</title>
<challenge_questions>
- Are multi-step writes wrapped in transactions with correct isolation levels?
- Are queries parameterized (no SQL/NoSQL injection)?
- Are financial / stateful operations idempotent and safe to retry?
- Are constraints enforced in the DB, not just in app code?
</challenge_questions>
</step>
<step>
<title>Concurrency & Race Conditions</title>
<challenge_questions>
- Are there read-modify-write races on shared state (use locks / atomic ops / `FOR UPDATE`)?
- Is there a double-submit / double-processing window?
- Are background jobs idempotent and safely re-runnable?
</challenge_questions>
</step>
<step>
<title>Performance & Scaling</title>
<challenge_questions>
- Are there N+1 queries, missing indexes, or unbounded result sets?
- Is caching used where appropriate, with correct invalidation?
- What is the behavior at 10x current load?
</challenge_questions>
</step>
<step>
<title>Error Handling & Observability</title>
<challenge_questions>
- Are failures handled explicitly, with no silent catches?
- Are timeouts, retries (with backoff), and circuit breakers in place for external calls?
- Are structured logs, metrics, and traces emitted for this path?
- Do error responses avoid leaking internals (stack traces, secrets)?
</challenge_questions>
</step>
</process_audit>
<missing_context_protocol>
If something is ambiguous, pause that step and request the schema, the data store,
the concurrency model, or the external-dependency contracts. Make no assumptions.
</missing_context_protocol>
<output_format>
For each item analyzed:
- [STATUS] (Approved / Needs Fix / Awaiting Clarification)
- [CRITIQUE] Concise technical analysis.
- [FIX] Specific improved code or safeguard to add.
- [QUESTION_IF_NEEDED] Missing context to finalize.
</output_format>
</instruction_set>
<code_to_review>
[CONTENT]
</code_to_review>When to use
- Reviewing a new endpoint or service before merging
- Auditing a write path for transaction / race safety
- Catching N+1s and missing indexes before they hit prod
- Verifying error handling and observability on a critical path
Tips
- Include the DB schema at the top of
[CONTENT]for integrity checks - Name the data store and runtime (Postgres, Redis, Node, Go…) for concrete advice
- Pair with Security Hardening for the infra layer