summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/pt-br/rules.mdx
blob: 45b361bd07c5c2d50965e17dd826736532574bbd (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
---
title: Regras
description: Defina instruções personalizadas para opencode.
---

Você pode fornecer instruções personalizadas para opencode criando um arquivo `AGENTS.md`. Isso é semelhante às regras do Cursor. Ele contém instruções que serão incluídas no contexto do LLM para personalizar seu comportamento para o seu projeto específico.

---

## Inicializar

Para criar um novo arquivo `AGENTS.md`, você pode executar o comando `/init` no opencode.

:::tip
Você deve commitar o arquivo `AGENTS.md` do seu projeto no Git.
:::

Isso irá escanear seu projeto e todo o seu conteúdo para entender do que se trata o projeto e gerar um arquivo `AGENTS.md` com isso. Isso ajuda o opencode a navegar melhor pelo projeto.

Se você já tiver um arquivo `AGENTS.md` existente, isso tentará adicionar a ele.

---

## Exemplo

Você também pode criar este arquivo manualmente. Aqui está um exemplo de algumas coisas que você pode colocar em um arquivo `AGENTS.md`.

```markdown title="AGENTS.md"
# Projeto Monorepo SST v3

Este é um monorepo SST v3 com TypeScript. O projeto usa bun workspaces para gerenciamento de pacotes.

## Estrutura do Projeto

- `packages/` - Contém todos os pacotes do workspace (funções, núcleo, web, etc.)
- `infra/` - Definições de infraestrutura divididas por serviço (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Configuração principal do SST com imports dinâmicos

## Padrões de Código

- Use TypeScript com o modo estrito habilitado
- O código compartilhado vai em `packages/core/` com a configuração de exports adequada
- Funções vão em `packages/functions/`
- A infraestrutura deve ser dividida em arquivos lógicos em `infra/`

## Convenções de Monorepo

- Importe módulos compartilhados usando nomes de workspace: `@my-app/core/example`
```

Estamos adicionando instruções específicas do projeto aqui e isso será compartilhado entre sua equipe.

---

## Tipos

O opencode também suporta a leitura do arquivo `AGENTS.md` de múltiplos locais. E isso serve a diferentes propósitos.

### Projeto

Coloque um `AGENTS.md` na raiz do seu projeto para regras específicas do projeto. Essas regras se aplicam apenas quando você está trabalhando neste diretório ou em seus subdiretórios.

### Global

Você também pode ter regras globais em um arquivo `~/.config/opencode/AGENTS.md`. Isso é aplicado em todas as sessões do opencode.

Como isso não é commitado no Git ou compartilhado com sua equipe, recomendamos usar isso para especificar quaisquer regras pessoais que o LLM deve seguir.

### Compatibilidade com Claude Code

Para usuários migrando do Claude Code, o OpenCode suporta as convenções de arquivo do Claude Code como alternativas:

- **Regras do projeto**: `CLAUDE.md` no diretório do seu projeto (usado se não existir `AGENTS.md`)
- **Regras globais**: `~/.claude/CLAUDE.md` (usado se não existir `~/.config/opencode/AGENTS.md`)
- **Habilidades**: `~/.claude/skills/` — veja [Habilidades do Agente](/docs/skills/) para detalhes

Para desabilitar a compatibilidade com Claude Code, defina uma dessas variáveis de ambiente:

```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1        # Desabilitar todo suporte a .claude
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Desabilitar apenas ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Desabilitar apenas .claude/skills
```

---

## Precedência

Quando o opencode inicia, ele procura arquivos de regras nesta ordem:

1. **Arquivos locais** percorrendo a partir do diretório atual (`AGENTS.md`, `CLAUDE.md`)
2. **Arquivo global** em `~/.config/opencode/AGENTS.md`
3. **Arquivo Claude Code** em `~/.claude/CLAUDE.md` (a menos que desabilitado)

O primeiro arquivo correspondente vence em cada categoria. Por exemplo, se você tiver tanto `AGENTS.md` quanto `CLAUDE.md`, apenas `AGENTS.md` é usado. Da mesma forma, `~/.config/opencode/AGENTS.md` tem precedência sobre `~/.claude/CLAUDE.md`.

---

## Instruções Personalizadas

Você pode especificar arquivos de instrução personalizados no seu `opencode.json` ou no global `~/.config/opencode/opencode.json`. Isso permite que você e sua equipe reutilizem regras existentes em vez de ter que duplicá-las no AGENTS.md.

Exemplo:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```

Você também pode usar URLs remotas para carregar instruções da web.

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```

Instruções remotas são buscadas com um tempo limite de 5 segundos.

Todos os arquivos de instrução são combinados com seus arquivos `AGENTS.md`.

---

## Referenciando Arquivos Externos

Embora o opencode não analise automaticamente referências de arquivos em `AGENTS.md`, você pode alcançar funcionalidade semelhante de duas maneiras:

### Usando opencode.json

A abordagem recomendada é usar o campo `instructions` em `opencode.json`:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```

### Instruções Manuais em AGENTS.md

Você pode ensinar o opencode a ler arquivos externos fornecendo instruções explícitas em seu `AGENTS.md`. Aqui está um exemplo prático:

```markdown title="AGENTS.md"
# Regras do Projeto TypeScript

## Carregamento de Arquivos Externos

CRÍTICO: Quando você encontrar uma referência de arquivo (por exemplo, @rules/general.md), use sua ferramenta de Leitura para carregá-lo conforme necessário. Eles são relevantes para a TAREFA ESPECÍFICA em questão.

Instruções:

- NÃO carregue todas as referências de forma preemptiva - use carregamento sob demanda com base na necessidade real
- Quando carregado, trate o conteúdo como instruções obrigatórias que substituem os padrões
- Siga referências recursivamente quando necessário

## Diretrizes de Desenvolvimento

Para estilo de código TypeScript e melhores práticas: @docs/typescript-guidelines.md
Para arquitetura de componentes React e padrões de hooks: @docs/react-patterns.md
Para design de API REST e tratamento de erros: @docs/api-standards.md
Para estratégias de teste e requisitos de cobertura: @test/testing-guidelines.md

## Diretrizes Gerais

Leia o seguinte arquivo imediatamente, pois é relevante para todos os fluxos de trabalho: @rules/general-guidelines.md.
```

Essa abordagem permite que você:

- Crie arquivos de regras modulares e reutilizáveis
- Compartilhe regras entre projetos via symlinks ou submódulos do git
- Mantenha o AGENTS.md conciso enquanto referencia diretrizes detalhadas
- Garanta que o opencode carregue arquivos apenas quando necessário para a tarefa específica

:::tip
Para monorepos ou projetos com padrões compartilhados, usar `opencode.json` com padrões glob (como `packages/*/AGENTS.md`) é mais sustentável do que instruções manuais.
:::