# Code Review JS

> JavaScript-specific code review guidelines focusing on functional patterns and modern APIs

- Skill: `majiayu000/code-review-js` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/code-review-js`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/code-review-js/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/code-review-js

---


# JavaScript Code Review

Includes all guidelines from code-review skill, plus JavaScript-specific rules.

## Prefer Functional Over OO

The reviewer SHOULD:
- Prefer pure functions and data transforms over classes when state is not required.
- Encourage small, composable utilities instead of deep inheritance trees.

The reviewer MUST:
- Flag new classes that only wrap stateless helpers or act as namespaces.

Acceptable:
```js
const formatUser = (user) => `${user.firstName} ${user.lastName}`;
```

Discouraged:
```js
class UserFormatter {
  format(user) {
    return `${user.firstName} ${user.lastName}`;
  }
}
```

## Use `switch` for Enum-like Values

The reviewer MUST:
- Flag `if/else if` chains that branch on the same enum-like value when a `switch` is clearer.

Preferred:
```js
switch (status) {
  case "idle":
    return renderIdle();
  case "running":
    return renderRunning();
  case "failed":
    return renderFailed();
  default:
    return assertNever(status);
}
```

Discouraged:
```js
if (status === "idle") return renderIdle();
if (status === "running") return renderRunning();
if (status === "failed") return renderFailed();
```

## Avoid Duplicated Code

The reviewer MUST:
- Flag duplicated logic and suggest extracting helpers or shared utilities.

The reviewer SHOULD:
- Prefer a single source of truth for calculations and formatting.

## Use Modern JavaScript APIs When Available

The reviewer SHOULD:
- Prefer modern APIs like `Object.hasOwn`, `Array.prototype.at`, `flatMap`, `replaceAll`, `URL`, `AbortController`, and `Promise.any` when they improve clarity.
- Confirm runtime targets or polyfills before requiring newer APIs.

