Skip to main content
CodingRefactoringintermediate

Constructive Multi-Dimension Pull Request Code Review

Conduct a senior code review balancing correctness, concurrency edge cases, readability, and performance.

Compatibility & Specs

Compatible AI Models
ClaudeChatGPTGemini
Last UpdatedOct 3, 2026
Customizable Variables3 parameters

How to Use This Prompt

Follow this 3-step workflow to extract high-signal responses from any compatible AI model.

01

1. Tailor the Parameters

Use the interactive customizer above to substitute the bracketed placeholders with your exact context, requirements, and constraints.

02

2. Send to AI Model

Copy the prompt and paste it into Claude, ChatGPT, Gemini, or Copilot. These models follow structured multi-step constraints reliably.

03

3. Review and Iterate

Review the output against the verified benchmark below. Follow up in the conversation to stress-test edge cases or refine tone.

Prompt Variables & Parameters

Reference breakdown of every dynamic variable embedded in this prompt template.

PlaceholderParameter NameTypeStatusDescription & Guidance
[pr_objective]PR Objective & SummarytextRequiredWhat the author intended to accomplishDefault: Implement auto-cancellation of pending subscription invoices when a user downgrades their account.
[code_diff]Code Diff / SnippettextareaRequiredThe code submitted in the pull requestDefault: async function handleDowngrade(userId: string) { const invoices = await db.query('SELECT * FROM invoices WHERE user_id = ' + userId); invoices.forEach(async (inv) => { if (inv.status === 'open') { await stripe.invoices.voidInvoice(inv.stripe_id); await db.query(`UPDATE invoices SET status = 'void' WHERE id = '${inv.id}'`); } }); }
[language_runtime]Language & RuntimetextRequiredTypeScript/Node.js, Go, Python, etc.Default: TypeScript on Node.js 20 with PostgreSQL and Stripe SDK.

Example Execution & Benchmark Output

Sample input arguments and the verified AI response demonstrating expected quality and formatting.

Sample VariablesInputs
[pr_objective]
Implement auto-cancellation of pending subscription invoices when a user downgrades their account.
[code_diff]
async function handleDowngrade(userId: string) { const invoices = await db.query('SELECT * FROM invoices WHERE user_id = ' + userId); invoices.forEach(async (inv) => { if (inv.status === 'open') { await stripe.invoices.voidInvoice(inv.stripe_id); await db.query(`UPDATE invoices SET status = 'void' WHERE id = '${inv.id}'`); } }); }
[language_runtime]
TypeScript on Node.js 20 with PostgreSQL and Stripe SDK.
Expected AI ResponseVerified Result
### Senior Code Review **Overall Assessment:** 🛑 **Changes Requested.** The business logic is straightforward, but there are two critical production bugs: a severe SQL injection vulnerability and an unawaited `forEach` loop that triggers unhandled promise rejections. #### Critical Issues 1. **SQL Injection Vulnerability (High Severity):** Strings are concatenated directly into raw queries (`WHERE user_id = ' + userId`). Even if `userId` is internal, this violates secure coding standards. Always use parameterized queries. 2. **Broken Concurrency in `forEach` (Async Bug):** `Array.prototype.forEach` does not await promises. `handleDowngrade` will return before any invoices are voided, causing background unhandled promise rejections if Stripe throws. #### GitHub Review Comment Suggestion ```suggestion async function handleDowngrade(userId: string): Promise<void> { // Parameterized query prevents SQL injection and filters status in DB const { rows: openInvoices } = await db.query( 'SELECT id, stripe_id FROM invoices WHERE user_id = $1 AND status = $2', [userId, 'open'] ); // Use Promise.allSettled to process concurrently without silent drops await Promise.all( openInvoices.map(async (inv) => { await stripe.invoices.voidInvoice(inv.stripe_id); await db.query( 'UPDATE invoices SET status = $1, updated_at = NOW() WHERE id = $2', ['void', inv.id] ); }) ); } ```

Best Use Cases

Scenarios and roles where this prompt produces maximum leverage.

Staff engineers and tech leads providing detailed, educational pull request feedback
Developers performing pre-submission self-reviews to catch concurrency and security bugs
Engineering squads aligning on consistent code review standards

Tips for Best Results

Techniques to elevate response fidelity

  • •Provide rich background context rather than one-sentence inputs to receive deep, non-generic responses.
  • •Engage in multi-turn conversation: use the initial output as a baseline, then ask the AI to sharpen specific sections.
  • •Prompt the model to highlight any hidden assumptions or missing trade-offs in its recommendations.

Common Mistakes to Avoid

Frequent failure modes and anti-patterns

  • •Giving minimal context and expecting nuanced, expert-level strategic output.
  • •Not validating factual references, citations, or statistical claims with verified primary sources.
  • •Skipping the customization step and pasting raw bracketed template variables into the AI chat.

Part of Curated Collections

This prompt is sequenced as part of these goal-oriented workflows

View all collections

Related AI Prompts

Complementary workflows in Coding

View all Coding prompts
Codingadvanced

Production Incident Post-Mortem & Root-Cause Synthesizer

Convert messy incident Slack logs and alerts into a blameless, rigorous post-mortem with corrective action items.

claudechatgptgemini
#post-mortem#root-cause-analysis#sre
Codingadvanced

Safe Incremental Refactoring Plan for Complex Legacy Code

Formulate a phased refactoring strategy using the Mikado Method and Strangler pattern to eliminate risk.

claudechatgptgemini
#refactoring#legacy-code#mikado-method
Codingintermediate

Edge-Case Driven Unit Test Suite Generator with Mocks

Generate thorough, resilient unit test suites targeting boundary conditions, error branches, and mock contracts.

claudechatgptgemini
#unit-testing#jest#vitest

Related Engineering Guides

Deep-dive playbooks and system prompt methodologies for Coding

View all guides