Guía de comandos de OpenCode
Comandos de OpenCode: comandos personalizados, argumentos y uso seguro
La diferencia principal es sencilla: los comandos slash integrados controlan la TUI actual, mientras que los comandos personalizados de OpenCode convierten un prompt repetible en un flujo con nombre. Empieza con un archivo Markdown en .opencode/commands/, usa $ARGUMENTS solo cuando la entrada cambie y revisa el prompt generado antes de permitir ediciones o comandos de Shell. Esta guía cubre comandos integrados, configuración Markdown y JSON, argumentos posicionales, salida de Shell, referencias de archivos, permisos y errores habituales.
- Palabra clave principal
- comandos de OpenCode
- Documentación revisada
- 19 de agosto de 2026
- Lectura
- 14 minutos

Respuesta rápida
Los comandos de OpenCode tienen tres capas útiles
Elige la capa más pequeña que resuelva la tarea para que un atajo de prompt siga siendo revisable.
| Capa | Qué hace | Ejemplo |
|---|---|---|
| Comando integrado de la TUI | Controla la sesión actual o una acción incluida. | /help, /undo |
| Comando personalizado | Expande un prompt con nombre desde Markdown o JSON. | /review con $ARGUMENTS |
| Comando de Shell | Se ejecuta en el terminal y es una superficie independiente. | npm test, git status |
Un comando personalizado no reemplaza la instalación de la CLI, el proveedor ni la política de permisos. Si falta opencode, consulta la guía de despliegue; para modelos, la guía de proveedores; para cambios y Shell, la guía de permisos. Verifica los nombres con la documentación oficial de Commands y con /help.
Comandos integrados
Usa comandos slash para la sesión actual de la TUI
OpenCode incluye /init, /undo, /redo, /share y /help. No son alias de Shell ni entradas para package.json. Escríbelos en la interfaz de OpenCode y lee el resultado antes de continuar.
/help es la primera comprobación cuando no conoces la lista de la versión instalada. /undo y /redo no sustituyen a Git. Con /share, revisa qué datos de sesión se harán visibles antes de usarlo con código privado. La lista integrada puede cambiar con cada versión.
Ejemplo Markdown
Crea primero un comando personalizado del proyecto
Un archivo Markdown se puede revisar en Git y permanece junto al repositorio que lo necesita.
- Crea
.opencode/commands/review.mden la raíz del proyecto. - Añade una descripción breve y una tarea con un límite claro.
- Prueba el comando en una rama pequeña y revisa el prompt y el diff.
.opencode/commands/review.md
Este ejemplo solicita un plan de revisión sin editar automáticamente.
---
description: Review the current changes
---
Review the current Git changes. Explain risky behavior,
missing tests, and the smallest safe follow-up.
Do not edit files until I approve the plan.El nombre del archivo se convierte en el nombre del comando: se invoca como /review. Usa ~/.config/opencode/commands/ para flujos personales globales y .opencode/commands/ para rutas, pruebas o reglas del equipo. Un prompt que dice “revisa los cambios y propone un plan” es más fácil de comprobar que “arregla todo”.
Configuración JSON
Usa el objeto command para una configuración junto al proyecto
También puedes definir comandos en el objeto command de JSON o JSONC. Es útil cuando el comando debe seleccionar un agent o un modelo concreto. Las rutas y la precedencia pertenecen a la guía de configuración opencode.jsonc.
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test-review": {
"template": "Review the latest test output and list the first three fixes.",
"description": "Review test output",
"agent": "plan"
}
}
}| Opción | Uso | Comprobación |
|---|---|---|
template | Prompt que se envía al ejecutarlo. | Existe y limita la tarea. |
description | Texto breve para descubrirlo. | Explica el resultado. |
agent | Selecciona un agent con nombre. | Sus herramientas y permisos encajan. |
model | Cambia el modelo para este flujo. | El proveedor ofrece el ID exacto. |
La configuración no es un almacén de secretos. Las claves y tokens deben permanecer en el flujo de credenciales del proveedor. Un comando que usa archivos o Shell se revisa como un script.
Argumentos y contexto
Usa variables cuando el flujo realmente cambie
$ARGUMENTS recibe toda la cadena; $1 y $2 separan valores posicionales.

