2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.
4 4
5# Melhores práticas para Claude Code5# Boas práticas para Claude Code
6 6
7> Dicas e padrões para aproveitar ao máximo o Claude Code, desde a configuração do seu ambiente até o dimensionamento em sessões paralelas.7> Aproveite mais o Claude Code: diga ao Claude o que ele não consegue ver, dê a ele uma verificação para executar e imponha as regras que não podem ter exceções.
8 8
9Claude Code é um ambiente de codificação agentic. Diferentemente de um chatbot que responde perguntas e espera, Claude Code pode ler seus arquivos, executar comandos, fazer alterações e trabalhar autonomamente através de problemas enquanto você observa, redireciona ou se afasta completamente.9O Claude Code é construído de forma que, na maioria dos casos, seu primeiro prompt simples em uma sessão nova já faz a coisa certa, sem nenhuma configuração da sua parte.
10 10
11Isso muda a forma como você trabalha. Em vez de escrever código você mesmo e pedir ao Claude para revisá-lo, você descreve o que deseja e Claude descobre como construir. Claude explora, planeja e implementa.11Por exemplo:
12 12
13Mas essa autonomia ainda vem com uma curva de aprendizado. Claude trabalha dentro de certas restrições que você precisa entender.13* Para permitir que comandos sejam executados com segurança sem que você aprove cada um, novas sessões de terminal e VS Code começam no [modo auto](https://code.claude.com/docs/pt/permission-modes.md#eliminate-prompts-with-auto-mode), em que um classificador revisa qualquer coisa arriscada antes de ser executada.
14* Para manter sua conversa principal focada enquanto trabalho independente acontece em paralelo, Claude delega a subagentes e só consulta você quando precisa.
15* Para manter uma sessão longa funcionando sem que você precise gerenciá-la, sua conversa é compactada automaticamente antes que a janela de contexto se encha.
14 16
15Este guia cobre padrões que se mostraram eficazes nas equipes internas da Anthropic e para engenheiros usando Claude Code em vários codebases, linguagens e ambientes. Para saber como o loop agentic funciona, consulte [How Claude Code works](https://code.claude.com/docs/pt/how-claude-code-works.md).17Esta página aborda o que fazer quando os padrões não são suficientes. Isso geralmente acontece quando seu projeto tem conhecimento, regras ou restrições que Claude não consegue ver apenas pelo código:
16 18
17***19* Um processo de deploy que existe apenas na cabeça de alguém
20* Um arquivo que nunca deve ser lido
21* Uma verificação que precisa passar antes que qualquer coisa seja considerada concluída
22* Um orçamento que você precisa respeitar
18 23
19A maioria das melhores práticas é baseada em uma restrição: a janela de contexto do Claude se enche rapidamente e o desempenho se degrada conforme ela se enche.24Nenhum padrão pode saber essas coisas sobre o seu projeto, então é aqui que uma pequena quantidade de configuração da sua parte compensa.
20 25
21A janela de contexto do Claude contém toda a sua conversa, incluindo cada mensagem, cada arquivo que Claude lê e cada saída de comando. No entanto, isso pode se encher rapidamente. Uma única sessão de depuração ou exploração de codebase pode gerar e consumir dezenas de milhares de tokens.26Quando uma sessão não sai como você esperava, quase sempre é por um destes motivos:
22 27
23Isso importa porque o desempenho do LLM se degrada conforme o contexto se enche. Quando a janela de contexto está ficando cheia, Claude pode começar a "esquecer" instruções anteriores ou cometer mais erros. A janela de contexto é o recurso mais importante a gerenciar. Para ver como uma sessão se enche na prática, [assista a um passo a passo interativo](https://code.claude.com/docs/pt/context-window.md) do que é carregado na inicialização e quanto cada leitura de arquivo custa. Rastreie o uso de contexto continuamente com uma [custom status line](https://code.claude.com/docs/pt/statusline.md), e veja [Reduce token usage](https://code.claude.com/docs/pt/costs.md#reduce-token-usage) para estratégias de redução do uso de tokens.28* Claude construiu algo diferente do que você tinha em mente, ou precisa redescobrir o mesmo fato no início de cada sessão. Falta a ele informação que não consegue obter lendo o repositório. Consulte [Diga ao Claude o que ele não consegue ver](#tell-claude-what-it-cant-see).
29* Claude disse que tinha terminado e não tinha exatamente, geralmente porque não tinha como verificar o próprio trabalho. Consulte [Dê ao Claude uma verificação para executar](#give-claude-a-check-to-run).
30* Claude fez algo que nunca deve acontecer neste repositório, ou pulou uma etapa que sempre deve acontecer. Um prompt sozinho não consegue garantir nenhuma dessas coisas. Consulte [Imponha as regras que não podem ter exceções](#enforce-the-rules-that-cant-have-exceptions).
31* Claude acertou, mas levou mais tempo, tokens ou prompts de permissão do que a tarefa valia. Consulte [Altere um padrão](#change-a-default).
24 32
25***33[Deixe Claude trabalhar sem você](#let-claude-run-without-you) aplica os mesmos quatro pontos a execuções desacompanhadas, e [O que você pode parar de fazer](#what-you-can-stop-doing) lista os conselhos que os modelos atuais tornaram desnecessários.
26 34
27## Dê ao Claude uma forma de verificar seu trabalho35> [!NOTE]
28
29> [!TIP]
30>36>
31> Dê ao Claude uma verificação que ele possa executar: testes, uma compilação, uma captura de tela para comparar. É a diferença entre uma sessão que você observa e uma que você pode deixar sozinha.37> A configuração para uma equipe inteira está em uma página separada: [Configure o Claude Code para sua organização](https://code.claude.com/docs/pt/admin-setup.md).
32 38
33Claude para quando o trabalho parece pronto. Sem uma verificação que ele possa executar, "parece pronto" é o único sinal disponível, e você se torna o loop de verificação: cada erro espera por você notar. Dê ao Claude algo que produz um resultado de sucesso ou falha, e o loop se fecha por conta própria. Claude faz o trabalho, executa a verificação, lê o resultado e itera até que a verificação passe.39## Instruções determinísticas e não determinísticas
34 40
35A verificação é qualquer coisa que retorna um sinal que Claude pode ler na conversa: um conjunto de testes, um código de saída de compilação, um linter, um script que compara a saída com um fixture, ou uma [captura de tela do navegador](https://code.claude.com/docs/pt/chrome.md) comparada com um design. Execute [`/verify`](https://code.claude.com/docs/pt/skills#run-and-verify-your-app) você mesmo após a verificação do Claude passar para confirmar a alteração contra o aplicativo em execução.41Toda instrução que você dá ao Claude Code é de um destes tipos:
36 42
37| Estratégia | Antes | Depois |431. Não determinística: você escreve a instrução, e Claude (o modelo) a lê. Pode ser seu prompt, o `CLAUDE.md` ou uma skill. O modelo então decide o que fazer com essa informação. Ele geralmente segue seus comandos, e os modelos atuais são bons em entender sua intenção sem muito contexto, mas não há *garantia* de que ele seguirá suas instruções. Ele ainda pode decidir não fazer certas coisas, ou fazer outras.
38| - | - | - |442. Determinística: você configura a instrução, e o Claude Code (o harness) *precisa* executá-la. Pode ser um hook, uma regra deny ou uma configuração gerenciada. O Claude Code aplica isso sempre, não importa o que o modelo tenha decidido fazer.
39| **Forneça critérios de verificação** | *"implemente uma função que valida endereços de email"* | *"escreva uma função validateEmail. exemplos de casos de teste: [user@example.com](mailto:user@example.com) é verdadeiro, inválido é falso, [user@.com](mailto:user@.com) é falso. execute os testes após implementar"* |
40| **Verifique mudanças de UI visualmente** | *"faça o dashboard parecer melhor"* | *"\[cole captura de tela] implemente este design. tire uma captura de tela do resultado e compare com o original. liste as diferenças e corrija-as"* |
41| **Aborde as causas raiz, não os sintomas** | *"a compilação está falhando"* | *"a compilação falha com este erro: \[cole erro]. corrija-o e verifique se a compilação é bem-sucedida. aborde a causa raiz, não suprima o erro"* |
42 45
43Depois que a verificação existe, decida o quão rigorosamente ela controla a parada:46A maioria das coisas no Claude Code existe nas duas formas:
44 47
45* **Em um único prompt**: peça ao Claude para executar a verificação e iterar na mesma mensagem, como na tabela acima.48| | Não determinística (Claude decide) | Determinística (Claude Code impõe) |
46* **Em toda uma sessão**: defina a verificação como uma [condição `/goal`](https://code.claude.com/docs/pt/goal). Um avaliador separado a verifica novamente após cada turno e Claude continua trabalhando até que a meta seja resolvida. Se Claude ficar preso, Claude Code eventualmente para a execução com a meta ainda definida — veja [como a avaliação de /goal funciona](https://code.claude.com/docs/pt/goal.md#how-evaluation-works).49| :- | :- | :- |
47* **Como um gate determinístico**: um [hook Stop](https://code.claude.com/docs/pt/hooks.md#stop) executa sua verificação como um script e bloqueia o turno de terminar até que passe. [Stop input](https://code.claude.com/docs/pt/hooks.md#stop-input) cobre o limite em bloqueios consecutivos.50| O que fazer | Seu prompt, `CLAUDE.md`, skills que Claude escolhe por conta própria | Hooks, e quais skills só você pode iniciar |
48* **Por uma segunda opinião**: um [subagente de verificação](https://code.claude.com/docs/pt/sub-agents.md) ou um [fluxo de trabalho dinâmico](https://code.claude.com/docs/pt/workflows.md) que verifica suas próprias descobertas tem um modelo fresco tentando refutar o resultado, para que o agente que faz o trabalho não seja o que o avalia.51| O que ele pode tocar | O classificador do modo auto | Regras deny, o sandbox em [modo estrito](https://code.claude.com/docs/pt/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), configurações gerenciadas |
52| Quando está concluído | Um pedido de evidências, `/goal`, `/code-review` | Testes, typecheck, um hook `Stop`, CI |
53| Quanto ele gasta | Nível de esforço, o próprio ritmo do Claude | `--max-turns` ou [`--max-budget-usd`](https://code.claude.com/docs/pt/cli-reference) com `-p`, um [limite de gastos](https://code.claude.com/docs/pt/costs.md) que você definiu |
54| Quem tem a palavra final | O resumo do Claude sobre o que ele fez | Proteção de branch, uma pessoa que aprova o merge |
49 55
50Cada etapa troca configuração por atenção. A versão de prompt funciona em qualquer tarefa hoje. As versões `/goal` e Stop hook são o que permite que uma execução desatendida termine corretamente sem você.56Na maioria das vezes, você quer que Claude decida. Quase toda diretriz tem exceções, e os modelos atuais são bons em ler o código à sua frente e julgar se uma diretriz se encaixa na situação. Com o código real à sua frente, Claude geralmente está em melhor posição para tomar essa decisão do que uma regra que você escreveu com antecedência.
51 57
52Tenha Claude mostrar evidências em vez de afirmar sucesso: a saída do teste, o comando que executou e o que retornou, ou uma captura de tela do resultado. Revisar evidências é mais rápido do que executar novamente a verificação você mesmo, e funciona para sessões que você não estava observando.58O tipo determinístico é para quando você quer garantir que certas coisas *sempre* aconteçam (ou nunca aconteçam), não importa o que o modelo decida. Não precisa ser nada dramático. O modo auto já [bloqueia as coisas dramáticas](https://code.claude.com/docs/pt/permission-modes.md#what-the-classifier-blocks-by-default), como um deploy em produção ou um force push sobre o trabalho de alguém. Geralmente é algo específico do *seu* projeto, e pode ser tão específico quanto você quiser:
53 59
54***60* Nunca edite o cliente gerado em `src/gen/`
61* Sempre execute o script de cabeçalho de licença depois de criar um arquivo
55 62
56## Explore primeiro, depois planeje, depois codifique63Você poderia ter escrito qualquer uma dessas como uma linha no `CLAUDE.md` ou no seu prompt, e Claude a seguiria quase sempre. Mas não importa com que força você a formule, se Claude segue essa linha em um determinado turno ainda é decisão do Claude.
57 64
58> [!TIP]65> [!TIP]
59>66>
60> Separe pesquisa e planejamento da implementação para evitar resolver o problema errado.67> Se você continua adicionando ênfase a uma linha do `CLAUDE.md` e Claude ainda a ignora, isso é sinal de que a linha pertence a um hook. O inverso também vale: se você tem hooks para coisas que são apenas preferências, exclua-os e deixe Claude decidir.
61 68
62Deixar Claude pular direto para codificação pode produzir código que resolve o problema errado. Use [plan mode](https://code.claude.com/docs/pt/permission-modes.md#analyze-before-you-edit-with-plan-mode) para separar exploração de execução.69## Diga ao Claude o que ele não consegue ver
63 70
64O fluxo de trabalho recomendado tem quatro fases:71> [!TIP]
72>
73> Escreva apenas o que Claude não consegue encontrar lendo o repositório, ou o que ele gastaria tempo redescobrindo a cada sessão.
65 74
66**1. Explore**75Claude começa toda tarefa lendo seu código, e os modelos atuais são *muito* bons nisso. Eles encontram a estrutura de arquivos, suas convenções, seu framework de testes e como os componentes existentes são construídos, geralmente mais rápido do que você conseguiria explicar. Isso significa que Claude já sabe a maior parte do que você poderia ficar tentado a escrever para ele.
67 76
68Entre em plan mode pressionando `Shift+Tab` até a barra de status mostrar `⏸ plan mode on`, ou inicie a sessão com `claude --permission-mode plan`. Claude lê arquivos e responde perguntas sem fazer alterações.77O que ele não consegue encontrar é a informação que nunca esteve no repositório:
69 78
70```txt title="claude (plan mode)" wrap theme={null}79* Uma decisão que sua equipe tomou em uma reunião
71read /src/auth and understand how we handle sessions and login.80* Um processo de deploy que existe na cabeça de uma pessoa
72also look at how we manage environment variables for secrets.81* A variável de ambiente de que seus testes de integração precisam
73```
74 82
75**2. Plan**83Também há informação que *está* no repositório, mas exige alguns minutos de investigação para ser encontrada, e Claude precisa refazer essa investigação no início de cada sessão.
76 84
77Peça ao Claude para criar um plano de implementação detalhado.85Um bom teste antes de escrever qualquer coisa para Claude:
78 86
79```txt title="claude (plan mode)" wrap theme={null}871. Ele conseguiria encontrar isso lendo o código?
80I want to add Google OAuth. What files need to change?882. Ele de fato iria procurar?
81What's the session flow? Create a plan.
82```
83 89
84Pressione `Ctrl+G` para abrir o plano no seu editor de texto para edição direta antes de Claude prosseguir.90Se ambas as respostas forem sim, deixe de fora.
85 91
86**3. Implement**92### Escreva um prompt específico
87 93
88Saia de plan mode aprovando o plano ou pressionando `Shift+Tab`, depois deixe Claude codificar, verificando contra seu plano.94Um prompt específico ajuda pelo mesmo motivo, porque dá ao Claude informação que ele ainda não tem. Se você nomear o arquivo, descrever o sintoma e disser logo de início como é o "corrigido", geralmente você se poupa de uma rodada de correções depois.
89 95
90```txt title="claude" wrap theme={null}96O mesmo vale para uma preferência entre duas abordagens razoáveis: Claude não consegue ler isso no código, então, se você se importa com qual ele escolhe, diga logo de início.
91implement the OAuth flow from your plan. write tests for the
92callback handler, run the test suite and fix any failures.
93```
94 97
95**4. Commit**98| Em vez de | Tente |
99| :- | :- |
100| *"corrija o bug de login"* | *"usuários relatam que o login falha depois que a sessão expira. veja a atualização de token em src/auth/, escreva um teste que falha reproduzindo o problema, depois corrija"* |
101| *"adicione um widget de calendário"* | *"siga o padrão em HotDogWidget.php e construa um widget de calendário que permita escolher um mês e paginar entre anos. sem novas bibliotecas"* |
96 102
97Peça ao Claude para fazer commit com uma mensagem descritiva e criar um PR.103Se você já tem o que Claude precisa, entregue em vez de descrever:
98 104
99```txt title="claude" wrap theme={null}105* Um arquivo: digite `@` e o caminho para [incluir o conteúdo do arquivo](https://code.claude.com/docs/pt/common-workflows.md#reference-files-and-directories) na sua mensagem.
100commit with a descriptive message and open a PR106* Uma imagem: cole a captura de tela do design ou do erro no prompt.
101```107* Saída de comando: canalize a partir do seu shell com `cat error.log | claude -p "what's going on here"`.
102 108
103Plan mode é útil, mas também adiciona sobrecarga.109Frases como `think step by step` ou `be thorough` são texto comum de prompt, e não palavras-chave. O principal controle de quão intensamente Claude pensa é o [nível de esforço](https://code.claude.com/docs/pt/model-config.md#adjust-effort-level), abordado em [Altere o modelo e o esforço](#change-the-model-and-effort). Formulações assim ainda podem dar um empurrão em Claude dentro da configuração de esforço, mas não o levam além dela.
104 110
105Para tarefas onde o escopo é claro e a correção é pequena (como corrigir um erro de digitação, adicionar uma linha de log ou renomear uma variável) peça ao Claude para fazer isso diretamente.111Uma frase que ainda ajuda é `be ambitious`. Claude tende a interpretar um pedido de forma conservadora e construir a menor coisa que o satisfaça, já que não consegue ver o quanto você esperava. Quando você quiser a versão mais completa, com os casos extremos tratados e os desdobramentos naturais incluídos, diga isso:
106 112
107O planejamento é mais útil quando você está incerto sobre a abordagem, quando a mudança modifica vários arquivos ou quando você não está familiarizado com o código sendo modificado. Se você pudesse descrever o diff em uma frase, pule o plano.113```text theme={null}
114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout
115```
108 116
109***117Isso informa Claude sobre o escopo, que só você conhece, e não sobre o quanto pensar.
110 118
111## Forneça contexto específico em seus prompts119E quando você está explorando em vez de corrigir algo específico, um prompt vago como `what would you improve in this file?` é perfeitamente aceitável. Você vai corrigir um pouco mais ao longo do caminho, e essa é a troca.
112 120
113> [!TIP]121### Faça um brainstorming com Claude primeiro
114>
115> Quanto mais precisas suas instruções, menos correções você precisará.
116 122
117Claude pode inferir intenção, mas não pode ler sua mente. Referencie arquivos específicos, mencione restrições e aponte para padrões de exemplo.123Quando você ainda não sabe exatamente o que quer, não precisa resolver tudo antes de escrever o prompt. Em vez disso, peça ao Claude para entrevistar você:
118 124
119| Estratégia | Antes | Depois |125```text theme={null}
120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.
121| **Escopo a tarefa.** Especifique qual arquivo, qual cenário e preferências de teste. | *"adicione testes para foo.py"* | *"escreva um teste para foo.py cobrindo o caso extremo onde o usuário está desconectado. evite mocks."* |127```
122| **Aponte para fontes.** Dirija Claude para a fonte que pode responder uma pergunta. | *"por que ExecutionFactory tem uma API tão estranha?"* | *"procure no histórico git do ExecutionFactory e resuma como sua API chegou a ser assim"* |
123| **Referencie padrões existentes.** Aponte Claude para padrões em seu codebase. | *"adicione um widget de calendário"* | *"veja como os widgets existentes são implementados na página inicial para entender os padrões. HotDogWidget.php é um bom exemplo. siga o padrão para implementar um novo widget de calendário que permite ao usuário selecionar um mês e paginar para frente/trás para escolher um ano. construa do zero sem bibliotecas além das já usadas no codebase."* |
124| **Descreva o sintoma.** Forneça o sintoma, a localização provável e como "corrigido" se parece. | *"corrija o bug de login"* | *"usuários relatam que o login falha após timeout de sessão. verifique o fluxo de autenticação em src/auth/, especialmente atualização de token. escreva um teste falhando que reproduz o problema, depois corrija-o"* |
125 128
126Prompts vagos podem ser úteis quando você está explorando e pode se dar ao luxo de corrigir o curso. Um prompt como `"o que você melhoraria neste arquivo?"` pode revelar coisas que você não teria pensado em perguntar.129Claude volta com perguntas de múltipla escolha sobre as partes que você ainda não definiu: limites por usuário versus por chave, o que acontece com requisições acima do limite, o que está fora do escopo. Ele continua perguntando até que as respostas formem uma especificação.
127 130
128### Forneça conteúdo rico131Depois que o `SPEC.md` existir, inicie uma sessão nova para construir a partir dele, para que a construção comece com um contexto limpo e uma definição escrita de concluído. Ele também é o arquivo para o qual você vai apontar o revisor mais tarde, em [Dê ao Claude uma verificação para executar](#give-claude-a-check-to-run).
129 132
130> [!TIP]133### Mantenha o CLAUDE.md curto
131>
132> Use `@` para referenciar arquivos, cole capturas de tela/imagens ou canalize dados diretamente.
133 134
134Você pode fornecer dados ricos ao Claude de várias maneiras:135O Claude Code carrega o [`CLAUDE.md`](https://code.claude.com/docs/pt/memory) em toda sessão, o que significa que cada linha nele ocupa um pouco da atenção do Claude em *toda* tarefa, seja relevante ou não. Por isso o arquivo funciona melhor quando contém apenas o que Claude não conseguiria deduzir a partir do próprio código:
135 136
136* **Referencie arquivos com `@`** em vez de descrever onde o código vive. Claude lê o arquivo antes de responder.137* Como confirmar o trabalho neste repositório: os comandos exatos de teste, typecheck e lint, e como executar um único arquivo de teste
137* **Cole imagens diretamente**. Copie/cole ou arraste e solte imagens no prompt.138* Lugares onde o código engana: um padrão antigo que está em todo lugar, mas que código novo não deve copiar, ou um diretório que parece não usado, mas é
138* **Forneça URLs** para documentação e referências de API. Use `/permissions` para adicionar à allowlist domínios frequentemente usados.139* Decisões que não estão no repositório: qual helper de erro a equipe escolheu, como os deploys funcionam, o que precisa de revisão de migração
139* **Canalize dados** executando `cat error.log | claude -p "explain this error"` para enviar conteúdos de arquivo diretamente.140* Qualquer coisa que você já precisou corrigir duas vezes
140* **Deixe Claude buscar o que precisa**. Diga ao Claude para puxar contexto ele mesmo usando comandos Bash, ferramentas MCP ou lendo arquivos.
141 141
142***142Um `CLAUDE.md` que passa nesse teste continua curto:
143 143
144## Configure seu ambiente144```markdown CLAUDE.md theme={null}
145# Commands
146- Install: pnpm install
147- Run one test file: pnpm vitest run path/to/file.test.ts
148- Typecheck: pnpm tsc --noEmit
145 149
146Alguns passos de configuração tornam Claude Code significativamente mais eficaz em todas as suas sessões. Para uma visão geral completa dos recursos de extensão e quando usar cada um, consulte [Extend Claude Code](https://code.claude.com/docs/pt/features-overview.md).150# Conventions
151- Use the error helpers in src/lib/errors.ts, never throw raw strings
152- src/legacy/ is still live but don't copy its patterns into new code
147 153
148### Escreva um CLAUDE.md eficaz154# Gotchas
155- Integration tests need DATABASE_URL set, see .env.example
156```
149 157
150> [!TIP]158Em uma sessão, execute `/context` para confirmar que Claude carregou o arquivo.
151>
152> Execute `/init` para gerar um arquivo CLAUDE.md inicial baseado na estrutura do seu projeto atual, depois refine ao longo do tempo.
153 159
154CLAUDE.md é um arquivo especial que Claude lê no início de cada conversa. Inclua comandos Bash, estilo de código e regras de fluxo de trabalho. Isso dá ao Claude contexto persistente que ele não pode inferir apenas do código.160Observe que a linha de typecheck é apenas o comando. Claude precisa conhecer o comando para poder verificar o próprio trabalho à medida que avança. Se você também quiser que o Claude Code *imponha* um typecheck aprovado antes que Claude termine, isso é tarefa para um [hook `Stop`](#enforce-the-check-with-a-stop-hook). Uma linha como `Always typecheck before you finish` neste arquivo funciona na maioria das vezes, não em todas.
155 161
156Não há formato obrigatório para arquivos CLAUDE.md, mas mantenha-o curto e legível para humanos. Por exemplo:162Você não precisa escrever o arquivo do zero:
157 163
158```markdown CLAUDE.md theme={null}164* `/init` gera uma versão inicial a partir da sua base de código. A partir daí, o trabalho é principalmente remover linhas. O [guia de memória](https://code.claude.com/docs/pt/memory.md#write-effective-instructions) recomenda ficar abaixo de 200.
159# Code style165* `/doctor` sugere cortes para qualquer coisa que Claude [já consegue deduzir a partir do código](https://code.claude.com/docs/pt/memory.md#my-claude-md-is-too-large).
160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` sinaliza instruções que foram escritas para modelos mais antigos, que apontam para arquivos que não existem mais ou que [se contradizem](https://code.claude.com/docs/pt/memory.md#audit-your-instruction-files).
161- Destructure imports when possible (eg. import { foo } from 'bar')
162 167
163# Workflow168Suas preferências pessoais vão no `CLAUDE.local.md` em vez do `CLAUDE.md`, e você adiciona esse arquivo ao `.gitignore` para que ele fique fora do repositório.
164- Be sure to typecheck when you're done making a series of code changes
165- Prefer running single tests, and not the whole test suite, for performance
166```
167 169
168Execute `/context` para confirmar que Claude carregou o arquivo. CLAUDE.md é carregado a cada sessão, então inclua apenas coisas que se aplicam amplamente. Para conhecimento de domínio ou fluxos de trabalho que são apenas relevantes às vezes, use [skills](https://code.claude.com/docs/pt/skills.md) em vez disso. Claude os carrega sob demanda sem inchar cada conversa.170> [!NOTE]
171>
172> Se Claude continua ignorando uma linha que *está* no `CLAUDE.md`, adicionar IMPORTANT provavelmente não vai resolver. Ou o arquivo cresceu tanto que a linha se perde, ou a linha é uma regra que não pode ter exceções e, nesse caso, pertence a um [hook](#enforce-the-rules-that-cant-have-exceptions).
169 173
170Mantenha-o conciso. Para cada linha, pergunte: *"Remover isso causaria Claude cometer erros?"* Se não, corte. Arquivos CLAUDE.md inchados causam Claude ignorar suas instruções reais!174### Restrinja regras a uma parte da base de código
171 175
172| ✅ Inclua | ❌ Exclua |176Se uma regra importa apenas em uma parte da base de código, coloque-a em [`.claude/rules/`](https://code.claude.com/docs/pt/memory#path-specific-rules) com um filtro `paths:` para que ela só seja carregada quando Claude estiver de fato trabalhando ali. Por exemplo, este `.claude/rules/api.md` é carregado para arquivos TypeScript em `src/api/`:
173| - | - |
174| Comandos Bash que Claude não pode adivinhar | Qualquer coisa que Claude possa descobrir lendo código |
175| Regras de estilo de código que diferem dos padrões | Convenções de linguagem padrão que Claude já conhece |
176| Instruções de teste e executores de teste preferidos | Documentação detalhada de API (link para docs em vez disso) |
177| Etiqueta de repositório (nomenclatura de branch, convenções de PR) | Informações que mudam frequentemente |
178| Decisões arquitetônicas específicas do seu projeto | Explicações longas ou tutoriais |
179| Peculiaridades do ambiente de desenvolvedor (variáveis env obrigatórias) | Descrições arquivo por arquivo do codebase |
180| Armadilhas comuns ou comportamentos não óbvios | Práticas auto-evidentes como "escreva código limpo" |
181 177
182Se Claude continua fazendo algo que você não quer apesar de ter uma regra contra isso, o arquivo provavelmente é muito longo e a regra está sendo perdida. Se Claude faz perguntas que são respondidas em CLAUDE.md, a redação pode ser ambígua. Trate CLAUDE.md como código: revise-o quando as coisas dão errado, poda-o regularmente e teste mudanças observando se o comportamento do Claude realmente muda. Para um CLAUDE.md verificado, execute [`/doctor`](https://code.claude.com/docs/pt/commands#all-commands) e Claude propõe cortes para conteúdo que pode derivar do codebase.178```markdown .claude/rules/api.md theme={null}
179---
180paths:
181 - "src/api/**/*.ts"
182---
183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks
184- Every new endpoint needs an entry in openapi.yaml, CI fails without it
185```
183 186
184Se Claude continua pulando uma instrução, adicione ênfase como "IMPORTANTE" apenas naquela linha. Se você enfatizar muitas linhas, nenhuma delas se destaca. Verifique CLAUDE.md no git para que sua equipe possa contribuir. O arquivo aumenta em valor ao longo do tempo.187### Coloque os procedimentos da equipe em skills
185 188
186Arquivos CLAUDE.md podem importar arquivos adicionais usando a sintaxe `@path/to/import`. Para regras de importação e onde arquivos CLAUDE.md podem viver, consulte [CLAUDE.md files](https://code.claude.com/docs/pt/memory.md#claude-md-files).189Um modelo mais capaz sabe mais sobre engenharia, mas não sabe como a *sua* equipe faz um release, o que diz o seu runbook de incidentes ou como você quer que a documentação de API seja escrita. Esse tipo de conhecimento vai em uma [skill](https://code.claude.com/docs/pt/skills.md): um procedimento ou um conhecimento da equipe salvo em `.claude/skills/<name>/SKILL.md`.
187 190
188### Configure permissões191Skills também pesam menos no contexto do que o `CLAUDE.md` para esse tipo de coisa. Para uma skill que Claude pode iniciar por conta própria, ele vê o nome e a descrição em toda sessão, mas só [lê o arquivo completo](https://code.claude.com/docs/pt/skills.md#skill-content-lifecycle) quando a tarefa exige. Um procedimento de release longo em uma skill não pesa na sua correção de bug não relacionada como pesaria no `CLAUDE.md`.
189 192
190> [!TIP]193> [!NOTE]
191>194>
192> Para obter menos prompts sem abrir mão do controle, pré-aprove as ferramentas em que você confia com `/permissions` e deixe comandos em sandbox executarem sem perguntar com `/sandbox`. Mude para modo Manual quando quiser aprovar edições e comandos você mesmo.195> A regra do `CLAUDE.md` também se aplica às skills: escreva apenas o que Claude não consegue encontrar sozinho.
193 196
194Com Claude Code v2.1.283 ou posterior, modo auto é o [modo de permissão inicial integrado](https://code.claude.com/docs/pt/permission-modes.md#eliminate-prompts-with-auto-mode) para sessões interativas de terminal e VS Code: um modelo classificador separado revisa a maioria das ações em vez de você e bloqueia apenas o que parece arriscado, como escalação de escopo, infraestrutura desconhecida ou ações impulsionadas por conteúdo hostil. Em versões anteriores, modo auto é o modo de permissão inicial integrado apenas em planos Pro, Max e Team.197Para um fluxo de trabalho com efeitos colaterais, como de fato fazer esse release, adicione `disable-model-invocation: true`. Claude então [não consegue iniciar a skill por conta própria](https://code.claude.com/docs/pt/skills.md#control-who-invokes-a-skill), e ela só é executada quando você mesmo digita `/release`. Salva como `.claude/skills/release/SKILL.md`, ela poderia ser assim:
195 198
196No modo Manual, Claude Code pergunta antes de ações que podem modificar seu sistema: gravações de arquivo, comandos Bash, ferramentas MCP. Isso é seguro mas tedioso. Após a décima aprovação você está clicando sem revisar. Duas ferramentas cortam essas interrupções no modo Manual e se aplicam também no modo auto:199```markdown .claude/skills/release/SKILL.md theme={null}
200---
201name: release
202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.
203disable-model-invocation: true
204---
2051. Make sure you're on main with a clean tree. If not, stop and ask.
2062. Run `pnpm changeset version` and commit the result.
2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.
2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.
209```
197 210
198* **Listas de permissões**: permita ferramentas específicas que você sabe que são seguras, como `npm run lint` ou `git commit`211### Conecte as ferramentas de que Claude precisa
199* **Sandboxing**: ative isolamento em nível de SO que restringe acesso ao sistema de arquivos e rede, permitindo Claude trabalhar mais livremente dentro de limites definidos
200 212
201Leia mais sobre [permission modes](https://code.claude.com/docs/pt/permission-modes.md), [permission rules](https://code.claude.com/docs/pt/permissions.md) e [sandboxing](https://code.claude.com/docs/pt/sandboxing.md).213Parte do que Claude não consegue ver está inteiramente em outro sistema, como seu rastreador de issues ou seu painel de erros. Se esse sistema tem uma CLI, geralmente esse é o caminho mais fácil. Com o `gh` instalado e autenticado, por exemplo, Claude abre pull requests e lê comentários de revisão sem nenhuma explicação sua. Para uma CLI que ele nunca viu, apontá-lo para `--help` é suficiente.
202 214
203### Use ferramentas CLI215Para sistemas sem CLI, existe o [MCP](https://code.claude.com/docs/pt/mcp.md). Você adiciona um servidor a partir do seu shell:
204 216
205> [!TIP]217```bash theme={null}
206>218claude mcp add --transport http notion https://mcp.notion.com/mcp
207> Diga ao Claude Code para usar ferramentas CLI como `gh`, `aws`, `gcloud` e `sentry-cli` ao interagir com serviços externos.219```
220
221O servidor então aparece em `/mcp` dentro de uma sessão. Servidores conectados adicionam os nomes de suas ferramentas e instruções ao contexto mesmo quando você não os está usando, então vale a pena [desativar ali os que você não precisa](https://code.claude.com/docs/pt/mcp.md#disable-a-server-without-removing-it).
222
223E se você trabalha em uma linguagem tipada, um [plugin de inteligência de código](https://code.claude.com/docs/pt/plugins/code-intelligence.md) permite que Claude vá direto a uma definição em vez de ler vários arquivos para encontrá-la.
208 224
209Ferramentas CLI são a forma mais eficiente em contexto de interagir com serviços externos. Se você usa GitHub, instale o CLI `gh`. Claude sabe como usá-lo para criar issues, abrir pull requests e ler comentários. Sem `gh`, Claude ainda pode usar a API do GitHub, mas requisições não autenticadas frequentemente atingem limites de taxa.225## Dê ao Claude uma verificação para executar
210 226
211Claude também é eficaz em aprender ferramentas CLI que não conhece. Tente prompts como `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude para quando o trabalho parece pronto. Se ele não tem nada para executar que diga se o trabalho de fato *está* pronto, "parece pronto" é tudo o que ele tem como base. Na prática, isso faz de você o conjunto de testes, e cada erro fica ali até que você por acaso o perceba.
212 228
213### Conecte MCP servers229Se você der a ele algo que retorne sucesso ou falha, Claude pode fechar esse loop sozinho. Ele faz a alteração, executa a verificação e, se algo quebrou, lê a saída e corrige antes de executar a verificação de novo.
214 230
215> [!TIP]231> [!TIP]
216>232>
217> Execute `claude mcp add` com um nome de servidor e URL ou comando para conectar ferramentas externas como Notion, Figma ou seu banco de dados. Por exemplo: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Dê ao Claude algo que ele possa executar e que retorne sucesso ou falha. Com isso, ele consegue seguir sozinho e você não precisa ficar observando.
218 234
219Com [MCP servers](https://code.claude.com/docs/pt/mcp.md), você pode pedir ao Claude para implementar recursos de rastreadores de issues, consultar bancos de dados, analisar dados de monitoramento, integrar designs do Figma e automatizar fluxos de trabalho.235A verificação pode ser quase qualquer coisa, desde que Claude consiga ler o resultado:
220 236
221### Configure hooks237* Um arquivo de teste
238* O código de saída de um build
239* Um linter
240* Um script que compara a saída com um fixture
241* Uma [captura de tela do navegador](https://code.claude.com/docs/pt/chrome.md) ao lado do mockup
222 242
223> [!TIP]243Se seu repositório já tem uma dessas, a linha mais útil do seu `CLAUDE.md` é o comando que a executa.
224>
225> Use hooks para ações que devem acontecer toda vez com zero exceções.
226 244
227[Hooks](https://code.claude.com/docs/pt/hooks-guide.md) executam scripts automaticamente em pontos específicos do fluxo de trabalho do Claude. Diferentemente de instruções CLAUDE.md que são consultivas, hooks são determinísticos e garantem que a ação aconteça.245O quão rigorosa você torna a verificação depende de você. As opções vão de Claude decidir por si mesmo até o Claude Code impor a verificação:
228 246
229Claude pode escrever hooks para você. Tente prompts como *"Write a hook that runs eslint after every file edit"* ou *"Write a hook that blocks writes to the migrations folder."* Edite `.claude/settings.json` diretamente para configurar hooks manualmente, e execute `/hooks` para navegar o que está configurado.247* No prompt: `run the auth tests after, and keep going until they pass`. Claude decide por si mesmo quando está satisfeito. Isso funciona para qualquer tarefa, hoje, sem configuração.
248* Como meta: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/pt/goal) define uma condição que um modelo separado verifica em relação à conversa após cada turno, e Claude continua até que ela seja atendida. Raramente você precisa disso na sessão. Isso importa em execuções longas em segundo plano, nas quais Claude às vezes termina um turno com um resumo de progresso enquanto ainda há itens em aberto, e a meta o manda de volta ao trabalho.
249* Como um hook Stop: um [hook `Stop`](https://code.claude.com/docs/pt/hooks#stop) executa seu script sempre que Claude tenta encerrar o turno e manda Claude de volta ao trabalho se o script sair com código 2. Este é imposto pelo Claude Code (o harness), então o turno não termina até que o typecheck passe ou o [limite de bloqueios](https://code.claude.com/docs/pt/hooks.md#stop-input) seja atingido. Há um [exemplo mais abaixo](#enforce-the-check-with-a-stop-hook).
250* Por alguém que não escreveu o código: no terminal, [`/code-review`](https://code.claude.com/docs/pt/code-review-local) revisa o diff em um subagente novo que nunca viu sua conversa. Ele não é influenciado pelo raciocínio que produziu o código.
230 251
231### Crie skills252Qualquer que seja a opção, peça ao Claude *evidências*: o comando que ele executou e a saída, ou a captura de tela. "Todos os testes passam", por si só, diz muito pouco, e ler a saída é mais rápido do que executar a verificação de novo você mesmo. Para uma sessão que você não estava observando, também é a única evidência que você tem.
232 253
233> [!TIP]254> [!TIP]
234>255>
235> Crie arquivos `SKILL.md` em `.claude/skills/` para dar ao Claude conhecimento de domínio e fluxos de trabalho reutilizáveis.256> Depois que Claude disser que terminou, você também pode executar [`/verify`](https://code.claude.com/docs/pt/skills#run-and-verify-your-app) na sessão, o que faz Claude compilar e executar o aplicativo e olhar o resultado. Isso detecta o tipo de problema que testes e typechecks deixam passar.
236 257
237[Skills](https://code.claude.com/docs/pt/skills.md) estendem o conhecimento do Claude com informações específicas do seu projeto, equipe ou domínio. Claude as aplica automaticamente quando relevante, ou você pode invocá-las diretamente com `/skill-name`.258### Revise em relação à sua especificação
238 259
239Crie uma skill adicionando um diretório com um `SKILL.md` para `.claude/skills/`:260Se você prefere que a revisão verifique o trabalho em relação ao seu plano em vez de procurar bugs em geral, escreva você mesmo o prompt de revisão:
240 261
241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}
242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style
243description: REST API design conventions for our services
244# API Conventions
245- Use kebab-case for URL paths
246- Use camelCase for JSON properties
247- Always include pagination for list endpoints
248- Version APIs in the URL path (/v1/, /v2/)
249```264```
250 265
251Skills também podem definir fluxos de trabalho reutilizáveis que você invoca diretamente:266> [!NOTE]
252 267>
253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Não remova a parte `skip style` desse prompt. Um revisor a quem se pede para encontrar problemas sempre vai encontrar *alguma coisa*. Se você corrigir cada apontamento, acaba com camadas extras de abstração e testes para casos que não podem acontecer.
254name: fix-issue269
255description: Fix a GitHub issue270### Imponha a verificação com um hook Stop
256disable-model-invocation: true271
257Analyze and fix the GitHub issue: $ARGUMENTS.272A versão em hook `Stop` da regra de typecheck são algumas linhas em `.claude/settings.json`. O código de saída 2 é o que bloqueia a parada. O que quer que o comando imprima no stderr volta para Claude como o motivo pelo qual ele ainda não pode terminar, e é por isso que a saída do compilador é redirecionada para lá:
258 273
2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}
2602. Understand the problem described in the issue275{
2613. Search the codebase for relevant files276 "hooks": {
2624. Implement the necessary changes to fix the issue277 "Stop": [
2635. Write and run tests to verify the fix278 {
2646. Ensure code passes linting and type checking279 "hooks": [
2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }
2668. Push and create a PR281 ]
282 }
283 ]
284 }
285}
267```286```
268 287
269Execute `/fix-issue 1234` para invocá-la. Use `disable-model-invocation: true` para fluxos de trabalho com efeitos colaterais que você quer disparar manualmente.288Para ver funcionando, peça ao Claude uma alteração que quebre um tipo: em vez de terminar, ele recebe de volta os erros do compilador e continua até que o `tsc` passe. Se o hook bloquear [oito paradas seguidas](https://code.claude.com/docs/pt/hooks.md#stop-input) sem nenhuma chamada de ferramenta entre elas, o Claude Code sobrescreve o próximo bloqueio e encerra o turno. Para aumentar o limite, defina [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/pt/env-vars).
270 289
271### Crie subagents personalizados290## Imponha as regras que não podem ter exceções
272 291
273> [!TIP]292> [!TIP]
274>293>
275> Defina assistentes especializados em `.claude/agents/` que Claude pode delegar para tarefas isoladas.294> Se algo precisa acontecer sempre, transforme em um hook, uma regra deny ou uma configuração gerenciada. O `CLAUDE.md` é para diretrizes, e Claude pode decidir que uma diretriz não se aplica.
276 295
277[Subagents](https://code.claude.com/docs/pt/sub-agents.md) executam em seu próprio contexto com seu próprio conjunto de ferramentas permitidas. Eles são úteis para tarefas que leem muitos arquivos ou precisam de foco especializado sem poluir sua conversa principal.296Pense em três regras que você talvez tenha no `CLAUDE.md` hoje: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude vai segui-las quase sempre. Para as poucas em que "quase" não é suficiente, tire-as do `CLAUDE.md` e coloque-as em uma configuração que o próprio Claude Code (o harness) aplica. A partir daí, o resultado não depende do que o modelo lembra ou decide.
278 297
279```markdown .claude/agents/security-reviewer.md theme={null}298### Imponha etapas com hooks
280name: security-reviewer299
281description: Reviews code for security vulnerabilities300[Hooks](https://code.claude.com/docs/pt/hooks-guide.md) executam algo seu em pontos fixos do loop do Claude: antes ou depois de uma chamada de ferramenta, quando Claude tenta parar, quando uma sessão começa e assim por diante. Esse algo pode ser:
282tools: Read, Grep, Glob, Bash301
283model: opus302* Um comando de shell (o caso mais comum)
284You are a senior security engineer. Review code for:303* Um POST para um endpoint HTTP
285- Injection vulnerabilities (SQL, XSS, command injection)304* Uma chamada de ferramenta em um dos seus servidores MCP
286- Authentication and authorization flaws305* Um [hook `prompt` ou `agent`](https://code.claude.com/docs/pt/hooks#hook-handler-fields), que deixa um modelo decidir
287- Secrets or credentials in code306
288- Insecure data handling307Um hook `prompt` ou `agent` pede a *outro modelo* que decida, então também não é determinístico. Para imposição real, use um hook `command` ou `http` e adicione [`onFailure: "block"`](https://code.claude.com/docs/pt/hooks#block-the-action-when-a-hook-fails) se a ação também deve ser interrompida quando o próprio hook falhar ou atingir o tempo limite. Para um hook que verifica commits em busca de segredos, por exemplo, é melhor bloquear o commit do que deixá-lo passar sem verificação enquanto o scanner está fora do ar.
308
309Aqui está a regra do formatador como um hook `PostToolUse`. Ele é executado após cada `Edit` ou `Write`, e se Claude se lembra da regra deixa de importar, porque não é Claude quem a executa:
289 310
290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}
312{
313 "hooks": {
314 "PostToolUse": [
315 {
316 "matcher": "Edit|Write",
317 "hooks": [
318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }
319 ]
320 }
321 ]
322 }
323}
291```324```
292 325
293Diga ao Claude para usar subagents explicitamente: *"Use a subagent to review this code for security issues."*326Para verificar o hook, peça ao Claude para adicionar uma linha mal indentada a um arquivo que o Prettier formata. O arquivo salvo volta com a indentação corrigida.
294 327
295### Instale plugins328A regra de migrações se torna um [hook `PreToolUse`](https://code.claude.com/docs/pt/hooks-guide#block-edits-to-protected-files) que sai com código 2 para qualquer caminho em `migrations/`. Você não precisa escrevê-lo: `write a hook that blocks edits to the migrations folder` funciona como prompt, e `/hooks` mostra o resultado. Mas não exagere: um hook é para uma regra com *zero* exceções, e `Prefer named exports` tem muitas, então essa fica no `CLAUDE.md`.
296 329
297> [!TIP]330### Limite o acesso com regras de permissão e o sandbox
298>
299> Execute `/plugin` para navegar no marketplace. Plugins adicionam skills, ferramentas e integrações sem configuração.
300 331
301[Plugins](https://code.claude.com/docs/pt/plugins/overview.md) agrupam skills, hooks, subagents e MCP servers em uma única unidade instalável da comunidade e Anthropic. Se você trabalha com uma linguagem tipada, instale um [code intelligence plugin](https://code.claude.com/docs/pt/plugins/code-intelligence.md) para dar ao Claude navegação de símbolo precisa e detecção automática de erros após edições.332[Regras de permissão](https://code.claude.com/docs/pt/permissions.md) decidem o que Claude pode executar, ler e buscar. Regras `deny` valem em todos os modos de permissão, incluindo auto e `bypassPermissions`, e é exatamente por isso que a regra do `.env` pertence a esse lugar:
302 333
303Para orientação sobre escolher entre skills, subagents, hooks e MCP, consulte [Extend Claude Code](https://code.claude.com/docs/pt/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}
335{
336 "permissions": {
337 "allow": ["Bash(pnpm tsc --noEmit)"],
338 "ask": ["Bash(git push *)"],
339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
340 }
341}
342```
304 343
305***344Com isso salvo, perguntar ao Claude o que há no `.env` falha, tanto pela ferramenta `Read` quanto por `cat .env`.
306 345
307## Comunique-se efetivamente346Regras correspondem a chamadas de ferramenta, não a intenções, então vale a pena saber onde estão os limites:
308 347
309Faça ao Claude as perguntas que faria a outro engenheiro, e para recursos maiores deixe Claude entrevistá-lo e escrever uma especificação antes de começar a implementar.348* A regra `Read` *pega* `cat .env`, porque o Claude Code reconhece os [comandos comuns de leitura de arquivos](https://code.claude.com/docs/pt/permissions.md#read-and-edit).
349* Ela não pega um script que abre o arquivo.
350* Uma regra deny de `WebFetch` para um domínio não faz nada quanto a um `curl` para esse mesmo domínio, a menos que o sandbox esteja ativado.
310 351
311### Faça perguntas sobre o codebase352Para um limite em nível de sistema operacional sobre acesso ao sistema de arquivos ou à rede, ative o [sandbox](https://code.claude.com/docs/pt/sandboxing.md) com `/sandbox` em uma sessão. Ele confina os comandos de shell do Claude no macOS, Linux e WSL2 e [também aplica suas regras deny de `Read` e regras `WebFetch(domain:...)`](https://code.claude.com/docs/pt/sandboxing#permission-rules), então, para qualquer coisa relacionada a segurança, você quer os dois.
312 353
313> [!TIP]354Por padrão, Claude ainda pode pedir para tentar novamente um comando bloqueado fora do sandbox, e esse pedido passa pelo fluxo normal de permissão. O [modo estrito do sandbox](https://code.claude.com/docs/pt/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), na aba **Overrides** do `/sandbox`, desativa essa nova tentativa.
355
356> [!WARNING]
314>357>
315> Faça ao Claude perguntas que você faria a um engenheiro sênior.358> O modo auto é um modelo classificador julgando cada ação, e não uma regra rígida. Ele é bom nisso, mas, como qualquer julgamento, pode errar. Você também pode ajustar o que ele considera arriscado, e sua organização pode desativá-lo completamente, então suas regras de "nunca" pertencem a regras deny ou hooks.
359
360### Escolha a quem uma regra se aplica
316 361
317Ao se integrar a um novo codebase, use Claude Code para aprendizado e exploração. Você pode fazer ao Claude o mesmo tipo de perguntas que faria a outro engenheiro:362O lugar onde uma regra fica decide a quem ela se aplica:
318 363
319* Como funciona o logging?364* `.claude/settings.local.json` e `~/.claude/settings.json` são só seus. Quando você seleciona **Yes, and don't ask again** para um comando, o Claude Code salva essa regra no arquivo local.
320* Como faço um novo endpoint de API?365* `.claude/settings.json` e os hooks nele pertencem ao repositório. Depois que você faz commit deles, eles se aplicam a todos que trabalham no repositório. As regras deny dele se aplicam imediatamente. As regras `allow` dele esperam até que cada pessoa aceite o [diálogo de confiança](https://code.claude.com/docs/pt/permissions.md#what-runs-before-you-trust-a-folder) daquela pasta, e a [confiança do workspace](https://code.claude.com/docs/pt/hooks.md#workspace-trust) também decide quando os hooks dele começam a ser executados na máquina de cada pessoa.
321* O que `async move { ... }` faz na linha 134 de `foo.rs`?366* [Configurações gerenciadas](https://code.claude.com/docs/pt/managed-settings.md) pertencem à organização. Elas vêm do console de administração, de MDM ou de um arquivo `managed-settings.json`, e nenhum arquivo de configurações pessoal pode sobrescrevê-las, o que as torna o único lugar para a política de uma equipe de segurança. Se você é a pessoa que as define, consulte [Configure o Claude Code para sua organização](https://code.claude.com/docs/pt/admin-setup.md).
322* Quais casos extremos `CustomerOnboardingFlowImpl` trata?
323* Por que este código chama `foo()` em vez de `bar()` na linha 333?
324 367
325Usar Claude Code dessa forma é um fluxo de trabalho de integração eficaz, melhorando o tempo de ramp-up e reduzindo carga em outros engenheiros. Nenhum prompt especial necessário: faça perguntas diretamente.368Qualquer que seja o escopo, mantenha pequeno o conjunto imposto. Todo hook e toda regra deny ocasionalmente vão disparar quando não deveriam, e alguém precisa manter cada um. Se algum dia você se vir com quarenta deles, a maioria provavelmente são preferências que Claude poderia ter ponderado sozinho.
326 369
327### Deixe Claude entrevistá-lo370## Altere um padrão
328 371
329> [!TIP]372> [!TIP]
330>373>
331> Para recursos maiores, deixe Claude entrevistá-lo primeiro. Comece com um prompt mínimo e peça ao Claude para entrevistá-lo usando a ferramenta `AskUserQuestion`.374> Os padrões são bons o suficiente para serem deixados como estão até que uma tarefa custe mais tempo, tokens ou interrupções do que deveria. Quando isso acontecer, execute `/usage` na sessão para ver para onde foi.
332 375
333Claude pergunta sobre coisas que você pode não ter considerado ainda, incluindo implementação técnica, UI/UX, casos extremos e tradeoffs. Substitua `[brief description]` pela sua funcionalidade antes de enviar o prompt.376Uma sessão nova já toma algumas decisões por você:
334 377
335```text wrap theme={null}378* Sessões interativas de terminal e VS Code começam no modo auto.
336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Ela executa o [Claude Opus 5.5 com esforço médio](https://code.claude.com/docs/pt/model-config.md#default-model-setting) na maioria dos planos e provedores.
380* Ela delega trabalho a subagentes quando vê motivo para isso.
381* Ela compacta a conversa à medida que cresce.
337 382
338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383Na maior parte do tempo você nunca pensa nisso. Quando uma tarefa custa mais do que deveria, um desses quatro geralmente é o motivo.
339 384
340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Altere o modo de permissão
341```
342 386
343Uma vez que o spec está completo, comece uma nova sessão para executá-lo. A nova sessão tem contexto limpo focado inteiramente em implementação, e você tem um spec escrito para referenciar.387As duas extremidades da faixa de permissões têm um custo:
344 388
345Os specs mais úteis são autossuficientes: eles nomeiam os arquivos e interfaces envolvidos, declaram o que está fora do escopo, e terminam com uma etapa de verificação de ponta a ponta que prova que o recurso funciona. O tempo gasto tornando o spec preciso compensa mais do que o tempo gasto observando a implementação.389* **Modo Manual**: você mesmo aprova cada edição e cada comando que não seja somente leitura. É seguro, mas depois do décimo prompt você começa a aprovar sem ler, e nada avança enquanto você está longe do teclado.
390* **`bypassPermissions`**: aprova tudo o que suas regras deny e ask não cobrem, o que só faz sentido em um contêiner descartável.
346 391
347***392O [modo auto](https://code.claude.com/docs/pt/permission-modes.md#eliminate-prompts-with-auto-mode) fica entre os dois, e é nele que as sessões interativas de terminal e VS Code [começam](https://code.claude.com/docs/pt/permission-modes.md#which-mode-a-session-starts-in). Claude trabalha sem parar para aprovações rotineiras, e um modelo classificador separado verifica as ações em [uma ordem fixa](https://code.claude.com/docs/pt/permission-modes.md#how-the-classifier-evaluates-actions) antes que sejam executadas. Ele se concentra [nas coisas que você gostaria que uma pessoa interrompesse](https://code.claude.com/docs/pt/permission-modes.md#what-the-classifier-blocks-by-default):
348 393
349## Gerencie sua sessão394* `curl | bash`
395* Deploys e migrações em produção
396* Force pushes sobre o trabalho de outras pessoas
397* Dados sensíveis enviados a endpoints externos
398* Ações que parecem guiadas por conteúdo que Claude leu e não por você
350 399
351Conversas são persistentes e reversíveis. Use isso a seu favor!400Quando ele bloqueia algo, você recebe uma notificação e a ação aparece em **Recently denied** no `/permissions`, onde você pode tentar novamente com uma aprovação manual. Após [três bloqueios seguidos](https://code.claude.com/docs/pt/permission-modes.md#when-auto-mode-falls-back) (ou vinte no total), o modo auto pausa e volta a perguntar a você.
352 401
353### Corrija o curso cedo e frequentemente402Nada disso substitui seus controles determinísticos, porque ele é executado *depois* deles. Regras deny e ask e hooks `PreToolUse` se aplicam antes que o classificador veja qualquer coisa, então uma regra deny bloqueia no modo auto exatamente como em qualquer outro lugar. O sandbox ainda confina os [comandos de shell que ele envolve](https://code.claude.com/docs/pt/sandboxing.md#what-runs-outside-the-sandbox).
354 403
355> [!TIP]404> [!NOTE]
356>405>
357> Corrija Claude assim que notar que está saindo do caminho.406> Você também pode dizer `don't push until I've reviewed` na conversa, e o classificador [trata isso como um sinal de bloqueio](https://code.claude.com/docs/pt/permission-modes.md#boundaries-you-state-in-conversation). Ainda assim é um modelo lendo a transcrição, e a frase pode se perder quando a conversa é compactada, então qualquer coisa importante pertence a uma regra deny.
407
408O problema oposto é o classificador interromper repetidamente algo que é rotineiro no seu ambiente. Em vez de aprovar manualmente toda vez, adicione isso a `autoMode.allow` ou descreva sua infraestrutura confiável na [configuração do modo auto](https://code.claude.com/docs/pt/auto-mode-config.md). Ela é escrita em inglês simples em vez de padrões, e [`/auto-mode-setup`](https://code.claude.com/docs/pt/auto-mode-config#generate-environment-entries) pode redigir a parte `environment` para você a partir do seu projeto e das sessões recentes:
409
410```json ~/.claude/settings.json theme={null}
411{
412 "autoMode": {
413 "environment": [
414 "$defaults",
415 "Source control: github.com/example-org and every repo under it",
416 "Trusted internal domains: *.internal.example.com"
417 ],
418 "allow": [
419 "$defaults",
420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"
421 ]
422 }
423}
424```
358 425
359Os melhores resultados vêm de loops de feedback apertados. Embora Claude ocasionalmente resolva problemas perfeitamente na primeira tentativa, corrigi-lo rapidamente geralmente produz melhores soluções mais rápido.426> [!WARNING]
427>
428> Mantenha `"$defaults"` em todas as listas que você definir, porque sem ele suas entradas *substituem* as regras integradas daquela lista em vez de se somarem a elas. Para `environment` e `allow`, você perderia o contexto e as exceções integrados, e uma lista `soft_deny` sem ele descarta os bloqueios integrados de force pushes e deploys em produção.
429>
430> O bloco `autoMode` também precisa ficar em `~/.claude/settings.json` e não no projeto, porque o classificador ignora `autoMode` nas configurações do projeto.
360 431
361* **`Esc`**: pare Claude no meio da ação com a tecla `Esc`. O contexto é preservado, então você pode redirecionar.432Se você prefere ver cada edição e comando antes que aconteçam, `Shift+Tab` na sessão alterna entre os modos de permissão, incluindo o Manual, ou comece com `claude --permission-mode manual` a partir do seu shell. E se o Manual passar a perguntar com muita frequência, `/fewer-permission-prompts` examina suas transcrições recentes em busca de chamadas Bash e MCP somente leitura comuns e as adiciona a uma allowlist em `.claude/settings.json`.
362* **`Esc + Esc` ou `/rewind`**: pressione `Esc` duas vezes ou execute `/rewind` para abrir o menu de rewind e restaurar conversa e estado de código anterior, ou resumir a partir de uma mensagem selecionada.
363* **`"Undo that"`**: peça ao Claude para reverter suas alterações.
364* **`/clear`**: redefina contexto entre tarefas não relacionadas. Sessões longas com contexto irrelevante podem reduzir desempenho.
365 433
366Se você corrigiu Claude mais de duas vezes no mesmo problema em uma sessão, o contexto está poluído com abordagens falhadas. Execute `/clear` e comece de novo com um prompt mais específico que incorpore o que você aprendeu. Uma sessão limpa com um prompt melhor quase sempre supera uma sessão longa com correções acumuladas.434### Altere o modelo e o esforço
367 435
368### Gerencie contexto agressivamente436O [esforço](https://code.claude.com/docs/pt/model-config.md#adjust-effort-level) é o principal controle de quanto tempo Claude pensa, e substitui a maior parte do que as pessoas costumavam fazer com a formulação do prompt. Claude Opus 5.5, Sonnet 5.5 e Haiku 5.5 usam `medium` por padrão, o que é bastante para trabalho cotidiano de funcionalidades com escopo claro. As situações em que você o mudaria, com `/effort` na sessão:
369 437
370> [!TIP]438* Aumente com `/effort high` ou `/effort xhigh` quando acertar depende de casos fáceis de passar despercebidos. Pense em um bug em código que você não escreveu, um teste instável ou uma mudança de esquema em que Claude precisa encontrar todos os leitores do formato antigo. Claude então verifica mais casos extremos e valida mais do próprio trabalho antes de responder, e é aí que vão o tempo e os tokens extras.
371>439* Diminua com `/effort low` quando você estiver indo e voltando rapidamente e revisando cada resultado de qualquer forma: brainstorming, um primeiro esboço, uma renomeação em alguns arquivos. Claude entrega um ponto de partida mais cedo e, como você está guiando cada passo, a deliberação extra não mudaria muito além da espera.
372> Execute `/clear` entre tarefas não relacionadas para redefinir contexto.440* Reserve `max` para um problema difícil que você quer que Claude resolva sem você, como caçar uma vulnerabilidade de segurança. Em tarefas comuns ele tende a pensar demais, então você paga mais por uma resposta que pode não ser melhor do que `high` teria dado.
441* Quando só a próxima mensagem precisa disso, como uma pergunta complicada no meio de um trabalho de resto rotineiro, coloque [`ultrathink`](https://code.claude.com/docs/pt/model-config#use-ultrathink-for-one-off-deep-reasoning) nesse prompt em vez de alterar a configuração.
373 442
374Claude Code compacta automaticamente o histórico de conversa quando você se aproxima dos limites de contexto, o que preserva código e decisões importantes enquanto libera espaço.443Quanto ao modelo em si, o Opus 5.5 padrão lida bem com a maior parte da programação e o Sonnet custa menos em trabalho rotineiro. O [Claude Fable 5.1](https://code.claude.com/docs/pt/model-config.md#work-with-fable) está disponível quando você o seleciona explicitamente com `/model fable`, e o Haiku é uma boa opção para subagentes que fazem tarefas simples. [Configuração de modelo](https://code.claude.com/docs/pt/model-config.md) tem a lista completa por plano e provedor.
375 444
376Durante sessões longas, a janela de contexto do Claude pode se encher com conversa irrelevante, conteúdos de arquivo e comandos. Isso pode reduzir desempenho e às vezes distrair Claude.445### Saiba quanto custam os subagentes
377 446
378* Use `/clear` frequentemente entre tarefas para redefinir a janela de contexto inteiramente447Claude delega a [subagentes](https://code.claude.com/docs/pt/sub-agents.md) por conta própria:
379* Quando auto compaction dispara, Claude resume o que importa mais, incluindo padrões de código, estados de arquivo e decisões-chave
380* Para mais controle, execute `/compact <instructions>`, como `/compact Focus on the API changes`
381* Para compactar apenas parte da conversa, use `Esc + Esc` ou `/rewind`, selecione um checkpoint de mensagem e escolha **Summarize from here** ou **Summarize up to here**. O primeiro condensa mensagens daquele ponto em diante enquanto mantém contexto anterior intacto; o segundo condensa mensagens anteriores enquanto mantém as recentes em cheio. Veja [o menu de rewind com opções de sumarização](https://code.claude.com/docs/pt/checkpointing.md#rewind-and-summarize).
382* Customize comportamento de compaction em CLAUDE.md com instruções como `"When compacting, always preserve the full list of modified files and any test commands"` para garantir que contexto crítico sobreviva à sumarização
383* Para perguntas que não precisam ficar em contexto, use [`/btw`](https://code.claude.com/docs/pt/interactive-mode#side-questions-with-%2Fbtw). A resposta nunca entra no histórico de conversa, então você pode verificar um detalhe sem crescer contexto.
384 448
385### Use subagents para investigação449* Buscas amplas na base de código vão para o agente Explore integrado.
450* Tarefas paralelas são [bifurcadas](https://code.claude.com/docs/pt/sub-agents.md#fork-the-current-conversation) enquanto o modo fork está ativado (o padrão).
451* Os subagentes que ele inicia são executados em segundo plano por padrão, então sua conversa principal continua avançando.
386 452
387> [!TIP]453Raramente você precisa pedir qualquer coisa disso, mas ajuda saber o que você está recebendo e quanto custa.
388>
389> Delegue pesquisa com `"use subagents to investigate X"`. Eles exploram em um contexto separado, mantendo sua conversa principal limpa para implementação.
390 454
391Como contexto é sua restrição fundamental, use subagents para manter pesquisa fora dele. Quando Claude pesquisa um codebase ele lê muitos arquivos, todos os quais consomem seu contexto. Subagents executam em janelas de contexto separadas e relatam resumos:455Subagentes compensam nestas situações:
392 456
393```text wrap theme={null}457* Executar partes independentes do trabalho ao mesmo tempo, para que a tarefa inteira termine mais cedo
394Use subagents to investigate how our authentication system handles token458* Manter saídas longas, como uma execução completa de testes ou uma busca ampla, fora da sua conversa principal, onde de outra forma seriam carregadas pelo resto da sessão
395refresh, and whether we have any existing OAuth utilities I should reuse.459* Obter um revisor que não viu como o código foi escrito
396```460* Dar a uma tarefa menos ferramentas do que a sessão principal tem, como um revisor que pode ler, mas não editar
397 461
398Você também pode usar subagents para verificação após Claude implementar algo. Veja [Adicione uma etapa de revisão adversarial](#add-an-adversarial-review-step).462O que eles custam é principalmente tokens, já que cada subagente envia as próprias requisições e elas contam no mesmo uso da sua conversa principal. Às vezes também custa tempo: um subagente novo primeiro precisa reunir contexto que sua conversa já tinha, então pode acabar sendo *mais lento* do que fazer a tarefa onde você está.
399 463
400### Rewind com checkpoints464E, por padrão, é o mesmo modelo (ou um menor) na mesma tarefa. Você ganha paralelismo ou um novo par de olhos, mas não uma resposta mais inteligente.
401 465
402> [!TIP]466Para gastar menos com eles:
403>
404> Cada prompt que você envia que inicia um turno cria um checkpoint. Você pode restaurar conversa, código ou ambos para qualquer checkpoint anterior.
405 467
406Claude automaticamente faz snapshots de arquivos antes de cada mudança para que um checkpoint possa restaurá-los. Pressione Escape duas vezes ou execute `/rewind` para abrir o menu de rewind. Você pode restaurar apenas conversa, restaurar apenas código, restaurar ambos ou resumir a partir de uma mensagem selecionada. Veja [Checkpointing](https://code.claude.com/docs/pt/checkpointing.md) para detalhes.468* Defina [`model: haiku`](https://code.claude.com/docs/pt/sub-agents#choose-a-model) na definição de um subagente se o trabalho dele for simples, como coletar os arquivos que importam um módulo ou verificar links na documentação. Esse tipo de tarefa não precisa do modelo maior, e o Haiku custa muito menos por requisição.
469* Peça resumos curtos de volta, para que vinte resultados não encham seu contexto de qualquer forma.
470* Verifique `/usage` para ver qual parcela do seu uso cada tipo de subagente consome, para saber quais estão valendo o custo.
471* Dê a um subagente personalizado em `.claude/agents/` apenas `tools: Read, Grep, Glob`. Agora ele é um revisor que não consegue editar nada, e esse limite é imposto pelo Claude Code em vez de solicitado em um prompt.
407 472
408Em vez de planejar cuidadosamente cada movimento, você pode dizer ao Claude para tentar algo arriscado. Se não funcionar, rewind e tente uma abordagem diferente. Checkpoints são salvos com a conversa, então você pode fechar seu terminal, retomar a sessão depois e ainda fazer rewind.473Esse revisor é um arquivo curto, `.claude/agents/reviewer.md`:
409 474
410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}
411>476---
412> Checkpoints apenas rastreiam mudanças feitas através das ferramentas de edição de arquivo do Claude. Mudanças feitas através de comandos Bash ou processos externos não são capturadas. Isso não é um substituto para git.477name: reviewer
478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.
479tools: Read, Grep, Glob
480---
481You're reviewing code you didn't write. Compare the changed files against the spec you're given,
482check that every requirement is implemented and the listed edge cases have tests,
483and report only the gaps that affect correctness. Skip style.
484```
413 485
414### Retome conversas486Peça ao Claude para `have the reviewer compare the rate limiter against SPEC.md` e as lacunas voltam para sua sessão, onde Claude pode corrigi-las.
415 487
416> [!TIP]488### Reduza custo e contexto
417>
418> Nomeie sessões com `/rename` e trate-as como branches: cada fluxo de trabalho obtém seu próprio contexto persistente.
419 489
420Claude Code salva conversas localmente, então quando uma tarefa abrange múltiplas sessões você não tem que re-explicar o contexto. Execute [`claude --continue`](https://code.claude.com/docs/pt/sessions#resume-a-session) para continuar de onde parou, ou `claude --resume` para escolher de uma lista. Dê às sessões nomes descritivos como `oauth-migration` para que você possa encontrá-las depois. Veja [Gerencie sessões](https://code.claude.com/docs/pt/sessions.md) para o conjunto completo de controles de resume, branch e nomeação.490Com uma janela de 1M de tokens na maioria dos modelos atuais e a compactação perto do topo dela, raramente você vai ficar sem contexto. Ainda assim, você pode *pagar* por contexto de que não precisa. Cada requisição envia a conversa inteira, então uma sessão que acumulou três tarefas não relacionadas relê as três em cada turno da quarta. Isso tem [desconto enquanto o cache está quente](https://code.claude.com/docs/pt/costs.md#why-usage-climbs-in-a-long-session) e preço cheio depois que ele expira.
421 491
422***492[`/usage`](https://code.claude.com/docs/pt/costs) é o primeiro lugar para olhar. No Pro, Max, Team e Enterprise, ele detalha seu uso por skill, subagente, plugin e servidor MCP. Ele também sinaliza padrões como contexto longo ou falhas frequentes de cache quando um deles passa de 10% do seu uso. A partir daí, as correções habituais:
423 493
424## Automatize e dimensione494* `/clear` entre tarefas não relacionadas. Não custa nada e significa que a próxima tarefa não continua pagando pelo histórico da anterior. `/clear oauth-migration` dá nome à sessão que você está deixando, para que você possa voltar a ela depois.
495* `/compact` com um foco, como `/compact keep the API changes and the test commands`. Em uma sessão longa, o `/compact` é ele próprio uma requisição grande, já que lê a conversa inteira para resumi-la, e ainda mais depois que o cache expirou.
496* Fique de olho no trabalho em segundo plano: um `/loop`, a verificação de uma meta após cada turno e os próprios subagentes do Claude continuam enviando requisições enquanto você não está digitando.
425 497
426Uma vez que você é eficaz com um Claude, multiplique sua saída com sessões paralelas, modo não-interativo e padrões de fan-out.498> [!NOTE]
499>
500> O [cache de prompt](https://code.claude.com/docs/pt/prompt-caching.md) dura cerca de uma hora em uma assinatura e cinco minutos com uma chave de API, provedor de nuvem ou créditos de uso. Subagentes ficam com cinco minutos, a menos que você altere isso.
501>
502> No cache de uma hora, uma sessão com mais de cerca de 200K tokens que fica ociosa é compactada pouco antes de o cache expirar, então depois do almoço você continua a partir de um resumo. Se você não precisa do histórico, uma sessão nova ainda custa menos.
427 503
428### Execute modo não-interativo504## Conduza a sessão
429 505
430> [!TIP]506> [!TIP]
431>507>
432> Use `claude -p "prompt"` em CI, pre-commit hooks ou scripts. Adicione `--output-format stream-json --verbose` para saída JSON em streaming.508> Observe o primeiro minuto, pressione `Esc` no momento em que Claude se desviar e, após duas correções que não funcionaram, execute `/clear` e escreva um prompt melhor em vez de uma terceira.
433 509
434Com `claude -p "your prompt"`, você pode executar Claude não-interativamente, sem um prompt interativo. A execução ainda cria uma sessão retomável a menos que você passe `--no-session-persistence`. [Modo não-interativo](https://code.claude.com/docs/pt/headless.md) é como você integra Claude em pipelines CI, pre-commit hooks ou qualquer fluxo de trabalho automatizado. Os formatos de saída permitem que você analise resultados programaticamente: texto simples, JSON ou JSON em streaming.510Nenhuma configuração substitui observar o primeiro minuto e intervir quando Claude segue para onde você não pretendia. Há poucos controles para isso, e vale a pena conhecê-los de cor:
435 511
436```bash theme={null}512* `Esc` interrompe Claude no meio de uma ação e mantém tudo até aquele ponto, para que você possa redirecionar sem perder trabalho.
437# One-off queries513* `/rewind`, ou `Esc` duas vezes em um prompt vazio, abre o [menu de rewind](https://code.claude.com/docs/pt/checkpointing.md#rewind-and-summarize), onde você retorna o código, a conversa ou ambos a um prompt anterior. Isso torna de baixo risco tentar primeiro a abordagem mais ousada e voltar se não der certo. O mesmo menu também pode resumir parte da conversa quando ela ficou desatualizada.
438claude -p "Explain what this project does"514* `/clear` recomeça. Se você corrigiu a mesma coisa duas vezes e ainda está errado, uma terceira correção basicamente aumenta uma conversa que já contém duas tentativas fracassadas que Claude continua relendo. `/clear` mais um novo prompt que incorpore o que você aprendeu funciona melhor quase sempre.
439
440# Structured output for scripts
441claude -p "List all API endpoints" --output-format json
442 515
443# Streaming for real-time processing516> [!WARNING]
444claude -p "Analyze this log file" --output-format stream-json --verbose517>
445```518> Checkpoints cobrem os arquivos que Claude editou com as próprias ferramentas de arquivo na sua conversa principal, então um arquivo tocado apenas por um comando Bash [não é restaurado](https://code.claude.com/docs/pt/checkpointing.md#bash-command-changes-not-tracked). Eles funcionam junto com o git, e não o substituem.
446 519
447O primeiro comando imprime texto simples. O formato `json` retorna um único objeto JSON com um campo `result`. O formato `stream-json` imprime um objeto JSON por linha, começando com um evento init.520Dois controles menores: [`/btw`](https://code.claude.com/docs/pt/interactive-mode#side-questions-with-%2Fbtw) responde a uma pergunta rápida sem adicionar nada ao histórico. E para trabalhos que duram vários dias, `/rename oauth-migration` na sessão dá nome a ela, para que [`claude --resume oauth-migration`](https://code.claude.com/docs/pt/sessions#resume-by-session-id-or-name) a partir do seu shell a retome depois, incluindo os checkpoints. `claude --continue` retoma a mais recente.
448 521
449### Execute múltiplas sessões Claude522## Deixe Claude trabalhar sem você
450 523
451> [!TIP]524> [!TIP]
452>525>
453> Execute múltiplas sessões Claude em paralelo para acelerar desenvolvimento, executar experimentos isolados ou iniciar fluxos de trabalho complexos.526> Antes de uma execução ficar desacompanhada, certifique-se de que ela sabe como é o concluído, consegue verificar o próprio trabalho e só pode tocar no que deve. Dê a ela um limite de turnos ou de gastos, e faça uma pessoa aprovar o resultado no final.
454
455Escolha a abordagem paralela que se adequa a quanto de coordenação você quer fazer por conta própria, e adicione mensagens quando as sessões precisarem passar descobertas entre elas:
456 527
457* [Worktrees](https://code.claude.com/docs/pt/worktrees.md): execute sessões CLI separadas em checkouts git isolados para que edições não colidam528Tudo nesta página importa um pouco mais quando você não está por perto para pegar erros. Enquanto você está observando, Claude não ter alguma parte do contexto não é grande coisa: você percebe em uma ou duas mensagens e avisa. Em uma execução que você iniciou antes de ir dormir, ninguém avisa, e você descobre na manhã seguinte que ele passou a noite inteira construindo sobre uma suposição errada.
458* [Mensagens entre sessões](https://code.claude.com/docs/pt/cross-session-messaging.md): deixe as sessões que você executa passar descobertas uma para a outra
459* [Aplicativo desktop](https://code.claude.com/docs/pt/desktop.md#work-in-parallel-with-sessions): gerencie múltiplas sessões locais visualmente, cada uma em seu próprio worktree
460* [Claude Code na web](https://code.claude.com/docs/pt/claude-code-on-the-web.md): execute sessões na nuvem, em infraestrutura gerenciada pela Anthropic por padrão
461* [Visualização de agente](https://code.claude.com/docs/pt/agent-view.md): pesquisa em visualização prévia. Execute `claude agents` para despachar sessões que continuam executando em background e observe-as de uma tela
462* [Equipes de agentes](https://code.claude.com/docs/pt/agent-teams.md): experimental e desabilitado por padrão. Coordenação automatizada de múltiplas sessões com tarefas compartilhadas, mensagens e um líder de equipe
463 529
464Além de paralelizar trabalho, múltiplas sessões habilitam fluxos de trabalho focados em qualidade. Um contexto fresco melhora revisão de código já que Claude não será enviesado para código que acabou de escrever.530Antes de deixar uma tarefa sendo executada sozinha, vale a pena passar por estas cinco perguntas com essa tarefa específica em mente:
465 531
466Por exemplo, use um padrão Writer/Reviewer:5321. Ela sabe como é o concluído? Uma condição de meta, um arquivo de especificação ou um teste que falha e precisa passar.
5332. Ela consegue verificar o próprio trabalho? O conjunto de testes, um hook `Stop`, algum tipo de etapa de revisão.
5343. No que ela pode tocar? Regras de permissão, `dontAsk`, o sandbox, um worktree, o único branch para o qual ela pode fazer push.
5354. O que a interrompe? `--max-turns`, `--max-budget-usd`, um limite de gastos.
5365. Para onde vai o resultado, e quem aprova? Um PR, um comentário ou um resumo, e então uma pessoa aprovando o merge, o deploy ou qualquer outra coisa que não possa ser desfeita.
467 537
468| Session A (Writer) | Session B (Reviewer) |538Depois que começa, Claude leva uma tarefa longa até o fim sozinho. As partes que continuam com você são iniciá-la, decidir o que "concluído" significa desta vez e aprovar o merge no final.
469| - | - |
470| `Implement a rate limiter for our API endpoints` | |
471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |
472| `Here's the review feedback: [Session B output]. Address these issues.` | |
473 539
474Você pode fazer algo similar com testes: ter um Claude escrever testes, depois outro escrever código para passá-los.540### Execute Claude a partir de um script
475 541
476### Fan out entre arquivos542[`claude -p "prompt"`](https://code.claude.com/docs/pt/headless) executa uma vez e sai, e é assim que o Claude Code acaba em jobs de CI, hooks do git e loops de shell.
477
478> [!TIP]
479>
480> Faça loop através de tarefas chamando `claude -p` para cada uma. Use `--allowedTools` para pré-aprovar ferramentas para operações em lote.
481 543
482Para grandes migrações ou análises, você pode distribuir trabalho entre muitas invocações Claude paralelas. Execute [`/batch <instruction>`](https://code.claude.com/docs/pt/commands#all-commands) para ter Claude dividir a mudança entre 5 a 30 subagentes. Cada subagente trabalha em seu próprio worktree. Para conduzir o fan-out a partir de seu próprio script em vez disso, faça loop sobre `claude -p`:544Em um script, você quase sempre vai querer mais algumas flags:
483 545
484**1. Generate a task list**546* [`--bare`](https://code.claude.com/docs/pt/headless#start-faster-with-bare-mode) ignora hooks, skills, plugins, servidores MCP e arquivos `CLAUDE.md`, tanto os do repositório quanto os da máquina, para que a execução faça a mesma coisa onde quer que seja executada. Ela também nunca toca no seu login do claude.ai: a autenticação vem de `ANTHROPIC_API_KEY`, de um `apiKeyHelper` no arquivo que você passa com `--settings` ou das credenciais do seu provedor de nuvem.
547* `--append-system-prompt`, `--mcp-config` e `--settings` passam explicitamente o que a execução *de fato* precisa.
548* `--allowedTools` pré-aprova as ferramentas dela, e [`--permission-mode dontAsk`](https://code.claude.com/docs/pt/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) recusa qualquer outra coisa que teria gerado um prompt.
549* `--output-format json` fornece um único objeto de resultado para analisar, e `stream-json` com `--verbose` transmite eventos à medida que acontecem.
485 550
486Tenha Claude escrever a lista de arquivos que precisam ser migrados para um arquivo, para que o loop na próxima etapa possa lê-la, com um prompt como `list all 2,000 Python files that need migrating and save the list to files.txt`551Juntando tudo, fica assim:
487
488**2. Write a script to loop through the list**
489 552
490```bash theme={null}553```bash theme={null}
491for file in $(cat files.txt); do554for file in $(cat files.txt); do
492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \
493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \
494 --permission-mode dontAsk557 --permission-mode dontAsk \
558 --max-turns 20
495done559done
496```560```
497 561
498**3. Teste em alguns arquivos, depois execute em todos eles**562Quando uma execução termina, Claude responde `OK` ou `FAIL`, e uma execução que atinge o limite de turnos sai com um erro. Teste primeiro em três arquivos, veja o que dá errado, corrija o prompt e depois execute o resto.
499
500Refine seu prompt baseado no que dá errado com os primeiros 2-3 arquivos, depois execute no conjunto completo. A flag `--allowedTools` pré-aprova as ferramentas de que a migração precisa. [`--permission-mode dontAsk`](https://code.claude.com/docs/pt/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) nega qualquer outra coisa que precisaria de aprovação, o que importa quando você está executando sem supervisão, embora um [mod](https://code.claude.com/docs/pt/plugins/mods/overview.md) que você instalou ainda possa aprovar algumas dessas chamadas.
501 563
502Você também pode integrar Claude em pipelines de dados/processamento existentes:564O modo auto também funciona com `-p` se você passar `--permission-mode auto`. Em uma execução não interativa, um bloqueio do classificador nega aquela ação específica e Claude continua, e bloqueios repetidos não pausam a execução como acontece em um terminal. Leia [como os limites se aplicam nesse caso](https://code.claude.com/docs/pt/permission-modes.md#repeated-block-thresholds) antes de depender disso.
503 565
504```bash theme={null}566### Inicie execuções por agendamento ou por evento
505claude -p "<your prompt>" --output-format json | your_command
506```
507 567
508### Execute autonomamente com auto mode568Depois que uma execução começa, Claude consegue cuidar do resto sozinho. A única coisa que ele não consegue é decidir *começar*, então algo precisa fazer isso: você, um timer ou um evento como uma verificação de CI que falhou ou um novo PR.
509 569
510Para execução ininterrupta com verificações de segurança em background, use [auto mode](https://code.claude.com/docs/pt/permission-modes.md#eliminate-prompts-with-auto-mode). Um modelo classificador revisa comandos antes de serem executados, bloqueando escalação de escopo, infraestrutura desconhecida e ações impulsionadas por conteúdo hostil enquanto deixa trabalho rotineiro prosseguir sem prompts.570Dentro de uma sessão aberta, isso é o [`/loop`](https://code.claude.com/docs/pt/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), que repete um prompt em um intervalo:
511 571
512```bash theme={null}572```text theme={null}
513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push
514```574```
515 575
516Quando o classificador repetidamente bloqueia ações em uma execução não-interativa com a flag `-p`, Claude Code não para a execução. Veja [when auto mode falls back](https://code.claude.com/docs/pt/permission-modes.md#when-auto-mode-falls-back) para o que acontece em vez disso e para os limites.576Cada execução é mais um turno na mesma sessão, então não deixe um rodando em uma conversa longa. Para qualquer coisa que deva acontecer enquanto seu laptop está fechado, [`/schedule`](https://code.claude.com/docs/pt/routines#create-from-the-cli) configura uma [tarefa agendada na nuvem](https://code.claude.com/docs/pt/routines.md) que é executada por timer. Ela precisa de um login do claude.ai em vez de uma chave de API. Você pode adicionar um gatilho de evento do GitHub pedindo ao Claude, ou um gatilho de API em [claude.ai/code/routines](https://claude.ai/code/routines).
517
518### Adicione uma etapa de revisão adversarial
519 577
520> [!TIP]578> [!WARNING]
521>579>
522> Antes de tratar uma tarefa como concluída, tenha um subagente revisar o diff em um contexto fresco e relatar lacunas.580> Antes de deixar uma tarefa agendada na nuvem sendo executada, proteja o `main` com uma [regra de branch do GitHub que a tarefa não consiga contornar](https://code.claude.com/docs/pt/routines.md#repositories-and-branch-permissions). E observe as primeiras execuções de qualquer coisa nova antes de confiar nela sem supervisão.
523
524Quanto mais tempo Claude trabalha sem supervisão, mais uma verificação independente importa antes de você contar o trabalho como concluído. Um revisor executando em um contexto fresco de [subagente](https://code.claude.com/docs/pt/sub-agents.md) vê apenas o diff e os critérios que você fornece, não o raciocínio que produziu a mudança, então avalia o resultado em seus próprios termos.
525 581
526Para uma verificação de correção, execute a skill [`/code-review`](https://code.claude.com/docs/pt/commands) incluída, que revisa o diff atual para bugs em um subagente fresco e retorna descobertas para a sessão. Para verificar o diff contra seu plano em vez disso, escreva o prompt de revisão você mesmo. Nomeie o trabalho a verificar, o plano a verificar contra e o que conta como uma descoberta:582### Execute sessões em paralelo
527 583
528```text wrap theme={null}584Quando você tem trabalhos separados acontecendo ao mesmo tempo, dê a cada um o próprio checkout para que as edições não colidam. [`claude -w feature-auth`](https://code.claude.com/docs/pt/worktrees#start-claude-in-a-worktree) inicia uma sessão em um novo worktree, o [aplicativo desktop](https://code.claude.com/docs/pt/desktop.md#work-in-parallel-with-sessions) executa várias dessas lado a lado, e as [sessões na nuvem](https://code.claude.com/docs/pt/claude-code-on-the-web.md) as executam na nuvem em vez de na sua máquina.
529Use a subagent to review the rate limiter diff against PLAN.md. Check that
530every requirement is implemented, the listed edge cases have tests, and
531nothing outside the task's scope changed. Report gaps, not style preferences.
532```
533 585
534Como o revisor executa como um subagente, a sessão implementadora recebe as lacunas diretamente e pode corrigi-las e revisar novamente sem você copiar descobertas entre janelas.586Um worktree é um checkout novo, o que significa que arquivos ignorados pelo git, como o `.env`, não estão lá e as dependências não estão instaladas. Para o primeiro caso, liste os arquivos ignorados pelo git de que você precisa em um [`.worktreeinclude`](https://code.claude.com/docs/pt/worktrees#copy-gitignored-files-into-worktrees) na raiz do repositório (mesma sintaxe do `.gitignore`) e o Claude Code os copia para todo worktree que criar:
535 587
536Um revisor solicitado a encontrar lacunas geralmente relatará algumas, mesmo quando o trabalho é sólido, porque é isso que foi pedido para fazer. Perseguir cada descoberta leva a over-engineering: camadas de abstração extras, código defensivo e testes para casos que não podem acontecer. Diga ao revisor para sinalizar apenas lacunas que afetam correção ou os requisitos declarados, e trate o resto como opcional.588```text .worktreeinclude theme={null}
589.env
590.env.local
591config/dev-credentials.json
592```
537 593
538***594Mantenha apenas arquivos pequenos: ele copia em vez de criar links, então colocar `node_modules` ali significaria uma cópia completa por worktree. Para diretórios grandes, há a configuração [`worktree.symlinkDirectories`](https://code.claude.com/docs/pt/settings-reference#worktree-symlinkdirectories), ou mantenha o comando de instalação no `CLAUDE.md` para que Claude o execute sempre que começar em um novo checkout.
539 595
540## Evite padrões de falha comuns596Raramente você precisa limpar qualquer coisa disso você mesmo:
541 597
542Estes são erros comuns. Reconhecê-los cedo economiza tempo:598* Quando você sai de uma sessão de worktree sem nome, o Claude Code [remove o worktree](https://code.claude.com/docs/pt/worktrees.md#clean-up-worktrees) se não houver nada nele. Para uma sessão com nome, ou uma com alterações, ele pergunta o que fazer.
599* Worktrees de subagentes desaparecem quando o subagente termina sem alterações.
600* Worktrees de subagentes e de sessões em segundo plano que acabam ficando para trás são removidos quando ficam mais antigos que `cleanupPeriodDays` e não contêm trabalho.
543 601
544* **A sessão da pia da cozinha.** Você começa com uma tarefa, depois pergunta ao Claude algo não relacionado, depois volta para a primeira tarefa. Contexto está cheio de informação irrelevante.602> [!NOTE]
545 > **Correção**: `/clear` entre tarefas não relacionadas.603>
546* **Corrigindo repetidamente.** Claude faz algo errado, você corrige, ainda está errado, você corrige novamente. Contexto está poluído com abordagens falhadas.604> Uma execução `claude -p --worktree` é uma que você mesmo limpa, já que ela sai sem perguntar. Remova esses worktrees com `git worktree remove <path>` e, se o git recusar porque o worktree está bloqueado, execute `git worktree unlock <path>` primeiro.
547 > **Correção**: Após duas correções falhadas, `/clear` e escreva um prompt inicial melhor incorporando o que você aprendeu.
548* **O CLAUDE.md sobre-especificado.** Se seu CLAUDE.md é muito longo, Claude ignora metade dele porque regras importantes se perdem no ruído.
549 > **Correção**: Poda impiedosamente. Se Claude já faz algo corretamente sem a instrução, delete-a ou converta-a para um hook.
550* **A lacuna confiança-depois-verificação.** Claude produz uma implementação que parece plausível mas não trata casos extremos.
551 > **Correção**: Sempre forneça verificação (testes, scripts, capturas de tela). Se você não pode verificar, não envie.
552* **A exploração infinita.** Você pede ao Claude para "investigar" algo sem escopá-lo. Claude lê centenas de arquivos, enchendo o contexto.
553 > **Correção**: Escopo investigações estreitamente ou use subagents para que a exploração não consuma seu contexto principal.
554 605
555***606Para uma grande alteração mecânica em muitos arquivos, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/pt/commands) divide o trabalho em 5 a 30 unidades e mostra o plano. Depois, executa cada unidade no próprio worktree e abre um PR para ela. A partir do seu shell, [`claude agents`](https://code.claude.com/docs/pt/agent-view) (ainda em prévia de pesquisa) oferece uma única tela para tudo o que está sendo executado em segundo plano na sua máquina.
556 607
557## Desenvolva sua intuição608Uma segunda sessão também é o revisor independente mais fácil que você pode conseguir. Uma sessão escreve o rate limiter, outra revisa `@src/middleware/rateLimiter.ts` sem ter acompanhado a escrita, e você cola os apontamentos de volta na primeira. Mesma ideia do `/code-review`, com você levando as mensagens.
558 609
559Os padrões neste guia não são gravados em pedra. Eles são pontos de partida que funcionam bem em geral, mas podem não ser ótimos para cada situação.610## O que você pode parar de fazer
560 611
561Às vezes você *deveria* deixar contexto acumular porque você está profundo em um problema complexo e o histórico é valioso. Às vezes você deveria pular planejamento e deixar Claude descobrir porque a tarefa é exploratória. Às vezes um prompt vago é exatamente certo porque você quer ver como Claude interpreta o problema antes de constrangê-lo.612Cada um destes foi um bom conselho quando foi escrito. A maioria eram soluções alternativas para algo que o modelo ainda não conseguia fazer de forma confiável, e os modelos já alcançaram isso. Se alguns ainda são hábitos, veja por que é seguro abandoná-los.
562 613
563Preste atenção ao que funciona. Quando Claude produz saída ótima, note o que você fez: a estrutura do prompt, o contexto que você forneceu, o modo que você estava. Quando Claude luta, pergunte por quê. O contexto era muito barulhento? O prompt muito vago? A tarefa muito grande para uma passagem?614| O conselho antigo | Por que não vale mais |
615| :- | :- |
616| A janela de contexto é sua principal restrição, gerencie-a agressivamente | A maioria dos modelos atuais tem uma janela de 1M de tokens e a compactação acontece sozinha, então ficar sem contexto é raro. `/clear` entre tarefas ainda vale a pena, porque um contexto focado produz respostas melhores e custa menos. |
617| Adicione IMPORTANT ou MAIÚSCULAS a instruções que Claude continua ignorando | Modelos mais antigos às vezes precisavam da ênfase. Os atuais seguem uma linha escrita de forma simples, e acumular ênfase faz principalmente Claude aplicar a regra em excesso. Se for uma regra que não pode ser flexibilizada, transforme-a em um hook ou uma regra deny. Se a linha está se perdendo em um arquivo longo, o arquivo precisa ser mais curto. |
618| Use subagentes para proteger sua janela de contexto | Ficar sem contexto raramente é o problema hoje em dia. Subagentes continuam ótimos para trabalho paralelo, para manter saídas ruidosas fora do seu caminho e para revisão independente, mas cada um desses custa tokens extras. |
619| Delegue a um subagente para obter uma resposta melhor | Entregar a mesma tarefa a um subagente não torna a resposta melhor. Um revisor novo ajuda, porque não viu seu raciocínio, o que é diferente de delegar. |
620| `think hard`, `think harder`, `be thorough` no prompt | O esforço é o controle para isso. Essas frases são texto comum de prompt que dá um empurrão em Claude dentro da configuração de esforço, e não palavras-chave que a aumentam. `ultrathink` ainda funciona: ele pede raciocínio mais profundo naquele único turno sem mexer na sua configuração de esforço. |
621| Diga ao Claude para continuar, repetir até terminar, não ser preguiçoso | Os modelos atuais geralmente levam uma tarefa combinada até o fim sem que precisem ser mandados, e linhas assim têm mais chance de causar excesso de trabalho do que de resolver uma parada. Dar ao Claude uma verificação para passar é diferente, e ainda vale a pena. Se uma execução parar antes da hora, diga `continue`, e para execuções que ninguém está observando, `/goal` ou um hook `Stop` impõe isso. |
622| Descreva sua arquitetura e estrutura de arquivos no `CLAUDE.md` | Claude lê o repositório sozinho. Escreva apenas o que não está lá. |
564 623
565Ao longo do tempo, você desenvolverá intuição que nenhum guia pode capturar. Você saberá quando ser específico e quando ser aberto, quando planejar e quando explorar, quando limpar contexto e quando deixá-lo acumular.624Se qualquer outro conselho nesta página algum dia começar a parecer trabalho inútil, isso provavelmente é sinal de que ele também pertence a esta tabela.
566 625
567## Recursos relacionados626## Recursos relacionados
568 627
569* [How Claude Code works](https://code.claude.com/docs/pt/how-claude-code-works.md): o loop agentic, ferramentas e gerenciamento de contexto628* [Como o Claude Code funciona](https://code.claude.com/docs/pt/how-claude-code-works.md): o loop, as ferramentas e o que é carregado na inicialização
570* [Extend Claude Code](https://code.claude.com/docs/pt/features-overview.md): skills, hooks, MCP, subagents e plugins629* [Explore a janela de contexto](https://code.claude.com/docs/pt/context-window.md): o que ocupa espaço em uma sessão e quando é carregado
571* [Common workflows](https://code.claude.com/docs/pt/common-workflows.md): receitas passo a passo para depuração, teste, PRs e mais630* [Estenda o Claude Code](https://code.claude.com/docs/pt/features-overview.md): a escolha entre skills, hooks, MCP, subagentes e plugins
572* [CLAUDE.md](https://code.claude.com/docs/pt/memory.md): armazene convenções de projeto e contexto persistente631* [Escolha um modo de permissão](https://code.claude.com/docs/pt/permission-modes.md) e [Configure permissões](https://code.claude.com/docs/pt/permissions.md)
632* [Gerencie custos de forma eficaz](https://code.claude.com/docs/pt/costs.md)
633* [Execute o Claude Code programaticamente](https://code.claude.com/docs/pt/headless.md) e [Automatize o trabalho com tarefas agendadas na nuvem](https://code.claude.com/docs/pt/routines.md)
634* Para líderes de equipe e administradores: [Configure o Claude Code para sua organização](https://code.claude.com/docs/pt/admin-setup.md)