Slash commands en Claude Code para agentes: crea tu /comando
Resumen
Un slash command en Claude Code convierte un runbook completo en /nombre: un archivo .md con frontmatter en .claude/commands/ que tu agente expande al invocarlo. Muestra description, argument-hint, allowed-tools y disable-model-invocation, el flujo de $ARGUMENTS, la convergencia 2026 con skills y por qué versionar tus comandos en el repo si operas con coding agents. Incluye built-ins vs bundled skills y FAQ.

Qué resuelve
Esta pieza se queda en la decisión práctica: qué instalar, qué riesgo agrega y cómo aplicarlo sin romper operación.
Un slash command en Claude Code es un atajo de prompt: escribes /nombre y el archivo detrás de ese nombre se expande dentro del input como si lo hubieras tecleado. Para un coding agent, los comandos custom son el runbook reutilizable del equipo: en vez de pegar los mismos 40 pasos cada semana, quedan en un archivo .md con frontmatter que tu agente (y cualquier colega que clone el repo) invoca con una línea.
Desde 2026 la doc oficial lo simplificó: los custom commands se fusionaron con los skills — "A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way". Es decir: los comandos clásicos siguen funcionando, pero el formato recomendado ahora es el de skill, que suma directorio de archivos de apoyo, control de invocación y carga automática.
Qué es cada /comando
Claude Code mezcla tres tipos que conviene distinguir antes de crear nada:
- Built-in commands: lógica fija del programa (
/help,/clear,/compact,/init,/model,/status,/resume,/permissions,/memory,/mcp,/hooks,/diff,/export,/import,/agents,/cd,/add-dir,/btw,/bug,/exit,/goal,/effort,/fast,/focus...). Existen, no los reescribas. - Bundled skills: skills prompt-based que ya vienen instalados (
/doctor,/code-review,/debug,/verify,/run,/batch,/design-sync,/fewer-permission-prompts,/claude-api). Actúan dándole a Claude instrucciones detalladas para que orqueste con sus herramientas. - Custom commands: los tuyos, en
.claude/commands/(proyecto) o~/.claude/commands/(usuario). Ese es el tema de esta guía.
La diferencia con una skill de conocimiento: el comando lo disparas tú para una acción concreta de un turno (deploy, release, review); la skill la puede cargar Claude solo cuando aplica. Como los dos formatos convergen, la llave del control es el frontmatter disable-model-invocation.
Tu primer comando custom
Crea el archivo .claude/commands/review.md dentro del repo y commitealo. Que esté versionado es el punto: cada coding agent que clone el proyecto obtiene el mismo /review sin configuración extra.
---
description: Revisar cambios del working tree contra la rama base
argument-hint: [base-branch]
disable-model-invocation: true
---
Revisa los cambios pendientes contra `$ARGUMENTS`.
Recorre el diff por archivos y reporta: bugs reales, problemas de
seguridad y duplicación. No apliques cambios; termina con un resumen
de 5 líneas máximo.
Al escribir /review en el chat, Claude Code lo detecta y, al invocarlo, expande el contenido del archivo como parte del prompt. El campo description alimenta el menú de comandos y el autocomplete; argument-hint muestra el hint — [base-branch] en el ejemplo — mientras escribes los argumentos.
Los placeholders de argumentos son $ARGUMENTS (todo lo que pasaste), $ARGUMENTS[0], $ARGUMENTS[1]... por índice 0-based. Si el cuerpo no tiene ningún placeholder, Claude Code añade ARGUMENTS: <valor> al final por ti. Datos verificados en la doc 2026: la sintaxis actual es esa; no asumas que un $1 de otra herramienta funciona aquí.

