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 /code-review, 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 a menos que se desactiven con la configuracióndisableBundledSkills, incluyendo /doctor, /code-review, /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 instrucciones detalladas 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.
La verificación de configuración /doctor es la única excepción a disableBundledSkills en Claude Code v2.1.205 y posterior: permanece escribible cuando la configuración está activada. Para ocultarla, establezca la variable de entorno DISABLE_DOCTOR_COMMAND o una entrada skillOverrides de "doctor": "off". Antes de v2.1.205, /doctor era un comando integrado en lugar de un skill agrupado.
Los skills agrupados se enumeran junto con los comandos integrados en la referencia de comandos, marcados como Skill en la columna Propósito.
Ejecutar y verificar su aplicación
Tres skills agrupados trabajan juntos para lanzar su aplicación y confirmar cambios contra la aplicación en ejecución en lugar de solo pruebas:
Los tres skills requieren Claude Code v2.1.145 o posterior.
/run y /verify funcionan sin configuración. Deducen el lanzamiento de su tipo de proyecto (CLI, servidor, TUI, impulsado por navegador) y de lo que hay en su README, package.json o Makefile. Esa deducción se vuelve poco confiable para proyectos que necesitan algo más allá de un lanzamiento estándar: una base de datos, un archivo env, una sesión gráfica, una compilación de varios pasos.
/run-skill-generator registra la receta en su lugar. Consigue que su aplicación se ejecute desde un entorno limpio, captura lo que funcionó (los comandos de instalación, las variables de entorno, el script de lanzamiento) y lo confirma como un skill por proyecto en .claude/skills/run-<name>/. Después de eso, /run, /verify y cualquier otro agente en el repositorio siguen la receta registrada en lugar de redescubrirla. Ejecute /run-skill-generator una vez por proyecto, y nuevamente si el proceso de compilación o lanzamiento cambia.
Primeros pasos
Crear su primer skill
Este ejemplo crea un skill que resume los cambios sin confirmar en su repositorio git e identifica cualquier cosa arriesgada. Extrae el diff en vivo en el prompt antes de que Claude lo lea, por lo que la respuesta se basa en su árbol de trabajo real en lugar de lo que Claude puede adivinar a partir de archivos abiertos. Claude carga el skill automáticamente cuando pregunta sobre sus cambios, o puede invocarlo directamente con/summarize-changes.
1
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.
2
Escribir SKILL.md
Cada skill necesita un archivo La línea
SKILL.md con dos partes: frontmatter YAML entre marcadores --- que le dice a Claude cuándo usar el skill, y contenido markdown con las instrucciones que Claude sigue cuando se ejecuta el skill. El nombre del directorio se convierte en el comando que escribe, y la description ayuda a Claude a decidir cuándo cargar el skill automáticamente.Guarde esto en ~/.claude/skills/summarize-changes/SKILL.md:!`git diff HEAD` utiliza inyección de contexto dinámico: Claude Code ejecuta el comando y reemplaza la línea con su salida antes de que Claude vea el contenido del skill, por lo que las instrucciones llegan con el diff actual ya insertado.3
Probar el skill
Abra un proyecto git, realice una pequeña edición en cualquier archivo e inicie Claude Code ejecutando O invocarlo directamente con el nombre del skill:De cualquier manera, Claude debe responder con un breve resumen de su edición y una lista de riesgos.
claude. Puede probar el skill de dos maneras.Dejar que Claude lo invoque automáticamente haciendo una pregunta que coincida con la descripción:Dónde viven los skills
Dónde almacena un skill determina quién puede usarlo:
Cuando los skills comparten el mismo nombre en diferentes niveles, enterprise anula personal, y personal anula proyecto. Un skill en cualquiera de estos niveles también anula un skill incluido con el mismo nombre. Por ejemplo, un skill
code-review en el .claude/skills/ de su proyecto reemplaza el /code-review incluido. Los skills de plugin utilizan un espacio de nombres 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.
Los skills también se cargan desde directorios .claude/skills/ anidados por debajo de su directorio de trabajo. Cuando Claude lee o edita un archivo en un subdirectorio, los skills del .claude/skills/ de ese subdirectorio se vuelven disponibles. Esto permite que un paquete de monorepo proporcione sus propios skills que se apliquen cuando se trabaja en ese paquete, incluso si la sesión comenzó en la raíz del repositorio.
Si un skill anidado comparte un nombre con otro skill, ambos permanecen disponibles. Por ejemplo, con un skill deploy en la raíz del proyecto y otro en apps/web/.claude/skills/:
- El anidado aparece bajo un nombre calificado por directorio,
apps/web:deploy. - Su descripción dice a qué directorio se aplica.
- Claude elige la variante que coincide con los archivos en los que está trabajando.
/deploy ejecuta el skill de la raíz del proyecto. Escriba el nombre calificado /apps/web:deploy para ejecutar explícitamente la variante anidada.
Cuando usted o Claude invoca el nombre sin calificar, se carga el skill de la raíz del proyecto, y Claude Code añade una lista de las variantes calificadas por directorio a su contenido con una instrucción para también invocar cualquier variante cuyo directorio contenga los archivos en los que Claude está trabajando. Un skill anidado, por lo tanto, sigue siendo aplicable al trabajo en su directorio cuando solo se invoca el nombre sin calificar. Requiere Claude Code v2.1.203 o posterior.
Una entrada <skill-name> en las ubicaciones enterprise, personal o proyecto puede ser un enlace simbólico a un directorio en otro lugar del disco. Claude Code sigue el enlace simbólico y lee SKILL.md del directorio de destino, y si el mismo destino es accesible desde más de una ubicación, Claude Code carga el skill una sola vez. Los skills de plugin manejan los enlaces simbólicos de manera diferente; consulte Compartir archivos dentro de un marketplace con enlaces simbólicos.
Agregue un
.claude-plugin/plugin.json a una carpeta de skill y se carga como un plugin llamado <name>@skills-dir, por lo que puede agrupar agentes, hooks y servidores MCP. En un .claude/skills/ de proyecto, esto requiere aceptar primero el diálogo de confianza del espacio de trabajo.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.
La detección de cambios en vivo cubre solo el texto de
SKILL.md. Para una carpeta de skill que también es un plugin, los cambios en hooks/, .mcp.json, agents/ y output-styles/ necesitan /reload-plugins para surtir efecto.Descubrimiento automático desde directorios anidados y padres
Los skills del proyecto se cargan desde.claude/skills/ en su directorio de inicio y en cada directorio padre hasta la raíz del repositorio, por lo que iniciar Claude en un subdirectorio sigue recogiendo skills definidos en la raíz. Cuando trabaja con archivos en subdirectorios por debajo de su directorio de inicio, Claude Code también descubre skills desde directorios .claude/skills/ anidados bajo demanda. 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 y el comando /add-dir otorgan 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. Esta excepción se aplica solo a --add-dir y /add-dir. La configuración permissions.additionalDirectories en settings.json otorga solo acceso a archivos y no carga skills. 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 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.
Mantenga el cuerpo en sí conciso. Una vez que se carga un skill, su contenido permanece en contexto entre turnos, por lo que cada línea es un costo de token recurrente. Indique qué hacer en lugar de narrar cómo o por qué, y aplique la misma prueba de concisión que haría para contenido de CLAUDE.md.
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.
Cómo un skill obtiene su nombre de comando
El comando que escribe para invocar un skill proviene de dónde vive el archivo de skill. El campo frontmattername establece la etiqueta de visualización mostrada en listados de skills y, excepto para un SKILL.md de raíz de plugin, no cambia lo que escribe después de /.
La tabla a continuación muestra de dónde proviene el nombre del comando para cada diseño:
El caso de raíz del plugin es el único lugar donde
name establece el nombre del comando, porque no hay directorio de skill del que tomarlo. Si name no se establece en el frontmatter, se utiliza el nombre del directorio del plugin en su lugar.
Sustituciones de cadena disponibles
Los skills admiten sustitución de cadena para valores dinámicos en el contenido del skill:
La sustitución
${CLAUDE_PROJECT_DIR} requiere Claude Code v2.1.196 o posterior. Se aplica tanto al cuerpo del skill como al frontmatter allowed-tools, por lo que una regla de permiso como Bash(${CLAUDE_PROJECT_DIR}/scripts/lint.sh *) se resuelve a la misma ruta que usa el cuerpo del skill.
Los argumentos indexados utilizan entrecomillado de estilo shell, por lo que envuelva valores de varias palabras entre comillas para pasarlos como un único argumento. Por ejemplo, /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ó.
Para incluir un $ literal antes de un dígito, ARGUMENTS, o un nombre de argumento declarado, como $1.00 en prosa, escápelo con una barra invertida: \$1.00. Una barra invertida antes de cualquier otro $ se deja sin cambios. Solo una barra invertida directamente antes del token lo escapa. Una barra invertida duplicada como \\$1 deja ambas barras invertidas en su lugar, y $1 sigue expandiéndose al valor del argumento.
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, Claude no puede ejecutar el skill automáticamente:
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.
Cuando Claude vuelve a invocar un skill cuyo contenido renderizado es idéntico a la copia ya en contexto, Claude Code añade una nota breve de que el skill ya está cargado en lugar de una segunda copia del contenido. Cuando el contenido renderizado difiere, porque los argumentos cambiaron o un comando de contexto dinámico produjo una nueva salida, Claude Code añade el contenido completo nuevamente. Antes de v2.1.202, cada re-invocación añadía otra copia completa de las instrucciones del skill.
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.
Para skills verificados en el directorio .claude/skills/ de un proyecto, allowed-tools entra en vigor después de que acepte el diálogo de confianza del espacio de trabajo para esa carpeta, igual que las reglas de permisos en .claude/settings.json. Revise los skills del proyecto antes de confiar en un repositorio, ya que un skill puede otorgarse a sí mismo acceso amplio a herramientas.
Este skill permite que Claude ejecute comandos git sin aprobación por uso cada vez que lo invoca:
disallowed-tools en el frontmatter del skill. La restricción se borra cuando envía su siguiente mensaje. Para bloquear herramientas en todos los skills y prompts, añada reglas de denegación en su configuración de permisos.
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ó.
También puede apilar varios skills al inicio de un mensaje. A partir de v2.1.199, escribir /code-review /fix-issue 123 carga ambos skills y pasa el texto final 123 como $ARGUMENTS a cada uno de ellos. En versiones anteriores, solo el primer skill se cargaba y recibía /fix-issue 123 como texto de argumento literal.
Claude Code expande el primer skill más hasta cinco más apilados después de él. La expansión se detiene en el primer token que no es un skill invocable en línea por el usuario, por lo que un skill que se ejecuta como un subagent bifurcado o uno cuyos argumentos pueden comenzar con un comando de barra, como /loop, también termina allí; ese token y todo lo que viene después se convierte en el texto de argumento para cada skill expandido.
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
!`<command>`, por lo que un comando no puede emitir un marcador de posición para que una pasada posterior lo expanda.
La forma en línea solo se reconoce cuando ! aparece al inicio de una línea o inmediatamente después de espacios en blanco. Si ! sigue a otro carácter, como en KEY=!`cmd`, el marcador de posición se deja como texto literal y el comando no se ejecuta.
Para comandos de varias líneas, utilice un bloque de código cercado abierto con ```! en lugar de la forma en línea:
"disableSkillShellExecution": true en settings. 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 managed settings, 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:
Con
context: fork, escribe la tarea en tu skill y elige un tipo de agent para ejecutarla. Los agents integrados Explore y Plan omiten CLAUDE.md y git status para mantener su contexto pequeño, por lo que un skill bifurcado usando agent: Explore solo ve el contenido de SKILL.md y el prompt del sistema del agent. Para lo inverso, donde define un subagent personalizado que usa 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.Anular la visibilidad del skill desde la configuración
La configuraciónskillOverrides controla la visibilidad del skill desde su settings en lugar del frontmatter del skill. Úselo para skills cuyo SKILL.md no desea editar, como los que se registran en un repositorio de proyecto compartido o proporcionados por un servidor MCP. El menú /skills lo escribe por usted: resalte un skill y presione Space para ciclar entre estados, luego Enter para guardar en .claude/settings.local.json.
Cada clave es un nombre de skill y cada valor es uno de cuatro estados:
A partir de v2.1.199,
"off" también oculta el skill de las listas de comandos anunciadas a clientes de Remote Control y a llamadores de Agent SDK, no solo el menú / de terminal. Invocar un skill oculto por su nombre completo aún devuelve el error skillOverrides en lugar de ejecutarlo.
Un skill que está ausente de skillOverrides se trata como "on". El ejemplo a continuación colapsa un skill a su nombre y desactiva otro por completo:
skillOverrides. Gestione esos a través de /plugin en su lugar.
Evaluar e iterar en un skill
Ver que un skill se activa le dice que Claude lo encontró, no que hizo lo que pretendía. Para saber que un skill funciona, mida dos cosas por separado: si Claude lo invoca en los prompts que debería, y si la salida coincide con lo que espera cuando lo hace. La verificación de ambos es una comparación de línea base. Recopile algunos prompts realistas, ejecute cada uno en una sesión nueva con el skill disponible y nuevamente con deshabilitado, y compare los resultados. Una sesión nueva es importante porque el contexto sobrante de la autoría del skill enmascarará las brechas en las instrucciones escritas.Ejecutar evals con skill-creator
El pluginskill-creator automatiza el bucle de comparación dentro de Claude Code. Instálelo desde el marketplace oficial:
/plugin marketplace update claude-plugins-official para actualizarlo, o /plugin marketplace add anthropics/claude-plugins-official si no lo ha añadido antes. Luego reintente la instalación.
Después de instalar, ejecute /reload-plugins para que los skills del plugin estén disponibles en la sesión actual. Luego pida a Claude que evalúe un skill existente, por ejemplo evaluate my summarize-changes skill with skill-creator. El plugin lo guía a través de la escritura de casos de prueba y ejecuta el bucle:
- Casos de prueba: almacena prompts, archivos de entrada y comportamiento esperado en
evals/evals.jsondentro del directorio de skill - Ejecuciones aisladas: genera un subagent por caso de prueba para que cada ejecución comience con un contexto limpio, y registra el recuento de tokens y la duración
- Calificación: verifica cada aserción contra la salida y escribe aprobado o reprobado con evidencia en
grading.json - Benchmark: agrega la tasa de aprobación, tiempo y tokens para con-skill versus sin-skill en
benchmark.jsonpara que pueda comparar la mejora de la tasa de aprobación contra la sobrecarga de tokens y tiempo - Comparación de versiones: ejecuta una prueba A/B ciega entre dos versiones del skill para que pueda confirmar que una edición es una mejora antes de confirmarla
- Visor de revisión: abre un informe HTML donde puede inspeccionar cada salida y registrar comentarios cualitativos que la siguiente iteración lee
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. La ruta del script utiliza ${CLAUDE_SKILL_DIR} para que se resuelva correctamente si el skill está instalado a nivel personal, de proyecto o de plugin:
~/.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-name sigue funcionando pero Claude no tiene description para coincidir. Ejecute con --debug para ver el error de análisis.
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
Claude Code carga un listado de nombres de skills y descripciones en contexto para que Claude sepa qué está disponible. El listado siempre contiene todos los nombres de skills, pero si tiene muchos skills, Claude Code acorta las descripciones para ajustarse al presupuesto de caracteres del listado, lo que puede eliminar las palabras clave que Claude necesita para coincidir con su solicitud. El presupuesto se escala al 1% de la ventana de contexto del modelo. Cuando el listado se desborda, Claude Code elimina descripciones comenzando con los skills que invoca menos, por lo que los skills que usa más mantienen su texto completo. Ejecute/doctor para obtener una estimación del costo de contexto del listado y sus mayores contribuyentes. Cuando el listado excede su presupuesto, Claude Code también escribe una advertencia en el registro de depuración, visible con --debug.
La fila Skills en /context reporta el tamaño del listado después de que se aplica el presupuesto, por lo que coincide con lo que recibe el modelo. Antes de v2.1.196, la fila contaba el texto completo de cada descripción y podría mostrar un valor varias veces mayor que el presupuesto configurado.
Para aumentar el presupuesto, establezca la configuración skillListingBudgetFraction (por ejemplo, 0.02 = 2%) o la variable de entorno SLASH_COMMAND_TOOL_CHAR_BUDGET a un recuento de caracteres fijo. Para liberar presupuesto para otros skills, establezca las entradas de baja prioridad en "name-only" en skillOverrides para que se enumeren sin descripción. También puede recortar el texto de description y when_to_use en la fuente: coloque el caso de uso clave primero, ya que el texto combinado de cada entrada está limitado a 1.536 caracteres independientemente del presupuesto. El límite es configurable con skillListingMaxDescChars.
Recursos relacionados
- Depura tu configuración: diagnostica por qué una skill no aparece o no se activa
- Evaluating skill output quality: el formato del archivo eval y el flujo de trabajo de iteración en agentskills.io
- Skill authoring best practices: orientación de escritura que se aplica en productos Claude
- 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
- Claude Tag skills: skills de proyecto comprometidas en un repositorio también se cargan cuando ese repositorio se utiliza en un canal de Claude Tag