← All skills
Rewrite · 4 sources citedProtocolSoftware & games

requesting-code-review

Get a change independently reviewed against its requirements before it moves on.

Use it when
After finishing a task or a major feature, after fixing a complex bug, and before merging, or when the user asks for "a code review", "a second pair of eyes", "a security check" or "review before merge". Covers what to give the reviewer, what a usable review contains, and how to act on it.
What kind it is
A written method: it lays out how the work is done and what to check along the way.
Size
852 words. The whole text loads when the skill fires; only the 67-word description is always loaded.
Starts with
Ask for the job it describes.

How it is organised

What’s inside

The skill’s top-level sections, in order. The bar is each section’s share of the 852 words, so you can see where the weight sits before reading.

  1. 1When to ask67 words
  2. 2How to ask387 words
  3. 3Severity75 words
  4. 4Acting on the review99 words
  5. 5What not to do39 words
  6. 6Example120 words

The skill itself

Read it before you install it

requesting-code-review/SKILL.md · 852 wordsDownloadSkill on GitHub ↗
---
name: requesting-code-review
description: Get a change independently reviewed against its requirements before it moves on. Use after finishing a task or a major feature, after fixing a complex bug, and before merging, or when the user asks for "a code review", "a second pair of eyes", "a security check" or "review before merge". Covers what to give the reviewer, what a usable review contains, and how to act on it.
license: MIT
---

# Requesting a code review

Review early and often, while a problem is still one change away from the cause. A reviewer who has only the work product and its requirements catches what the author, who knows what they meant, no longer sees.

## When to ask

**Always:** after each task in a multi-task plan, after a major feature, and before merging to the main branch.
**Often worth it:** when you are stuck and need a fresh view, before a refactor (to baseline), and after fixing a complex bug.

Small lookups and text-only edits can be checked inline. Never describe a review as independent when you reviewed your own work. Say who did it.

## How to ask

**1. Fix the range.** Record the commit before the work and the commit after it. Include uncommitted and untracked files in the review if the work has any.

```bash
BASE_SHA=$(git rev-parse origin/main)   # or the commit before this task
HEAD_SHA=$(git rev-parse HEAD)
git diff --stat $BASE_SHA..$HEAD_SHA
git status --short                      # staged, unstaged and untracked changes
```

**2. Hand the reviewer a brief, not your session.** Give a separate reviewer (another agent, a fresh session, or a person) only the work product and what it must satisfy, so it judges the change and not your reasoning. Fill in:

- **What was built**, in two or three sentences.
- **Requirements or plan** it must meet, with a link or the text.
- **Range:** base and head commits, and the changed files.
- **Project conventions:** how to run the tests and any required or banned patterns.
- **Verification evidence:** what you ran and what it printed.
- **Decisions already made**, and **concerns you have not resolved**, so the reviewer does not re-argue the first or miss the second.

**3. Say what a good review contains.** Ask for:

- A verdict: ready, ready after fixes, or not ready.
- Findings with a severity (below), the file and line, and why it matters.
- What was **not** checked, and why.
- At least three concrete ways the change could fail, and what would have to be true for the reviewer's own conclusion to be wrong.
- Which break attempts were actually run and which were only reasoned through, labeled as such.

A review that is only "looks good" is not a review. Send it back.

**4. Add a security pass when the change touches it.** If the diff touches authentication or authorization, input validation or output encoding, endpoints handling user data, secrets or credentials, cryptography or tokens, or deployment and CI configuration, the review must also cover: injection (SQL, script, command), broken access control, session and token handling, secrets in code or logs, vulnerable dependencies, and error messages that leak detail. Critical and High security findings block the merge until fixed, or until the user accepts the risk in writing.

For changes with tricky logic (concurrency, state machines, retry or rollback paths, data pipelines), also ask for an adversarial pass: concrete inputs, orderings and states that break it, rather than a checklist.

## Severity

| Level | Meaning | What you do |
|---|---|---|
| **Critical** | Unsafe, loses data, a security hole, or required behavior is broken | Fix now, before anything else |
| **Important** | A required behavior is missing, a regression, or the implementation is fragile | Fix before moving on, unless the user defers it |
| **Minor** | Polish that does not block the work | Note it and do it later |

## Acting on the review

1. Fix Critical issues first, then Important ones. Record Minor ones.
2. Re-run the checks after each fix and ask the reviewer to look again at the findings and the fix diff, not the whole change. If two fixes for the same cause fail, stop retrying: change the plan, or report that you are blocked.
3. If the reviewer is wrong, say so with evidence: the code, the test, the output. Do not argue from opinion. Ask for clarification if you cannot tell. See `receiving-code-review` for the full approach.
4. Do not proceed with unfixed Critical or Important findings.

## What not to do

