Five-axis code review framework. Use when reviewing your own changes before merge, or reviewing PR. Evaluates correctness, readability, architecture, security, performance.
التثبيت
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Five-axis code review framework. Use when reviewing your own changes before merge, or reviewing PR. Evaluates correctness, readability, architecture, security, performance.
Code Review — Five-Axis Framework
Combined from class-ai-agent/.claude/commands/review.md + superpowers/skills/requesting-code-review. Used for both self-review before opening a PR and reviewing teammates' PRs (anh là default reviewer).
When to use
After finishing a feature task / bug fix, before commit or PR.
Before merging a branch into develop (or develop → deploy for releases).
When stuck — fresh perspective on the code you just wrote.
Before a large refactor — baseline check.
5 evaluation axes
1. Correctness — does the code do the right thing?
✅ Good — highlight what was done well (preserves morale, reinforces good patterns).
Example:
## Code Review: FallRepository (health_system mobile)
### 🔴 Critical
- `confirmSOS` doesn't validate `userId` ≠ null before the dio.post → crash if user logs out racing with countdown. Fix: throw `AppError.unauthenticated()` early in repo, OR enforce auth at controller layer before calling repo.
### 🟡 Important
- Endpoint URL `/api/mobile/sos/confirm` hardcoded inline. If backend renames endpoint, mobile needs rebuild. Suggest: extract to `ApiPaths.sosConfirm` constant in `lib/core/network/api_paths.dart`.-`dio.post` not wrapped in try-catch → raw `DioException` propagates to UI. Suggest: catch + map to domain error (`Result.failure(NetworkError(...))`).
### 🟢 Suggestion- Magic string `'/api/mobile/sos/confirm'` appears 2 times. Extract to constant.
### ✅ Good- Tests cover happy path, missing userId, network failure, 401 response.
- Clear naming `confirmSOS` matches UC013 wording (not generic `submit`).
- dio interceptor configured at app boot — no per-call boilerplate.
Anti-patterns in review
Anti-pattern
Problem
"Looks good to me" without reading carefully
Rubber-stamp = no review
Bikeshedding naming when there's an unresolved 🔴
Loses focus on the real issue
Suggesting a rewrite of a whole module in a small PR
Scope creep
Blocking PRs over style preference (if vs ternary)
Going religious, not shipping
Cross-skill / when to use vs others
Need
Use
Quick PR/commit self-review (5-min checklist)
This skill
Feature deep audit with 8-criteria score + Vietnamese report (cho stakeholder)
detailed-feature-review skill
Module-level code health audit
/audit workflow
Project-level overview (entire admin or mobile)
TongQuan skill
Sync PM_REVIEW docs với code reality
CHECK skill
Self-review = ship faster
15 minutes of self-review saves:
30 minutes of debugging post-merge.
2 hours of rollback if it breaks prod.
Reputation with the team.
Quick checklist (run fast before commit)
[ ] Tests pass: ran the command, read the output (skill `verification-before-completion`)
[ ] Lint clean: `flutter analyze` / `npm run lint` exit 0
[ ] No commented-out dead code blocks
[ ] No console.log / print debug statements left over
[ ] No TODO without a linked issue
[ ] Diff focused — only changes for this task, no "while I'm here" 5-file edits
[ ] Commit message is conventional + describes WHY