Skip to content

Flujo de Revisión de Código: /code-review y Auditoría de Seguridad ​

Qué Aprenderás ​

La revisión de código es un paso crítico para asegurar la calidad y seguridad del código. Este tutorial te ayuda a:

  • ✅ Usar el comando /code-review para verificar automáticamente cambios de código
  • ✅ Entender la diferencia entre code-reviewer agent y security-reviewer agent
  • ✅ Dominar la lista de verificación de seguridad (OWASP Top 10)
  • ✅ Detectar y corregir vulnerabilidades comunes (inyección SQL, XSS, claves hardcodeadas, etc.)
  • ✅ Aplicar estándares de calidad de código (tamaño de funciones, longitud de archivos, cobertura de pruebas, etc.)
  • ✅ Entender los criterios de aprobación (CRITICAL, HIGH, MEDIUM, LOW)

Tu Situación Actual ​

Has escrito código y estás listo para hacer commit, pero:

  • ❌ No sabes si hay vulnerabilidades de seguridad en el código
  • ❌ Te preocupa haber pasado por alto problemas de calidad de código
  • ❌ No estás seguro de haber seguido las mejores prácticas
  • ❌ La verificación manual consume tiempo y es propensa a omisiones
  • ❌ Quieres detectar problemas automáticamente antes de hacer commit

El flujo de revisión de código de Everything Claude Code resuelve estos problemas:

  • Verificación automatizada: El comando /code-review analiza automáticamente todos los cambios
  • Revisión especializada: code-reviewer agent se enfoca en calidad de código, security-reviewer agent en seguridad
  • Clasificación estándar: Los problemas se clasifican por severidad (CRITICAL, HIGH, MEDIUM, LOW)
  • Recomendaciones detalladas: Cada problema incluye sugerencias específicas de corrección

Cuándo Usar Esta Técnica ​

Deberías ejecutar revisión de código antes de cada commit:

  • ✅ Después de completar código de nuevas funcionalidades
  • ✅ Después de corregir bugs
  • ✅ Después de refactorizar código
  • ✅ Al agregar endpoints de API (debe ejecutar security-reviewer)
  • ✅ Código que maneja entrada de usuario (debe ejecutar security-reviewer)
  • ✅ Código relacionado con autenticación/autorización (debe ejecutar security-reviewer)

Mejores Prácticas

Desarrolla el hábito: antes de cada git commit, ejecuta primero /code-review. Si hay problemas CRITICAL o HIGH, corrígelos antes de hacer commit.

🎒 Preparativos ​

Lo que necesitas:

  • Everything Claude Code ya instalado (si aún no lo has instalado, consulta Inicio Rápido)
  • Algunos cambios de código (puedes escribir código primero con /tdd)
  • Conocimiento básico de operaciones Git

Lo que NO necesitas:

  • No necesitas ser experto en seguridad (el agent te ayudará a detectar)
  • No necesitas recordar todas las mejores prácticas de seguridad (el agent te recordará)

Idea Central ​

Everything Claude Code proporciona dos agents de revisión especializados:

code-reviewer agent ​

Se enfoca en calidad de código y mejores prácticas, verifica:

  • Calidad de código: Tamaño de funciones (>50 líneas), longitud de archivos (>800 líneas), profundidad de anidación (>4 niveles)
  • Manejo de errores: Falta de try/catch, declaraciones console.log
  • Estándares de código: Convenciones de nomenclatura, código duplicado, patrones inmutables
  • Mejores prácticas: Uso de emojis, TODO/FIXME sin ticket, falta de JSDoc
  • Cobertura de pruebas: Código nuevo sin pruebas

Caso de uso: Todos los cambios de código deben pasar por code-reviewer.

security-reviewer agent ​

