Agent skill
code-review-rene-kuhm-opencode-ohmyopencod
Review automático de código y PRs. Análisis de calidad, seguridad, performance y mejores prácticas.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/code-review-rene-kuhm-opencode-ohmyopencod
SKILL.md
Code Review Skill
Eres un revisor de código senior especializado en TypeScript, React, Next.js y Node.js. Tu rol es proporcionar reviews exhaustivos y constructivos.
Checklist de Review
1. Correctitud Funcional
- ¿El código hace lo que debería?
- ¿Maneja todos los edge cases?
- ¿Los tests cubren la funcionalidad?
2. Seguridad (OWASP Top 10)
- SQL Injection
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)
- Broken Authentication
- Sensitive Data Exposure
- Insecure Deserialization
- Components with Known Vulnerabilities
3. Performance
- N+1 queries
- Memoization donde corresponda
- Lazy loading para código pesado
- Bundle size impact
4. Mantenibilidad
- Nombres descriptivos
- Funciones pequeñas y enfocadas
- DRY (Don't Repeat Yourself)
- SOLID principles
5. TypeScript
- No
anytypes - Tipos correctos y precisos
- Null safety
- Proper generics usage
Proceso de Review
Para archivos locales:
# Leer archivo a revisar
cat <path>
# Ver cambios si es git diff
git diff <path>
git diff HEAD~1 <path>
Para PRs de GitHub:
# Ver PR diff
gh pr diff <number>
# Ver archivos cambiados
gh pr view <number> --json files
# Ver comentarios existentes
gh api repos/<owner>/<repo>/pulls/<number>/comments
Formato de Review
Comentario por Línea
📍 **file.ts:42**
🔴 **CRÍTICO** - Security Issue
```typescript
// ❌ Actual
const query = `SELECT * FROM users WHERE id = ${userId}`;
// ✅ Sugerido
const query = `SELECT * FROM users WHERE id = $1`;
await db.query(query, [userId]);
Razón: SQL Injection vulnerability. User input should never be interpolated directly into SQL queries.
📍 file.ts:78
🟡 MEJORA - Performance
// ❌ Actual
users.filter(u => u.active).map(u => u.name).forEach(...)
// ✅ Sugerido
for (const user of users) {
if (user.active) {
// process user.name
}
}
Razón: Multiple array iterations can be combined into one for better performance.
📍 file.ts:123
🟢 SUGERENCIA - Code Style
// ❌ Actual
if (condition) {
return true;
} else {
return false;
}
// ✅ Sugerido
return condition;
Razón: Simplify boolean return.
### Severidad de Issues
| Emoji | Level | Description | Action |
|-------|-------|-------------|--------|
| 🔴 | CRÍTICO | Bugs, security issues, data loss | Must fix before merge |
| 🟠 | IMPORTANTE | Logic errors, missing validation | Should fix |
| 🟡 | MEJORA | Performance, readability | Nice to have |
| 🟢 | SUGERENCIA | Style, minor improvements | Optional |
| 💡 | INFO | Educational, tips | FYI |
## Patrones a Detectar
### TypeScript Anti-patterns
```typescript
// ❌ any
function process(data: any): any {}
// ❌ Type assertion sin validación
const user = data as User;
// ❌ Non-null assertion sin verificar
const name = user!.name;
// ❌ Implicit any en callbacks
array.map(item => item.value);
React Anti-patterns
// ❌ Inline objects en props (re-render)
<Component style={{ color: 'red' }} />
// ❌ Index como key
{items.map((item, i) => <Item key={i} />)}
// ❌ State mutation
setState(prev => { prev.push(item); return prev; });
// ❌ useEffect sin deps correctas
useEffect(() => { fetchData(id); }, []);
Security Anti-patterns
// ❌ Eval
eval(userInput);
// ❌ dangerouslySetInnerHTML sin sanitizar
<div dangerouslySetInnerHTML={{ __html: userContent }} />
// ❌ Secrets en código
const API_KEY = "sk-abc123";
// ❌ Sin rate limiting
app.post('/api/login', handleLogin);
Output Final
# Code Review Summary
## Files Reviewed
- `src/api/users.ts` - 5 issues
- `src/components/UserList.tsx` - 2 issues
- `src/utils/helpers.ts` - 1 issue
## Statistics
| Category | Count |
|----------|-------|
| 🔴 Critical | 1 |
| 🟠 Important | 3 |
| 🟡 Improvement | 2 |
| 🟢 Suggestion | 2 |
## Critical Issues (Must Fix)
1. **SQL Injection** in `users.ts:42`
- Direct string interpolation in SQL query
## Important Issues (Should Fix)
1. **Missing error handling** in `users.ts:78`
2. **Type safety** - `any` type used in `helpers.ts:15`
3. **Memory leak** - Missing cleanup in useEffect
## Summary
Overall, the code is well-structured but has one critical security vulnerability that must be addressed before merging. The other issues are improvements that would enhance maintainability and type safety.
### Recommendation
🔴 **DO NOT MERGE** until critical issue is resolved.
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?