Agent skill
self-review
Perform a code quality review before creating a PR. Use when reviewing changes, checking code quality, or doing a self-review of the current branch. Invoked as part of the work-ticket lifecycle after verification-before-completion and before finishing-a-development-branch.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/self-review-carrotwaxr-peek-stash-browser
SKILL.md
Code Review Quality Check
Perform a code review for the current peek-stash-browser branch. Your job is to ensure code quality, identify potential bugs or improvements, and find gaps in test coverage.
Step 1: Understand What Changed
git diff main...HEAD --stat
git diff main...HEAD
Review the diff to understand the scope and intent of the changes before running automated checks.
Step 2: Invoke Relevant Best-Practice Skills
Based on which files changed, invoke the corresponding skills to have their guidelines in context during review. Check the diff stat and invoke all that apply:
| Files changed | Skill to invoke |
|---|---|
client/src/components/** (UI/layout) |
visual-style, responsive-design |
client/src/components/** (React logic) |
vercel-composition-patterns, react-spa-performance |
server/controllers/**, server/routes/** |
express5-api-patterns, api-design-principles |
server/services/** (TypeScript) |
typescript-advanced-types |
server/prisma/**, migration files |
prisma-sqlite-expert |
server/graphql/**, codegen.yml |
graphql-patterns |
Dockerfile*, docker-compose* |
docker-best-practices |
Test files (**/*.test.*) |
writing-tests |
Invoke these skills using the Skill tool before proceeding to the code quality review. You don't need to invoke every skill — only those relevant to the diff.
Step 3: Code Quality Review
Review the diff against these guidelines (supplemented by the skills invoked above):
General Principles
- DRY - Don't repeat yourself; extract shared logic
- YAGNI - Don't build features that aren't needed yet
- Single Responsibility - Functions and components do one thing well
- Readable code over comments - Code should be self-documenting through clear naming and structure. Use comments only for:
- Explaining why something unusual is done (not what)
- Highlighting important gotchas or edge cases
- Noting things we might want to revisit later
- Do NOT add comments that just describe what readable code already shows
React Patterns
- Prefer event/action-driven handlers over useEffect when possible
- useEffect should have proper dependency arrays and clear purpose
- Use memoization (useMemo, useCallback) when it provides real value, not everywhere
- Avoid large monolithic useEffect blocks - break into smaller effects or extract logic
- Components should have clear separation of concerns
API & Server
- Follows Express best practices
- Error handling is present and meaningful
- Input validation on API endpoints
- All operations are high-performance and scalable - Peek users sometimes have 100k+ scenes, etc
UI/UX
- Mobile-first design, responsive across all screen sizes
- Visual consistency - same components/patterns used throughout:
- Accordions, tabs, cards, indicators look the same everywhere
- Same icons represent the same actions/items across the app
- Uses theme variables (e.g.,
var(--bg-card)) not hardcoded colors
Code Hygiene
- No unused imports or variables
- No leftover console.log statements (unless intentional logging)
- No hardcoded values that should be constants or config
- No commented-out code blocks
- mkdocs and README (docs) are kept up to date with changes
Step 4: Automated Testing Checklist
Run each check and fix any failures before proceeding:
Server
cd server && npm test
Expected: All tests pass
cd server && npm run lint
Expected: No errors (warnings OK)
cd server && npx tsc --noEmit
Expected: No type errors
cd server && npm run test:integration
Expected: All tests pass
Client
cd client && npm test
Expected: All tests pass
cd client && npm run lint
Expected: No errors (warnings OK)
cd client && npm run build
Expected: Build succeeds without errors
E2E (if docker-compose is running)
npm run test:e2e
Expected: All E2E tests pass
Step 5: Issue Severity Guide
Blocking (must fix before PR):
- Test failures
- Build/lint errors
- Security issues (XSS, injection, exposed secrets)
- Broken functionality
- Missing error handling that could crash the app
Should fix (fix now or create follow-up issue):
- Missing test coverage for new logic (see
writing-testsskill for conventions) - Performance issues (unnecessary re-renders, N+1 queries)
- Accessibility problems
- Inconsistent UI patterns
Note for later (document but don't block):
- Minor refactoring opportunities
- Nice-to-have improvements
- Tech debt observations
Step 6: Hand Off
After all blocking issues are fixed, report the review results and hand off to finishing-a-development-branch for PR creation or merge. Do NOT create a PR in this skill — that's handled by the finishing skill.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?