- Skip a review because the change is "simple".
- Ignore a Critical finding or move on with an unfixed Important one.
- Argue with technically valid feedback.
- Pass the reviewer your whole session history or your conclusions.

## Example

```
Just finished task 2, adding a verification function. Asking for review before task 3.

What was built:  verifyIndex() and repairIndex(), handling four issue types
Requirements:    task 2 in docs/deployment-plan.md
Range:           a7981ec..3df7661
Conventions:     run `npm test`; no network calls in unit tests
Evidence:        npm test, 41 passed, 0 failed
Not resolved:    I am unsure whether repairIndex() is safe to run twice

Review returned:
  Strengths:  clean structure, real tests
  Important:  no progress indication on long repairs (src/index.ts:88)
  Minor:      magic number 100 for the reporting interval (src/index.ts:41)
  Not checked: behavior under a concurrent write
  Verdict:    ready after the Important fix
```

The author then fixes the Important item, notes the Minor one, and asks about the concurrent write before starting task 3.

The second audit

What we found in the sources

It keeps the upstream idea (get a reviewer who has only the work product, early and often), makes it reviewer-agnostic, and adds what stronger variants require of a review. Every source below was read at the commit the auditor recorded. Nothing was taken from a source without a permissive license.

What each source contributed

  • obra/superpowers ↗ · Primary basis · MIT

    The early-and-often principle, when to request, fixing a base and head commit, handing the reviewer crafted context instead of the session history, the Critical/Important/Minor handling, pushing back with reasoning, and the worked example.

  • brunob54/superpowers-orchestrator ↗ · Added ideas · MIT

    The built-in security pass and the list of changes that trigger it, "Critical and High security findings block merge", the adversarial pass for tricky logic, and the requirement that a review give severity, file references and a merge-readiness verdict.

  • thepragmaticbear/bearpaws ↗ · Added ideas · MIT

    The brief a reviewer needs (project conventions, verification evidence, decisions already made, unresolved concerns) and the demand that a review enumerate failure modes, state what would make its own conclusion wrong, list what it did not check, and label break attempts as executed or reasoned.

  • lsy041015/orchestra ↗ · Added ideas · MIT

    Never call a self-review independent, include staged, unstaged and untracked changes in the range, scope a re-review to the finding and its fix, and stop retrying after two failed fixes with the same cause.

What changed

  • The description says what the skill covers and lists the phrases that should trigger it. Upstream's was only "Use when completing tasks, implementing major features, or before merging to verify work meets requirements".
  • The reviewer can be another agent, a fresh session or a person. Upstream and every variant assume a particular subagent type.
  • Upstream's reviewer template lived in a separate file (code-reviewer.md). Its content is replaced by a short brief and a list of what a good review contains, written inline, so the skill stands alone. The template file itself was not read.
  • Added a severity table with what to do at each level.
  • Removed the "superpowers" paths and namespaces from the example.

Problems found in the sources

  • obra/superpowers: The description gives only the trigger. The reviewer template is in a separate file (code-reviewer.md) that a lone copy does not have, and the skill assumes a "general-purpose subagent" exists. It does not say what a usable review must contain.
  • brunob54/superpowers-orchestrator: Routed by other skills of its own (using-superpowers, executing-plans), reads a context-snapshot.json that only its tooling writes, and dispatches its own named reviewer and red-team agents.
  • thepragmaticbear/bearpaws: Dispatches a bp:code-reviewer agent and the strict "four named gates" format only works with that agent's template. The idea is sound and is kept in a portable form.
  • lsy041015/orchestra: Depends on a review-package helper that needs a plan file and on orchestra: skill names, and mixes tool names for two different hosts in one step.

What was dropped

  • The red-team agent and the automatic fix pipeline from brunob54/superpowers-orchestrator, which need that repository's agents.
  • The context-snapshot.json handling from the same source, which is specific to its tooling.
  • The review-package helper script and ledger from lsy041015/orchestra.
  • The coordinator-context-budget argument for dispatching a reviewer. The independence argument is kept.
Read but not used (4)
  • gylove1994/superpowers-deepseek-v4: A variant of upstream (83% similar).
  • jnmetacode/superpowers-zh: A Chinese translation of upstream.
  • leodorareluctant259/superpowers-zh: A Chinese translation of upstream.
  • mzored/superpowers-cc-to-codex: A Codex-backed port, tied to those tools.
Left out for license (4)

No license is declared on these, so nothing was taken from them: Athyrr/aikit, Fintama/swisper-superpowers, Itzalive/resistance-ai, orkeren21/shipshape.

Same text, wherever you work

Use it where you work

Copy the folder into your skills directory, then ask for the job or type its start command.

git clone https://github.com/nikbearbrown/skills
cp -R skills/skills/requesting-code-review ~/.claude/skills/

Pairs with