Inicio / Extender: habilidades, MCP, subagentes, hooks, plugins
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.
Skill personal contra skill de proyecto
| Ubicación de una skill | Ruta del archivo | Proyectos cubiertos | Qué se versiona en el control de versiones |
|---|---|---|---|
| Skill personal | ~/.claude/skills/nombre/SKILL.md | Todos los proyectos abiertos desde esa cuenta | Permanece fuera del repositorio del proyecto en curso |
| Skill de proyecto | .claude/skills/nombre/SKILL.md | Solo ese repositorio preciso | Se versiona en el repositorio para compartirla con el equipo |
Del comando escrito al texto sustituido
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 esto establece: Este resultado establece que el mecanismo antiguo de comando en archivo .claude/commands sigue funcionando sobre un archivo existente, incluso mucho tiempo después de su escritura.
Lo que esto no establece: No establece qué ubicación elegir para un comando escrito hoy, ya que solo se constató el funcionamiento de un archivo ya existente.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Este resultado muestra que el mecanismo antiguo de comandos sigue siendo la forma recomendada para escribir una nueva automatización hoy.
- Demasiado estrecho Este resultado no prueba nada ya que solo se probó un comando en un solo proyecto.
- Fuera de tema Este resultado muestra que la desarrolladora conocía el contenido exacto del archivo antes de escribir el comando.
- 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.
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.
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.
- Claude Code, skills, indexación de argumentos desde cero y nombre de comando según el alcance consultée le 2026-09-02