Se enfoca en vulnerabilidades y amenazas de seguridad, verifica:

  • OWASP Top 10: Inyección SQL, XSS, CSRF, bypass de autenticación, etc.
  • Fuga de claves: API keys hardcodeadas, contraseñas, tokens
  • Validación de entrada: Validación de entrada de usuario faltante o inadecuada
  • Autenticación y autorización: Verificación inadecuada de identidad y permisos
  • Seguridad de dependencias: Paquetes obsoletos o con vulnerabilidades conocidas

Caso de uso: Código sensible a seguridad (API, autenticación, pagos, entrada de usuario) debe pasar por security-reviewer.

Clasificación de Severidad de Problemas ​

NivelSignificado¿Bloquea Commit?Ejemplo
CRITICALVulnerabilidad de seguridad grave o problema de calidad mayor❌ Debe bloquearAPI key hardcodeada, inyección SQL
HIGHProblema importante de seguridad o calidad de código❌ Debe bloquearFalta de manejo de errores, vulnerabilidad XSS
MEDIUMProblema de prioridad media⚠️ Puede hacer commit con precauciónUso de emojis, falta de JSDoc
LOWProblema menor✓ Puede corregirse despuésFormato inconsistente, números mágicos

Sígueme: Primera Revisión de Código ​

Paso 1: Crear Algunos Cambios de Código ​

Primero usa /tdd para escribir un endpoint de API simple (con algunas vulnerabilidades de seguridad):

bash
/tdd

Pide a Claude Code que cree una API de inicio de sesión de usuario, el código se verá así:

typescript
// src/api/login.ts
export async function loginUser(email: string, password: string) {
  const query = `SELECT * FROM users WHERE email = '${email}'`  // ❌ Riesgo de inyección SQL
  const user = await db.query(query)
  
  if (user.password === password) {  // ❌ Comparación de contraseña en texto plano
    const token = generateToken(user.id)
    console.log('User logged in:', { email, password })  // ❌ Fuga de contraseña en logs
    return { token }
  }
}

Por qué Este código contiene múltiples vulnerabilidades de seguridad y problemas de calidad, ideal para demostrar la funcionalidad de revisión de código.

Deberías ver: Archivo de código creado.


Paso 2: Ejecutar Revisión de Código ​

Ahora ejecuta el comando /code-review:

bash
/code-review

Por qué/code-review llamará automáticamente al code-reviewer agent para verificar todos los cambios sin commit.

Deberías ver: El agent comienza a analizar el código y luego genera un informe de revisión.


Paso 3: Ver Informe de Revisión ​

code-reviewer generará un informe similar a este:

markdown
# Code Review Report

## Critical Issues (Fix Immediately)

### 1. [CRITICAL] Hardcoded credentials
**File:** src/api/login.ts:3
**Issue:** Password logging in console
**Fix:** Remove password from logs, only log user ID

```typescript
// ❌ Bad
console.log('User logged in:', { email, password })

// ✓ Good
console.log('User logged in:', { email, userId: user.id })

2. [CRITICAL] SQL injection vulnerability ​

File: src/api/login.ts:2 Issue: String concatenation in SQL query Fix: Use parameterized queries

typescript
// ❌ Bad
const query = `SELECT * FROM users WHERE email = '${email}'`

// ✓ Good
const { data } = await supabase
  .from('users')
  .select('*')
  .eq('email', email)

High Issues (Fix Before Production) ​

3. [HIGH] Plaintext password comparison ​

File: src/api/login.ts:4 Issue: Password stored in plaintext Fix: Use bcrypt to hash passwords

typescript
// ❌ Bad
if (user.password === password) {

// ✓ Good
import bcrypt from 'bcrypt'
const isValid = await bcrypt.compare(password, user.password)

Recommendations ​

  1. Add input validation for email format
  2. Add rate limiting to prevent brute force attacks
  3. Use JWT tokens instead of generating custom tokens

Approval Status ​

❌ BLOCKED - 2 CRITICAL issues found

Please fix all CRITICAL and HIGH issues before committing.


**Por qué**
El informe clasifica por severidad, cada problema incluye ubicación, descripción, sugerencias de corrección y ejemplos de código.

**Deberías ver**: Informe de revisión claro que señala todos los problemas y sugerencias de corrección.

---

### Paso 4: Corregir Problemas

Corrige el código según el informe:

```typescript
// src/api/login.ts
import bcrypt from 'bcrypt'
import { z } from 'zod'

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8)
})

