Ir al contenido
Mastering Claude

Inicio / Extender: habilidades, MCP, subagentes, hooks, plugins

Extender: habilidades, MCP, subagentes, hooks, plugins9 minPratique

Crear una skill que también se convierte en un comando

Un comando personalizado y una skill son ahora el mismo mecanismo: un archivo .claude/commands/nombre.md y una carpeta .claude/skills/nombre/SKILL.md producen ambos el comando /nombre con el mismo comportamiento, y para una skill personal o de proyecto, es el nombre de la carpeta, no el campo name del frontmatter, el que se convierte en el nombre del comando.

Un comando personalizado y una skill se han convertido en el mismo mecanismo. Un archivo .claude/commands/deploy.md y una carpeta .claude/skills/deploy/SKILL.md producen ambos el comando /deploy, con el mismo comportamiento en la ejecución: los antiguos archivos de comandos siguen funcionando sin cambiar nada, y la forma en carpeta es ahora la recomendada para lo que supera una simple instrucción, porque puede embarcar archivos de apoyo junto al texto.

Dónde vive una skill, y hasta dónde alcanza

Una skill personal vive en ~/.claude/skills/nombre-de-la-skill/SKILL.md y sigue disponible en todos los proyectos abiertos desde esa cuenta. Una skill de proyecto vive en .claude/skills/nombre-de-la-skill/SKILL.md y solo se aplica a ese repositorio preciso, es esa la que se versiona en el control de versiones para compartirla con un equipo. Existen otras dos ubicaciones, una para una skill provista por la empresa, otra para una skill entregada en un plugin, cada una con su propia prioridad en caso de nombre compartido entre varias fuentes. La elección de la ubicación se hace entonces antes de escribir, preguntándose quién debe ver ese comando: uno mismo en todos sus proyectos, o todo un equipo en ese repositorio preciso.

El frontmatter y la sustitución de argumentos

En el frontmatter, solo el campo description es realmente recomendado, todos los demás siguen siendo opcionales, incluido name. Para una skill personal o de proyecto, este campo solo sirve de etiqueta de visualización, sin determinar el nombre del comando, que proviene del nombre de la carpeta; en una skill de plugin en cambio, name fija el último segmento del comando, quedando delante el prefijo del plugin. En el cuerpo del archivo, $ARGUMENTS recibe todo lo que el usuario escribió después del comando, como una sola cadena; la indexación parte de cero, $0 recibe la primera palabra, $1 la segunda, y así sucesivamente, siendo $ARGUMENTS[N] la forma larga equivalente a $N; y un argumento declarado por su nombre en el frontmatter se lee directamente con $nombre-declarado en el texto.

# Exemple illustratif, sur un dossier de démonstration
mkdir -p demo-commande/resumer-pr
cat > demo-commande/resumer-pr/SKILL.md <<'EOF'
---
description: Resume une pull request a partir de son numero, pour preparer une revue rapide.
arguments:
  - name: numero_pr
---
Resume la pull request numero $numero_pr en trois points : ce qui change,
ce que ca casse potentiellement, ce qui reste a tester.
EOF

Esta fusión simplifica una elección que, apenas unos meses antes, obligaba a decidir entre dos archivos vecinos desde el principio. No exime de elegir la ubicación correcta, personal o de proyecto, ni de escribir una descripción suficientemente precisa para que la skill se active en el momento adecuado sin intervención: es justamente ese mecanismo de activación, ya planteado en enseñar un workflow a Claude, el que decide si el trabajo de escritura sirve de algo. Un comando que existe pero que nadie piensa en escribir, por falta de una descripción que lo hubiera podido activar automáticamente, presta exactamente el mismo servicio que si nunca hubiera sido escrito.

Figure 1

Skill personal contra skill de proyecto

Ubicación de una skillRuta del archivoProyectos cubiertosQué se versiona en el control de versiones
Skill personal~/.claude/skills/nombre/SKILL.mdTodos los proyectos abiertos desde esa cuentaPermanece fuera del repositorio del proyecto en curso
Skill de proyecto.claude/skills/nombre/SKILL.mdSolo ese repositorio precisoSe versiona en el repositorio para compartirla con el equipo
Las dos ubicaciones producen un comando de la misma manera, se diferencian por el alcance y por lo que se decide compartir.
Figure 2

Del comando escrito al texto sustituido

01
Llamada
El usuario escribe /nombre seguido de una o varias palabras.
02
Cadena completa
$ARGUMENTS recibe todo lo que sigue al comando, como una sola cadena.
03
Palabras separadas
$0 recibe la primera palabra, $1 la segunda, la indexación partiendo de cero.
04
Argumento nombrado
Un argumento declarado en el frontmatter se lee por su propio nombre en el cuerpo del archivo.
Cada forma de sustitución recibe una porción distinta de lo que el usuario escribió después del comando.
Calíbralo tú mismo

Una desarrolladora abre un antiguo archivo .claude/commands/deploy.md escrito varios meses antes en su proyecto, escribe el comando /deploy en una sesión Claude Code, y Claude aplica el contenido de ese archivo al pie de la letra.

Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • Un archivo .claude/commands/nombre.md y una carpeta .claude/skills/nombre/SKILL.md producen el mismo comando con el mismo comportamiento, los archivos antiguos siguen funcionando sin necesidad de conversión.
  • Para una skill personal o de proyecto, el nombre del comando proviene del nombre de la carpeta, no del campo name del frontmatter, que solo sirve de etiqueta de visualización; en una skill de plugin, name fija el último segmento del comando.
  • Una skill personal bajo ~/.claude/skills se aplica a todos los proyectos de la cuenta, una skill de proyecto bajo .claude/skills solo se aplica al repositorio donde está versionada.
  • $ARGUMENTS recibe toda la cadena escrita después del comando; la indexación por palabra parte de cero, $0 es la primera palabra y $1 la segunda, y un argumento nombrado en el frontmatter se lee por su propio nombre en el cuerpo.
Hazlo ahora

Elige un gesto que repites en tu trabajo, escríbelo en un archivo .claude/skills/mi-gesto/SKILL.md con un frontmatter description de una frase y el cuerpo de las instrucciones, luego invócalo con /mi-gesto en una sesión para confirmar que se ejecuta.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.