Review code for quality, security, performance, and maintainability. Use when reviewing PRs, auditing a codebase, or refactoring. Covers TypeScript, Node.js, infrastructure-as-code, and full-stack web apps.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add espennilsen/pi --skill code-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Code Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/espennilsen-code-review)More formats (shields.io, HTML) on the badges page.
---
name: code-review
description: Review code for quality, security, performance, and maintainability. Use when reviewing PRs, auditing a codebase, or refactoring. Covers TypeScript, Node.js, infrastructure-as-code, and full-stack web apps.
---
# Code Review
Systematic code review for Espen's TypeScript/Node.js projects.
## Process
1. **Understand scope** — Read the changed files or the area under review:
```bash
# For git changes
git diff --name-only HEAD~1
git diff HEAD~1
# For a specific area
find src/ -name "*.ts" -newer <reference-file>
```
2. **Read the code** — Use the `read` tool on each file. Don't guess.
3. **Analyze against checklist** — Score each category.
4. **Report** — Use the output format below.
## Review Checklist
### Correctness
- [ ] Logic handles edge cases (null, empty, boundary values)
- [ ] Error handling is explicit (no swallowed errors, no bare `catch {}`)
- [ ] Async code handles rejection/cancellation properly
- [ ] Types are accurate (no unnecessary `any`, proper narrowing)
### Security
- [ ] No secrets or credentials in code
- [ ] User input is validated/sanitized before use
- [ ] SQL queries use parameterized statements (no string interpolation)
- [ ] File paths are resolved safely (no path traversal)
- [ ] Auth checks are present where needed
### Performance
- [ ] No N+1 queries or unbounded loops over large datasets
- [ ] Heavy operations are async or streamed (not blocking)
- [ ] Database queries use appropriate indexes
- [ ] Large responses are paginated or truncated
### Maintainability
- [ ] Functions do one thing with clear names
- [ ] No magic numbers or hardcoded values that should be config
- [ ] Types and interfaces are defined (not inline object shapes)
- [ ] Dead code and unused imports are removed
- [ ] Comments explain *why*, not *what*
### Project Conventions
- [ ] Follows existing patterns in the codebase
- [ ] File naming and directory structure is consistent
- [ ] Error messages are helpful for debugging
- [ ] Logging is appropriate (not too noisy, not silent on errors)
## Output Format
```markdown
## Code Review: [scope]
### Summary
One paragraph: what the code does, overall quality assessment.
### Issues
#### 🔴 Critical
- [file:line] Description and fix
#### 🟡 Important
- [file:line] Description and suggestion
#### 🔵 Minor
- [file:line] Nit or style suggestion
### What's Good
- Call out well-written code, good patterns, clever solutions
### Recommendations
- Prioritized list of changes, starting with most impactful
```
## Common Patterns in Espen's Stack
| Project Type | Key Things to Check |
|---|---|
| **Pi extensions** | Tool parameter schemas, error returns, signal/abort handling |
| **Eleventy sites** | Template data flow, permalink structure, Tailwind purge config |
| **TanStack apps** | Router setup, query keys, optimistic updates, Clerk auth guards |
| **Infrastructure** | Terraform state safety, Docker layer caching, env var handling |
| **SQLite** | Migration ordering, prepared statements, WAL mode, index coverage |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!