Skip to content
Development
Skill

/java-api-review

Reviews Java REST API design including HTTP methods, status codes, naming, and versioning. Use when user asks to "review my API", "check REST design", "is this good REST", "review endpoints", "API design review", "check my controller", or "review HTTP API".

From plugin
claude-java-plugins
1726 skills6 agents5 commands

Claude Code

$ npx -y skills add ducpm2303/claude-java-plugins --skill java-api-review --agent claude-code

SKILL.md

java-api-review.SKILL.md
description: Reviews Java REST API design including HTTP methods, status codes, naming, and versioning. Use when user asks to "review my API", "check REST design", "is this good REST", "review endpoints", "API design review", "check my controller", or "review HTTP API".
argument-hint: "[paste controller or API code]"
allowed-tools: Read, Grep, Glob

Review the REST API design of the provided Java controller or endpoint code. Detect Spring Boot version from `pom.xml` to tailor advice.

Step 1 — HTTP method and status code correctness

  • `GET` must be idempotent and return `200 OK` (or `404` if not found) — never `201`
  • `POST` for creation → return `201 Created` with `Location` header pointing to the new resource
  • `PUT` for full replacement → `200 OK` or `204 No Content`
  • `PATCH` for partial update → `200 OK` with updated resource or `204 No Content`
  • `DELETE` → `204 No Content` (not `200` with body)
  • Flag returning `200 OK` with `null` body when resource not found → must be `404`
  • Flag returning `200 OK` for all errors → each error needs an appropriate 4xx/5xx code

Step 2 — URL naming conventions

  • Use plural nouns for resources: `/users` not `/user`, `/orders` not `/getOrders`
  • Use kebab-case for multi-word paths: `/user-profiles` not `/userProfiles`
  • Flag verbs in URLs: `/getUser`, `/createOrder`, `/deleteItem` → use HTTP method instead
  • Nested resources: `/users/{userId}/orders` — max 2 levels deep; beyond that use query params
  • Flag `/api/v1/users` inconsistency — version should be consistent across all endpoints

Step 3 — Request/response design

  • Flag endpoints returning raw entity classes (`@Entity`) directly → use DTOs
  • Flag missing `@Valid` on `@RequestBody` parameters → no input validation
  • Flag `@RequestBody Map<String, Object>` → use typed DTOs instead
  • Flag missing pagination on list endpoints that could return large datasets → add `Pageable`
  • Flag response bodies that differ in structure between success and error cases → standardize

Step 4 — Error response format

Recommend a consistent error response format:

{
  "timestamp": "2024-01-15T10:30:00Z",
  "status": 400,
  "error": "Validation Failed",
  "message": "name must not be blank",
  "path": "/api/users"
}

Flag endpoints returning plain strings or stack traces as error responses.

Step 5 — API versioning

  • Flag no versioning on public APIs → suggest URL versioning (`/api/v1/`) or header versioning
  • Flag breaking changes in existing versioned endpoints (removing fields, changing types)

Step 6 — Security basics

  • Flag endpoints missing `@PreAuthorize` or security config that should be protected
  • Flag sensitive data (passwords, tokens, SSN) returned in responses
  • Flag `@CrossOrigin(origins = "*")` on production endpoints

Output format

1. **Summary** — overall API quality assessment 2. **Issues** by severity: 🔴 Critical / 🟡 Warning / 🔵 Suggestion 3. **Each issue**: endpoint + problem + corrected code

Next Steps

  • For security findings → ask `java-security-reviewer` agent for full OWASP review
  • For missing tests → run `/java-test` to generate controller tests with MockMvc
Read more
@ducpm2303
Ships withclaude-java-plugins

A Claude Code plugin marketplace with 3 focused plugins for Java developers. All plugins support Java 8 through Java 21 and tailor advice to your target Java version.

1726 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
17
Star history of ducpm2303/claude-java-plugins on GitHub, a chart by star-history.com

Other skills on claude-java-plugins.

java-adr

java-adr

Creates, lists, and manages Architecture Decision Records for Java projects. Use when user asks to "create an ADR", "document…

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.

skills10d309k
@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,…

ecc12d293k
@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…

react1d252k
@facebook@facebookInstall Skill

Questions about java-api-review.

Which coding agents can use java-api-review?
java-api-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.