---
description: Create a file with supplied values
---
Create a file named $1 in directory $2.
Use this content: $3
Show the proposed path before writing./create-file config.json src "{ \"key\": \"value\" }" entrega tres valores. La plantilla debe indicar el uso de cada uno y mostrar la ruta antes de escribir. Para una sola frase libre, $ARGUMENTS es más sencillo.
Usa @src/components/Button.tsx para una referencia de archivo y !`npm test` o !`git log --oneline -10` para incluir salida de Shell. Como el comando se ejecuta desde la raíz del proyecto, evita operaciones destructivas o datos secretos en las plantillas reutilizables.
Los argumentos son entradas, no permisos. Empieza con una prueba de solo lectura, aprueba después un cambio pequeño y automatiza únicamente en un repositorio de confianza.
Uso seguro
Mantén previsibles los nombres, prompts y permisos
Un comando personalizado con el mismo nombre puede reemplazar un comando integrado. Evita help, undo y share salvo que sea una decisión intencional. Un nombre como review-tests comunica mejor el resultado esperado.
Revisa los archivos de comandos como código: diff del prompt, respuesta, archivos referenciados y Shell propuesto. Comprueba agents y modelos con la guía de Agents; para Skills y MCP, usa las guías de Skills y MCP.
| Síntoma | Capa probable | Primera comprobación |
|---|---|---|
| No aparece el comando slash | Ruta o nombre | Revisa archivo, directorio, frontmatter y raíz. |
| El resultado es incorrecto | Prompt o argumentos | Prueba una petición pequeña y un argumento. |
| La salida de Shell es insegura | Contexto de Shell | Ejecuta manualmente y revisa directorio y permisos. |
| Cambia un comportamiento integrado | Colisión de nombres | Renombra el comando y compara con /help. |
Verificación
Seis comprobaciones antes de usarlo en equipo
- Alcance: describe entrada y salida en una frase.
- Ubicación: elige carpeta de proyecto o global y documenta la decisión.
- Entradas: prueba valores normales, ausentes, entre comillas y rutas.
- Contexto: revisa referencias y salida antes de editar.
- Permisos: empieza con ask o lectura y aprueba cambios pequeños.
- Reversión: guarda el comando en Git y anota cómo desactivarlo.
Así se separan las fallas: un comando ausente apunta a la ruta, un resultado extraño al prompt o los argumentos, una edición rechazada a los permisos y un modelo que falla al proveedor.
Preguntas frecuentes
Preguntas sobre comandos de OpenCode
¿Para qué sirven los comandos de OpenCode?
Los integrados controlan la TUI y los personalizados empaquetan prompts repetibles para revisiones, resúmenes de pruebas y plantillas de archivos.
¿Dónde está la carpeta de comandos personalizados?
Los comandos del proyecto van en .opencode/commands/ y los globales en ~/.config/opencode/commands/. El nombre del archivo se convierte en el comando.
¿Cómo paso argumentos a un comando?
Usa $ARGUMENTS para la cadena completa o $1, $2 para valores separados. Cita los valores con espacios o JSON.
¿Por qué no aparece mi comando?
Comprueba carpeta, raíz, nombre, frontmatter y colisiones. Después compara la salida de /help con la documentación oficial.
Fuentes oficiales
Comprueba los detalles sensibles a la versión
Esta página se revisó el 19 de agosto de 2026 con la documentación oficial de OpenCode. Los nombres y las rutas pueden cambiar.
Resumen
Usa los comandos integrados para la TUI, Markdown para flujos de proyecto revisables y JSON cuando el comando deba vivir junto a la configuración. Mantén explícitos los argumentos, trata la salida de Shell como contexto no confiable, evita colisiones con comandos integrados y prueba cada cambio con una tarea pequeña y reversible.