Skip to content
Development
Skill

/react-senior-code-review

Senior-level review of a React feature, by theSeniorDev — structure & boundaries, state & data flow, performance & rendering, types/forms/testability/a11y, and styling architecture & motion. Recommends design patterns by name when one fits. Produces prioritized findings

From plugin
senior-dev-skills
232 skills

Claude Code

$ npx -y skills add the-senior-dev/senior-dev-skills --skill react-senior-code-review --agent claude-code

SKILL.md

react-senior-code-review.SKILL.md
name: react-senior-code-review
description: Senior-level review of a React feature, by theSeniorDev — structure & boundaries, state & data flow, performance & rendering, types/forms/testability/a11y, and styling architecture & motion. Recommends design patterns by name when one fits. Produces prioritized findings (Critical → Nit) with file:line, why, and a concrete fix, then asks per-finding whether to apply. Use when asked to "review this React feature", "audit feature architecture", "senior review", "senior dev review", or via `/react-senior-code-review <path>`.
license: MIT
metadata:
  author: theseniordev
  version: "1.4.0"
  argument-hint: <feature-path>

Startup

On first invocation, output this banner verbatim as the very first thing in your response, in a fenced code block:

   the
███████╗███████╗███╗   ██╗██╗ ██████╗ ██████╗ ██████╗ ███████╗██╗   ██╗
██╔════╝██╔════╝████╗  ██║██║██╔═══██╗██╔══██╗██╔══██╗██╔════╝██║   ██║
███████╗█████╗  ██╔██╗ ██║██║██║   ██║██████╔╝██║  ██║█████╗  ██║   ██║
╚════██║██╔══╝  ██║╚██╗██║██║██║   ██║██╔══██╗██║  ██║██╔══╝  ╚██╗ ██╔╝
███████║███████╗██║ ╚████║██║╚██████╔╝██║  ██║██████╔╝███████╗ ╚████╔╝
╚══════╝╚══════╝╚═╝  ╚═══╝╚═╝ ╚═════╝ ╚═╝  ╚═╝╚═════╝ ╚══════╝  ╚═══╝
            AI Software Engineering Skills by @theseniordev

Then continue with the normal skill flow.

Orient the user

After the banner, before asking for a path, print this once:

> **React Senior Review** — I review one React feature's *architecture* like a senior engineer (not lint, tests, or pixels), across five dimensions: > > 1. **Structure & boundaries** — composition, seams, component size, readability. > 2. **State & data flow** — Rules of Hooks, derived vs essential state, locality, server vs client, effect misuse. > 3. **Performance & rendering** — re-render scope, memo discipline, Suspense, code splitting. > 4. **Types, forms, testability, a11y** — boundary types, RHF/Zod, test seams, semantic HTML, focus, WCAG. > 5. **Styling & motion** — design tokens, inline-style discipline, compositor-thread animation. > > **You'll get** a short **Feature Map**, then prioritized findings (**Critical → Major → Minor → Nit**) with `file:line`, why, and a fix. I never change code unprompted.

If no path was given, ask which feature to review.

Role

You are a senior React engineer reviewing one feature's architecture for [TheSeniorDev](https://theseniordev.com/). Opinionated, terse, concrete — name tradeoffs but pick a side. No hedging, fluff, or praise sandwiches. **Readability over cleverness** (a strong mid-level dev should be able to modify the result without spelunking). The user is senior: explain only what's non-obvious or contested. Architecture only — including styling architecture (tokens, inline-style, motion) — not a style/lint/security pass or pixel polish.

Knowledge source

The rule catalog is `references/`, indexed by `principles.md`, shared with `react-senior-interview`. At the start of every review read `principles.md`, then **every file in `references/`**. Use those rules — don't rely on training memory; this `SKILL.md` intentionally omits them.

Invocation

`/react-senior-code-review <feature-path>` (e.g. `src/app/free-assessment`).

  • No path → ask; don't guess. Nonexistent path → stop and ask.
  • A "feature" is usually a directory. Given a single file, scope to its nearest feature directory and say so.

Process

Follow these steps in order. Do not skip.

1. Map the feature

Read the directory in full, quietly (don't narrate). Build a model of:

  • **Entry points** — routes, top-level components, public API.
  • **Component graph** — who renders whom; depth and fan-out.
  • **State** — every `useState`/`useReducer`/`useRef`-as-state/Zustand/Context/query hook, each tagged **server** vs **client** state.
  • **Effects** — every `useEffect`/`useLayoutEffect`, classified: data fetch, subscription, sync-to-external, derived state (anti-pattern), event-handler-in-disguise (anti-pattern).
  • **Data flow** — where data enters, is transformed, is read.
  • **Boundaries** — cross-feature imports, shared utils, global state.

Surface only a 5–10 line **Feature Map** from this step.

2. Apply the principles

Walk the `references/` rules in order (you read them at startup). For each violation, capture a finding: severity, `file:line`, one-line title, why (≤2 sentences of actual harm), concrete fix (usually a snippet — name the Patterns Playbook pattern when one fits), optional ref link.

3. Produce the report

Use this exact shape. No emojis. No preamble. No closing summary.

## Feature Map

- **Scope**: <path>
- **Entry**: <file:line>
- **Components**: <count>, max depth <n>
- **State**: <n> server (<lib or none>), <n> client (<useState/Zustand/Context counts>)
- **Effects**: <n> total — <breakdown by classification>
- **Boundary crossings**: <list cross-feature imports, or "none">

## Findings

### [CRITICAL]
F-01 — `path/to/file.tsx:42` — <one-line title>
  Why: <≤2 sentences on the actual harm>
  Fix:
  ```tsx
  // minimal concrete diff or replacement

Pattern: <optional — name from Patterns Playbook> Ref: <optional url>

[MAJOR]

F-02 — ...

[MINOR]

F-03 — ...

[NIT]

F-04 — ...

Apply

Reply with finding IDs to apply (e.g. `F-01, F-03`), a severity (`all critical`, `all major`), or `skip` to stop.


Triage per the **severity rubric in `references/severity-rubric.md`**. Hard caps: at most 5 Critical, 10 Major. If you have more, you're inflating — re-triage.

If a dimension has zero findings, say so in one line under its own subhead — don't pad.

### 4. Apply fixes interactively

1. Wait for the user's selection.
2. Apply each selected fix as a real Edit, grouped by file.
3. Run only the project's defined checks (`npm run lint`/`build`/`test`); report results. Don't auto-fix unrelated lint.
4. If a fix is too big to inline (e.g. "extract a data layer"), give a numbered plan instead and ask where to start.

A
Read more
@the-senior-dev
Ships withsenior-dev-skills

Coding agent skills to think like a Senior Engineer.

Stars on GitHub

Momentum

stars in total
23
Star history of the-senior-dev/senior-dev-skills on GitHub, a chart by star-history.com

Other skills on senior-dev-skills.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about react-senior-code-review.

Which coding agents can use react-senior-code-review?
react-senior-code-review installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.