---
title: Comandos
description: Crie comandos personalizados para tarefas repetitivas.
---

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

```bash frame="none"
/my-command
```

Comandos personalizados são adicionais aos comandos integrados como `/init`, `/undo`, `/redo`, `/share`, `/help`. [Saiba mais](/docs/tui#commands).

---

## Criar arquivos de comando

Crie arquivos markdown no diretório `commands/` para definir comandos personalizados.

Crie `.opencode/commands/test.md`:

```md title=".opencode/commands/test.md"
---
description: Execute testes com cobertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---

Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.
Concentre-se nos testes que falharam e sugira correções.
```

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

Use o comando digitando `/` seguido pelo nome do comando.

```bash frame="none"
"/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](/docs/config) do opencode:

```json title="opencode.jsonc" {4-12}
{
  "$schema": "https://opencode.ai/config.json",
  "command": {
    // Este se torna o nome do comando
    "test": {
      // Este é o prompt que será enviado ao LLM
      "template": "Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.\nConcentre-se nos testes que falharam e sugira correções.",
      // Este é exibido como a descrição no TUI
      "description": "Execute testes com cobertura",
      "agent": "build",
      "model": "anthropic/claude-3-5-sonnet-20241022"
    }
  }
}
```

Agora você pode executar este comando no TUI:

```bash frame="none"
/test
```

---

### Markdown

Você também pode definir comandos usando arquivos markdown. Coloque-os em:

- Global: `~/.config/opencode/commands/`
- Por projeto: `.opencode/commands/`

```markdown title="~/.config/opencode/commands/test.md"
---
description: Execute testes com cobertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---

Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.
Concentre-se nos testes que falharam e sugira correções.
```

O nome do arquivo markdown se torna o nome do comando. Por exemplo, `test.md` permite que você execute:

```bash frame="none"
/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`.

```md title=".opencode/commands/component.md"
---
description: Crie um novo componente
---

Crie um novo componente React chamado $ARGUMENTS com suporte a TypeScript.
Inclua tipagem adequada e estrutura básica.
```

Execute o comando com argumentos:

```bash frame="none"
/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:

```md title=".opencode/commands/create-file.md"
---
description: Crie um novo arquivo com conteúdo
---

Crie um arquivo chamado $1 no diretório $2
com o seguinte conteúdo: $3
```

Execute o comando:

```bash frame="none"
/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 _!`comando`_ para injetar a saída do [comando bash](/docs/tui#bash-commands) no seu prompt.

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

```md title=".opencode/commands/analyze-coverage.md"
---
description: Analise a cobertura de testes
---

Aqui estão os resultados atuais dos testes:
!`npm test`

Com base nesses resultados, sugira melhorias para aumentar a cobertura.
```

Ou para revisar alterações recentes:

```md title=".opencode/commands/review-changes.md"
---
description: Revise alterações recentes
---

Commits git recentes:
!`git log --oneline -10`

Revise essas alterações e sugira quaisquer melhorias.
```

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.

```md title=".opencode/commands/review-component.md"
---
description: Revise componente
---

Revise o componente em @src/components/Button.tsx.
Verifique problemas de desempenho e sugira melhorias.
```

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.

```json title="opencode.json"
{
  "command": {
    "test": {
      "template": "Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.\nConcentre-se nos testes que falharam e sugira correções."
    }
  }
}
```

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.

```json title="opencode.json"
{
  "command": {
    "test": {
      "description": "Execute testes com cobertura"
    }
  }
}
```

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

---

### Agente

Use a configuração `agent` para especificar opcionalmente qual [agente](/docs/agents) deve executar este comando.
Se este for um [subagente](/docs/agents/#subagents), o comando acionará uma invocação de subagente por padrão.
Para desativar esse comportamento, defina `subtask` como `false`.

```json title="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](/docs/agents/#subagents).
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](/docs/agents).

```json title="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.

```json title="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](/docs/tui#commands).

:::note
Comandos personalizados podem substituir comandos integrados.
:::

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