SKILL.md con instrucciones, y Claude lo añade a su kit de herramientas. Claude utiliza skills cuando es relevante, o puede invocar uno directamente con /skill-name.
Cree un skill cuando siga pegando el mismo manual, lista de verificación o procedimiento de varios pasos en el chat, o cuando una sección de CLAUDE.md se haya convertido en un procedimiento en lugar de un hecho. A diferencia del contenido de CLAUDE.md, el cuerpo de un skill se carga solo cuando se usa, por lo que el material de referencia largo cuesta casi nada hasta que lo necesita.
Para comandos integrados como
/help y /compact, y skills agrupados como /debug y /simplify, consulte la referencia de comandos.Los comandos personalizados se han fusionado con los skills. Un archivo en .claude/commands/deploy.md y un skill en .claude/skills/deploy/SKILL.md crean ambos /deploy y funcionan de la misma manera. Sus archivos existentes en .claude/commands/ siguen funcionando. Los skills añaden características opcionales: un directorio para archivos de apoyo, frontmatter para controlar si usted o Claude los invoca, y la capacidad de que Claude los cargue automáticamente cuando sea relevante.Skills agrupados
Claude Code incluye un conjunto de skills agrupados que están disponibles en cada sesión, incluyendo/simplify, /batch, /debug, /loop y /claude-api. A diferencia de la mayoría de comandos integrados, que ejecutan lógica fija directamente, los skills agrupados se basan en prompts: dan a Claude un manual detallado y le permiten orquestar el trabajo utilizando sus herramientas. Los invoca de la misma manera que cualquier otro skill, escribiendo / seguido del nombre del skill.
Los skills agrupados se enumeran junto con los comandos integrados en la referencia de comandos, marcados como Skill en la columna Propósito.
Primeros pasos
Crear su primer skill
Este ejemplo crea un skill que enseña a Claude a explicar código usando diagramas visuales y analogías. Como utiliza frontmatter predeterminado, Claude puede cargarlo automáticamente cuando pregunta cómo funciona algo, o puede invocarlo directamente con/explain-code.
Crear el directorio del skill
Cree un directorio para el skill en su carpeta de skills personales. Los skills personales están disponibles en todos sus proyectos.
Escribir SKILL.md
Cada skill necesita un archivo
SKILL.md con dos partes: frontmatter YAML (entre marcadores ---) que le dice a Claude cuándo usar el skill, y contenido markdown con instrucciones que Claude sigue cuando se invoca el skill. El campo name se convierte en el /slash-command, y la description ayuda a Claude a decidir cuándo cargarlo automáticamente.Cree ~/.claude/skills/explain-code/SKILL.md:Dónde viven los skills
Dónde almacena un skill determina quién puede usarlo:| Ubicación | Ruta | Se aplica a |
|---|---|---|
| Enterprise | Consulte configuración gestionada | Todos los usuarios de su organización |
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | Todos sus proyectos |
| Proyecto | .claude/skills/<skill-name>/SKILL.md | Solo este proyecto |
| Plugin | <plugin>/skills/<skill-name>/SKILL.md | Donde el plugin está habilitado |
plugin-name:skill-name, por lo que no pueden entrar en conflicto con otros niveles. Si tiene archivos en .claude/commands/, funcionan de la misma manera, pero si un skill y un comando comparten el mismo nombre, el skill tiene prioridad.
Detección de cambios en vivo
Claude Code observa los directorios de skills para detectar cambios de archivos. Añadir, editar o eliminar un skill bajo~/.claude/skills/, el proyecto .claude/skills/, o un .claude/skills/ dentro de un directorio --add-dir surte efecto dentro de la sesión actual sin reiniciar. Crear un directorio de skills de nivel superior que no existía cuando se inició la sesión requiere reiniciar Claude Code para que el nuevo directorio pueda ser observado.
Descubrimiento automático desde directorios anidados
Cuando trabaja con archivos en subdirectorios, Claude Code descubre automáticamente skills de directorios.claude/skills/ anidados. Por ejemplo, si está editando un archivo en packages/frontend/, Claude Code también busca skills en packages/frontend/.claude/skills/. Esto admite configuraciones de monorepo donde los paquetes tienen sus propios skills.
Cada skill es un directorio con SKILL.md como punto de entrada:
SKILL.md contiene las instrucciones principales y es obligatorio. Otros archivos son opcionales y le permiten crear skills más potentes: plantillas para que Claude las complete, salidas de ejemplo que muestren el formato esperado, scripts que Claude pueda ejecutar o documentación de referencia detallada. Haga referencia a estos archivos desde su SKILL.md para que Claude sepa qué contienen y cuándo cargarlos. Consulte Añadir archivos de apoyo para más detalles.
Los archivos en
.claude/commands/ siguen funcionando y admiten el mismo frontmatter. Los skills se recomiendan ya que admiten características adicionales como archivos de apoyo.Skills de directorios adicionales
La bandera--add-dir otorga acceso a archivos en lugar de descubrimiento de configuración, pero los skills son una excepción: .claude/skills/ dentro de un directorio añadido se carga automáticamente. Consulte Detección de cambios en vivo para ver cómo se detectan las ediciones durante una sesión.
Otra configuración de .claude/ como subagents, comandos y estilos de salida no se carga desde directorios adicionales. Consulte la tabla de excepciones para la lista completa de qué se carga y qué no, y las formas recomendadas de compartir configuración entre proyectos.
Los archivos CLAUDE.md de directorios
--add-dir no se cargan de forma predeterminada. Para cargarlos, establezca CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1. Consulte Cargar desde directorios adicionales.Configurar skills
Los skills se configuran a través de frontmatter YAML en la parte superior deSKILL.md y el contenido markdown que sigue.
Tipos de contenido de skill
Los archivos de skill pueden contener cualquier instrucción, pero pensar en cómo desea invocarlos ayuda a guiar qué incluir: Contenido de referencia añade conocimiento que Claude aplica a su trabajo actual. Convenciones, patrones, guías de estilo, conocimiento del dominio. Este contenido se ejecuta en línea para que Claude pueda usarlo junto con el contexto de su conversación./skill-name en lugar de dejar que Claude decida cuándo ejecutarlas. Añada disable-model-invocation: true para evitar que Claude la active automáticamente.
SKILL.md puede contener cualquier cosa, pero pensar en cómo desea que se invoque el skill (por usted, por Claude, o ambos) y dónde desea que se ejecute (en línea o en un subagent) ayuda a guiar qué incluir. Para skills complejos, también puede añadir archivos de apoyo para mantener el skill principal enfocado.
Referencia de frontmatter
Más allá del contenido markdown, puede configurar el comportamiento del skill utilizando campos de frontmatter YAML entre marcadores--- en la parte superior de su archivo SKILL.md:
description para que Claude sepa cuándo usar el skill.
| Campo | Requerido | Descripción |
|---|---|---|
name | No | Nombre para mostrar del skill. Si se omite, utiliza el nombre del directorio. Solo letras minúsculas, números y guiones (máximo 64 caracteres). |
description | Recomendado | Qué hace el skill y cuándo usarlo. Claude utiliza esto para decidir cuándo aplicar el skill. Si se omite, utiliza el primer párrafo del contenido markdown. Coloque la clave de uso al principio: el texto combinado de description y when_to_use se trunca en 1.536 caracteres en la lista de skills para reducir el uso de contexto. |
when_to_use | No | Contexto adicional para cuándo Claude debe invocar el skill, como frases desencadenantes o solicitudes de ejemplo. Se añade a description en la lista de skills y cuenta hacia el límite de 1.536 caracteres. |
argument-hint | No | Sugerencia mostrada durante el autocompletado para indicar argumentos esperados. Ejemplo: [issue-number] o [filename] [format]. |
arguments | No | Argumentos posicionales nombrados para sustitución de $name en el contenido del skill. Acepta una cadena separada por espacios o una lista YAML. Los nombres se asignan a posiciones de argumentos en orden. |
disable-model-invocation | No | Establezca en true para evitar que Claude cargue automáticamente este skill. Utilice para flujos de trabajo que desea activar manualmente con /name. También evita que el skill sea precargado en subagents. Predeterminado: false. |
user-invocable | No | Establezca en false para ocultar del menú /. Utilice para conocimiento de fondo que los usuarios no deberían invocar directamente. Predeterminado: true. |
allowed-tools | No | Herramientas que Claude puede usar sin pedir permiso cuando este skill está activo. Acepta una cadena separada por espacios o una lista YAML. |
model | No | Modelo a usar cuando este skill está activo. La anulación se aplica al resto del turno actual y no se guarda en la configuración; el modelo de sesión se reanuda en su siguiente prompt. Acepta los mismos valores que /model, o inherit para mantener el modelo activo. |
effort | No | Nivel de esfuerzo cuando este skill está activo. Anula el nivel de esfuerzo de la sesión. Predeterminado: hereda de la sesión. Opciones: low, medium, high, xhigh, max; los niveles disponibles dependen del modelo. |
context | No | Establezca en fork para ejecutar en un contexto de subagent bifurcado. |
agent | No | Qué tipo de subagent usar cuando context: fork está establecido. |
hooks | No | Hooks limitados al ciclo de vida de este skill. Consulte Hooks en skills y agents para el formato de configuración. |
paths | No | Patrones glob que limitan cuándo se activa este skill. Acepta una cadena separada por comas o una lista YAML. Cuando se establece, Claude carga el skill automáticamente solo cuando trabaja con archivos que coinciden con los patrones. Utiliza el mismo formato que reglas específicas de ruta. |
shell | No | Shell a usar para !`command` y bloques ```! en este skill. Acepta bash (predeterminado) o powershell. Establecer powershell ejecuta comandos de shell en línea a través de PowerShell en Windows. Requiere CLAUDE_CODE_USE_POWERSHELL_TOOL=1. |
Sustituciones de cadena disponibles
Los skills admiten sustitución de cadena para valores dinámicos en el contenido del skill:| Variable | Descripción |
|---|---|
$ARGUMENTS | Todos los argumentos pasados al invocar el skill. Si $ARGUMENTS no está presente en el contenido, los argumentos se añaden como ARGUMENTS: <value>. |
$ARGUMENTS[N] | Acceda a un argumento específico por índice basado en 0, como $ARGUMENTS[0] para el primer argumento. |
$N | Abreviatura para $ARGUMENTS[N], como $0 para el primer argumento o $1 para el segundo. |
$name | Argumento nombrado declarado en la lista de frontmatter arguments. Los nombres se asignan a posiciones en orden, por lo que con arguments: [issue, branch] el marcador de posición $issue se expande al primer argumento y $branch al segundo. |
${CLAUDE_SESSION_ID} | El ID de sesión actual. Útil para registro, creación de archivos específicos de sesión o correlación de salida de skill con sesiones. |
${CLAUDE_SKILL_DIR} | El directorio que contiene el archivo SKILL.md del skill. Para skills de plugin, este es el subdirectorio del skill dentro del plugin, no la raíz del plugin. Utilice esto en comandos de inyección bash para hacer referencia a scripts o archivos incluidos con el skill, independientemente del directorio de trabajo actual. |
/my-skill "hello world" second hace que $0 se expanda a hello world y $1 a second. El marcador de posición $ARGUMENTS siempre se expande a la cadena de argumento completa tal como se escribió.
Ejemplo usando sustituciones:
Añadir archivos de apoyo
Los skills pueden incluir múltiples archivos en su directorio. Esto mantieneSKILL.md enfocado en lo esencial mientras permite que Claude acceda a material de referencia detallado solo cuando sea necesario. Documentos de referencia grandes, especificaciones de API o colecciones de ejemplos no necesitan cargarse en contexto cada vez que se ejecuta el skill.
SKILL.md para que Claude sepa qué contiene cada archivo y cuándo cargarlo:
Controlar quién invoca un skill
De forma predeterminada, tanto usted como Claude pueden invocar cualquier skill. Puede escribir/skill-name para invocarlo directamente, y Claude puede cargarlo automáticamente cuando sea relevante para su conversación. Dos campos de frontmatter le permiten restringir esto:
-
disable-model-invocation: true: Solo usted puede invocar el skill. Utilice esto para flujos de trabajo con efectos secundarios o que desea controlar el tiempo, como/commit,/deployo/send-slack-message. No desea que Claude decida desplegar porque su código se ve listo. -
user-invocable: false: Solo Claude puede invocar el skill. Utilice esto para conocimiento de fondo que no es accionable como comando. Un skilllegacy-system-contextexplica cómo funciona un sistema antiguo. Claude debe saber esto cuando sea relevante, pero/legacy-system-contextno es una acción significativa para que los usuarios realicen.
disable-model-invocation: true evita que Claude lo ejecute automáticamente:
| Frontmatter | Puede invocar | Claude puede invocar | Cuándo se carga en contexto |
|---|---|---|---|
| (predeterminado) | Sí | Sí | La descripción siempre en contexto, el skill completo se carga cuando se invoca |
disable-model-invocation: true | Sí | No | La descripción no está en contexto, el skill completo se carga cuando lo invoca |
user-invocable: false | No | Sí | La descripción siempre en contexto, el skill completo se carga cuando se invoca |
En una sesión regular, las descripciones de skills se cargan en contexto para que Claude sepa qué está disponible, pero el contenido completo del skill solo se carga cuando se invoca. Los subagents con skills precargados funcionan de manera diferente: el contenido completo del skill se inyecta al inicio.
Ciclo de vida del contenido del skill
Cuando usted o Claude invoca un skill, el contenidoSKILL.md renderizado entra en la conversación como un único mensaje y permanece allí durante el resto de la sesión. Claude Code no vuelve a leer el archivo de skill en turnos posteriores, por lo que escriba la orientación que debe aplicarse durante una tarea como instrucciones permanentes en lugar de pasos únicos.
Auto-compactación lleva skills invocados hacia adelante dentro de un presupuesto de tokens. Cuando la conversación se resume para liberar contexto, Claude Code vuelve a adjuntar la invocación más reciente de cada skill después del resumen, manteniendo los primeros 5.000 tokens de cada uno. Los skills reajustados comparten un presupuesto combinado de 25.000 tokens. Claude Code llena este presupuesto comenzando desde el skill invocado más recientemente, por lo que los skills más antiguos pueden eliminarse completamente después de la compactación si ha invocado muchos en una sesión.
Si un skill parece dejar de influir en el comportamiento después de la primera respuesta, el contenido generalmente sigue presente y el modelo está eligiendo otras herramientas o enfoques. Fortalezca la description del skill e instrucciones para que el modelo siga prefiriéndolo, o use hooks para aplicar comportamiento de manera determinista. Si el skill es grande o invocó varios otros después de él, vuelva a invocarlo después de la compactación para restaurar el contenido completo.
Pre-aprobar herramientas para un skill
El campoallowed-tools otorga permiso para las herramientas enumeradas mientras el skill está activo, por lo que Claude puede usarlas sin solicitarle aprobación. No restringe qué herramientas están disponibles: cada herramienta sigue siendo invocable, y su configuración de permisos sigue rigiendo las herramientas que no están enumeradas.
Este skill permite que Claude ejecute comandos git sin aprobación por uso cada vez que lo invoca:
Pasar argumentos a skills
Tanto usted como Claude pueden pasar argumentos al invocar un skill. Los argumentos están disponibles a través del marcador de posición$ARGUMENTS.
Este skill corrige un problema de GitHub por número. El marcador de posición $ARGUMENTS se reemplaza con lo que sigue al nombre del skill:
/fix-issue 123, Claude recibe “Fix GitHub issue 123 following our coding standards…”
Si invoca un skill con argumentos pero el skill no incluye $ARGUMENTS, Claude Code añade ARGUMENTS: <your input> al final del contenido del skill para que Claude siga viendo lo que escribió.
Para acceder a argumentos individuales por posición, utilice $ARGUMENTS[N] o la forma más corta $N:
/migrate-component SearchBar React Vue reemplaza $ARGUMENTS[0] con SearchBar, $ARGUMENTS[1] con React y $ARGUMENTS[2] con Vue. El mismo skill usando la abreviatura $N:
Patrones avanzados
Inyectar contexto dinámico
La sintaxis!`<command>` ejecuta comandos de shell antes de que el contenido del skill se envíe a Claude. La salida del comando reemplaza el marcador de posición, por lo que Claude recibe datos reales, no el comando en sí.
Este skill resume una solicitud de extracción obteniendo datos de PR en vivo con la CLI de GitHub. Los comandos !`gh pr diff` y otros se ejecutan primero, y su salida se inserta en el prompt:
- Cada
!`<command>`se ejecuta inmediatamente (antes de que Claude vea algo) - La salida reemplaza el marcador de posición en el contenido del skill
- Claude recibe el prompt completamente renderizado con datos de PR reales
```! en lugar de la forma en línea:
"disableSkillShellExecution": true en configuración. Cada comando se reemplaza con [shell command execution disabled by policy] en lugar de ejecutarse. Los skills agrupados y gestionados no se ven afectados. Esta configuración es más útil en configuración gestionada, donde los usuarios no pueden anularla.
Ejecutar skills en un subagent
Añadacontext: fork a su frontmatter cuando desee que un skill se ejecute en aislamiento. El contenido del skill se convierte en el prompt que impulsa el subagent. No tendrá acceso a su historial de conversación.
Los skills y los subagents funcionan juntos en dos direcciones:
| Enfoque | Prompt del sistema | Tarea | También carga |
|---|---|---|---|
Skill con context: fork | Del tipo de agent (Explore, Plan, etc.) | Contenido de SKILL.md | CLAUDE.md |
Subagent con campo skills | Cuerpo markdown del subagent | Mensaje de delegación de Claude | Skills precargados + CLAUDE.md |
context: fork, escribe la tarea en tu skill y elige un tipo de agent para ejecutarla. Para lo inverso (definir un subagent personalizado que use skills como material de referencia), consulte Subagents.
Ejemplo: Skill de investigación usando agent Explore
Este skill ejecuta investigación en un agent Explore bifurcado. El contenido del skill se convierte en la tarea, y el agent proporciona herramientas de solo lectura optimizadas para exploración de base de código:- Se crea un nuevo contexto aislado
- El subagent recibe el contenido del skill como su prompt (“Research $ARGUMENTS thoroughly…”)
- El campo
agentdetermina el entorno de ejecución (modelo, herramientas y permisos) - Los resultados se resumen y se devuelven a su conversación principal
agent especifica qué configuración de subagent usar. Las opciones incluyen agents integrados (Explore, Plan, general-purpose) o cualquier subagent personalizado de .claude/agents/. Si se omite, utiliza general-purpose.
Restringir el acceso de Claude a skills
De forma predeterminada, Claude puede invocar cualquier skill que no tengadisable-model-invocation: true establecido. Los skills que definen allowed-tools otorgan a Claude acceso a esas herramientas sin aprobación por uso cuando el skill está activo. Su configuración de permisos sigue rigiendo el comportamiento de aprobación de línea base para todas las demás herramientas. Algunos comandos integrados también están disponibles a través de la herramienta Skill, incluyendo /init, /review y /security-review. Otros comandos integrados como /compact no lo están.
Tres formas de controlar qué skills puede invocar Claude:
Deshabilitar todos los skills negando la herramienta Skill en /permissions:
Skill(name) para coincidencia exacta, Skill(name *) para coincidencia de prefijo con cualquier argumento.
Ocultar skills individuales añadiendo disable-model-invocation: true a su frontmatter. Esto elimina el skill del contexto de Claude por completo.
El campo
user-invocable solo controla la visibilidad del menú, no el acceso a la herramienta Skill. Utilice disable-model-invocation: true para bloquear la invocación programática.Compartir skills
Los skills se pueden distribuir en diferentes ámbitos dependiendo de su audiencia:- Skills de proyecto: Confirme
.claude/skills/en el control de versiones - Plugins: Cree un directorio
skills/en su plugin - Gestionado: Implemente en toda la organización a través de configuración gestionada
Generar salida visual
Los skills pueden agrupar y ejecutar scripts en cualquier idioma, dando a Claude capacidades más allá de lo que es posible en un único prompt. Un patrón poderoso es generar salida visual: archivos HTML interactivos que se abren en su navegador para explorar datos, depurar o crear informes. Este ejemplo crea un explorador de base de código: una vista de árbol interactiva donde puede expandir y contraer directorios, ver tamaños de archivo de un vistazo e identificar tipos de archivo por color. Cree el directorio Skill:~/.claude/skills/codebase-visualizer/SKILL.md. La descripción le dice a Claude cuándo activar este Skill, y las instrucciones le dicen a Claude que ejecute el script incluido:
~/.claude/skills/codebase-visualizer/scripts/visualize.py. Este script escanea un árbol de directorios y genera un archivo HTML independiente con:
- Una barra lateral de resumen que muestra el recuento de archivos, recuento de directorios, tamaño total y número de tipos de archivo
- Un gráfico de barras que desglosa la base de código por tipo de archivo (los 8 principales por tamaño)
- Un árbol contraíble donde puede expandir y contraer directorios, con indicadores de tipo de archivo codificados por color
codebase-map.html y lo abre en su navegador.
Este patrón funciona para cualquier salida visual: gráficos de dependencias, informes de cobertura de pruebas, documentación de API o visualizaciones de esquema de base de datos. El script incluido hace el trabajo pesado mientras Claude maneja la orquestación.
Solución de problemas
Skill no se activa
Si Claude no usa su skill cuando se espera:- Verifique que la descripción incluya palabras clave que los usuarios dirían naturalmente
- Verifique que el skill aparezca en
What skills are available? - Intente reformular su solicitud para que coincida más estrechamente con la descripción
- Invóquelo directamente con
/skill-namesi el skill es invocable por el usuario
Skill se activa demasiado a menudo
Si Claude usa su skill cuando no desea:- Haga la descripción más específica
- Añada
disable-model-invocation: truesi solo desea invocación manual
Las descripciones de skills se cortan
Las descripciones de skills se cargan en contexto para que Claude sepa qué está disponible. Todos los nombres de skills siempre se incluyen, pero si tiene muchos skills, las descripciones se acortan para ajustarse al presupuesto de caracteres, lo que puede eliminar las palabras clave que Claude necesita para coincidir con su solicitud. El presupuesto se escala dinámicamente al 1% de la ventana de contexto, con un respaldo de 8.000 caracteres. Para aumentar el límite, establezca la variable de entornoSLASH_COMMAND_TOOL_CHAR_BUDGET. O recorte el texto de description y when_to_use en la fuente: coloque la clave de uso al principio, ya que el texto combinado de cada entrada está limitado a 1.536 caracteres independientemente del presupuesto.
Recursos relacionados
- Depura tu configuración: diagnostica por qué una skill no aparece o no se activa
- Subagents: delega tareas a agents especializados
- Plugins: empaqueta y distribuye skills con otras extensiones
- Hooks: automatiza flujos de trabajo alrededor de eventos de herramientas
- Memory: gestiona archivos CLAUDE.md para contexto persistente
- Comandos: referencia para comandos integrados y skills agrupados
- Permisos: controla el acceso a herramientas y skills