Skills: Comportamientos Automaticos
Los Slash Commands se invocan manualmente. Las Skills se activan solas cuando Claude detecta que aplican.
Comandos vs Skills vs Hooks
| Feature | Invocacion | Uso Ideal |
|---|---|---|
| Comandos | Manual (/commit) | Tareas on-demand |
| Skills | Automatica | Comportamientos consistentes |
| Hooks | Automatica (eventos) | Acciones pre/post operacion |
Cuando Usar Cada Uno
- Comando: "Quiero crear un commit ahora" →
/commit - Skill: "Siempre que trabaje con React, usa estos patterns" → Skill
- Hook: "Despues de cada edit, corre el linter" → Hook
Anatomia de una Skill
Las skills viven en .claude/skills/:
mi-proyecto/
└── .claude/
└── skills/
├── react-patterns.md
├── testing-strategy.md
└── code-style.md
Estructura de un Archivo Skill
---
name: react-patterns
description: Patrones de React que debo seguir en este proyecto
---
# React Patterns
## Componentes
- Usa functional components, nunca class components
- Extrae logica compleja a custom hooks
- Mantene componentes bajo 150 lineas
## Estado
- Usa useState para estado local simple
- Usa useReducer para estado complejo
- Usa context solo para datos que realmente son globales
## Styling
- Usa Tailwind CSS
- Evita CSS inline excepto para valores dinamicos
- Sigue el patron de clase condicional con cn()
## Ejemplos
### Componente Simple
```tsx
export function UserCard({ user }: { user: User }) {
return (
<div className="p-4 border rounded">
<h3>{user.name}</h3>
<p>{user.email}</p>
</div>
)
}Custom Hook
function useUser(id: string) {
const [user, setUser] = useState<User | null>(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
fetchUser(id).then(setUser).finally(() => setLoading(false))
}, [id])
return { user, loading }
}
## La Magia: Activacion Automatica
Claude lee la `description` de cada skill y la activa cuando es relevante.
Por ejemplo, si tu skill tiene:
```yaml
---
name: react-patterns
description: Patrones de React que debo seguir en este proyecto
---
Cuando le pidas a Claude que cree un componente React, va a leer esta skill automaticamente y aplicar los patrones.
Mis Skills Mas Utiles
1. Code Style (Global)
---
name: code-style
description: Estilo de codigo y convenciones del proyecto
---
# Code Style
## TypeScript
- Usa tipos explicitos, no `any`
- Prefiere interfaces sobre types para objetos
- Exporta tipos junto con sus funciones
## Naming
- Componentes: PascalCase
- Funciones: camelCase
- Constantes: UPPER_SNAKE_CASE
- Archivos de componentes: PascalCase.tsx
- Archivos de utils: camelCase.ts
## Imports
- Absolutas primero, relativas despues
- Ordenar alfabeticamente dentro de cada grupo
- Una linea vacia entre grupos
## Comentarios
- Solo cuando el codigo no es auto-explicativo
- JSDoc para funciones publicas
- TODO: solo si hay un plan para resolverlo2. Testing Strategy
---
name: testing-strategy
description: Estrategia de testing para este proyecto
---
# Testing Strategy
## Unit Tests
- Testea logica de negocio, no implementacion
- Un archivo de test por modulo
- Nombre: `[module].test.ts`
## Integration Tests
- Testea flujos completos
- Usa mocks solo para servicios externos
- Setup/teardown de base de datos
## E2E Tests
- Solo para user flows criticos
- Corre en CI antes de merge
- Usa Playwright
## Coverage
- Minimo 80% en codigo nuevo
- No testear: types, constants, config3. API Patterns
---
name: api-patterns
description: Patrones para crear APIs REST
---
# API Patterns
## Response Format
```json
{
"data": {},
"meta": {},
"error": null
}Error Handling
- 400: Bad request (validation)
- 401: Unauthorized
- 403: Forbidden
- 404: Not found
- 500: Server error
Validation
- Usa Zod para validar inputs
- Valida en el handler, no en el servicio
- Devuelve errores detallados al cliente
Naming
- GET /users - listar
- GET /users/:id - obtener uno
- POST /users - crear
- PUT /users/:id - actualizar
- DELETE /users/:id - eliminar
## Skills Globales vs Por Proyecto
### Globales (~/.claude/skills/)
Aplican a todos tus proyectos:
- `code-style.md` - Tu estilo personal de codigo
- `commit-messages.md` - Como escribis commits
- `documentation.md` - Como documentas
### Por Proyecto (.claude/skills/)
Aplican solo a este proyecto:
- `react-patterns.md` - Patterns de React especificos
- `api-patterns.md` - Convenciones del API
- `database-schema.md` - Estructura de la DB
## Tips para Skills Efectivas
### 1. Descripcion Clara = Activacion Correcta
**Malo:**
```yaml
---
description: Patrones de codigo
---
Bueno:
---
description: Patrones de React con hooks, styled-components y TypeScript para componentes de UI
---2. Incluye Ejemplos Concretos
Claude aprende mejor con ejemplos que con reglas abstractas.
3. Mantene Skills Enfocadas
Una skill = un tema. No mezcles React patterns con API patterns.
4. Actualiza Regularmente
Cuando tomes una decision de arquitectura, agregala a la skill correspondiente.
Errores Que Me Costaron Horas
Error 1: Descripciones Muy Vagas
El error: Mi skill tenia description: Patterns del proyecto. Claude no la activaba casi nunca porque era muy generica.
El costo: Codigo inconsistente porque Claude no aplicaba los patterns.
La leccion: La descripcion es la clave. Hacela especifica.
Error 2: Skills Que Se Contradicen
El error: Tenia una skill global que decia "usa CSS modules" y una del proyecto que decia "usa Tailwind". Claude se confundia.
El costo: Tiempo arreglando estilos inconsistentes.
La leccion: Las skills del proyecto deben complementar, no contradecir las globales.
Diferencia Clave: Skills vs CLAUDE.md
| CLAUDE.md | Skills |
|---|---|
| Informacion del proyecto | Comportamientos |
| Estructura, stack, comandos | Patterns, estilos, reglas |
| Contexto estatico | Guias dinamicas |
| Una por proyecto | Multiples por tema |
Usa CLAUDE.md para "que es este proyecto" y Skills para "como trabajo en este proyecto".
Para Equipos: Skills Como Estandares
Las skills son perfectas para enforcar estandares de equipo sin micromanagement.
Estructura de Skills de Equipo
org-standards/ # Repo separado de standards
├── .claude/
│ └── skills/
│ ├── code-style.md # Estilo de codigo de la org
│ ├── security.md # Practicas de seguridad
│ ├── testing.md # Standards de testing
│ └── documentation.md
# Cada proyecto importa las skills relevantes
proyecto/
├── .claude/
│ └── skills/
│ ├── code-style.md # Symlink o copia de org-standards
│ └── react-ui.md # Especifico de este proyecto
Skill de Seguridad Obligatoria
Toda organizacion deberia tener una skill de seguridad:
---
name: security-standards
description: Estandares de seguridad que aplican a todo el codigo
---
# Security Standards
## Secrets
- NUNCA hardcodear secrets en codigo
- Usar variables de entorno para API keys
- Usar .env.example con placeholders
## Input Validation
- Validar TODO input del usuario con Zod/Yup
- Sanitizar antes de guardar en DB
- Escapar antes de mostrar en HTML
## Authentication
- Usar bcrypt para passwords (min cost 12)
- JWT tokens con expiracion corta (1h access, 7d refresh)
- Rate limiting en endpoints de auth
## Lo Que NO Hacer
- NO usar eval() o Function()
- NO concatenar SQL (usar parametros)
- NO confiar en headers del cliente
- NO logear datos sensibles (passwords, tokens, PII)Onboarding con Skills
Cuando un nuevo dev se une:
- Clona el proyecto
- Claude automaticamente lee las skills
- El codigo que genera ya sigue los standards
- Code review es mas rapido porque el codigo es consistente
Auditando Skills
Revisa periodicamente:
## Checklist de Auditoria de Skills
- [ ] Fecha de ultima actualizacion < 6 meses
- [ ] No hay contradicciones entre skills
- [ ] Ejemplos siguen funcionando
- [ ] Nuevos patterns estan documentados
- [ ] Skills deprecadas fueron removidasResolviendo Conflictos de Skills
Si dos skills se contradicen:
- Skill mas especifica gana (proyecto > org > global)
- Documenta la excepcion en la skill del proyecto
- Considera unificar si el conflicto es frecuente
---
name: react-patterns
description: Patterns de React (overrides org-standards para este proyecto)
---
# React Patterns
## Nota: Excepciones a Org Standards
Este proyecto usa styled-components en lugar de Tailwind
porque es un proyecto legacy. Ver decision ADR-023.
[...]Desafio: Prueba Esto
Antes de pasar a la siguiente leccion:
- Crea el directorio
.claude/skills/ - Crea una skill
code-style.mdcon tus preferencias - Pide a Claude que genere codigo y verifica que aplica la skill
- Crea una skill especifica para tu proyecto (ej:
react-patterns.md)
Tiempo estimado: 10 minutos
Siguiente Paso
Ahora que sabes personalizar Claude con comandos y skills, vamos a ver como automatizar operaciones con sub-agentes.