summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/pt-br/commands.mdx
blob: b4a8a306d8d5d2d27bab05fb0e43310ed0f1a586 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
---
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).

---

## Criando 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 com falha 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"
```

---

## Configuração

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": {
    // Isso 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 com falha e sugira correções.",
      // Isso é 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 com falha 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 _!`command`_ 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 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 recentes do git:
!`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 com falha 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**.

---

## Integrados

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.