Cap 10: Commands, Skills y Rules

Por: Artiko
claude-certifiedcommandsskillsrulesconfiguración

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

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:

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:

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

Skills: on-demand

Tabla de decisión

ContenidoDó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

AspectoCommandsSkills
Ubicación.claude/commands/.claude/skills/
MetadatosNofrontmatter (context, allowed-tools, argument-hint)
AislamientoNoSí (context: fork)
Restricción de toolsNoSí (allowed-tools)
Complejidad típicaPrompt simpleWorkflow multi-paso

Usa commands para prompts simples reutilizables. Usa skills cuando necesitas aislamiento, restricción de tools, o workflows complejos.

Path-specific rules en .claude/rules/

Las reglas en .claude/rules/ permiten activar convenciones solo cuando se editan archivos que coinciden con un patrón glob — reduciendo contexto irrelevante y tokens consumidos.

Estructura de un archivo de rules

---
paths:
  - "terraform/**/*"
---

# Convenciones de Terraform

- Siempre usa `terraform fmt` antes de commitear
- Los módulos deben tener outputs documentados
- No hardcodear ARNs — usar variables de entorno o data sources

Claude carga estas reglas solo cuando edita archivos que coinciden con terraform/**/*. Si estás trabajando en código TypeScript, estas reglas no consumen contexto.

Patrones glob por tipo de archivo

# Para todos los archivos de test independientemente del directorio
paths:
  - "**/*.test.ts"
  - "**/*.test.tsx"
  - "**/*.spec.ts"

La ventaja sobre subdirectory CLAUDE.md: las reglas de testing aplican a archivos en src/, lib/, packages/*/src/ y cualquier otra ubicación — un solo archivo de rules las cubre todas.

Cuándo usar .claude/rules/ vs subdirectory CLAUDE.md

SituaciónRecomendación
Convenciones que aplican a un directorio específicoSubdirectory CLAUDE.md
Convenciones que aplican a un tipo de archivo en varios directorios.claude/rules/ con glob
Estándares de testing en todo el repo.claude/rules/ con **/*.test.ts
Reglas de API específicas de src/api/src/api/CLAUDE.md

Para el examen: Si la pregunta menciona “convenciones que aplican a archivos de test en múltiples directorios”, la respuesta es .claude/rules/ con glob patterns, NO CLAUDE.md en cada subdirectorio.


← Cap 9: CLAUDE.md Jerarquía · Índice · Cap 11: Plan Mode →