export async function loginUser(input: unknown) {
  // Validación de entrada
  const validated = LoginSchema.parse(input)
  
  // Consulta parametrizada (previene inyección SQL)
  const { data: user } = await supabase
    .from('users')
    .select('*')
    .eq('email', validated.email)
    .single()
  
  if (!user) {
    throw new Error('Invalid credentials')
  }
  
  // Comparación de contraseña hasheada
  const isValid = await bcrypt.compare(validated.password, user.password_hash)
  
  if (isValid) {
    const token = generateToken(user.id)
    console.log('User logged in:', { email: validated.email, userId: user.id })
    return { token }
  }
  
  throw new Error('Invalid credentials')
}

Por qué Corrige todos los problemas CRITICAL y HIGH, agrega validación de entrada y comparación de contraseña hasheada.

Deberías ver: Código actualizado, vulnerabilidades de seguridad eliminadas.


Paso 5: Revisar Nuevamente ​

Ejecuta /code-review nuevamente:

bash
/code-review

Por qué Verifica que todos los problemas estén corregidos, asegura que el código pueda hacerse commit.

Deberías ver: Informe de aprobación similar a este:

markdown
# Code Review Report

## Summary

- **Critical Issues:** 0 ✓
- **High Issues:** 0 ✓
- **Medium Issues:** 1 ⚠️
- **Low Issues:** 1 💡

## Medium Issues (Fix When Possible)

### 1. [MEDIUM] Missing JSDoc for public API
**File:** src/api/login.ts:9
**Issue:** loginUser function missing documentation
**Fix:** Add JSDoc comments

```typescript
/**
 * Authenticates a user with email and password
 * @param input - Login credentials (email, password)
 * @returns Object with JWT token
 * @throws Error if credentials invalid
 */
export async function loginUser(input: unknown) {

Low Issues (Consider Fixing) ​

2. [LOW] Add rate limiting ​

File: src/api/login.ts:9 Issue: Login endpoint lacks rate limiting Fix: Add express-rate-limit middleware

typescript
import rateLimit from 'express-rate-limit'

const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 5 // 5 attempts per window
})

app.post('/api/login', loginLimiter, loginUser)

Approval Status ​

✅ APPROVED - No CRITICAL or HIGH issues

Note: Medium and Low issues can be fixed in follow-up commits.


**Deberías ver**: Revisión aprobada, código listo para commit.

---

### Paso 6: Revisión de Seguridad Especializada (Opcional)

Si tu código involucra endpoints de API, autenticación, pagos u otras funcionalidades sensibles a seguridad, puedes llamar específicamente a security-reviewer:

```bash
/security-reviewer

Por qué security-reviewer realizará un análisis más profundo de OWASP Top 10, verificando más patrones de vulnerabilidades de seguridad.

Deberías ver: Informe detallado de revisión de seguridad, incluyendo análisis OWASP, verificación de vulnerabilidades de dependencias, recomendaciones de herramientas de seguridad, etc.


Punto de Verificación ✅ ​

Después de completar los pasos anteriores, deberías:

  • ✅ Poder ejecutar el comando /code-review
  • ✅ Entender la estructura y contenido del informe de revisión
  • ✅ Poder corregir problemas de código según el informe
  • ✅ Saber que los problemas CRITICAL y HIGH deben corregirse
  • ✅ Entender la diferencia entre code-reviewer y security-reviewer
  • ✅ Desarrollar el hábito de revisar antes de hacer commit

