# Code Review Lewisperez999 V0 Lewis Perez P

> Perform code reviews following project standards.

- Skill: `majiayu000/code-review-lewisperez999-v0-lewis-perez-p` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/code-review-lewisperez999-v0-lewis-perez-p`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/code-review-lewisperez999-v0-lewis-perez-p/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-lewisperez999-v0-lewis-perez-p

---


# Code Review

Perform code reviews following project standards.

## Description

Review code changes for quality, security, performance, and adherence to project conventions.

## Checklist

### TypeScript
- [ ] No `any` types without justification
- [ ] Interfaces defined for all props and data shapes
- [ ] Proper error handling with typed errors
- [ ] Exports include types alongside functions

### React/Next.js
- [ ] Server Components used by default
- [ ] `'use client'` only where necessary
- [ ] Proper use of Suspense for loading states
- [ ] No unnecessary re-renders
- [ ] Accessible (semantic HTML, ARIA)

### Security
- [ ] No hardcoded secrets or API keys
- [ ] Input validated with Zod
- [ ] SQL queries are parameterized
- [ ] Auth checks on protected endpoints
- [ ] XSS prevention (no dangerouslySetInnerHTML with user content)

### Performance
- [ ] Images optimized (next/image)
- [ ] Lazy loading for heavy components
- [ ] Database queries are indexed
- [ ] No N+1 query problems
- [ ] Appropriate caching

### Code Style
- [ ] Consistent naming conventions
- [ ] Files named correctly (PascalCase for components, kebab-case for utils)
- [ ] Imports use `@/` aliases
- [ ] No commented-out code
- [ ] Clear, descriptive variable names

### API Routes
- [ ] Proper HTTP status codes
- [ ] Error responses are consistent
- [ ] Rate limiting for public endpoints
- [ ] Request/response typed
- [ ] Logging for errors

### Database
- [ ] Migrations are reversible
- [ ] Indexes on frequently queried columns
- [ ] Foreign key constraints where appropriate
- [ ] No raw SQL concatenation

## Review Template

```markdown
## Code Review: [PR/Change Title]

### Summary
Brief description of the changes.

### Checklist
- [x] TypeScript types are correct
- [x] Security considerations addressed
- [ ] Performance optimized
- [x] Tests added/updated

### Issues Found

#### Critical
- None

#### Major
- [ ] Issue description - file:line

#### Minor
- [ ] Suggestion - file:line

### Suggestions
- Consider using X instead of Y
- Could extract into reusable function

### Approved: Yes/No
```

## Common Issues

### TypeScript
```typescript
// ❌ Bad: Using any
const data: any = await fetchData();

// ✅ Good: Typed response
interface ApiResponse {
  id: string;
  name: string;
}
const data: ApiResponse = await fetchData();
```

### Security
```typescript
// ❌ Bad: SQL injection risk
const result = await query(`SELECT * FROM users WHERE id = ${userId}`);

// ✅ Good: Parameterized query
const result = await query('SELECT * FROM users WHERE id = $1', [userId]);
```

### React
```typescript
// ❌ Bad: Unnecessary client component
'use client';
export function StaticContent() {
  return <div>Just static content</div>;
}

// ✅ Good: Server component (no directive needed)
export function StaticContent() {
  return <div>Just static content</div>;
}
```

### Performance
```typescript
// ❌ Bad: Fetching in loop
for (const id of ids) {
  const item = await query('SELECT * FROM items WHERE id = $1', [id]);
}

// ✅ Good: Batch query
const items = await query('SELECT * FROM items WHERE id = ANY($1)', [ids]);
```

