Saltearse al contenido

Comandos

Crea comandos personalizados para tareas repetitivas.

Los comandos personalizados te permiten especificar un prompt que deseas ejecutar cuando se ejecuta ese comando en la TUI.

/my-command

Los comandos personalizados se suman a los comandos integrados como /init, /undo, /redo, /share, /help. Mas informacion.


Crear archivos de comandos

Crea archivos markdown en el directorio command/ para definir comandos personalizados.

Crea .opencode/command/test.md:

.opencode/command/test.md
---
description: Ejecutar pruebas con cobertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Ejecuta la suite de pruebas completa con el informe de cobertura y muestra cualquier falla.
Enfocate en las pruebas que fallan y sugiere correcciones.

El frontmatter define las propiedades del comando. El contenido se convierte en la plantilla.

Usa el comando escribiendo / seguido del nombre del comando.

"/test"

Configurar

Puedes agregar comandos personalizados a traves de la configuracion de OpenCode o creando archivos markdown en el directorio command/.


JSON

Usa la opcion command en tu configuracion de OpenCode:

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"command": {
// Esto se convierte en el nombre del comando
"test": {
// Este es el prompt que se enviara al LLM
"template": "Ejecuta la suite de pruebas completa con el informe de cobertura y muestra cualquier falla.\nEnfocate en las pruebas que fallan y sugiere correcciones.",
// Esto se muestra como la descripcion en la TUI
"description": "Ejecutar pruebas con cobertura",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Ahora puedes ejecutar este comando en la TUI:

/test

Markdown

Tambien puedes definir comandos usando archivos markdown. Colocalos en:

  • Global: ~/.config/opencode/command/
  • Por proyecto: .opencode/command/
~/.config/opencode/command/test.md
---
description: Ejecutar pruebas con cobertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Ejecuta la suite de pruebas completa con el informe de cobertura y muestra cualquier falla.
Enfocate en las pruebas que fallan y sugiere correcciones.

El nombre del archivo markdown se convierte en el nombre del comando. Por ejemplo, test.md te permite ejecutar:

/test

Configuracion del prompt

Los prompts para los comandos personalizados admiten varios marcadores de posicion especiales y sintaxis.


Argumentos

Pasa argumentos a comandos usando el marcador de posicion $ARGUMENTS.

.opencode/command/component.md
---
description: Crear un nuevo componente
---
Crea un nuevo componente de React llamado $ARGUMENTS con soporte para TypeScript.
Incluye escritura apropiada y estructura basica.

Ejecuta el comando con argumentos:

/component Button

Y $ARGUMENTS sera reemplazado por Button.

También puedes acceder a argumentos individuales usando parametros posicionales:

  • $1 - Primer argumento
  • $2 - Segundo argumento
  • $3 - Tercer argumento
  • Y asi sucesivamente…

Por ejemplo:

.opencode/command/create-file.md
---
description: Crear un nuevo archivo con contenido
---
Crea un archivo llamado $1 en el directorio $2
con el siguiente contenido: $3

Ejecuta el comando:

/create-file config.json src "{ \"key\": \"value\" }"

Esto reemplaza:

  • $1 con config.json
  • $2 con src
  • $3 con { "key": "value" }

Salida de shell

Usa !comando para inyectar la salida de comando bash en tu prompt.

Por ejemplo, para crear un comando personalizado que analice la cobertura de pruebas:

.opencode/command/analyze-coverage.md
---
description: Analizar cobertura de pruebas
---
Aqui estan los resultados de las pruebas actuales:
!`npm test`
Basado en estos resultados, sugiere mejoras para aumentar la cobertura.

O para revisar los cambios recientes:

.opencode/command/review-changes.md
---
description: Revisar cambios recientes
---
Commits de git recientes:
!`git log --oneline -10`
Revisa estos cambios y sugiere cualquier mejora.

Los comandos se ejecutan en el directorio raiz de tu proyecto y su salida se vuelve parte del prompt.


Referencias de archivos

Incluye archivos en tu comando usando @ seguido del nombre del archivo.

.opencode/command/review-component.md
---
description: Revisar componente
---
Revisa el componente en @src/components/Button.tsx.
Verifica si hay problemas de rendimiento y sugiere mejoras.

El contenido del archivo se incluye automaticamente en el prompt.


Opciones

Veamos las opciones de configuracion en detalle.


Plantilla

La opcion template define el prompt que se enviara al LLM cuando se ejecute el comando.

opencode.json
{
"command": {
"test": {
"template": "Ejecuta la suite de pruebas completa con el informe de cobertura y muestra cualquier falla.\nEnfocate en las pruebas que fallan y sugiere correcciones."
}
}
}

Esta es una opcion de configuracion requerida.


Descripcion

Usa la opcion description para proporcionar una breve descripcion de lo que hace el comando.

opencode.json
{
"command": {
"test": {
"description": "Ejecutar pruebas con cobertura"
}
}
}

Esto se muestra como la descripcion en la TUI cuando escribes el comando.


Agente

Usa la configuracion agent para especificar opcionalmente que agente debe ejecutar este comando. Si este es un subagente, el comando activara una invocacion de subagente por defecto. Para desactivar este comportamiento, establece subtask en false.

opencode.json
{
"command": {
"review": {
"agent": "plan"
}
}
}

Esta es una opcion de configuracion opcional. Si no se especifica, por defecto es tu agente actual.


Subtarea

Usa el booleano subtask para forzar que el comando active una invocacion de subagente. Esto es util si deseas que el comando no contamine tu contexto principal y forzara al agente a actuar como un subagente, incluso si el mode esta establecido en primary en la configuracion del agente.

opencode.json
{
"command": {
"analyze": {
"subtask": true
}
}
}

Esta es una opcion de configuracion opcional.


Modelo

Usa la configuracion model para anular el modelo predeterminado para este comando.

opencode.json
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Esta es una opcion de configuracion opcional.


Integrado

opencode incluye varios comandos integrados como /init, /undo, /redo, /share, /help; mas informacion.

Si defines un comando personalizado con el mismo nombre, anulara el comando integrado.