Español
Documentación
Comandos

Comandos

Crea comandos personalizados para tareas repetitivas.

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

/my-command

Los comandos personalizados son adicionales a los comandos integrados como /init, /undo, /redo, /share, /help. Aprende mas.


Crear archivos de comandos

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

Crea .opencode/commands/test.md:

.opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
 
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

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 commands/.


JSON

Usa la opcion command en tu configuracion de OpenCode:

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "command": {
    // This becomes the name of the command
    "test": {
      // This is the prompt that will be sent to the LLM
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
      // This is shown as the description in the TUI
      "description": "Run tests with coverage",
      "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/commands/
  • Por proyecto: .opencode/commands/
~/.config/opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
 
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

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

/test

Configuracion de prompts

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


Argumentos

Pasa argumentos a los comandos usando el marcador $ARGUMENTS.

.opencode/commands/component.md
---
description: Create a new component
---
 
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.

Ejecuta el comando con argumentos:

/component Button

Y $ARGUMENTS sera reemplazado por Button.

Tambien puedes acceder a argumentos individuales usando parametros posicionales:

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

Por ejemplo:

.opencode/commands/create-file.md
---
description: Create a new file with content
---
 
Create a file named $1 in the directory $2
with the following content: $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 !command para inyectar salida de comandos bash en tu prompt.

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

.opencode/commands/analyze-coverage.md
---
description: Analyze test coverage
---
 
Here are the current test results:
!`npm test`
 
Based on these results, suggest improvements to increase coverage.

O para revisar cambios recientes:

.opencode/commands/review-changes.md
---
description: Review recent changes
---
 
Recent git commits:
!`git log --oneline -10`
 
Review these changes and suggest any improvements.

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


Referencias de archivos

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

.opencode/commands/review-component.md
---
description: Review component
---
 
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.

El contenido del archivo se incluye automaticamente en el prompt.


Opciones

Veamos las opciones de configuracion en detalle.


Template

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

opencode.json
{
  "command": {
    "test": {
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
    }
  }
}

Esta es una opcion de configuracion requerida.


Description

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

opencode.json
{
  "command": {
    "test": {
      "description": "Run tests with coverage"
    }
  }
}

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


Agent

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

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

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


Subtask

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

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

Esta es una opcion de configuracion opcional.


Model

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.


Comandos integrados

OpenCode incluye varios comandos integrados como /init, /undo, /redo, /share, /help; aprende mas.

Nota

Los comandos personalizados pueden anular los comandos integrados.

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