Guía9 min

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.

Anthropic
Una red muestra cómo un atajo /nombre se expande a un prompt completo y dispara una acción reproducible

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í.

Un pipeline muestra la expansión de /comando a prompt y de ahí a acción

Frontmatter que sí importa para agentes

CampoQué haceCuándo usarlo
descriptionTexto que ve Claude y el autocomplete; la doc recomienda empezar con un verboSiempre
argument-hintHint de autocomplete: [issue-number], [archivo] [formato]Cuando el comando toma argumentos
disable-model-invocation: trueClaude no lo invoca solo; solo tú con /nombreDeploys, migraciones, borrados: lo irreversible
allowed-toolsPre-aprueba tools Read Grep Write etc. solo durante el turno; el grant se limpia al enviar tu siguiente mensajeReducir prompts del permiso en pasos ya auditados
disallowed-toolsQuita tools del pool mientras el comando está activoComandos autónomos que jamás deben llamar a AskUserQuestion
context: forkCorre el comando en un subagente con contexto propioComandos largos que ensucian la conversación
modelFuerza el modelo para esa invocaciónTareas 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:

  1. Deploy y release: disable-model-invocation: true + allowed-tools acotado a lo que el job necesita. El agente no puede dispararlo solo; tú decides el momento.
  2. Review de PR: sin restricción de invocación, pero con disallowed-tools para que nunca edite — solo reporte.
  3. Generación de tests o corridas de lint: allowed-tools: Read Grep Write y un body que nombre la carpeta exacta, para que el agente no explore todo el monorepo.
  4. 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

ComandoPropósito
/helpLista comandos disponibles
/statusContexto actual: intentos usados, tamaño, nombre de conversación
/compactCompacta la conversación para seguir sin morir de contexto
/initGenera el CLAUDE.md del proyecto
/memoryMemoria de usuario persistente
/permissionsModos y reglas de permisos
/mcpServidores MCP conectados
/hooksConfiguración de hooks
/diffRevisa lo que Claude ha editado en el working tree
/importTrae configuración de Codex o Gemini CLI a Claude Code
/btwPregunta lateral sin ensuciar la conversación
/doctorDiagnó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.

Un shield resume el frontmatter de control: descripción, argumentos, tools y cuándo se puede invocar