Frontmatter que sí importa para agentes
| Campo | Qué hace | Cuándo usarlo |
|---|---|---|
description | Texto que ve Claude y el autocomplete; la doc recomienda empezar con un verbo | Siempre |
argument-hint | Hint de autocomplete: [issue-number], [archivo] [formato] | Cuando el comando toma argumentos |
disable-model-invocation: true | Claude no lo invoca solo; solo tú con /nombre | Deploys, migraciones, borrados: lo irreversible |
allowed-tools | Pre-aprueba tools Read Grep Write etc. solo durante el turno; el grant se limpia al enviar tu siguiente mensaje | Reducir prompts del permiso en pasos ya auditados |
disallowed-tools | Quita tools del pool mientras el comando está activo | Comandos autónomos que jamás deben llamar a AskUserQuestion |
context: fork | Corre el comando en un subagente con contexto propio | Comandos largos que ensucian la conversación |
model | Fuerza el modelo para esa invocación | Tareas que requieren un modelo específico |
Regla dura de la doc: el frontmatter solo se parsea si --- es la primera línea del archivo; de lo contrario todo el archivo se trata como contenido y tu comando se comporta raro. Cuando un /comando no hace lo que esperabas, revisa ese leading --- antes de nada.
Comandos para operar con coding agents
En un flujo con agentes el valor no está en el comando en sí, sino en el contrato de operación que versiona:
- Deploy y release:
disable-model-invocation: true+allowed-toolsacotado a lo que el job necesita. El agente no puede dispararlo solo; tú decides el momento. - Review de PR: sin restricción de invocación, pero con
disallowed-toolspara que nunca edite — solo reporte. - Generación de tests o corridas de lint:
allowed-tools: Read Grep Writey un body que nombre la carpeta exacta, para que el agente no explore todo el monorepo. - Commands de usuario (
~/.claude/commands/) para hábitos personales entre proyectos; commands de proyecto (.claude/commands/) para el contrato del equipo. Commitea estos últimos.
Como los commands viven en archivos, git diff de .claude/commands/ te muestra quién cambió el runbook en cada PR — auditoría gratis.
Built-ins que evitan reinventar
| Comando | Propósito |
|---|---|
/help | Lista comandos disponibles |
/status | Contexto actual: intentos usados, tamaño, nombre de conversación |
/compact | Compacta la conversación para seguir sin morir de contexto |
/init | Genera el CLAUDE.md del proyecto |
/memory | Memoria de usuario persistente |
/permissions | Modos y reglas de permisos |
/mcp | Servidores MCP conectados |
/hooks | Configuración de hooks |
/diff | Revisa lo que Claude ha editado en el working tree |
/import | Trae configuración de Codex o Gemini CLI a Claude Code |
/btw | Pregunta lateral sin ensuciar la conversación |
/doctor | Diagnóstico del setup: instalación, PATH, skills sin uso, hooks lentos |
FAQ
¿Creo un comando o una skill? Si es una acción de un turno que tú disparas → comando (con disable-model-invocation: true si no quieres que Claude lo cargue solo). Si es conocimiento reutilizable que Claude debería cargar cuando aplique → skill. Hoy comparten frontmatter y mecánica; la diferencia es la invocación.
¿Por qué mi comando no aparece con /? O el --- no es la primera línea, o el archivo no está en .claude/commands/ del directorio correcto, o el nombre coincide con un built-in que gana por prioridad.
¿Paso argumentos con espacios? $ARGUMENTS los pasa todos tal cual; $ARGUMENTS[0] toma el primero. No mezcles sintaxis de otras herramientas: la doc 2026 solo documenta la forma $ARGUMENTS.
¿Puedo apagar las skills bundled? Sí, con el setting disableBundledSkills (salvo /doctor desde v2.1.205; si quieres ocultarlo también, DISABLE_DOCTOR_COMMAND o skillOverrides).
¿Qué pasa si edito el archivo mientras el agente corre? El comando se expande al invocarlo: edita, guarda, y la siguiente invocación toma la versión nueva. No hay cache de commands.
Siguiente lectura
Si recién empiezas con el ecosistema, Claude Code desde cero en español cubre comandos, skills, MCP y subagentes de corrido; para decidir entre terminal e IDE mira Claude Code vs Codex. Los comandos custom son parte del patrón general de construcción de agentes: herramientas, memoria y control de invocación.

Lecturas relacionadas
Sigue explorando Coding Agents y otras piezas para builders.

Hooks en Claude Code: automatiza y bloquea acciones del agente en el punto exacto

Kimi Code CLI: guía práctica del agente de IA en la terminal

git pickaxe: encontrar el commit que introdujo una línea con git log -S y -G
