Português
Documentação
Comandos

Comandos

Crie comandos personalizados para tarefas repetitivas.

Comandos personalizados permitem que voce especifique um prompt que deseja executar quando esse comando e executado na TUI.

/my-command

Comandos personalizados sao adicionais aos comandos integrados como /init, /undo, /redo, /share, /help. Saiba mais.


Criar arquivos de comando

Crie arquivos markdown no diretorio commands/ para definir comandos personalizados.

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

O frontmatter define as propriedades do comando. O conteudo se torna o template.

Use o comando digitando / seguido do nome do comando.

/test

Configurar

Voce pode adicionar comandos personalizados atraves da configuracao do OpenCode ou criando arquivos markdown no diretorio commands/.


JSON

Use a opcao command na sua configuracao do 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"
    }
  }
}

Agora voce pode executar este comando na TUI:

/test

Markdown

Voce tambem pode definir comandos usando arquivos markdown. Coloque-os em:

  • Global: ~/.config/opencode/commands/
  • Por projeto: .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.

O nome do arquivo markdown se torna o nome do comando. Por exemplo, test.md permite executar:

/test

Configuracao de prompt

Os prompts para comandos personalizados suportam varios placeholders e sintaxes especiais.


Argumentos

Passe argumentos para comandos usando o placeholder $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.

Execute o comando com argumentos:

/component Button

E $ARGUMENTS sera substituido por Button.

Voce tambem pode acessar argumentos individuais usando parametros posicionais:

  • $1 - Primeiro argumento
  • $2 - Segundo argumento
  • $3 - Terceiro argumento
  • E assim por diante...

Por exemplo:

.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

Execute o comando:

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

Isso substitui:

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

Saida do Shell

Use !command para injetar saida de comandos bash no seu prompt.

Por exemplo, para criar um comando personalizado que analisa a cobertura de testes:

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

Ou para revisar mudancas recentes:

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

Os comandos sao executados no diretorio raiz do seu projeto e sua saida se torna parte do prompt.


Referencias de arquivos

Inclua arquivos no seu comando usando @ seguido do nome do arquivo.

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

O conteudo do arquivo e incluido automaticamente no prompt.


Opcoes

Vamos ver as opcoes de configuracao em detalhes.


Template

A opcao template define o prompt que sera enviado ao LLM quando o comando for executado.

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 e uma opcao de configuracao obrigatoria.


Description

Use a opcao description para fornecer uma breve descricao do que o comando faz.

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

Isso e mostrado como a descricao na TUI quando voce digita o comando.


Agent

Use a configuracao agent para especificar opcionalmente qual agent deve executar este comando. Se for um subagent, o comando acionara uma invocacao de subagent por padrao. Para desabilitar esse comportamento, defina subtask como false.

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

Esta e uma opcao de configuracao opcional. Se nao especificado, usa seu agent atual por padrao.


Subtask

Use o booleano subtask para forcar o comando a acionar uma invocacao de subagent. Isso e util se voce quiser que o comando nao polua seu contexto principal e forcara o agent a agir como subagent, mesmo se mode estiver definido como primary na configuracao do agent.

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

Esta e uma opcao de configuracao opcional.


Model

Use a configuracao model para substituir o modelo padrao para este comando.

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

Esta e uma opcao de configuracao opcional.


Comandos integrados

OpenCode inclui varios comandos integrados como /init, /undo, /redo, /share, /help; saiba mais.

Nota

Comandos personalizados podem substituir comandos integrados.

Se voce definir um comando personalizado com o mesmo nome, ele substituira o comando integrado.