Skills de Claude Code: cómo crearlas y cuándo usarlas

Una skill de Claude Code es un conjunto de instrucciones (un archivo SKILL.md) que Claude carga solo cuando hace falta. A diferencia del CLAUDE.md, que se carga entero en cada sesión, el cuerpo de una skill no cuesta contexto hasta que se usa. Es perfecta para checklists y procedimientos de varios pasos que ejecutas de vez en cuando.
Cuándo crear una skill
Crea una skill cuando te descubres pegando las mismas instrucciones una y otra vez, o cuando una sección de tu CLAUDE.md dejó de ser un "dato" y se convirtió en un procedimiento: revisar un PR, hacer un release, correr una migración con sus comprobaciones. Eso no debería vivir siempre en el contexto (lo gastaría en cada sesión sin usarse casi nunca): debería cargarse solo cuando lo invocas.
La regla mental: si es algo que Claude debe saber siempre, va en el CLAUDE.md. Si es algo que Claude debe hacer a veces, es una skill.
El formato: SKILL.md
Una skill es una carpeta con un archivo SKILL.md: frontmatter YAML (con la description que le dice a Claude cuándo usarla) más el cuerpo en markdown con las instrucciones. El nombre de la carpeta se convierte en el comando que escribes.
---
description: Resume los cambios sin commitear y marca lo riesgoso. Úsala cuando el usuario pregunte qué cambió o pida un mensaje de commit.
---
## Cambios actuales
!`git diff HEAD`
## Instrucciones
Resume los cambios de arriba en dos o tres bullets y lista los riesgos que veas (falta de manejo de errores, valores hardcodeados, tests por actualizar).La línea !`git diff HEAD` (con backticks) usa inyección dinámica de contexto: Claude Code corre el comando y reemplaza la línea por su salida antes de que Claude lea la skill, así las instrucciones llegan con el diff ya incrustado. Y con $ARGUMENTS capturas lo que el usuario escriba después del nombre de la skill.
Un ejemplo real: revisar un PR de Laravel
Aquí es donde una skill brilla, porque el procedimiento es siempre el mismo y quieres que se ejecute igual cada vez. Una skill revisar-pr para un proyecto Laravel:
---
description: Revisa el PR actual en un proyecto Laravel. Úsala antes de aprobar o mergear.
---
## Estado
!`git diff main...HEAD --stat`
## Instrucciones
1. Corre `./vendor/bin/pint --test` y reporta si el estilo falla.
2. Corre `php artisan test` y resume los tests rojos.
3. Revisa las migraciones nuevas: ¿son reversibles (`down()`)? ¿tocan tablas grandes sin cuidado?
4. Marca cualquier `env()` fuera de un archivo de config, credenciales hardcodeadas o queries en bucle (N+1).
5. Cierra con un veredicto: listo para mergear, o lista de cambios pendientes.Ese procedimiento, con las comprobaciones propias de Laravel, no tiene por qué ocupar contexto en cada sesión. Vive en una skill y se activa cuando lo pides.
Dónde viven y cómo se invocan
| Ubicación | Ruta | Alcance |
|---|---|---|
| Personal | ~/.claude/skills/<nombre>/SKILL.md |
Todos tus proyectos |
| Proyecto | .claude/skills/<nombre>/SKILL.md |
Solo ese proyecto (se versiona con el repo) |
| Plugin | <plugin>/skills/<nombre>/SKILL.md |
Donde el plugin esté activo |
Se invocan de dos formas: automática (Claude la carga cuando tu pedido encaja con la description, por eso esa línea importa tanto) o explícita escribiendo /nombre-de-la-skill. Dato útil: los comandos personalizados se fusionaron con las skills, así que un .claude/commands/deploy.md y una skill .claude/skills/deploy/SKILL.md crean ambos el comando /deploy y funcionan igual; tus archivos de .claude/commands/ siguen sirviendo.
Skill, CLAUDE.md, hook o subagente
Cuatro herramientas parecidas que conviene no confundir:
- CLAUDE.md: datos y reglas que quieres en cada sesión.
- Skill: un procedimiento que se carga bajo demanda.
- Hook: un comando determinista que se dispara en un evento fijo (siempre, sin que el modelo decida).
- Subagente: una tarea que corre en un contexto aislado.
Mover procedimientos del CLAUDE.md a skills es, además, una de las mejores formas de reducir tokens: mantienes el contexto base pequeño y cargas el detalle solo cuando se usa.
Preguntas frecuentes
¿Qué es una skill en Claude Code?
Un archivo SKILL.md con instrucciones que Claude carga solo cuando son relevantes o cuando la invocas con /nombre. Sirve para empaquetar procedimientos repetibles.
¿En qué se diferencia del CLAUDE.md?
El CLAUDE.md se carga completo en cada sesión (gasta contexto siempre); la skill se carga bajo demanda (no cuesta contexto hasta que se usa). Regla: dato siempre necesario, CLAUDE.md; procedimiento ocasional, skill.
¿Dónde se guardan las skills?
En ~/.claude/skills/<nombre>/SKILL.md (personales) o .claude/skills/<nombre>/SKILL.md (del proyecto), además de las que traen los plugins.
¿Cómo invoco una skill?
Automáticamente, cuando tu pedido coincide con su description, o a mano escribiendo /nombre-de-la-skill.
¿Puedo pasarle datos o argumentos a una skill?
Sí. Con !`comando` inyectas la salida de un comando (por ejemplo un git diff) y con $ARGUMENTS capturas el texto que escribas después del nombre de la skill.