Capítulo 5: Comandos Esenciales
1. ¿Qué son los Slash Commands en Claude Code?
Los slash commands son la interfaz de alto nivel de Everything Claude Code (ECC). Cuando escribes /plan "add auth" en Claude Code, no estás ejecutando un simple script: estás invocando un agente especializado con contexto, herramientas y prompt engineering pre-configurado para esa tarea específica.
Cómo funciona el sistema
Claude Code tiene un sistema de custom slash commands que vive en el directorio .claude/commands/. Cuando instalas ECC (ya sea como plugin o manualmente), este directorio se popula con archivos .md — uno por comando. Claude Code escanea esos archivos al inicio de cada sesión y los registra como comandos disponibles.
El flujo de ejecución es:
sequenceDiagram
participant U as Usuario
participant CC as Claude Code
participant FS as FileSystem
participant A as Agente
U->>CC: /plan "add Stripe payment"
CC->>FS: Lee .claude/commands/plan.md
CC->>CC: Interpola $ARGUMENTS = "add Stripe payment"
CC->>A: Lanza agente con prompt del archivo
A->>A: Ejecuta workflow: restate → breakdown → risks
A->>U: Presenta plan + espera confirmación
Dónde viven los archivos
En una instalación típica de ECC:
~/.claude/commands/ # Comandos globales (disponibles en todos los proyectos)
├── plan.md
├── tdd.md
├── verify.md
├── ...
.claude/commands/ # Comandos locales del proyecto (mayor prioridad)
├── mi-comando-custom.md
└── ...
Los comandos locales (en el directorio del proyecto) tienen prioridad sobre los globales. Esto permite sobreescribir comportamiento de ECC para proyectos específicos.
Cómo Claude los carga y ejecuta
Cuando ejecutas un slash command:
- Claude Code busca el archivo
.mdcorrespondiente en.claude/commands/ - Lee el frontmatter YAML para obtener
descriptionyallowedTools - Interpola
$ARGUMENTScon el texto que escribiste después del comando - Envía el contenido del archivo como prompt de sistema al agente
- El agente tiene acceso a las herramientas especificadas en
allowedTools - La respuesta del agente aparece en tu terminal
2. Anatomía de un Comando
Cada comando es un archivo Markdown con frontmatter YAML seguido del prompt del agente.
Estructura completa
---
description: Descripción corta que aparece en el autocompletado
allowedTools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
---
# Nombre del Comando
Eres un agente especializado en X. Tu objetivo es Y.
## Instrucciones
1. Primero, haz A con $ARGUMENTS
2. Luego, evalúa B
3. Por último, presenta C
## Formato de Output
Presenta el resultado en este formato:
...
El campo description
description: Restate requirements, assess risks, and create step-by-step plan
Esta descripción aparece en el autocompletado cuando escribes / en Claude Code. Es lo que el usuario ve antes de ejecutar el comando. Debe ser concisa y descriptiva.
El campo allowedTools
allowedTools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- WebSearch
- Task
Este campo controla qué herramientas tiene disponible el agente durante la ejecución. Por seguridad, los comandos deberían solicitar solo las herramientas que realmente necesitan:
Read,Glob,Grep— para análisis de código (solo lectura)Write,Edit— para modificar archivosBash— para ejecutar comandos del sistemaTask— para lanzar sub-agentes (usado en comandos multi-agente)WebSearch— para buscar documentación externa
El marcador $ARGUMENTS
$ARGUMENTS es el mecanismo que permite pasar texto desde el usuario al prompt del agente.
---
description: Plan feature implementation
---
Crea un plan de implementación para: $ARGUMENTS
Sigue estos pasos:
1. Restate el requerimiento
2. ...
Cuando el usuario ejecuta /plan "add Stripe payment", Claude Code reemplaza $ARGUMENTS con "add Stripe payment" antes de enviar el prompt al agente.
3. El Sistema de $ARGUMENTS
Cómo funciona exactamente
$ARGUMENTS captura todo el texto que sigue al nombre del comando en la línea de entrada:
| Entrada del usuario | Valor de $ARGUMENTS |
|---|---|
/plan "add auth" | "add auth" |
/plan add user authentication with JWT | add user authentication with JWT |
/verify quick | quick |
/verify | (cadena vacía) |
Comandos con $ARGUMENTS opcionales
Muchos comandos de ECC tienen comportamiento por defecto cuando no se pasan argumentos:
---
description: Run verification suite. Arguments: quick, full (default), pre-commit, pre-pr
---
Ejecuta la suite de verificación con modo: $ARGUMENTS
Si $ARGUMENTS está vacío, usa el modo "full" por defecto.
Modos disponibles:
- quick: solo build + types
- full: build + types + lint + tests + secrets
- pre-commit: subset optimizado para hooks
- pre-pr: suite completa con coverage report
Ejemplos de uso con $ARGUMENTS
# Argumento simple
/plan "add user authentication"
# Argumento con modo
/verify quick
/verify pre-commit
/verify pre-pr
# Argumento con contexto
/build-fix "TypeScript error in auth module"
# Sin argumento (usa default)
/tdd
/code-review
/learn
Múltiples argumentos como texto libre
$ARGUMENTS recibe el texto completo como string. Si necesitas estructurar múltiples parámetros, la convención en ECC es usar el texto natural:
/eval "coverage >= 80%, no critical errors, all types pass"
/quality-gate src/api/ strict
/prompt-optimize "explain authentication flow to a senior developer"
4. Comandos Core — Ciclo de Desarrollo
/plan
Sintaxis: /plan "descripción del feature"
Description: Restate requirements, assess risks, and create step-by-step implementation plan. WAIT for user CONFIRM before touching any code.
Descripción detallada:
El comando /plan invoca al agente planner, cuyo trabajo exclusivo es analizar y planificar — nunca escribir código. Es el punto de entrada ideal para cualquier feature nueva o refactor significativo.
El agente sigue esta secuencia:
- Restate requirements — Reformula el requerimiento con sus propias palabras para confirmar comprensión
- Explore codebase — Analiza los archivos relevantes existentes
- Break down into phases — Divide el trabajo en fases lógicas y secuenciales
- Identify dependencies — Identifica qué debe hacerse antes que qué
- Assess risks — Señala los puntos técnicos que pueden ser problemáticos
- WAIT for confirmation — Se detiene y espera tu “yes” antes de tocar cualquier archivo
Cuándo usarlo:
- Antes de implementar cualquier feature que toque más de 2-3 archivos
- Cuando el requerimiento es ambiguo y necesitas clarificarlo
- Cuando quieres asegurarte de que el LLM entendió correctamente antes de invertir tokens en implementación
Ejemplo de output del planner:
PLAN: Add Stripe Payment Processing
## Requerimiento
Implementar procesamiento de pagos con Stripe: crear PaymentIntent,
confirmar pago desde el frontend, manejar webhooks de confirmación.
## Análisis del Codebase
- src/api/payments/ — directorio vacío, aquí van los nuevos endpoints
- src/services/ — ya existe AuthService, patrón a seguir
- src/db/schema.ts — hay tabla users, necesitamos tabla payments
## Fases de Implementación
### Fase 1: Backend (estimado: 3 archivos)
- [ ] src/services/StripeService.ts — wrapper del SDK de Stripe
- [ ] src/api/payments/create-intent.ts — endpoint POST /payments/intent
- [ ] src/api/payments/webhook.ts — endpoint POST /payments/webhook
### Fase 2: Base de datos
- [ ] src/db/migrations/004_add_payments.sql
- [ ] src/db/schema.ts — agregar tabla payments
### Fase 3: Frontend
- [ ] src/components/PaymentForm.tsx — formulario con Stripe Elements
- [ ] src/hooks/usePayment.ts — hook para manejar el flujo
## Dependencias
Fase 2 debe completarse antes de Fase 1 (los endpoints necesitan la tabla).
Fase 3 depende de que Fase 1 esté funcionando.
## Riesgos
- El webhook de Stripe requiere HTTPS en desarrollo (usar ngrok o Stripe CLI)
- Las claves de Stripe deben estar en variables de entorno, no en código
- El idempotency key es crítico para evitar cobros duplicados
¿Confirmas este plan? (yes/no)
/tdd
Sintaxis: /tdd o /tdd "descripción de la funcionalidad"
Description: Enforce test-driven development workflow. Scaffold interfaces, generate tests FIRST, then implement minimal code to pass. Ensure 80%+ coverage.
Descripción detallada:
El comando /tdd implementa el ciclo clásico de Test-Driven Development con una variación importante: el agente primero define las interfaces (tipos, contratos) antes de escribir los tests. Esto garantiza que los tests reflejen el contrato real de la API.
Ciclo completo:
stateDiagram-v2
[*] --> DefineInterface : /tdd
DefineInterface --> RED : interface definida
RED --> GREEN : test falla (esperado)
GREEN --> REFACTOR : test pasa
REFACTOR --> RED : nuevo test
REFACTOR --> [*] : coverage >= 80%
state RED {
[*] --> WriteTest
WriteTest --> RunTest
RunTest --> [*] : ✗ falla
}
state GREEN {
[*] --> MinimalImplementation
MinimalImplementation --> RunTest
RunTest --> [*] : ✓ pasa
}
state REFACTOR {
[*] --> CleanCode
CleanCode --> RunAllTests
RunAllTests --> [*] : todos pasan
}
Ejemplo completo:
/tdd "UserService.createUser should validate email and hash password"
El agente:
- Define la interfaz primero:
// src/services/UserService.ts (interface)
interface CreateUserInput {
email: string;
password: string;
name: string;
}
interface CreateUserResult {
id: string;
email: string;
name: string;
createdAt: Date;
}
interface UserService {
createUser(input: CreateUserInput): Promise<CreateUserResult>;
}
- Escribe el test que FALLA (RED):
// src/services/__tests__/UserService.test.ts
describe('UserService.createUser', () => {
it('should reject invalid email', async () => {
await expect(
userService.createUser({ email: 'not-an-email', password: 'pass123', name: 'Test' })
).rejects.toThrow('Invalid email format');
});
it('should hash password before storing', async () => {
const result = await userService.createUser({
email: '[email protected]',
password: 'mypassword',
name: 'Test User'
});
// Verify the stored user has hashed password, not plaintext
const stored = await db.users.findById(result.id);
expect(stored.password).not.toBe('mypassword');
expect(stored.password).toMatch(/^\$2[aby]\$/); // bcrypt hash
});
});
- Implementación mínima para pasar (GREEN):
// src/services/UserService.ts
export class UserServiceImpl implements UserService {
async createUser(input: CreateUserInput): Promise<CreateUserResult> {
if (!isValidEmail(input.email)) {
throw new Error('Invalid email format');
}
const hashedPassword = await bcrypt.hash(input.password, 10);
return db.users.create({ ...input, password: hashedPassword });
}
}
-
Refactor (sin cambiar comportamiento, solo mejorar estructura)
-
Repite hasta alcanzar 80%+ de cobertura
Cuándo usarlo: Para cualquier funcionalidad nueva que tenga lógica de negocio clara. Especialmente valioso para validaciones, transformaciones de datos y casos de error.
/code-review
Sintaxis: /code-review o /code-review "path/to/file.ts"
Description: Review code quality, security, performance, and maintainability. Provide actionable feedback with severity levels.
Descripción detallada:
El agente de code review analiza el código en busca de problemas en cuatro dimensiones:
- Security — Inyección SQL, XSS, secrets hardcodeados, validación de inputs
- Performance — N+1 queries, re-renders innecesarios, loops O(n²)
- Maintainability — Funciones largas, acoplamiento excesivo, nombres confusos
- Quality — Cobertura de tests, manejo de errores, tipos correctos
Formato del output:
CODE REVIEW REPORT
==================
## Crítico (bloquea el merge)
- [SECURITY] src/api/users.ts:45 — SQL query construida con string concatenation
Riesgo: SQL injection. Usar parámetros preparados.
- [SECURITY] src/config/database.ts:12 — Password hardcodeado en el código
Riesgo: Exposición de credenciales. Mover a variables de entorno.
## Alto (debe resolverse)
- [PERFORMANCE] src/services/UserService.ts:78 — N+1 query en bucle
Por cada user se ejecuta una query adicional. Usar JOIN o include.
## Medio (recomendado)
- [MAINTAINABILITY] src/api/auth.ts:120-180 — Función de 60 líneas
Extraer validateToken() y refreshSession() como funciones separadas.
## Bajo (sugerencia)
- [QUALITY] src/utils/email.ts — Sin tests
La función validateEmail() no tiene cobertura de tests.
## Resumen
- 2 críticos, 1 alto, 1 medio, 1 bajo
- Bloquea PR: Sí (por los 2 críticos)
Cuándo usarlo: Antes de abrir un PR, después de una sesión de pair programming con Claude, o cuando quieres una segunda opinión sobre un módulo específico.
/verify
Sintaxis: /verify o /verify quick o /verify pre-commit o /verify pre-pr
Description: Run full verification suite: build, types, lint, tests, secrets scan, log analysis. Report pass/fail with coverage.
Las 6 fases del verify:
flowchart LR
A[Build] --> B[Types]
B --> C[Lint]
C --> D[Tests]
D --> E[Secrets]
E --> F[Logs]
F --> G{Resultado}
G -->|todo OK| H[✓ Ready for PR]
G -->|falló| I[✗ Report detallado]
Modos disponibles:
| Modo | Fases ejecutadas | Uso típico |
|---|---|---|
quick | Build + Types | Feedback rápido durante desarrollo |
full (default) | Todas las 6 fases | Antes de commit importante |
pre-commit | Build + Types + Lint + Secrets | En git hook pre-commit |
pre-pr | Todas las 6 fases + reporte de cobertura | Antes de abrir PR |
Ejemplo de output completo:
VERIFICATION REPORT
===================
Mode: full | 2024-12-17 14:32:11
[1/6] BUILD ................... ✓ PASS (12.3s)
[2/6] TYPES ................... ✓ PASS (3.1s)
[3/6] LINT .................... ✓ PASS (2.8s) — 0 errors, 2 warnings
[4/6] TESTS ................... ✓ PASS (8.4s)
Unit: 42/42 passed
Integration: 8/8 passed
Coverage: 87% (threshold: 80%) ✓
[5/6] SECRETS ................. ✓ PASS — No secrets detected
[6/6] LOGS .................... ⚠ WARN — 3 console.log() en producción
OVERALL: ✓ PASS (26.6s)
Warnings: 1 (non-blocking)
Ready for PR: YES
Cómo interpretar el reporte:
✓ PASS— La fase pasó completamente⚠ WARN— Pasó pero con advertencias no bloqueantes✗ FAIL— Falló, el overall será FAIL aunque otras pasenReady for PR: NO— Al menos una fase crítica falló
/build-fix
Sintaxis: /build-fix o /build-fix "descripción del error"
Description: Analyze build errors, identify root cause, and fix systematically. Run build again to confirm fix.
Descripción detallada:
El agente de build-fix ejecuta el build, analiza el output de error, identifica la causa raíz y aplica la corrección. A diferencia de simplemente “arreglar lo que dice el mensaje de error”, este agente sigue una estrategia:
- Captura el output completo del build
- Agrupa errores relacionados (un solo cambio puede resolver múltiples errores)
- Identifica el error más profundo en la cadena de dependencias
- Aplica la corrección
- Ejecuta el build nuevamente para confirmar
- Repite si hay más errores
Ejemplo de sesión:
BUILD-FIX SESSION
=================
Ejecutando build... ✗ FAIL
Errores encontrados (12 errores en 3 archivos):
- src/services/AuthService.ts:15 — Property 'userId' does not exist on type 'JWTPayload'
- src/services/AuthService.ts:23 — Property 'userId' does not exist on type 'JWTPayload'
- src/api/users.ts:8 — ...misma causa raíz
Análisis: El tipo JWTPayload fue refactorizado pero no se actualizó la interfaz.
Causa raíz: src/types/auth.ts — falta el campo userId
Aplicando fix en src/types/auth.ts...
Ejecutando build nuevamente... ✓ PASS (0 errores)
Cuándo invocarlo: Cuando tienes errores de build y no quieres invertir tiempo debuggeando manualmente. Especialmente útil después de upgrades de dependencias o refactors grandes.
/e2e
Sintaxis: /e2e o /e2e "flujo a testear"
Description: Generate E2E tests with Playwright using Page Object Model. Cover happy path and critical error scenarios.
Descripción detallada:
El agente de e2e analiza tu aplicación y genera tests de extremo a extremo con Playwright, usando el patrón Page Object Model (POM) para maintainability.
Page Object Model generado:
// tests/pages/LoginPage.ts — Page Object
export class LoginPage {
constructor(private page: Page) {}
async goto() {
await this.page.goto('/login');
}
async fillEmail(email: string) {
await this.page.fill('[data-testid="email-input"]', email);
}
async fillPassword(password: string) {
await this.page.fill('[data-testid="password-input"]', password);
}
async submit() {
await this.page.click('[data-testid="login-button"]');
}
async getErrorMessage() {
return this.page.textContent('[data-testid="error-message"]');
}
}
// tests/auth.spec.ts — Test con POM
import { LoginPage } from './pages/LoginPage';
test.describe('Authentication', () => {
test('happy path: valid credentials redirect to dashboard', async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.goto();
await loginPage.fillEmail('[email protected]');
await loginPage.fillPassword('validpassword');
await loginPage.submit();
await expect(page).toHaveURL('/dashboard');
});
test('error path: invalid credentials show error', async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.goto();
await loginPage.fillEmail('[email protected]');
await loginPage.fillPassword('wrongpassword');
await loginPage.submit();
expect(await loginPage.getErrorMessage()).toContain('Invalid credentials');
});
});
/refactor-clean
Sintaxis: /refactor-clean o /refactor-clean "path/"
Description: Remove dead code, unused imports, duplicate logic, and stale comments. Preserve all functionality.
Qué detecta y limpia:
- Dead code — Funciones y variables declaradas pero nunca usadas
- Unused imports —
importstatements que no se utilizan - Duplicate logic — Código idéntico o casi idéntico en múltiples lugares
- Stale comments — Comentarios
// TODOviejos, código comentado - Magic numbers — Números hardcodeados sin constante nombrada
- God functions — Funciones que hacen demasiadas cosas (>30 líneas)
Ejemplo de output:
REFACTOR-CLEAN REPORT
=====================
Archivos analizados: 47
Archivos modificados: 8
Cambios aplicados:
- src/utils/helpers.ts — Eliminadas 3 funciones sin uso (formatDate, parseQuery, sleep)
- src/api/users.ts — Removidos 5 imports sin usar
- src/services/AuthService.ts — Extraída función validateToken() (líneas 45-78)
- src/components/UserCard.tsx — Eliminado bloque de código comentado (líneas 23-41)
Líneas eliminadas: 127
Líneas refactorizadas: 34
Funcionalidad preservada: ✓ (todos los tests pasan)
5. Comandos de Calidad y Verificación
/quality-gate
Sintaxis: /quality-gate o /quality-gate "src/api/" o /quality-gate strict
Description: Run quality checks against configurable thresholds. Block or warn based on coverage, complexity, duplication.
Checks que ejecuta:
| Check | Threshold default | Configurable |
|---|---|---|
| Test coverage | >= 80% | Sí |
| Cyclomatic complexity | <= 10 por función | Sí |
| Code duplication | <= 5% | Sí |
| Max function length | <= 30 líneas | Sí |
| Max file length | <= 150 líneas | Sí |
| TypeScript strict mode | habilitado | Sí |
Configuración de thresholds (en .claude/quality-gate.json):
{
"coverage": { "min": 80, "block": true },
"complexity": { "max": 10, "block": false },
"duplication": { "max": 5, "block": true },
"functionLength": { "max": 30, "block": false },
"fileLength": { "max": 150, "block": false }
}
Output:
QUALITY GATE REPORT
===================
Mode: default | Path: src/
Coverage: 87% ✓ (min: 80%)
Complexity: Avg 4.2, Max 12 ⚠ (1 función supera 10)
Duplication: 2.3% ✓ (max: 5%)
Function length: Max 28 líneas ✓ (max: 30)
File length: Max 143 líneas ✓ (max: 150)
RESULT: ✓ PASS (1 warning, 0 blocking failures)
/test-coverage
Sintaxis: /test-coverage o /test-coverage "src/services/"
Description: Analyze test coverage, identify untested paths, and generate missing tests for critical code.
Descripción detallada:
El agente analiza el reporte de cobertura generado por tu test runner (Jest, Vitest, etc.) e identifica:
- Líneas sin cobertura — Código que nunca se ejecuta en los tests
- Branches sin cobertura — Condiciones if/else donde solo se testea un lado
- Funciones sin tests — Funciones exportadas sin ningún test
- Cobertura por módulo — Desglosa la cobertura por directorio/archivo
Output de análisis:
TEST COVERAGE ANALYSIS
======================
Global: 87% lines | 82% branches | 91% functions | 87% statements
Módulos bajo threshold (80%):
- src/services/PaymentService.ts — 45% (crítico)
- src/utils/validation.ts — 71% (advertencia)
Top 5 funciones sin tests:
1. PaymentService.handleWebhook() — 0 tests
2. PaymentService.refundPayment() — 0 tests
3. validation.validateCreditCard() — 0 tests
4. validation.sanitizeAmount() — 0 tests
5. AuthService.revokeAllTokens() — 1 test (solo happy path)
Generando tests para funciones críticas...
Luego el agente genera los tests faltantes para las funciones identificadas.
/checkpoint
Sintaxis: /checkpoint o /checkpoint "nombre del checkpoint"
Description: Save current verification state, git status, and test results. Create restoration point.
Qué guarda:
Un checkpoint guarda:
- Estado del git (hash del commit actual, archivos modificados)
- Resultado de la última ejecución de
/verify - Lista de tests pasando/fallando
- Notas de la sesión
- Timestamp
Archivo generado (.claude/checkpoints/checkpoint-{timestamp}.json):
{
"timestamp": "2024-12-17T14:32:11Z",
"name": "before-payment-refactor",
"git": {
"commit": "abc123",
"branch": "feature/payments",
"dirty": false
},
"verification": {
"build": "pass",
"types": "pass",
"lint": "pass",
"tests": { "passed": 50, "failed": 0, "coverage": 87 },
"secrets": "pass"
},
"notes": "Estado estable antes de refactorear PaymentService"
}
Cómo restaurar: El checkpoint no hace rollback del código (para eso está git), pero te da contexto exacto del estado en ese momento para comparación.
/eval
Sintaxis: /eval "criterios de éxito"
Description: Evaluate current state against success criteria. Support pass@k and threshold-based evaluation.
Framework de evaluación:
El agente de eval soporta dos modos de evaluación:
Threshold-based (criterios concretos):
/eval "coverage >= 80%, no TypeScript errors, no critical security issues, all tests pass"
EVALUATION REPORT
=================
Criterios evaluados:
✓ coverage >= 80% — Actual: 87% [PASS]
✓ no TypeScript errors — Actual: 0 errores [PASS]
✗ no critical security — Encontrado: 1 SQL injection en users.ts [FAIL]
✓ all tests pass — 50/50 pasando [PASS]
RESULTADO: FAIL (1/4 criterios falló)
Bloqueante: SQL injection debe resolverse antes de continuar
pass@k (para evaluar prompts y generación de código):
/eval "pass@3: generated code compiles and passes unit tests"
El agente ejecuta el código generado 3 veces y reporta cuántas veces pasó todos los criterios.
/prompt-optimize
Sintaxis: /prompt-optimize "prompt a optimizar"
Description: Analyze and optimize a prompt for clarity, token efficiency, and better model response quality.
Ejemplo de antes/después:
Antes:
/prompt-optimize "can you please look at this code and tell me if there are any
problems with it and maybe suggest some improvements if you think that would be
helpful and also let me know if the tests look good thanks"
Después (output del agente):
PROMPT OPTIMIZATION
===================
Original (47 palabras, estimado ~60 tokens):
"can you please look at this code and tell me if there are any problems..."
Problemas identificados:
- Lenguaje cortés redundante ("can you please", "thanks")
- Múltiples solicitudes vagas en una sola oración
- Falta de contexto sobre qué código
Versión optimizada (18 palabras, estimado ~23 tokens — 62% reducción):
"Review this code: identify security issues, performance problems, and test coverage gaps."
Mejoras:
- 62% menos tokens
- Tres tareas específicas y medibles
- Tono directo apropiado para LLM
- Resultado esperado claramente definido
6. Comandos de Aprendizaje e Instincts
/learn
Sintaxis: /learn
Description: Analyze current session to extract reusable patterns, conventions, and decisions. Save as instincts.
Qué analiza:
El agente de /learn revisa:
- El historial de la sesión actual
- Los archivos que se modificaron
- Los patrones de código que se aplicaron
- Las decisiones de arquitectura tomadas
- Los errores que se cometieron y cómo se resolvieron
Formato del instinct guardado (.claude/instincts/instinct-{timestamp}.json):
{
"id": "inst-20241217-001",
"source": "session-2024-12-17",
"confidence": 0.85,
"category": "error-handling",
"pattern": {
"trigger": "async function that calls external API",
"convention": "Wrap in try-catch, log error with context, return Result type",
"example": "async function fetchUser(id: string): Promise<Result<User, ApiError>>",
"antipattern": "Throwing raw errors without context from async boundaries"
},
"tags": ["typescript", "api", "error-handling"],
"appliedIn": ["src/services/UserService.ts", "src/api/payments.ts"]
}
/learn-eval
Sintaxis: /learn-eval
Description: Extract patterns from session AND evaluate their quality before saving. Higher confidence threshold.
Diferencia con /learn:
/learn | /learn-eval | |
|---|---|---|
| Extrae patrones | Sí | Sí |
| Evalúa calidad | No | Sí |
| Threshold de confianza | 0.6 | 0.8 |
| Descarta patrones dudosos | No | Sí |
| Tiempo de ejecución | Rápido | Más lento |
Qué evalúa extra:
- ¿El patrón es aplicable en más de un contexto?
- ¿Es contradictorio con instincts existentes?
- ¿La evidencia de la sesión es suficiente para generalizarlo?
- ¿El patrón mejora o degrada la mantenibilidad?
Cuándo usar /learn-eval vs /learn:
/learn— Al final de una sesión de trabajo normal, para capturar todo rápidamente/learn-eval— Cuando has hecho algo particularmente interesante y quieres que el patrón tenga alta calidad antes de guardarlo
/instinct-status
Sintaxis: /instinct-status
Description: Show all learned instincts with confidence scores, usage frequency, and health status.
Formato del output:
INSTINCT STATUS REPORT
======================
Total instincts: 23
Avg confidence: 0.81
Por categoría:
error-handling [8 instincts] avg: 0.87 ████████░░
typescript [6 instincts] avg: 0.79 ███████░░░
testing [5 instincts] avg: 0.83 ████████░░
architecture [4 instincts] avg: 0.76 ███████░░░
Top instincts por confianza:
1. inst-20241217-003 [0.97] — Use Result type for async errors
Usado: 12 veces | Última vez: hace 2 días
2. inst-20241215-001 [0.93] — Validate inputs at API boundary
Usado: 8 veces | Última vez: hace 5 días
3. inst-20241210-007 [0.91] — Extract domain logic from controllers
Usado: 6 veces | Última vez: hace 1 semana
Instincts con baja confianza (candidatos a revisar):
- inst-20241201-002 [0.41] — Use global error handler
(conflicta con inst-20241217-003)
Cómo interpretar la confianza:
>= 0.9— Muy confiable, aplicar automáticamente0.7-0.9— Confiable, aplicar con consideración del contexto0.5-0.7— Moderado, revisar antes de aplicar< 0.5— Bajo, candidato a revisión o eliminación
/instinct-import
Sintaxis: /instinct-import "path/to/instincts.json" o /instinct-import "@username"
Description: Import instincts from a JSON file or shared profile. Merge with existing, resolving conflicts.
Formato JSON de importación:
{
"version": "1.0",
"author": "senior-dev",
"instincts": [
{
"id": "ext-001",
"category": "security",
"confidence": 0.95,
"pattern": {
"trigger": "user input used in database query",
"convention": "Always use parameterized queries, never string concatenation",
"antipattern": "db.query(`SELECT * FROM users WHERE id = ${userId}`)"
},
"tags": ["security", "sql", "injection"]
}
]
}
Proceso de merge:
- Valida el formato del archivo
- Verifica que no haya conflictos con instincts existentes
- Si hay conflictos, pregunta cómo resolverlos (conservar existente, conservar nuevo, merge)
- Ajusta la confianza según la fuente (instincts externos empiezan con 0.6 de confianza)
- Importa y reporta
/instinct-export
Sintaxis: /instinct-export o /instinct-export "path/output.json"
Description: Export all instincts above confidence threshold to a shareable JSON file.
Qué exporta: Por defecto, exporta todos los instincts con confianza >= 0.7. Genera el mismo formato JSON que acepta /instinct-import para compartir entre equipos.
/evolve
Sintaxis: /evolve o /evolve "categoria"
Description: Promote high-confidence instincts into reusable skills. Analyze patterns and generate skill files.
Cuándo evolucionar instincts a skills:
| Condición | Descripción |
|---|---|
| Instinct con confianza >= 0.9 | Alta confianza acumulada |
| Instinct usado 10+ veces | Patrón frecuente y validado |
| Grupo de instincts relacionados | Varios instincts sobre el mismo tema |
| Instinct que requiere tool calls | Necesita herramientas para aplicarse |
Diferencia entre instinct y skill:
- Instinct — Patrón de conocimiento pasivo (guía al modelo)
- Skill — Workflow activo con herramientas (ejecuta acciones)
7. Comandos de Multi-Agente
/orchestrate
Sintaxis: /orchestrate "tarea compleja"
Description: Coordinate multiple specialized agents to complete a complex task. Assign subtasks and synthesize results.
Descripción detallada:
/orchestrate es el comando maestro de multi-agente. Analiza la tarea, la descompone en subtareas especializadas, lanza agentes paralelos para cada una y sintetiza los resultados.
flowchart TD
U[/orchestrate "implementar auth completo"/] --> O[Orchestrator]
O --> A1[Agente Backend\nJWT + endpoints]
O --> A2[Agente Frontend\nLogin form + hooks]
O --> A3[Agente DB\nSchema + migrations]
A1 --> S[Synthesizer]
A2 --> S
A3 --> S
S --> R[Resultado integrado]
Cuándo usarlo: Para tareas que abarcan múltiples partes del stack y pueden trabajarse en paralelo. El orchestrator gestiona las dependencias y asegura que los resultados sean coherentes entre sí.
/multi-plan
Sintaxis: /multi-plan "feature a planificar"
Description: Create implementation plan using multiple AI models for diverse perspectives. Synthesize into consensus plan.
Descripción detallada:
Lanza el mismo prompt de planificación a múltiples modelos (Claude Opus, Claude Sonnet, etc.) y sintetiza sus perspectivas en un plan consensuado. Útil para features donde quieres múltiples perspectivas antes de comprometerte con una arquitectura.
/multi-execute
Sintaxis: /multi-execute "plan a ejecutar"
Description: Execute a multi-phase plan with specialized agents per phase. Handle dependencies and rollback on failure.
Descripción detallada:
A diferencia de /orchestrate (que descompone la tarea en paralelo), /multi-execute sigue un plan con dependencias explícitas:
- Lee el plan (puede ser el output de
/multi-plano/plan) - Identifica las dependencias entre fases
- Ejecuta fases independientes en paralelo
- Bloquea fases dependientes hasta que sus prerequisitos completen
- Si una fase falla, ejecuta rollback controlado
Manejo de dependencias:
flowchart LR
DB[Fase 1: DB Schema] --> BE[Fase 2: Backend API]
BE --> FE[Fase 3: Frontend]
BE --> T[Fase 2b: Tests API]
FE --> E2E[Fase 4: E2E Tests]
T --> E2E
/multi-backend
Sintaxis: /multi-backend "cambio a implementar en todos los servicios"
Description: Orchestrate backend changes across multiple services. Handle service discovery and API contracts.
Uso típico: Cuando tienes una arquitectura de microservicios y necesitas propagar un cambio a través de múltiples servicios (por ejemplo, agregar un campo a la API compartida).
/multi-frontend
Sintaxis: /multi-frontend "componente o feature"
Description: Orchestrate frontend changes: component library, applications, and storybook. Keep design system in sync.
Uso típico: Cuando tienes múltiples aplicaciones frontend que comparten un design system y necesitas actualizar un componente en todos.
/multi-workflow
Sintaxis: /multi-workflow "workflow a ejecutar"
Description: Execute a complex workflow across multiple domains. General-purpose multi-agent coordinator.
Descripción detallada:
El más general de los comandos multi-agente. No está especializado en backend o frontend, sino que puede coordinar cualquier tipo de agentes especializados para workflows complejos.
8. Comandos de Session Management
/sessions
Sintaxis: /sessions o /sessions list o /sessions show {id}
Description: Manage session history. List, inspect, and restore previous work sessions.
Output de /sessions list:
SESSIONS
========
ID Date Duration Tasks Status
sess-20241217 2024-12-17 14:00 2h 15m 8 completed
sess-20241216 2024-12-16 10:30 45m 3 completed
sess-20241215 2024-12-15 09:00 3h 40m 12 completed (checkpoint)
sess-20241214 2024-12-14 16:00 1h 20m 5 interrupted
Output de /sessions show sess-20241217:
SESSION: sess-20241217
======================
Date: 2024-12-17 14:00 - 16:15
Duration: 2h 15m
Tasks completadas:
1. /plan "add Stripe payment" — DONE
2. /tdd — DONE (PaymentService, 8 tests)
3. /build-fix — DONE (3 errores TypeScript)
4. /code-review — DONE (2 issues encontrados)
5. /verify — DONE (87% coverage, all pass)
Archivos modificados: 12
Tests generados: 8
Instincts aprendidos: 3
/save-session
Sintaxis: /save-session o /save-session "nombre descriptivo"
Description: Save current session state to disk for later resumption.
Qué guarda y dónde:
Guarda en .claude/sessions/{id}/:
context.json— Estado del contexto de la conversacióntasks.json— Lista de tareas completadas e incompletasfiles-modified.json— Lista de archivos modificados en la sesióninstincts-learned.json— Instincts generados en esta sesiónnotes.md— Notas y observaciones
/resume-session
Sintaxis: /resume-session o /resume-session {session-id}
Description: Resume a previously saved session. Restore context and continue from where you left off.
Cómo continúa el trabajo anterior:
- Carga el context guardado de la sesión anterior
- Presenta un resumen de qué se hizo y qué quedó pendiente
- Sugiere el próximo paso basándose en las tareas incompletas
- Restaura las preferencias y configuraciones de la sesión
/projects
Sintaxis: /projects o /projects list o /projects switch {nombre}
Description: Manage multiple project contexts. Switch between projects with different configurations.
Caso de uso: Cuando trabajas en múltiples proyectos y cada uno tiene configuraciones diferentes de ECC, este comando permite cambiar de contexto sin confundir configuraciones.
9. Comandos de Autonomous Loops (v1.8)
/loop-start
Sintaxis: /loop-start "objetivo" o /loop-start --type=pr "descripción del PR"
Description: Start an autonomous execution loop. Types: sequential, pr-loop, dag. Define stop conditions.
Tipos de loops:
Sequential — Ejecuta una secuencia de pasos hasta que se cumpla una condición:
/loop-start --type=sequential "keep running tests until all pass"
PR Loop — Ciclo de code review y fix hasta que el PR esté listo:
/loop-start --type=pr "implement auth feature and get it PR-ready"
# El loop ejecuta: code → test → review → fix → test → review → ...
# Se detiene cuando /code-review no encuentra issues críticos
DAG — Ejecuta un grafo dirigido acíclico de tareas con dependencias:
/loop-start --type=dag "implement full payment feature"
# Define el DAG y lo ejecuta respetando dependencias
Condiciones de parada:
- Todas las tareas completadas
- Se alcanzó el número máximo de iteraciones
- Un paso crítico falló
- El agente no puede continuar (pide confirmación humana)
/loop-status
Sintaxis: /loop-status
Description: Show current loop status, completed steps, remaining tasks, and checkpoint history.
Output:
LOOP STATUS
===========
Loop ID: loop-20241217-001
Type: pr-loop
Objetivo: implement auth feature and get it PR-ready
Estado: RUNNING
Iteración: 3/10 (max)
Completado:
✓ Iteration 1: Initial implementation
- AuthService.ts creado
- 4 tests pasando
- /code-review: 2 issues encontrados
✓ Iteration 2: Fix issues from review
- SQL injection fixed
- Input validation added
- /code-review: 0 issues críticos
En progreso:
→ Iteration 3: Final verification
- /verify en ejecución...
Próximo checkpoint: al completar iteración 3
Condición de parada: /code-review sin issues críticos ✓ (alcanzada)
/harness-audit
Sintaxis: /harness-audit
Description: Audit the ECC harness configuration: loop settings, model routing, safety controls, and risk posture.
Qué evalúa:
- Loop configuration — Límites de iteraciones, condiciones de parada
- Model routing — Si los modelos están correctamente configurados para cada tipo de tarea
- Safety controls — Si hay controles humanos en los puntos críticos
- Resource limits — Límites de tokens, tiempo, y costo
- Risk posture — Evaluación general del riesgo de la configuración
Output:
HARNESS AUDIT REPORT
====================
Loop Configuration: ✓ OK
- Max iterations: 10 (razonable)
- Stop conditions: definidas y verificables
- Checkpoint interval: cada 2 iteraciones
Model Routing: ✓ OK
- Complex tasks → Claude Opus
- Simple tasks → Claude Haiku
- Thresholds configurados
Safety Controls: ⚠ WARNING
- Falta confirmación humana antes de writes a producción
- Recomendado: agregar human-in-the-loop para cambios en DB
Resource Limits: ✓ OK
- Max tokens por loop: 100k
- Timeout: 30 minutos
RISK POSTURE: MEDIUM
Acción requerida: Configurar human-in-the-loop para cambios en DB
/model-route
Sintaxis: /model-route "descripción de tarea" o /model-route --analyze
Description: Route a task to the optimal model based on complexity and budget. Show routing decision with reasoning.
Criterios de ruteo:
| Complejidad | Modelo sugerido | Uso típico |
|---|---|---|
| Alta (score > 7) | Claude Opus | Arquitectura, diseño, análisis complejo |
| Media (score 4-7) | Claude Sonnet | Implementación, code review, TDD |
| Baja (score < 4) | Claude Haiku | Formateo, documentación, tareas simples |
Cálculo del score de complejidad:
- Número de archivos afectados (+1 por archivo)
- Número de dominios involucrados (+2 por dominio)
- Ambigüedad del requerimiento (+1-3)
- Riesgo de seguridad (+2 si hay implicaciones de seguridad)
- Novedad del código (+1 si es código nuevo sin patrones existentes)
Output de /model-route --analyze:
MODEL ROUTING ANALYSIS
======================
Tarea: "Implement OAuth2 flow with Google"
Score de complejidad: 8/10
+2 múltiples dominios (auth, API, DB)
+2 seguridad crítica
+2 integración externa (Google API)
+1 estado complejo (tokens, refresh)
+1 código nuevo sin patrones existentes
Recomendación: Claude Opus
Razón: Tarea de alta complejidad con implicaciones de seguridad
Costo estimado:
Claude Opus: ~$0.18 (estimado)
Claude Sonnet: ~$0.06 (50% más barato, suficiente para esta tarea)
¿Continuar con Opus o usar Sonnet? (opus/sonnet)
10. Comandos de Skills
/skill-create
Sintaxis: /skill-create o /skill-create "nombre-del-skill"
Description: Analyze git history to extract recurring patterns and generate a reusable skill file.
Cómo funciona:
- Analiza el git log de los últimos 30-90 días
- Identifica commits relacionados con operaciones recurrentes
- Agrupa commits por patrón de cambio
- Genera un archivo de skill que captura ese patrón
- Guarda en
.claude/skills/
Ejemplo: Si el agente detecta que cada vez que agregas un endpoint haces los mismos pasos (crear handler, agregar route, crear test, actualizar docs), genera un skill add-api-endpoint que automatiza esos pasos.
Output:
SKILL CREATION ANALYSIS
=======================
Git history analizado: 90 días, 247 commits
Patrones detectados:
1. "Add API endpoint" — 23 ocurrencias
Pasos identificados: handler → route → test → swagger
Confianza: 0.91
2. "Add database migration" — 15 ocurrencias
Pasos identificados: migration → seed → update schema types
Confianza: 0.87
3. "Fix TypeScript error" — 8 ocurrencias
Pasos identificados: identify type → fix → run typecheck → test
Confianza: 0.73
Generando skills...
✓ .claude/skills/add-api-endpoint.md — creado
✓ .claude/skills/add-db-migration.md — creado
/skill-health
Sintaxis: /skill-health
Description: Verify all installed skills are valid, up-to-date, and compatible with current codebase.
Qué verifica:
- Que cada skill tenga frontmatter válido
- Que los archivos referenciados en el skill aún existen
- Que los comandos del skill sean válidos en el entorno actual
- Que no haya conflictos entre skills
Output:
SKILL HEALTH REPORT
===================
Skills instalados: 12
Skills verificados: 12
Estado:
✓ add-api-endpoint.md — saludable
✓ add-db-migration.md — saludable
⚠ deploy-to-aws.md — ADVERTENCIA: referencia a .env.aws que no existe
✗ run-integration-tests.md — ERROR: comando 'jest --integration' ya no existe
Sugerencia: actualizar a 'vitest run --mode=integration'
Resumen: 10 saludables, 1 advertencia, 1 error
/rules-distill
Sintaxis: /rules-distill
Description: Analyze codebase patterns and session history. Distill into CLAUDE.md rules for consistent behavior.
Qué analiza:
El agente analiza:
- Los patrones de código más frecuentes en el repositorio
- Las correcciones que has hecho repetidamente en sesiones anteriores
- Las preferencias que has expresado explícitamente
- Los instincts de alta confianza que tienes guardados
Output (propuesta de reglas para CLAUDE.md):
RULES DISTILLATION
==================
Basado en análisis de 90 días de historial y 23 sesiones:
Nuevas reglas propuestas para CLAUDE.md:
### Patrones de Código
- Siempre usar Result<T, E> para funciones async que llaman APIs externas
- Los controllers no deben contener lógica de negocio
- Cada endpoint debe tener al menos un test de integración
### Convenciones de Nombres
- Servicios: sufijo Service (UserService, PaymentService)
- Repositorios: sufijo Repository (UserRepository)
- Tests: mismo nombre que el archivo + .test.ts
### Seguridad
- Validar todos los inputs en la capa API
- Nunca loggear contraseñas, tokens, o datos PII
¿Agregar estas reglas a CLAUDE.md? (yes/edit/no)
11. Comandos Language-Specific
Go
/go-review
Sintaxis: /go-review o /go-review "./pkg/..."
Description: Review Go code: idiomatic patterns, error handling, goroutine safety, interface design.
Analiza el código Go buscando:
- Manejo de errores no idiomático (panic en lugar de retornar error)
- Goroutines sin sincronización adecuada (race conditions)
- Interfaces sobrediseñadas
- Context no propagado correctamente
- Uso incorrecto de defer
- Fugas de goroutines
/go-test
Sintaxis: /go-test
Description: Run TDD workflow for Go: table-driven tests, benchmarks, and subtests. Use testing.T conventions.
Implementa TDD con el estilo idiomático de Go:
- Tests table-driven (
[]struct{ input, expected }) - Subtests con
t.Run() - Benchmarks con
b.ResetTimer() - Mocks con interfaces en lugar de librerías pesadas
/go-build
Sintaxis: /go-build
Description: Fix Go build errors: imports, missing types, interface compliance.
Especializado en errores comunes de Go:
- Import cycles
- Interfaces no implementadas
- Tipos faltantes
- Errores de CGO
Python
/python-review
Sintaxis: /python-review o /python-review "src/"
Description: Review Python code: PEP 8, type hints, security (bandit), and performance (memory, CPU).
Analiza:
- Conformidad con PEP 8
- Uso de type hints (mypy compatible)
- Issues de seguridad (equivalente a bandit)
- Performance (operaciones O(n²), uso innecesario de listas cuando se necesita generador)
- Manejo de excepciones muy amplio (
except Exception:)
C++
/cpp-review
Sintaxis: /cpp-review
Description: Review C++ code: memory management, RAII, modern C++ idioms (C++17/20), undefined behavior.
Analiza:
- Memory leaks y dangling pointers
- Uso de RAII y smart pointers
- Idioms modernos de C++17/20
- Comportamiento indefinido
- Thread safety
/cpp-test
Sintaxis: /cpp-test
Description: Generate C++ tests with Google Test / Catch2. Cover edge cases and undefined behavior.
/cpp-build
Sintaxis: /cpp-build
Description: Fix C++ build errors: CMake, compiler flags, linker errors, header dependencies.
Kotlin
/kotlin-review
Sintaxis: /kotlin-review
Description: Review Kotlin code: nullability, coroutines, data classes, extension functions, Android idioms.
/kotlin-test
Sintaxis: /kotlin-test
Description: Generate Kotlin tests with JUnit5/Kotest. Handle coroutines testing with TestCoroutineDispatcher.
/kotlin-build
Sintaxis: /kotlin-build
Description: Fix Kotlin/Gradle build errors: dependency conflicts, kapt issues, AGP compatibility.
Rust
/rust-review
Sintaxis: /rust-review
Description: Review Rust code: ownership, borrowing, lifetimes, unsafe blocks, and idiomatic patterns.
Analiza:
- Correctitud del ownership y borrowing
- Lifetimes innecesariamente complejos
- Uso justificado de
unsafe - Idioms de Rust (usar
?en lugar dematchpara errors, usar iteradores) - Clippy warnings
/rust-test
Sintaxis: /rust-test
Description: Generate Rust tests: unit tests in-module, integration tests in tests/, doctests, property tests.
/rust-build
Sintaxis: /rust-build
Description: Fix Rust build errors: borrow checker, lifetime annotations, trait bounds, cargo issues.
Java/Gradle
/gradle-build
Sintaxis: /gradle-build
Description: Fix Gradle build errors: dependency resolution, task configuration, plugin compatibility.
Especializado en errores del ecosistema Gradle:
- Conflictos de versiones de dependencias
- Plugin incompatibilities
- Task configuration avoidance
- Build cache issues
12. Comandos de Documentación
/update-docs
Sintaxis: /update-docs o /update-docs "src/services/"
Description: Update documentation to reflect current code state. Fix outdated examples and broken references.
Qué archivos actualiza:
README.md— Actualiza el setup, comandos, y arquitectura si cambiaronCONTRIBUTING.md— Actualiza el proceso de desarrollo si cambió- Comentarios JSDoc/TSDoc en el código — Actualiza cuando la firma de la función cambió
openapi.yaml/swagger.json— Si los endpoints cambiaron- Archivos de docs específicos del proyecto (
docs/,documentation/)
/update-codemaps
Sintaxis: /update-codemaps
Description: Regenerate codebase maps (architecture, dependencies, API surface). Used for context optimization.
Qué son los codemaps:
Los codemaps son archivos generados que describen la estructura del proyecto de forma compacta para que Claude pueda entender la arquitectura sin necesitar leer todos los archivos. Se guardan en .claude/codemaps/:
.claude/codemaps/
├── architecture.md # Vista de alto nivel de la arquitectura
├── dependencies.json # Grafo de dependencias entre módulos
├── api-surface.md # Todas las interfaces públicas
└── file-index.json # Índice de todos los archivos con descripción
Cuándo actualizar: Después de refactors grandes, cuando agregas nuevos módulos, o cuando el agente parece confundido sobre la estructura del proyecto.
/docs
Sintaxis: /docs "pregunta o tema"
Description: Search and present relevant documentation from the codebase and external sources.
Cómo funciona:
- Busca en la documentación interna del proyecto (README, docs/, comentarios)
- Busca en los codemaps generados
- Si no encuentra suficiente información interna, puede buscar documentación externa
- Presenta la información relevante de forma estructurada
13. Comandos de Configuración
/setup-pm
Sintaxis: /setup-pm
Description: Detect and configure package manager (npm, yarn, pnpm, bun). Update scripts and configuration.
Detección automática:
flowchart TD
A[/setup-pm] --> B{bun.lockb existe?}
B -->|Sí| C[Configura Bun]
B -->|No| D{pnpm-lock.yaml?}
D -->|Sí| E[Configura pnpm]
D -->|No| F{yarn.lock?}
F -->|Sí| G[Configura Yarn]
F -->|No| H[Configura npm]
Actualiza .claude/config.json con el package manager detectado para que todos los comandos que ejecutan install, run, etc. usen el correcto.
/context-budget
Sintaxis: /context-budget o /context-budget --analyze
Description: Analyze and optimize context window usage. Identify what's consuming tokens and suggest optimizations.
Descripción detallada:
El context window de Claude es limitado. Este comando analiza qué está consumiendo tokens en tu sesión actual:
CONTEXT BUDGET ANALYSIS
========================
Contexto total disponible: 200,000 tokens
Contexto usado: 87,432 tokens (43.7%)
Distribución:
- System prompt: 8,400 tokens (9.6%)
- Conversation: 45,200 tokens (51.7%)
- Archivos abiertos: 33,832 tokens (38.7%)
Top archivos por consumo:
1. src/generated/schema.ts — 12,400 tokens (considerar lazy loading)
2. package-lock.json — 8,200 tokens (excluir del contexto)
3. src/api/openapi.yaml — 6,100 tokens (usar /docs en su lugar)
Estimado restante: 112,568 tokens (~60% de sesión disponible)
Recomendaciones:
- Excluir package-lock.json del contexto
- Usar codemaps en lugar de abrir archivos grandes
/claw
Sintaxis: /claw "task"
Description: Execute task using NanoClaw integration. Optimized for token-efficient, fast operations.
Descripción detallada:
NanoClaw es el “modo nano” de ECC — optimizado para operaciones frecuentes con el mínimo de tokens posibles. /claw invoca tareas usando prompts ultra-compactos, apropiado para operaciones repetitivas donde el costo de tokens importa.
Cuándo usar:
- Operaciones repetitivas en un loop
- Cuando el presupuesto de tokens es limitado
- Para tareas simples y bien definidas que no necesitan razonamiento extenso
/devfleet
Sintaxis: /devfleet o /devfleet status o /devfleet scale {n}
Description: Manage a fleet of development agents. Scale, monitor, and coordinate parallel work.
Descripción detallada:
Permite gestionar múltiples instancias de agentes trabajando en paralelo en diferentes partes del codebase. Útil para proyectos grandes donde quieres paralelizar el trabajo de refactor, generación de tests, o migración.
/pm2
Sintaxis: /pm2 o /pm2 status o /pm2 restart {service} o /pm2 logs {service}
Description: Manage Node.js services with PM2. Start, stop, restart, and monitor processes.
Integración con PM2:
Este comando es un wrapper inteligente de PM2 que:
- Lee el
ecosystem.config.jsdel proyecto - Entiende la arquitectura de servicios
- Puede realizar operaciones como restart con zero-downtime (
/pm2 reload --update-env) - Analiza los logs para detectar errores
/aside
Sintaxis: /aside "nota o contexto"
Description: Record a note or context without triggering any action. Useful for capturing thoughts mid-session.
Uso: Cuando quieres que Claude recuerde algo sin que ejecute ninguna acción. Por ejemplo:
/aside "El cliente requiere que la autenticación use OAuth2, no JWT directo"
/aside "Hay un bug conocido en la versión 2.3.1 de stripe-js con Safari"
Estas notas se incorporan al contexto de la sesión y pueden ser referenciadas más tarde.
14. Comandos Avanzados
/promote
Sintaxis: /promote o /promote staging o /promote production
Description: Promote changes to next environment stage. Run environment-specific verifications before promoting.
Flujo de promoción:
flowchart LR
D[development] --> S[staging]
S --> P[production]
D --> V1[/verify pre-pr/]
V1 --> S
S --> V2[/verify pre-pr/ + smoke tests]
V2 --> P
Antes de cada promoción, ejecuta las verificaciones apropiadas para ese entorno.
/prune
Sintaxis: /prune o /prune dependencies o /prune dead-code o /prune stale-branches
Description: Clean up: dead code, unused dependencies, stale git branches, old checkpoints.
Modos:
| Modo | Qué limpia |
|---|---|
dependencies | Dependencias en package.json no usadas en el código |
dead-code | Código declarado pero nunca referenciado |
stale-branches | Branches de git merged hace más de 30 días |
checkpoints | Checkpoints de más de 90 días |
| (sin argumento) | Ejecuta todos los modos |
/instinct-status (Referencia adicional)
Ver sección 6 para detalle completo.
15. Crear Comandos Propios
Template completo
---
description: Descripción concisa que aparece en el autocompletado (máx 80 chars)
allowedTools:
- Read
- Bash
- Glob
- Grep
---
# Nombre del Comando
Eres un agente especializado en [dominio específico].
## Contexto
Estás trabajando en un proyecto con las siguientes características:
- [Tecnología principal]
- [Convenciones del proyecto]
## Tarea
[Si se proporcionan argumentos]: $ARGUMENTS
[Si no hay argumentos]: Ejecuta el comportamiento por defecto.
## Instrucciones
1. Primero, analiza [X] para entender el contexto
2. Luego, [acción específica]
3. Finalmente, [resultado esperado]
## Formato de Output
Presenta el resultado en este formato:
NOMBRE DEL REPORTE
[estructura del output]
## Restricciones
- NO modifiques [archivos específicos que no debe tocar]
- SIEMPRE [restricción importante]
- Si encuentras [condición de error], detente y pide confirmación
Cómo usar $ARGUMENTS en comandos propios
Argumento requerido:
---
description: Deploy to specific environment
---
Despliega al entorno: $ARGUMENTS
Válida que $ARGUMENTS sea uno de: staging, production, qa
Si no es válido, reporta el error y detente.
Argumento opcional con default:
---
description: Generate API documentation
---
Genera documentación para: $ARGUMENTS
Si $ARGUMENTS está vacío, genera documentación para todo el directorio src/api/
Múltiples argumentos parseados del texto:
---
description: Add feature with optional ticket reference
---
Tarea: $ARGUMENTS
Extrae del texto:
- El nombre de la feature (requerido)
- El número de ticket si se menciona (opcional, formato: TICKET-123)
Commands vs Skills vs Agents — Cuándo crear cada uno
Crea un Command cuando:
- La operación se invoca manualmente desde el chat
- Tiene un nombre corto y memorable (
/mi-deploy) - Puede opcionalmente recibir argumentos de texto
- El flujo es lineal o tiene pocas ramificaciones
Crea un Skill cuando:
- Es un proceso multi-paso reutilizable
- Se invoca desde dentro de otros agents o commands
- Tiene configuración compleja
- Se aplica a patrones de código específicos
Crea un Agent cuando:
- Necesita estado persistente entre llamadas
- Tiene un dominio de responsabilidad muy específico
- Es llamado por otros agentes (sub-agente)
- Necesita herramientas especializadas
16. Workflows Completos con Comandos Encadenados
Workflow 1: Feature Nueva Completa
# Paso 1: Planificar — no tocar código hasta confirmar
/plan "add user profile editing with avatar upload"
# Después de revisar el plan y escribir "yes":
# Paso 2: Implementar con TDD
/tdd "UserProfileService.updateProfile"
/tdd "AvatarUploadService.uploadAvatar"
# Paso 3: Verificar que todo compila y los tests pasan
/verify quick
# Paso 4: Review de calidad
/code-review
# Paso 5: Generar tests E2E para el flujo
/e2e "user edits profile and uploads avatar"
# Paso 6: Verificación completa antes de PR
/verify pre-pr
# Paso 7: Actualizar documentación
/update-docs
# Paso 8: Aprender de la sesión
/learn
Tiempo estimado de overhead de comandos: ~5 minutos adicionales sobre la implementación pura. Beneficio: Feature bien testeada, documentada, y sin issues de calidad.
Workflow 2: Bug Fix con TDD
# Paso 1: Entender el bug — crear un test que reproduce el fallo
/tdd "PaymentService.processPayment should not double-charge on retry"
# El agente escribe el test que reproduce el bug (falla → RED)
# Luego implementa el fix (pasa → GREEN)
# Luego refactoriza (REFACTOR)
# Paso 2: Verificar que el fix no rompió nada
/verify quick
# Paso 3: Si hay dudas de seguridad
/code-review "src/services/PaymentService.ts"
# Paso 4: Verificación completa
/verify pre-pr
# Paso 5: Guardar aprendizaje sobre el patrón del bug
/learn-eval
Workflow 3: Refactor y Limpieza
# Paso 1: Checkpoint del estado actual (antes de refactor)
/checkpoint "before-auth-refactor"
# Paso 2: Limpiar código muerto
/refactor-clean "src/auth/"
# Paso 3: Verificar que nada se rompió
/verify
# Paso 4: Si algo falló, el checkpoint nos ayuda a diagnosticar
# /sessions show para ver el estado anterior
# Paso 5: Calidad del código refactorizado
/quality-gate "src/auth/"
# Paso 6: Actualizar codemaps (la estructura cambió)
/update-codemaps
Workflow 4: Auditoría de Seguridad
# Paso 1: Code review con foco en seguridad
/code-review
# Paso 2: Verificación completa con secrets scan
/verify full
# Paso 3: Evaluar contra criterios de seguridad
/eval "no SQL injection, no hardcoded secrets, all inputs validated, no XSS"
# Paso 4: Si hay issues, usar build-fix para los errores de TypeScript
/build-fix
# Paso 5: Distillar las reglas de seguridad aprendidas
/rules-distill
Workflow 5: Release Preparation
# Paso 1: Verificación completa del estado actual
/verify pre-pr
# Paso 2: Quality gate con criterios estrictos
/quality-gate strict
# Paso 3: Cobertura de tests
/test-coverage
# Paso 4: Análisis de contexto y budget
/context-budget --analyze
# Paso 5: Actualizar toda la documentación
/update-docs
/update-codemaps
# Paso 6: Checkpoint del release
/checkpoint "release-v2.4.0"
# Paso 7: Promover a staging
/promote staging
# Paso 8: Después de validar en staging, promover a producción
/promote production
17. Diferencia Commands vs Skills vs Agents
flowchart TD
Q[¿Qué necesito?] --> A{¿Invocación manual\ndesde el chat?}
A -->|Sí| B{¿Flujo simple\ncon args opcionales?}
A -->|No, es sub-proceso| C{¿Reutilizable en\nmúltiples contextos?}
B -->|Sí| D[Command\n/mi-comando]
B -->|No, muy complejo| E{¿Necesita estado\npersistente?}
C -->|Sí| F[Skill\n.claude/skills/]
C -->|No, específico| G[Inline en otro Command]
E -->|Sí| H[Agent\n.claude/agents/]
E -->|No| I[Command con\nprompt detallado]
Tabla comparativa
| Característica | Command | Skill | Agent |
|---|---|---|---|
| Invocación | /nombre en chat | Interno, por otros | Interno, por otros |
| Estado persistente | No | No | Sí (puede) |
| Argumentos | Texto libre ($ARGUMENTS) | Estructurado | Estructurado |
| Complejidad | Baja-media | Media-alta | Alta |
| Reutilización | Por el usuario | Por el sistema | Por el sistema |
| Ubicación | .claude/commands/ | .claude/skills/ | .claude/agents/ |
18. Comandos y Token Cost
El uso de slash commands tiene un costo de tokens asociado. Entender este costo ayuda a elegir el comando correcto para cada situación.
Costo relativo por comando
| Categoría | Comandos | Costo tokens |
|---|---|---|
| Lectura/análisis | /code-review, /verify quick, /instinct-status | Bajo |
| Planificación | /plan, /multi-plan | Medio |
| Implementación | /tdd, /build-fix, /e2e | Medio-Alto |
| Multi-agente | /orchestrate, /multi-execute | Alto |
| Loops autónomos | /loop-start con muchas iteraciones | Muy Alto |
Estrategias para optimizar el costo
- Usa
/verify quickdurante desarrollo,fullsolo antes de commit - Usa
/clawpara operaciones repetitivas donde el token cost importa - Usa
/context-budgetpara identificar qué está consumiendo tokens innecesariamente - Usa
/model-routepara asegurarte de usar el modelo correcto (Haiku para tareas simples) - Mantén los codemaps actualizados para que Claude no necesite leer archivos enteros
19. Comandos en Plugin vs Manual Install
Namespacing
Cuando instalas ECC como plugin de Claude Code, los comandos tienen un namespace:
# Forma completa (siempre funciona)
/everything-claude-code:plan "add auth"
/everything-claude-code:tdd
/everything-claude-code:verify
# Forma corta (funciona si no hay conflicto)
/plan "add auth"
/tdd
/verify
Cuando instalas manualmente (copiando archivos a .claude/commands/), los comandos son directamente accesibles sin namespace.
Resolución de conflictos
Si tienes un comando local y uno de ECC con el mismo nombre, el local tiene prioridad. Esto es intencional: te permite sobrescribir el comportamiento de ECC para tu proyecto específico.
.claude/commands/plan.md ← Local: tiene prioridad
~/.claude/commands/plan.md ← Global (ECC): se usa si no hay local
Listar comandos disponibles
# Ver todos los comandos disponibles (incluye ECC)
# En Claude Code, escribe / y verás el autocompletado
# O ver los archivos directamente
ls ~/.claude/commands/
ls .claude/commands/
20. Mejores Prácticas
-
Empieza siempre con
/planantes de implementar features no triviales. Los tokens invertidos en planificación ahorran mucho más en correcciones. -
Usa
/verifyantes de cada commit, no solo antes del PR. Detecta problemas temprano cuando son más baratos de resolver. -
Encadena comandos en el orden correcto: plan → tdd → code-review → verify. Cambiar el orden reduce la efectividad.
-
Usa
/checkpointantes de refactors grandes. No es un sustituto de git, sino un complemento que guarda contexto que git no captura. -
Ejecuta
/learnal final de sesiones productivas, no al final de sesiones donde las cosas no salieron bien — los patrones de error también se pueden aprender, pero requiere más cuidado. -
Usa
/quality-gatecon thresholds específicos de tu proyecto en lugar de los defaults. Un threshold de 80% de cobertura puede ser adecuado para algunos proyectos pero insuficiente para otros. -
Usa comandos language-specific (
/go-review,/rust-review) en lugar de/code-reviewgenérico cuando trabajas en lenguajes específicos — tienen conocimiento más profundo del lenguaje. -
Mantén
/update-codemapsejecutado frecuentemente en proyectos que cambian rápido. Claude trabaja mejor cuando tiene una vista actualizada del proyecto. -
Usa
/model-route --analyzeantes de tareas costosas para asegurarte de que estás usando el modelo apropiado. -
Configura
/harness-auditantes de habilitar loops autónomos (/loop-start). Los loops sin configuración adecuada pueden gastar tokens innecesariamente. -
Crea comandos propios para workflows repetitivos de tu proyecto. Cualquier secuencia de pasos que ejecutes más de 3 veces merece un command.
-
Usa
/asidepara capturar decisiones de arquitectura durante la sesión en lugar de agregarlas manualmente a la documentación. -
Ejecuta
/rules-distillperiódicamente (cada semana o dos) para que las convenciones del proyecto se reflejen en el comportamiento de Claude. -
Usa
/prompt-optimizeen prompts que ejecutas frecuentemente. Una optimización del 50% en tokens se multiplica por cada uso. -
Configura
/setup-pmal inicio de cada proyecto nuevo. Muchos comandos dependen de saber el package manager correcto.
21. Anti-patrones
1. Usar /orchestrate para tareas simples
Mal:
/orchestrate "fix the typo in line 42 of README"
Bien: simplemente editar el archivo directamente o pedirle a Claude que lo haga.
2. Ejecutar /verify full en cada guardado
/verify full ejecuta el test suite completo. Úsalo con deliberación, no como reemplazo del formateo automático al guardar.
3. Ignorar el WAIT de /plan
/plan "add auth"
# Plan presentado...
"ok, empieza a implementar sin esperar mi confirmación"
El WAIT de /plan existe por una razón: revisar el plan antes de que empiece la implementación ahorra tokens y evita trabajo innecesario.
4. Usar /tdd sin entender el código a testear
TDD funciona mejor cuando tienes claro el comportamiento esperado. Si no tienes claro qué debe hacer el código, primero usa /plan.
5. Crear un Command cuando necesitas un Skill
Si la operación necesita ser invocada por otros agentes o tiene lógica compleja, es un Skill, no un Command.
6. No actualizar codemaps después de refactors grandes
Claude puede confundirse sobre la estructura del proyecto si los codemaps están desactualizados. Ejecuta /update-codemaps después de cualquier refactor significativo.
7. Usar /multi-execute para tareas secuenciales sin dependencias
Si las tareas son puramente secuenciales (B siempre después de A, sin paralelismo posible), /orchestrate o simplemente ejecutarlas en orden es más eficiente.
8. Ignorar los WARNINGs de /verify
Los warnings no bloquean el PR, pero se acumulan. Un proyecto con 50 warnings activos es difícil de mantener.
9. Ejecutar /loop-start sin condiciones de parada claras
Un loop sin condición de parada clara puede iterar indefinidamente. Siempre especifica cuándo debe detenerse.
10. Usar /code-review como sustituto de /verify
/code-review analiza calidad del código; /verify verifica que funciona. Son complementarios, no intercambiables.
22. Ejercicios Prácticos
Ejercicio 1: Workflow básico de feature
Objetivo: Practicar el ciclo completo plan → tdd → verify
Tarea: Implementa una función calculateDiscount(price, discountCode) que aplica descuentos basados en códigos.
# Paso 1: Planifica
/plan "implement calculateDiscount function that applies percentage discounts based on codes: SAVE10=10%, SAVE20=20%, HALFPRICE=50%"
# Paso 2: Implementa con TDD
/tdd
# Paso 3: Verifica
/verify
Criterio de éxito: Coverage >= 80%, todos los tests pasan, /verify green.
Ejercicio 2: Debugging con build-fix
Objetivo: Usar /build-fix para resolver errores de TypeScript
Setup: Introduce intencionalmente un error de tipo en un archivo TypeScript y ejecuta /build-fix.
Observa: Cómo el agente identifica la causa raíz vs. los síntomas.
Ejercicio 3: Aprender del código existente
Objetivo: Practicar el ciclo learn → instinct-status → evolve
# Después de una sesión de trabajo:
/learn
# Revisa lo que aprendió:
/instinct-status
# Si hay instincts de alta confianza, evolucionarlos:
/evolve
Ejercicio 4: Crear tu primer Command
Objetivo: Crear un slash command personalizado para tu proyecto
Tarea: Crea un command /mi-proyecto:setup que:
- Instale dependencias
- Configure las variables de entorno desde
.env.example - Ejecute las migraciones de DB
- Verifique que todo esté correcto
Ubicación: .claude/commands/setup.md
Ejercicio 5: Multi-agente básico
Objetivo: Usar /orchestrate para una tarea que span múltiples dominios
Tarea:
/orchestrate "add a new 'notifications' feature: backend endpoint, frontend component, and database table"
Observa: Cómo el orchestrator divide el trabajo, qué agentes lanza, cómo sintetiza los resultados.
23. Referencia Rápida — Todos los Comandos
| Comando | Descripción |
|---|---|
/aside | Registra nota o contexto sin ejecutar acción |
/build-fix | Analiza y corrige errores de build automáticamente |
/checkpoint | Guarda estado de verificación como punto de restauración |
/claw | Ejecuta tarea con NanoClaw (optimización de tokens) |
/code-review | Review de calidad: seguridad, performance, mantenibilidad |
/context-budget | Analiza y optimiza el uso del context window |
/cpp-build | Corrige errores de build en proyectos C++ |
/cpp-review | Review de código C++: RAII, memory, UB |
/cpp-test | Genera tests C++ con Google Test / Catch2 |
/devfleet | Gestiona fleet de agentes en paralelo |
/docs | Busca y presenta documentación relevante |
/e2e | Genera tests E2E con Playwright (Page Object Model) |
/eval | Evalúa estado actual contra criterios de éxito |
/evolve | Promueve instincts de alta confianza a skills |
/go-build | Corrige errores de build en proyectos Go |
/go-review | Review idiomático de código Go |
/go-test | TDD workflow para Go con table-driven tests |
/gradle-build | Corrige errores de build Gradle/Java |
/harness-audit | Audita configuración del harness de ECC |
/instinct-export | Exporta instincts a archivo JSON compartible |
/instinct-import | Importa instincts desde archivo JSON o perfil |
/instinct-status | Muestra instincts con scores de confianza |
/kotlin-build | Corrige errores de build Kotlin/Gradle |
/kotlin-review | Review de código Kotlin: nullability, coroutines |
/kotlin-test | Genera tests Kotlin con JUnit5/Kotest |
/learn | Extrae patrones de la sesión y guarda como instincts |
/learn-eval | Extrae y evalúa calidad antes de guardar instincts |
/loop-start | Inicia loop de ejecución autónomo con condiciones de parada |
/loop-status | Muestra estado actual del loop en ejecución |
/model-route | Rutea tarea al modelo óptimo según complejidad y costo |
/multi-backend | Orquesta cambios en múltiples servicios backend |
/multi-execute | Ejecuta plan multi-fase con agentes especializados |
/multi-frontend | Orquesta cambios en múltiples apps frontend |
/multi-plan | Planificación colaborativa con múltiples modelos |
/multi-workflow | Workflow general multi-agente |
/orchestrate | Coordina múltiples agentes especializados en paralelo |
/plan | Crea plan de implementación, espera confirmación antes de codear |
/pm2 | Gestiona servicios Node.js con PM2 |
/projects | Gestiona y cambia entre múltiples proyectos |
/promote | Promueve cambios al siguiente stage (staging/production) |
/prompt-optimize | Optimiza prompts para reducir tokens y mejorar claridad |
/prune | Limpia código muerto, dependencias sin uso, branches viejos |
/python-review | Review de código Python: PEP8, type hints, seguridad |
/quality-gate | Checks de calidad con thresholds configurables |
/refactor-clean | Elimina código muerto, imports sin uso, duplicados |
/resume-session | Continúa sesión guardada anteriormente |
/rules-distill | Destila patrones del codebase en reglas para CLAUDE.md |
/rust-build | Corrige errores de borrow checker y Cargo en Rust |
/rust-review | Review de código Rust: ownership, lifetimes, unsafe |
/rust-test | Genera tests Rust: unit, integration, property tests |
/save-session | Guarda estado de sesión actual para reanudar después |
/sessions | Lista, inspecciona y restaura sesiones anteriores |
/setup-pm | Detecta y configura el package manager del proyecto |
/skill-create | Analiza git history y genera skills reutilizables |
/skill-health | Verifica que los skills instalados sean válidos |
/tdd | Workflow TDD: RED→GREEN→REFACTOR con 80%+ coverage |
/test-coverage | Analiza cobertura y genera tests faltantes |
/update-codemaps | Regenera mapas de arquitectura y dependencias del proyecto |
/update-docs | Actualiza documentación para reflejar el estado actual |
/verify | Suite completa: build, types, lint, tests, secrets, logs |
24. Checklist y Resumen
Checklist de Comandos Esenciales
Antes de empezar a usar ECC en un proyecto nuevo:
- Ejecutar
/setup-pmpara configurar el package manager - Ejecutar
/update-codemapspara generar el mapa inicial del proyecto - Revisar qué comandos están disponibles escribiendo
/en Claude Code - Configurar thresholds de
/quality-gatesi los defaults no aplican
Para cada feature nueva:
-
/plan— Planificar antes de implementar -
/tdd— Implementar con tests primero -
/code-review— Review de calidad -
/verify pre-pr— Verificación completa -
/update-docs— Documentación actualizada -
/learn— Capturar aprendizajes
Mantenimiento periódico:
-
/rules-distill— Actualizar reglas del proyecto -
/skill-health— Verificar skills instalados -
/instinct-status— Revisar instincts de baja confianza -
/update-codemaps— Después de refactors grandes -
/prune— Limpieza periódica
Resumen de Conceptos Clave
Los slash commands de ECC son la interfaz de alto nivel para invocar agentes especializados. Cada comando es un archivo Markdown en .claude/commands/ con frontmatter YAML que define el comportamiento del agente.
El mecanismo central es $ARGUMENTS — el texto después del nombre del comando que se interpola en el prompt del agente antes de enviarlo.
Los comandos se organizan en categorías según su función:
- Core del ciclo de desarrollo:
/plan,/tdd,/code-review,/verify,/build-fix - Calidad:
/quality-gate,/test-coverage,/eval,/checkpoint - Aprendizaje:
/learn,/learn-eval,/instinct-*,/evolve - Multi-agente:
/orchestrate,/multi-* - Session management:
/sessions,/save-session,/resume-session - Loops autónomos:
/loop-start,/loop-status,/harness-audit - Language-specific:
/go-*,/rust-*,/cpp-*,/kotlin-*,/python-review - Documentación:
/update-docs,/update-codemaps,/docs - Configuración:
/setup-pm,/context-budget,/model-route
La clave para usar ECC efectivamente es entender cuándo usar qué comando y en qué orden encadenarlos. El workflow canónico — plan → tdd → code-review → verify — no es arbitrario: cada comando construye sobre el resultado del anterior y el costo de encontrar problemas decrece en cada paso.