Advertencias Comunes ​

Error Común 1: Omitir Revisión de Código ​

Problema: Pensar que el código es simple y hacer commit directamente sin ejecutar revisión.

Consecuencia: Posibles vulnerabilidades de seguridad pasadas por alto, rechazadas por CI/CD o causando incidentes en producción.

Práctica correcta: Desarrolla el hábito de ejecutar /code-review antes de cada commit.


Error Común 2: Ignorar Problemas MEDIUM ​

Problema: Ver problemas MEDIUM y no atenderlos, acumulándolos.

Consecuencia: Calidad de código disminuye, deuda técnica se acumula, difícil de mantener posteriormente.

Práctica correcta: Aunque los problemas MEDIUM no bloquean commits, deben corregirse en un tiempo razonable.


Error Común 3: Corregir Inyección SQL Manualmente ​

Problema: Escribir escape de cadenas manualmente en lugar de usar consultas parametrizadas.

Consecuencia: Escape incompleto, aún hay riesgo de inyección SQL.

Práctica correcta: Siempre usa ORM o consultas parametrizadas, no concatenes SQL manualmente.


Error Común 4: Confundir los Dos Reviewers ​

Problema: Ejecutar solo code-reviewer para todo el código, ignorando security-reviewer.

Consecuencia: Vulnerabilidades de seguridad pueden pasarse por alto, especialmente en código relacionado con API, autenticación, pagos.

Práctica correcta:

  • Código normal: code-reviewer es suficiente
  • Código sensible a seguridad: debe ejecutar también security-reviewer

Resumen de la Lección ​

El flujo de revisión de código es una de las funcionalidades principales de Everything Claude Code:

FuncionalidadagentContenido de VerificaciónSeveridad
Revisión de Calidad de Códigocode-reviewerTamaño de funciones, manejo de errores, mejores prácticasHIGH/MEDIUM/LOW
Revisión de Seguridadsecurity-reviewerOWASP Top 10, fuga de claves, vulnerabilidades de inyecciónCRITICAL/HIGH/MEDIUM

Puntos Clave:

  1. Antes de cada commit ejecuta /code-review
  2. Problemas CRITICAL/HIGH deben corregirse antes de hacer commit
  3. Código sensible a seguridad debe pasar por security-reviewer
  4. Informe de revisión incluye ubicación detallada y sugerencias de corrección
  5. Desarrolla el hábito: Revisar → Corregir → Revisar nuevamente → Commit

Próxima Lección ​

En la próxima lección aprenderemos Automatización con Hooks.

Aprenderás:

  • Qué son los Hooks y cómo automatizar el flujo de desarrollo
  • Cómo usar más de 15 hooks de automatización
  • Cómo personalizar Hooks para adaptarse a las necesidades del proyecto
  • Escenarios de aplicación de hooks como SessionStart, SessionEnd, PreToolUse, etc.

Apéndice: Referencia de Código Fuente ​

Haz clic para ver la ubicación del código fuente

Actualizado: 2026-01-25

FuncionalidadRuta del ArchivoLínea
---------
---------
---------
---------

Constantes Clave:

  • Límite de tamaño de función: 50 líneas (code-reviewer.md:47)
  • Límite de tamaño de archivo: 800 líneas (code-reviewer.md:48)
  • Límite de profundidad de anidación: 4 niveles (code-reviewer.md:49)

Funciones Clave:

  • /code-review: Llama al code-reviewer agent para revisión de calidad de código
  • /security-reviewer: Llama al security-reviewer agent para auditoría de seguridad
  • git diff --name-only HEAD: Obtiene archivos cambiados sin commit (code-review.md:5)

Criterios de Aprobación (code-reviewer.md:90-92):

  • ✅ Approve: No CRITICAL or HIGH issues
  • ⚠️ Warning: MEDIUM issues only (can merge with caution)
  • ❌ Block: CRITICAL or HIGH issues found