bundles/dev-workflow/skills/code-review/SKILL.md
Correctness and security gate for incoming pull requests. Auto-invoked when reviewing a diff, evaluating a PR, running /code-review at any effort level, or asked "is this safe to merge?" Covers bugs, TypeScript hygiene, security, database safety, test existence, devex regressions, and feature-flag leaks. Multi-PR queue, WIP-drain, and merge-train work routes to pr-merge-train instead of serial full reviews.
npx skillsauth add shipshitdev/library code-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Correctness and security gate. High-conviction findings only — flag issues you
are certain about. Ambiguity defaults to "request changes." Structural concerns
(cohesion, abstraction altitude, circular deps, dead code) belong to the
structural-review skill; trust it on those axes and own correctness + security
here.
Stack rules from the repo's agent instruction file (Bun, Tailwind v4, Next.js 16, shadcn/ui) are validated by the correctness review harness's rule-compliance layer. Do not re-flag them here.
Inputs:
git/gh commands gather
scope.Outputs:
Creates/Modifies:
External Side Effects:
git and gh invocations only. No mutations, no deploys.Confirmation Required:
Delegates To:
structural-review for cohesion/abstraction/dead-code axes.security-audit for OWASP-depth security review.any types — define proper interfaces or named types in *.types.tsunknown without a type guard — bare unknown is deferred anyas X casts without an explanatory commentconsole.log — use the project logger (LoggerService, pino, winston)@ts-ignore or @ts-expect-error without an explanatory commentawait db.update() calls that can leave the DB half-written on
failure must be wrapped in a transaction or collapsed to a single atomic writeError)useEffect with async calls (AbortController)@ApiOperation / @ApiResponse)Changes that silently break the local dev loop for other engineers:
.env.example / .env.template? Is the rename announced (migration note,
changelog, or PR description)?package.json that break the existing
bun run dev / bun run build contract without a clear migration noteBlock merge when a devex regression is unannounced. Request changes when it is documented but the documentation is in the wrong place.
Features meant to be gated that are shipping unflagged or partially flagged:
const ENABLE_NEW_CHECKOUT = true standing in for
a real flag evaluation; will never be cleaned up and bypasses the flag serviceFlag leaks that expose unreleased functionality to all users are merge blockers. Missing cleanup tickets are a "request changes."
any types or bare unknown without type guardsThis skill = correctness + security gate.
Use it for an individual diff or PR. For multi-PR queue work — "review all PRs",
"drain open PRs", "merge clean PRs", "reduce WIP", "merge train", or "clean up
pull requests" — route to pr-merge-train so clean PRs merge first and pending
CI does not serialize the queue.
Structural and maintainability concerns — module cohesion, abstraction altitude,
circular dependencies, dead-code introduction, API surface sprawl, whether the
implementation matches the stated architecture — belong to the structural-review
skill. Do not re-litigate those axes here; trust structural-review to own them.
Security-audit depth (OWASP rubric, dependency CVEs, timing attacks, privilege
escalation paths) belongs to the security-audit skill. Surface obvious issues
found in the diff, but do not attempt a full security audit in this skill.
development
TypeScript refactoring and modernization guidelines from a principal specialist perspective. This skill should be used when refactoring, reviewing, or modernizing TypeScript code to ensure type safety, compiler performance, and idiomatic patterns. Triggers on tasks involving TypeScript type architecture, narrowing, generics, error handling, or migration to modern TypeScript features.
tools
Resolves TypeScript and JavaScript problems across type-level programming, performance, monorepo management, migration, and modern tooling. Invoke when diagnosing "type instantiation excessively deep" errors, migrating JS to TS, configuring strict tsconfig, debugging module resolution, or choosing between Biome/ESLint/Turborepo/Nx.
tools
Turborepo monorepo build system guidance. Triggers on: `turbo.json`, task pipelines, `dependsOn`, caching, remote cache, the `turbo` CLI, `--filter`, `--affected`, CI optimization, environment variables, internal packages, monorepo structure, and package boundaries. Use when the user configures tasks or workflows, creates packages, sets up a monorepo, shares code between apps, runs changed packages, debugs cache behavior, or works in an `apps/` plus `packages/` workspace.
tools
Provides Tailwind CSS v4 performance optimization and best practices guidelines. Triggers when writing, reviewing, or refactoring Tailwind CSS v4 code; when working with Tailwind configuration, @theme directive, utility classes, responsive design, dark mode, container queries, or CSS generation optimization.