agentsclimarketplace

Code reviewer

Skill peopleforrester/claude-dotfiles/skills/development/code-reviewer

Systematic code review for pull requests and code changes. Use when the user asks for a code review, PR review, or wants feedback on code quality. Provides structured feedback on correctness, security, performance, and maintainability.From its SKILL.md

Install
npx -y skills add peopleforrester/claude-dotfiles --skill code-reviewer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.3 KB, as published. Nobody here has run it

Code Review Assistant

Systematic approach to reviewing code changes for quality and correctness.

When to Use

  • User asks for a code review or PR review
  • Reviewing changes before merging
  • User asks "is this code okay?" or "any issues with this?"
  • Before deploying to production

Review Process

1. Understand Context

Before reviewing code:

  • What is the purpose of this change?
  • What problem does it solve?
  • Are there related issues or documentation?

2. Review in Layers

Review code systematically in this order:

Layer 1: Correctness     - Does it work as intended?
Layer 2: Security        - Are there vulnerabilities?
Layer 3: Performance     - Are there bottlenecks?
Layer 4: Maintainability - Is it readable and extensible?
Layer 5: Style           - Does it follow conventions?

Review Checklist

Correctness

  • Logic handles all expected cases
  • Edge cases considered (empty, null, boundaries)
  • Error handling is appropriate
  • No obvious bugs or typos
  • Tests cover the changes

Security

  • No hardcoded secrets or credentials
  • User input is validated and sanitized
  • SQL queries use parameterized statements
  • No XSS vulnerabilities (user data escaped)
  • Authentication/authorization checked
  • Sensitive data not logged

Performance

  • No N+1 query problems
  • Large datasets paginated
  • Expensive operations cached if appropriate
  • No unnecessary re-renders (React)
  • Async operations where beneficial

Maintainability

  • Code is readable without extensive comments
  • Functions are focused and reasonably sized
  • No code duplication (DRY)
  • Clear naming for variables and functions
  • Appropriate abstraction level

Style

  • Follows project conventions
  • Consistent formatting
  • No commented-out code
  • Imports organized

Feedback Format

Structure feedback as:

## Summary

Brief overview of the change and overall assessment.

## Must Fix (Blocking)

Issues that must be addressed before merge.

### Issue 1: [Title]
**Location**: `file.ts:42`
**Problem**: Description of the issue
**Suggestion**: How to fix it

## Should Fix (Non-blocking)

Improvements that should be made but don't block merge.

## Consider (Optional)

Suggestions for future improvement.

## Positive Feedback

What was done well.

Examples

Security Issue

### Issue: SQL Injection Vulnerability
**Location**: `users.ts:28`
**Problem**: User input directly concatenated into SQL query
**Suggestion**: Use parameterized query:
\`\`\`typescript
// Before
const query = `SELECT * FROM users WHERE id = ${userId}`;

// After
const query = 'SELECT * FROM users WHERE id = $1';
const result = await db.query(query, [userId]);
\`\`\`

Performance Issue

### Issue: N+1 Query in Loop
**Location**: `orders.ts:15-20`
**Problem**: Database query inside loop causes N+1 queries
**Suggestion**: Fetch all related data in single query:
\`\`\`typescript
// Before: N+1 queries
for (const order of orders) {
  order.items = await db.getItems(order.id);
}

// After: 2 queries
const orderIds = orders.map(o => o.id);
const allItems = await db.getItemsByOrderIds(orderIds);
\`\`\`

Positive Feedback

## Positive Feedback

- Good separation of concerns between service and repository layers
- Comprehensive error handling with specific error types
- Well-structured tests covering edge cases

Review Tone

  • Be constructive, not critical
  • Explain the "why" behind suggestions
  • Acknowledge good work
  • Use "we" and "let's" not "you should"
  • Ask questions when intent is unclear
  • Distinguish between must-fix and nice-to-have

Questions to Ask

If something is unclear:

  • "What's the expected behavior when X happens?"
  • "Is there a reason this approach was chosen over Y?"
  • "Could you help me understand this section?"

Keep looking

Skills are one crate of 625,605. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.