Escribir tus propios comandos: guarda prompts que repites
Un comando slash propio es un archivo markdown guardado: lo escribes una vez, y después basta con /tu-comando en vez de un prompt largo.
La idea básica
Si escribes una y otra vez el mismo prompt —«Resume mis cambios», «Revisa este archivo»—, puedes guardarlo como un comando propio. Claude Code admite dos formatos para esto: un archivo markdown en .claude/commands/ o una carpeta de skill en .claude/skills/. Ambos generan el mismo comando slash: deploy.md y deploy/SKILL.md se convierten los dos en /deploy. Los custom commands se fusionaron oficialmente con los skills; los archivos de comando antiguos siguen funcionando.
Estructura del archivo
El archivo empieza, de forma opcional, con un frontmatter YAML entre dos líneas ---. El campo más importante es description: con él, Claude reconoce cuándo el comando encaja con la tarea, e incluso puede cargarlo automáticamente. Después del frontmatter viene el texto del prompt en sí.
Argumentos
Con el marcador $ARGUMENTS recoges todo lo que escribas después del comando: con /fix-issue 123, $ARGUMENTS se convierte en 123. Puedes acceder a argumentos individuales con base 0 mediante $0, $1, etc.
¿Comando propio o regla en CLAUDE.md?
La regla general de la documentación: las reglas que deben aplicarse siempre («nunca hagas push a main») van en CLAUDE.md, porque se carga entera en cada sesión. Los procedimientos que solo necesitas de vez en cuando van en un comando o skill: su texto solo se carga al invocarlo y antes casi no cuesta contexto. Si una sección de CLAUDE.md crece hasta convertirse en todo un procedimiento, según la documentación ese es exactamente el momento de convertirla en un comando propio.
EJEMPLO
Archivo `.claude/skills/fix-issue/SKILL.md`: --- description: Resuelve un issue de GitHub según su número disable-model-invocation: true --- Resuelve el issue de GitHub $ARGUMENTS: lee el issue, implementa la solución, escribe tests. Luego lo ejecutas con: `/fix-issue 123`
🛠️ EJERCICIO — PRUÉBALO TÚ
Construye tu primer comando propio y prueba las dos formas de invocarlo.
- Crea el archivo .claude/skills/resumir/SKILL.md — con una description ('Resume los cambios sin commitear') y el prompt 'Resume el git diff actual en 3 puntos.'
- Inicia Claude Code, cambia un archivo e invoca /resumir directamente.
- Después pregunta en lenguaje normal '¿Qué he cambiado?' y observa si Claude carga el skill por su cuenta.
✅ AUTOEVALUACIÓN
- ☐ ¿Sabes por qué el campo description es decisivo para la carga automática?
- ☐ ¿Puedes explicar cuándo el mismo texto habría encajado mejor en CLAUDE.md?
- ☐ ¿Has entendido cómo recogerías argumentos con $ARGUMENTS?
QUIZ RÁPIDO
¿Qué pasa técnicamente cuando invocas un comando propio como `/fix-issue 123`?
FUENTES
- Documentación de Claude Code: Skills (incl. custom commands) ↗ code.claude.com
- Documentación de Claude Code: Slash Commands ↗ code.claude.com
- Documentación de Claude Code: CLAUDE.md y memoria ↗ code.claude.com