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-commandComandos 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:
---description: Run tests with coverageagent: buildmodel: 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:
{ "$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:
/testMarkdown
Você também pode definir comandos usando arquivos markdown. Coloque-os em:
- Global:
~/.config/opencode/commands/ - Por projeto:
.opencode/commands/
---description: Run tests with coverageagent: buildmodel: 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:
/testConfiguraçã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.
---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 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:
---description: Create a new file with content---
Create a file named $1 in the directory $2with the following content: $3Execute o comando:
/create-file config.json src "{ \"key\": \"value\" }"Isso substitui:
$1porconfig.json$2porsrc$3por{ "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:
---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:
---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.
---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.
{ "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.
{ "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.
{ "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.
{ "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.
{ "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.