Claude Code Skills: Crea Flujos de Trabajo Reutilizables con Comandos Personalizados

Las skills son la forma más rápida de crear flujos de trabajo repetibles en Claude Code. Un archivo markdown, un slash command, y pasos predecibles con intervención humana.

Las skills son, para mí, la forma más rápida y efectiva de pedirle a un agente AI que realice un número predecible de pasos. Con la ventaja de que el proceso sigue siendo conversacional: puedes intervenir, corregir y redirigir mientras ocurre.

Parece complicado. No lo es. Una skill es un archivo markdown con instrucciones. Lo guardas en una carpeta y lo invocas con un slash command. Eso es todo.

El artículo que estás leyendo ahora mismo se ha generado con una skill. Literalmente. Un /claude-code-article que ejecuta investigación SEO, consulta la documentación oficial, lee ejemplos de estilo, genera el borrador en dos idiomas, lo sube a Notion y lo publica en producción. Es un flujo de varios pasos, repetible, con puntos de intervención humana. Y funciona.

Si llevas un tiempo usando Claude Code y sigues copiando y pegando los mismos prompts, o inflando tu CLAUDE.md con instrucciones que solo aplican a tareas concretas, las skills son tu siguiente paso.

Anatomía de una skill

Cada skill vive en su propio directorio con un archivo SKILL.md como punto de entrada:

mi-skill/
├── SKILL.md           # Instrucciones principales (obligatorio)
├── template.md        # Plantilla para que Claude rellene
├── examples/
│   └── sample.md      # Ejemplo de output esperado
└── scripts/
    └── validate.sh    # Script que Claude puede ejecutar

El SKILL.md tiene dos partes: un frontmatter YAML que configura el comportamiento, y contenido markdown con las instrucciones que Claude sigue.

---
name: mi-skill
description: Qué hace esta skill y cuándo usarla
disable-model-invocation: true
---

Instrucciones que Claude ejecutará al invocar la skill...

Dónde guardar las skills

La ubicación determina su alcance:

Ubicación Ruta Aplica a
Personal ~/.claude/skills/<nombre>/SKILL.md Todos tus proyectos
Proyecto .claude/skills/<nombre>/SKILL.md Solo este proyecto
Enterprise Managed settings Toda la organización
Plugin <plugin>/skills/<nombre>/SKILL.md Donde el plugin esté activo

Cuando hay skills con el mismo nombre en distintos niveles, gana la de mayor prioridad: enterprise > personal > proyecto.

Para la mayoría de casos, las skills personales (~/.claude/skills/) son las más prácticas. Las usas en cualquier proyecto sin configuración adicional.

Tu primera skill: paso a paso

Vamos a crear una skill que revise componentes frontend siguiendo criterios específicos. Es un caso de uso real: tienes un estándar de calidad y quieres que Claude lo aplique de forma consistente.

1. Crea el directorio

mkdir -p ~/.claude/skills/review-component

2. Escribe el SKILL.md

---
name: review-component
description: Revisa un componente frontend. Usa cuando se pida revisar, auditar o mejorar un componente Vue o React.
argument-hint: [ruta-al-componente]
---

Revisa el componente en $ARGUMENTS siguiendo estos criterios:

1. **Estructura**: ¿Separación clara de lógica, template y estilos?
2. **Props**: ¿Tipadas correctamente? ¿Valores por defecto donde aplique?
3. **Reactividad**: ¿Se usan computed/watchers de forma eficiente?
4. **Accesibilidad**: ¿Roles ARIA, labels, navegación por teclado?
5. **Rendimiento**: ¿Hay renders innecesarios o dependencias pesadas?

Presenta los hallazgos en una tabla con columna de severidad (alta/media/baja) y propón el fix para cada uno.

3. Pruébalo

Invócalo directamente:

/review-component src/components/SearchBar.vue

Claude leerá el componente y aplicará exactamente los 5 criterios que definiste. Siempre los mismos, en el mismo orden, con el mismo formato de output.

También puede activarse automáticamente. Si le pides "revisa este componente", Claude leerá la descripción de la skill y decidirá usarla si encaja. Si prefieres que solo se active cuando tú lo invoques, añade disable-model-invocation: true al frontmatter.

Frontmatter: todas las opciones

Campo Obligatorio Qué hace
name No Nombre del slash command. Si se omite, usa el nombre del directorio. Solo minúsculas, números y guiones (máx. 64 caracteres)
description Recomendado Qué hace la skill y cuándo usarla. Claude usa esto para decidir si cargarla automáticamente
argument-hint No Pista que aparece en el autocompletado. Ej: [issue-number]
disable-model-invocation No true para que solo tú puedas invocarla. Impide que Claude la active por su cuenta
user-invocable No false para ocultarla del menú /. Útil para contexto de fondo que Claude usa pero no es un comando accionable
allowed-tools No Herramientas que Claude puede usar sin pedir permiso cuando la skill está activa
model No Modelo a usar cuando la skill está activa
context No fork para ejecutar en un subagente aislado
agent No Tipo de subagente cuando context: fork está activo. Opciones: Explore, Plan, general-purpose, o un agente custom
hooks No Hooks vinculados al ciclo de vida de la skill

Quién puede invocar qué

La combinación de disable-model-invocation y user-invocable controla el acceso:

Configuración Tú invocas Claude invoca Cuándo usarlo
(por defecto) Skills de uso general
disable-model-invocation: true No Acciones con side effects: deploy, commit, enviar mensajes
user-invocable: false No Contexto de fondo: convenciones, info de sistemas legacy

