Pular para o conteúdo

Comandos

Crie comandos personalizados para tarefas repetitivas.

Comandos personalizados permitem que você especifique um prompt que deseja executar quando esse comando for executado no TUI.

/my-command

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


Criar arquivos de comando

Crie arquivos markdown no diretório 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 conteúdo se torna o template.

Use o comando digitando / seguido pelo nome do comando.

"/test"

Configurar

Você pode adicionar comandos personalizados através da configuração do opencode ou criando arquivos markdown no diretório commands/.


JSON

Use a opção command na sua configuração 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 você pode executar este comando no TUI:

/test

Markdown

Você também 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 que você execute:

/test

Configuração do prompt

Os prompts para os comandos personalizados suportam vários espaços reservados e sintaxes especiais.


Argumentos

Passe argumentos para os comandos usando o espaço reservado $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 será substituído por Button.

Você também pode acessar argumentos individuais usando parâmetros 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" }

Saída do shell

Use !command para injetar a saída do comando 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 alterações 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 são executados no diretório raiz do seu projeto e sua saída se torna parte do prompt.


Referências de arquivo

Inclua arquivos no seu comando usando @ seguido pelo 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 conteúdo do arquivo é incluído automaticamente no prompt.


Opções

Vamos analisar as opções de configuração em detalhes.


Template

A opção template define o prompt que será 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 é uma opção de configuração obrigatória.


Descrição

Use a opção description para fornecer uma breve descrição do que o comando faz.

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

Isso é exibido como a descrição no TUI quando você digita o comando.


Agente

Use a configuração agent para especificar opcionalmente qual agente deve executar este comando. Se este for um subagente, o comando acionará uma invocação de subagente por padrão. Para desativar esse comportamento, defina subtask como false.

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

Esta é uma opção de configuração opcional. Se não especificado, o padrão é o seu agente atual.


Subtarefa

Use o booleano subtask para forçar o comando a acionar uma invocação de subagente. Isso é útil se você quiser que o comando não polua seu contexto principal e forçará o agente a agir como um subagente, mesmo que mode esteja definido como primary na configuração do agente.

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

Esta é uma opção de configuração opcional.


Modelo

Use a configuração model para substituir o modelo padrão para este comando.

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

Esta é uma opção de configuração opcional.


Integrado

opencode inclui vários comandos integrados como /init, /undo, /redo, /share, /help; saiba mais.

Se você definir um comando personalizado com o mesmo nome, ele substituirá o comando integrado.