Cap 10: Commands, Skills y Rules
Commands: workflows reutilizables
Los commands son prompts pre-definidos que se invocan con / en Claude Code. Permiten estandarizar workflows que el equipo ejecuta frecuentemente.
Project-scoped: .claude/commands/
Compartidos via version control. Todo el equipo tiene acceso:
.claude/
└── commands/
├── review-pr.md # /review-pr
├── add-test.md # /add-test
└── deploy-check.md # /deploy-check
<!-- .claude/commands/review-pr.md -->
Revisa el PR actual verificando:
1. Adherencia a convenciones del proyecto
2. Cobertura de tests para cambios nuevos
3. Posibles issues de seguridad
4. Performance implications
Genera un resumen con findings categorizados por severidad.
Se invocan como /review-pr en la conversación.
User-scoped: ~/.claude/commands/
Personales, no compartidos. Para workflows individuales:
~/.claude/
└── commands/
├── daily-standup.md # /daily-standup
└── my-review.md # /my-review
Cuándo crear un command
- El equipo ejecuta el mismo workflow repetidamente
- El prompt requiere instrucciones específicas que se olvidan
- Quieres estandarizar cómo el equipo usa Claude para una tarea
Skills: capacidades on-demand
Las skills son más poderosas que los commands. Viven en .claude/skills/ con un archivo SKILL.md que define comportamiento, restricciones y metadatos.
Estructura básica
.claude/
└── skills/
├── sdd-explore/
│ └── SKILL.md
├── create-api-endpoint/
│ └── SKILL.md
└── migrate-database/
└── SKILL.md
SKILL.md con frontmatter
---
context: fork
allowed-tools: ["Read", "Grep", "Glob"]
argument-hint: "nombre del módulo a explorar"
---
# Explorar módulo
Analiza la estructura del módulo especificado:
1. Identifica archivos principales con Glob
2. Lee los entry points con Read
3. Busca dependencias con Grep
4. Genera un resumen de arquitectura
## Output esperado
- Archivos principales y su propósito
- Dependencias internas y externas
- Patrones de diseño identificados
Frontmatter: context
context: fork
fork: ejecuta la skill en un contexto aislado (fork del conversation). El output verboso de la exploración no contamina la conversación principal. Solo el resultado final se retorna al main thread.
Sin context (default): la skill se ejecuta inline en la conversación actual. Apropiado para skills cortas que no generan mucho output intermedio.
Cuándo usar fork:
- Skills de exploración que leen muchos archivos
- Análisis extensos que generan output intermedio largo
- Cuando quieres que solo el resumen final aparezca en la conversación
Frontmatter: allowed-tools
allowed-tools: ["Read", "Grep", "Glob", "Bash"]
Restringe qué tools puede usar Claude durante la ejecución de la skill. Esto es una medida de seguridad y enfoque:
- Una skill de solo lectura no necesita
WriteniEdit - Una skill de análisis no necesita
Bash - Restringir tools previene side effects no deseados
Si no se especifica, la skill tiene acceso a todos los tools disponibles.
Frontmatter: argument-hint
argument-hint: "ruta del archivo o módulo a analizar"
Cuando un usuario invoca la skill sin argumentos, Claude usa este hint para solicitar los parámetros necesarios. Mejora la UX al guiar al usuario:
> /explore-module
Claude: ¿Cuál es la ruta del archivo o módulo a analizar?
> src/services/auth
Personal skill customization
Los usuarios pueden tener variantes personales de skills del proyecto en ~/.claude/skills/:
# Skill del proyecto
.claude/skills/review-code/SKILL.md
→ Revisa código con estándares del equipo
# Variante personal
~/.claude/skills/review-code/SKILL.md
→ Misma base + "también verifica accesibilidad WCAG"
La versión personal sobreescribe la del proyecto para ese usuario. Útil para developers con responsabilidades adicionales (ej: el lead de accesibilidad agrega checks extra).
Skills vs CLAUDE.md
La distinción es fundamental:
CLAUDE.md: always-loaded
- Se carga al inicio de cada conversación
- Para estándares que siempre aplican
- Naming conventions, architecture decisions, testing requirements
- Mantener conciso — todo lo que está aquí consume contexto siempre
Skills: on-demand
- Se cargan solo cuando se invocan
- Para workflows específicos que no aplican en cada conversación
- Database migration, PR review, API scaffolding
- Pueden ser extensas — solo consumen contexto cuando se necesitan
Tabla de decisión
| Contenido | Dónde |
|---|---|
| ”Siempre usar TypeScript strict” | CLAUDE.md |
| ”Formato de commits: conventional” | CLAUDE.md |
| ”Workflow para crear nuevo endpoint” | Skill |
| ”Proceso de migración de DB” | Skill |
| ”Reglas de naming de archivos” | CLAUDE.md o .claude/rules/ |
| “Análisis de dependencias de un módulo” | Skill |
Regla práctica
Si aplica en el 80%+ de las conversaciones → CLAUDE.md. Si aplica solo cuando lo pides → Skill.
Commands vs Skills
| Aspecto | Commands | Skills |
|---|---|---|
| Ubicación | .claude/commands/ | .claude/skills/ |
| Metadatos | No | frontmatter (context, allowed-tools, argument-hint) |
| Aislamiento | No | Sí (context: fork) |
| Restricción de tools | No | Sí (allowed-tools) |
| Complejidad típica | Prompt simple | Workflow multi-paso |
Usa commands para prompts simples reutilizables. Usa skills cuando necesitas aislamiento, restricción de tools, o workflows complejos.