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-commandComandos 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:
---
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.
/testConfigurar
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:
{
"$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:
/testMarkdown
Voce tambem pode definir comandos usando arquivos markdown. Coloque-os em:
- Global:
~/.config/opencode/commands/ - Por projeto:
.opencode/commands/
---
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:
/testConfiguracao de prompt
Os prompts para comandos personalizados suportam varios placeholders e sintaxes especiais.
Argumentos
Passe argumentos para comandos usando o placeholder $ARGUMENTS.
---
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 ButtonE $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:
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3Execute o comando:
/create-file config.json src "{ \"key\": \"value\" }"Isso substitui:
$1porconfig.json$2porsrc$3por{ "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:
---
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:
---
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.
---
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.
{
"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.
{
"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.
{
"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.
{
"command": {
"analyze": {
"subtask": true
}
}
}Esta e uma opcao de configuracao opcional.
Model
Use a configuracao model para substituir o modelo padrao para este comando.
{
"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.