Arguments: pasar datos a la skill

Cuando invocas /mi-skill algo, ese "algo" está disponible como $ARGUMENTS dentro del SKILL.md. También puedes acceder a argumentos por posición:

---
name: migrate-component
description: Migra un componente de un framework a otro
---

Migra el componente $0 de $1 a $2.
Preserva todo el comportamiento existente y los tests.

Al ejecutar /migrate-component SearchBar React Vue, $0 se reemplaza por SearchBar, $1 por React, y $2 por Vue.

Si la skill no incluye $ARGUMENTS en su contenido, Claude Code lo añade automáticamente al final como ARGUMENTS: <valor>.

Patrones avanzados

Inyectar contexto dinámico

La sintaxis !`comando` ejecuta comandos shell antes de enviar el contenido a Claude. El output del comando reemplaza el placeholder:

---
name: pr-summary
description: Resume los cambios de un pull request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## Contexto del pull request
- Diff del PR: !`gh pr diff`
- Comentarios: !`gh pr view --comments`
- Archivos modificados: !`gh pr diff --name-only`

## Tu tarea
Resume este pull request...

Esto es preprocesado. Los comandos se ejecutan antes de que Claude vea nada, y el contenido que recibe ya tiene los datos reales insertados.

Fork a subagente

Añade context: fork al frontmatter cuando quieras que la skill se ejecute en un contexto aislado. La skill se convierte en el prompt del subagente, sin acceso al historial de tu conversación.

---
name: deep-research
description: Investiga un tema a fondo en el codebase
context: fork
agent: Explore
---

Investiga $ARGUMENTS a fondo:

1. Encuentra archivos relevantes con Glob y Grep
2. Lee y analiza el código
3. Resume los hallazgos con referencias específicas a archivos

Cuando esta skill se ejecuta:

  1. Se crea un contexto nuevo y aislado
  2. El subagente recibe el contenido de la skill como su prompt
  3. El campo agent determina el entorno de ejecución (modelo, herramientas, permisos)
  4. Los resultados se resumen y vuelven a tu conversación principal

Esto es especialmente útil para tareas pesadas de investigación o procesamiento que llenarían tu ventana de contexto principal. El subagente trabaja en su propio espacio y te devuelve solo el resumen.

Archivos de soporte

Para skills complejas, no metas todo en el SKILL.md. Usa archivos adicionales:

content-generator/
├── SKILL.md           # Flujo principal: pasos 1-9
├── templates/
│   └── tip-template.md
└── examples/
    ├── tip-en.md
    └── tip-es.md

Referencia estos archivos desde tu SKILL.md para que Claude sepa qué contienen y cuándo cargarlos. Mantén el SKILL.md por debajo de 500 líneas y mueve el material de referencia detallado a archivos separados.

Skills vs hooks vs MCP vs subagentes

Claude Code tiene varios mecanismos de extensión. Cada uno resuelve un problema distinto:

Mecanismo Qué resuelve Ejemplo
Skills Flujos de trabajo repetibles con instrucciones específicas /review-component, /deploy, /generate-tip
Hooks Automatizar acciones antes/después de eventos de herramientas Formatear código después de cada edición, validar antes de commit
MCP Conectar con servicios externos Notion, Playwright, bases de datos
Subagentes Delegar tareas a agentes especializados con su propio contexto Investigación de codebase, tareas paralelas

Las skills pueden combinar todos los demás: una skill con context: fork usa subagentes, una skill con !`comando` puede invocar herramientas MCP, y una skill puede tener hooks vinculados a su ciclo de vida.

Consejos desde el uso diario

La descripción importa más de lo que crees. Claude usa la descripción del frontmatter para decidir si cargar automáticamente una skill. Si tu skill no se activa cuando esperas, revisa la descripción antes que nada.

Usa disable-model-invocation: true para todo lo que tenga side effects. Deploy, commits, enviar mensajes, publicar contenido. No quieres que Claude decida hacerlo por su cuenta porque "parece que es momento".

Las descripciones de skills consumen contexto. Claude carga las descripciones de todas las skills disponibles al inicio de cada sesión. Si tienes muchas, pueden exceder el budget de caracteres (2% de la ventana de contexto, con fallback de 16,000 caracteres). Usa /context para verificar si alguna skill está siendo excluida.

Empieza simple, itera. Tu primera skill puede ser 10 líneas. No necesitas frontmatter complejo, ni archivos de soporte, ni fork a subagentes. Empieza con las instrucciones que copiarías y pegarías manualmente, ponlas en un SKILL.md, y evoluciona desde ahí.

Conclusión

Las skills son el building block para flujos de trabajo repetibles con AI. No son complicadas. Son un archivo markdown con instrucciones, guardado en una carpeta, invocable con un slash command. Lo que las hace potentes es que permiten repetir con cierta predictabilidad un número determinado de pasos, pudiendo intervenir cuando sea necesario, siendo todo lo sencillo o complejo que tú quieras.

Si te encuentras haciendo lo mismo una y otra vez en Claude Code — revisar componentes, generar contenido, preparar deploys, crear PRs con un formato específico — eso es una skill esperando a ser escrita.

Documentación oficial: Extend Claude with skills

Recibe solo lo esencial

Si no hay nada que decir, no escribo. Si hay algo importante, te aviso. 7.000+ profesionales ya confían en esto.

¿Eres desarrollador/a Web profesional?
No

Cancela la suscripción en cualquier momento.