Claude Code na Prática
O manual de operação do Claude Code, do primeiro dia ao uso avançado: perguntar ao próprio código antes de editar, planejar antes de escrever, dar ao agente um jeito de conferir o próprio trabalho, montar a hierarquia de contexto, travar permissões e rodar vários em paralelo. Cada movimento com o comando real, a doc oficial linkada e as ressalvas que costumam ficar de fora.
Assista primeiro · depois use os passos abaixo como referência de consulta
Onze movimentos que separam quem usa de quem opera
Quase todo mundo abre o Claude Code, digita um pedido grande e torce. Funciona às vezes. O que funciona sempre é operar em ordem: entender o que o agente é, perguntar antes de mandar, planejar antes de escrever, e principalmente entregar a ele um jeito de saber sozinho se acertou. Esta aula é essa ordem, movimento por movimento, com o comando que você digita e a doc oficial de cada afirmação.
O salto não vem do prompt bonito. Vem de dar ao agente uma forma de conferir o próprio trabalho.
Sem um teste, um build, um lint ou um screenshot pra comparar, o único sinal de "pronto" que existe é a aparência do resultado, e quem vira o loop de verificação é você. Com uma checagem que devolve passa ou falha, o agente roda o ciclo sozinho: faz, roda a checagem, lê o resultado e refaz até passar. Esse é o eixo do método, e todos os outros dez movimentos existem pra sustentar esse.
Movimento 1O agente que constrói, não o autocomplete
O agente que constrói, não o autocomplete
Em uma linha: o Claude Code é um ambiente de programação agêntico, não um completador de código. Você descreve o que quer e ele explora, planeja e implementa, lendo arquivos, rodando comandos e alterando o projeto enquanto você acompanha, redireciona ou sai de perto.
A geração anterior de assistente completava uma linha por vez e devolvia a bola pra você. Aqui o pedido é a funcionalidade inteira, e o encadeamento das ferramentas (ler arquivo, buscar, rodar bash, editar) é decisão dele. Você não escreve no prompt qual ferramenta usar e em que ordem: descreve o resultado e revisa o caminho.
Quase toda boa prática do Claude Code sai de uma limitação só: a janela de contexto enche rápido e o desempenho cai conforme ela enche. A janela guarda a conversa inteira, cada arquivo lido e cada saída de comando, e uma única sessão de depuração consome dezenas de milhares de tokens. Quando ela aperta, o agente começa a esquecer instrução antiga e a errar mais. Contexto é o recurso escasso, não a inteligência do modelo.
Tratar a sessão como chat infinito. Misturar três tarefas sem relação na mesma janela é o erro mais comum, e o custo aparece como resposta pior sem motivo aparente. Use /clear entre tarefas que não conversam entre si, e /context pra ver o que está ocupando espaço.
Ele roda no terminal, então funciona com qualquer editor e em qualquer ambiente: local, dentro de uma sessão SSH, dentro do tmux. Não existe passo de indexação nem espera pra começar a usar: ele lê os arquivos sob demanda, na hora da pergunta. O que sai da sua máquina são os prompts e as saídas do modelo, trafegando por TLS, e o limite de escrita padrão é a pasta onde você iniciou a sessão mais as subpastas dela.
Fonte · code.claude.com/docs/en/best-practices (o parágrafo sobre janela de contexto e degradação) e code.claude.com/docs/en/security (fronteira do diretório de trabalho).
Movimento 2Comece perguntando ao próprio código
Comece perguntando ao próprio código
Em uma linha: ao chegar num código que você não conhece, use o agente pra aprender, não pra alterar. Perguntar não exige prompt especial e é o jeito mais barato de calibrar o que ele resolve sozinho e onde precisa da sua mão.
A doc oficial trata isso como fluxo de integração a uma base nova, porque reduz o tempo de rampa e tira carga dos outros engenheiros do time: em vez de interromper alguém, você pergunta ao repositório. E, do ponto de vista de quem está aprendendo a ferramenta, perguntar ensina a escrever prompt sem risco nenhum, já que nada é escrito em disco.
- Como o log funciona neste projeto, e como eu crio um endpoint novo seguindo o padrão que já existe?
- Que casos de borda o fluxo de cadastro trata hoje, e quais ele ignora?
- Por que esta função tem tantos argumentos? Olhe o histórico do git e resuma como ela chegou nesse formato.
- O que eu entreguei nesta semana? Leia o log do git filtrando pelo meu usuário e resuma por tema.
Aponte a fonte em vez de descrever o problema. A doc é explícita: trocar "por que essa API é tão estranha?" por "olhe o histórico do git desta classe e resuma como a API dela surgiu" muda a qualidade da resposta, porque direciona o agente pra evidência em vez do palpite. Vale o mesmo pra @arquivo, que puxa o conteúdo pro contexto antes da resposta.
Pedir "investigue o sistema" sem escopo. Ele lê centenas de arquivos, entope a janela e a sessão fica ruim pro resto do dia. Delimite a investigação ou mande usar subagente: o subagente explora num contexto separado e devolve só o resumo, mantendo a sua conversa limpa.
Ganho de tempo de integração depende do tamanho e da bagunça da base. A doc afirma a direção (melhora a rampa, reduz a carga sobre o time) sem cravar número, e eu não vou inventar um. Meça no seu repositório antes de prometer prazo pra alguém.
Fonte · code.claude.com/docs/en/best-practices, seções "Ask codebase questions", "Provide specific context in your prompts" e "Use subagents for investigation".
Movimento 3Explorar, planejar, codar, commitar
Explorar, planejar, codar, commitar
Em uma linha: quatro fases, nesta ordem. Explorar sem alterar nada, pedir um plano, aprovar o plano, só então implementar e commitar.
Aperte Shift Tab até a barra de status mostrar o modo de plano, ou inicie a sessão já nele com claude --permission-mode plan. Nesse modo ele lê arquivos e responde sem alterar nada. Depois de gerado o plano, Ctrl G abre o plano no seu editor pra você corrigir antes de liberar. Sair do modo plano é aprovar ou apertar Shift Tab de novo.
1. explorar (modo plano)
leia src/auth e entenda como a sessao e o login funcionam hoje.
veja tambem como as variaveis de ambiente guardam segredo.
2. planejar (modo plano)
quero adicionar login com Google. que arquivos mudam?
qual o fluxo da sessao? monte um plano.
3. implementar (modo normal)
implemente o fluxo do seu plano. escreva teste pro callback,
rode a suite e corrija o que falhar.
4. fechar
faca o commit com mensagem descritiva e abra o PR
Planejar tem custo. A doc é direta: se o escopo está claro e a mudança é pequena (corrigir um typo, adicionar uma linha de log, renomear uma variável), peça direto. A regra prática que eu uso: se você consegue descrever o diff em uma frase, pule o plano. Planejar vale quando você está inseguro sobre a abordagem, quando a mudança encosta em vários arquivos, ou quando você não conhece o código que vai mexer.
Em funcionalidade grande, inverta: em vez de você explicar tudo, mande ele te entrevistar. Um prompt curto pedindo entrevista detalhada faz ele perguntar sobre implementação, interface, casos de borda e trade-offs que você ainda não pensou, e no fim gravar a especificação num arquivo. Aí você abre uma sessão nova, limpa, só pra executar a especificação. Tempo gasto deixando a spec precisa rende mais que tempo assistindo a implementação.
Corrigir a mesma coisa três vezes na mesma sessão. Depois de duas correções falhas, o contexto está poluído de tentativa errada e cada nova tentativa piora. O caminho é /clear e um prompt novo, melhor, que já incorpore o que você aprendeu.
Fonte · code.claude.com/docs/en/best-practices, seções "Explore first, then plan, then code", "Let Claude interview you" e "Avoid common failure patterns".
Movimento 4Dê a ele um jeito de conferir o próprio trabalho
Dê a ele um jeito de conferir o próprio trabalho
Em uma linha: o agente para quando o trabalho parece pronto. Sem uma checagem que ele mesmo rode, "parece pronto" é o único sinal disponível, e o revisor passa a ser você, a cada erro.
Qualquer coisa que devolva um sinal legível dentro da conversa: uma suíte de testes, o código de saída de um build, um linter, um script que compara a saída com um arquivo de referência, ou um screenshot do navegador comparado com o design. O critério não é sofisticação, é ter resposta binária.
# fraco
implemente uma funcao que valida e-mail
# forte
escreva validateEmail. casos: usuario@exemplo.com verdadeiro,
invalido falso, usuario@.com falso. rode os testes depois de implementar.
# fraco
deixe o painel mais bonito
# forte
[cola o screenshot] implemente este design. tire um screenshot do
resultado, compare com o original, liste as diferencas e corrija.
# fraco
o build esta quebrando
# forte
o build falha com este erro: [cola]. corrija e confirme que o build
passa. ataque a causa raiz, nao silencie o erro.
- No próprio prompt: mandar rodar a checagem e iterar na mesma mensagem. Funciona hoje, em qualquer tarefa, sem configurar nada.
- Na sessão inteira: registrar a checagem como condição de
/goal. Um avaliador separado reconfere a cada turno e o agente segue trabalhando até a condição valer. - Como portão determinístico: um hook
Stoproda sua checagem como script e impede o turno de encerrar enquanto não passar. Existe um teto: depois de oito bloqueios seguidos, a ferramenta encerra o turno mesmo assim. - Como segunda opinião: um subagente revisor, ou um fluxo que reconfere as próprias conclusões, faz um modelo novo tentar derrubar o resultado, pra que quem executou não seja quem dá a nota.
Mande mostrar evidência em vez de afirmar sucesso: a saída do teste, o comando exato que rodou e o que ele devolveu, ou o screenshot do resultado. Revisar evidência é mais rápido que refazer a verificação, e é a única forma de auditar sessão que você não assistiu.
Confiar na implementação plausível. Ela compila, parece certa e não trata o caso de borda. E, no outro extremo, um revisor instruído a achar falha quase sempre acha alguma, mesmo quando o trabalho está bom, porque foi isso que você pediu. Instrua o revisor a apontar só o que afeta correção ou requisito declarado, e trate o resto como opcional.
Fonte · code.claude.com/docs/en/best-practices, seções "Give Claude a way to verify its work" e "Add an adversarial review step".
Movimento 5Plugue as ferramentas do time
Plugue as ferramentas do time
Em uma linha: o agente fica muito melhor quando enxerga as mesmas ferramentas que o seu time já usa. Existem dois caminhos, e eles se somam.
A doc chama a linha de comando de jeito mais econômico em contexto de falar com serviço externo. Se você usa GitHub, instale o gh: ele já sabe abrir issue, criar pull request e ler comentário. Sem o gh, sobra chamar a API sem autenticação e bater no limite de requisição. E ele aprende CLI que não conhece: mande use a CLI tal com --help pra aprender a usar, e depois resolva A, B e C. Ferramenta que você usa direto, registre no CLAUDE.md pra não reexplicar toda sessão.
MCP é o protocolo aberto que conecta o agente a ferramenta, banco e API externa. O que decide se aquilo é seu ou do time é o escopo do registro: local vale só pra você naquele projeto, user vale pra você em todos os projetos, e project grava num arquivo .mcp.json na raiz, que é justamente o que você versiona pra todo mundo receber o mesmo conjunto.
# so pra voce, neste projeto
claude mcp add --transport http stripe --scope local https://mcp.stripe.com
# pro time inteiro: grava .mcp.json na raiz do repositorio
claude mcp add --transport http shared-server --scope project https://example.com/mcp
# pra voce, em todos os projetos
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
# conferir o que esta ligado
claude mcp list
Servidor de escopo de projeto não conecta sozinho: por segurança, a ferramenta pede aprovação em sessão interativa antes de usar servidor vindo do .mcp.json. Enquanto ninguém aprovar, ele aparece como pendente na listagem. E um repositório clonado não consegue se autoaprovar: a aprovação só passa a valer depois que você roda a sessão naquela pasta e aceita o diálogo de confiança. Pra zerar as escolhas de aprovação, existe claude mcp reset-project-choices.
Ligar servidor MCP demais. Cada servidor conectado carrega descrição de ferramenta pra dentro do contexto, e contexto é o recurso escasso. Ligue o que o projeto usa de verdade, e prefira CLI quando ela resolve, porque CLI custa menos contexto que servidor.
Fonte · code.claude.com/docs/en/mcp (escopos, .mcp.json, aprovação e confiança de workspace) e code.claude.com/docs/en/best-practices, seções "Use CLI tools" e "Connect MCP servers".
Movimento 6CLAUDE.md e a hierarquia de contexto
CLAUDE.md e a hierarquia de contexto
Em uma linha: CLAUDE.md é o arquivo que entra no contexto no começo de toda sessão. Ele existe em quatro lugares, cada um com um alcance, e a ordem de carga vai do mais amplo ao mais específico.
- Política gerenciada (a organização inteira, distribuída por MDM ou similar): no macOS em
/Library/Application Support/ClaudeCode/CLAUDE.md, no Linux e WSL em/etc/claude-code/CLAUDE.md, no Windows emC:\Program Files\ClaudeCode\CLAUDE.md. Este não pode ser excluído por configuração individual. - Suas preferências, valendo em todos os seus projetos:
~/.claude/CLAUDE.md. - O projeto, compartilhado com o time por controle de versão:
./CLAUDE.mdou./.claude/CLAUDE.md. - Local do projeto, só seu, entra no
.gitignore:./CLAUDE.local.md.
Ele sobe a árvore de diretórios a partir de onde você iniciou a sessão e concatena tudo que achou, da raiz do sistema de arquivos até o seu diretório de trabalho, sem um sobrescrever o outro. Ou seja, o arquivo mais próximo de onde você abriu é o último lido. Já os CLAUDE.md em subdiretórios abaixo do diretório atual não entram no início: eles são puxados quando o agente lê um arquivo daquela pasta. É isso que faz monorepo funcionar sem carregar o mundo inteiro.
Comandos de bash que ele não teria como adivinhar, regra de estilo que difere do padrão da linguagem, instrução de teste, etiqueta do repositório (nome de branch, convenção de PR), decisão de arquitetura específica do projeto e as pegadinhas do ambiente. Fora: o que ele descobre lendo o código, convenção padrão que ele já conhece, documentação longa de API (linke) e descrição arquivo por arquivo. O teste de cada linha é uma pergunta só: se eu apagar isto, ele passa a errar? Se não, apague.
Mire abaixo de 200 linhas por arquivo. Arquivo longo consome mais contexto e derruba a aderência, e o efeito é traiçoeiro: quando ele insiste em ignorar uma regra que existe, quase sempre o problema é o arquivo estar grande demais e a regra ter se perdido no meio. Rode /context pra confirmar quais arquivos de memória carregaram de verdade, e /init pra gerar um CLAUDE.md inicial a partir do próprio projeto.
Instrução que vale só pra um pedaço do código vira regra com caminho: arquivos .md dentro de .claude/rules/, com um campo paths no cabeçalho, carregam só quando o agente toca em arquivo que casa com o padrão. Procedimento de vários passos vira skill, que só carrega quando é usada. E o que precisa acontecer sempre, sem exceção, não é instrução: é hook, que roda como script em ponto fixo do ciclo, independente do que o modelo decidir.
CLAUDE.md não é configuração obrigatória, é contexto. A doc diz de forma explícita que o conteúdo chega como mensagem de usuário depois do prompt de sistema, e que não há garantia de cumprimento estrito, principalmente com instrução vaga ou contraditória. Se duas regras se contradizem, ele pode escolher qualquer uma. Revise e pode o arquivo com a mesma disciplina que você usa pra revisar código.
Fonte · code.claude.com/docs/en/memory (caminhos, ordem de carga, imports, limite de 200 linhas e regras com paths) e code.claude.com/docs/en/best-practices, seção "Write an effective CLAUDE.md".
Movimento 7Comandos próprios: de .claude/commands para skills
Comandos próprios: de .claude/commands para skills
Em uma linha: comando próprio é um arquivo markdown numa pasta conhecida. O nome do arquivo vira o nome da barra, e ele pode ser pessoal ou versionado com o projeto.
Os comandos personalizados foram unificados com as skills. Um arquivo em .claude/commands/deploy.md e uma skill em .claude/skills/deploy/SKILL.md criam o mesmo /deploy e funcionam igual. Os seus arquivos antigos em .claude/commands/ continuam valendo, então não há nada pra migrar às pressas. O que a skill acrescenta é uma pasta pra arquivos de apoio, cabeçalho pra controlar quem invoca e a possibilidade de o próprio agente carregar aquilo quando for relevante.
- Pessoal, em todos os seus projetos:
~/.claude/skills/<nome>/SKILL.md. - Projeto, versionado com o time:
.claude/skills/<nome>/SKILL.md. - Se existir a mesma skill nos dois lugares, a do projeto vale sobre a pessoal.
---
name: fix-issue
description: Corrige uma issue do GitHub
disable-model-invocation: true
---
Analise e corrija a issue: $ARGUMENTS.
1. use gh issue view pra pegar os detalhes
2. entenda o problema descrito
3. procure os arquivos relevantes no codigo
4. implemente a correcao
5. escreva e rode os testes
6. passe o lint e a checagem de tipos
7. faca o commit com mensagem descritiva
8. abra o PR
Skill carrega sob demanda, CLAUDE.md carrega toda sessão. Então material longo de referência dentro de uma skill custa quase nada até a hora em que é usado, enquanto o mesmo texto no CLAUDE.md pesa em cada conversa. A regra de bolso: fato que vale sempre fica no CLAUDE.md, procedimento de vários passos vira skill.
Aquele processo de release que só três pessoas do time sabem fazer na ordem certa: escreva os passos num SKILL.md, commite, e a partir dali qualquer pessoa digita a barra e o agente executa a sequência inteira. É o efeito de rede que faz o investimento render: uma pessoa escreve, o time inteiro usa.
Fonte · code.claude.com/docs/en/skills (a unificação de comandos e skills, os caminhos e o cabeçalho) e code.claude.com/docs/en/best-practices, seção "Create skills".
Movimento 8Permissões: liberar o seguro, bloquear o resto
Permissões: liberar o seguro, bloquear o resto
Em uma linha: por padrão ele pede permissão pra tudo que altera o sistema. Isso é seguro e cansativo. Existem três formas de reduzir a interrupção sem abrir mão do controle.
- Modo automático: um classificador à parte revisa os comandos e bloqueia só o que parece arriscado (escalada de escopo, infraestrutura desconhecida, ação induzida por conteúdo hostil). Serve quando você confia na direção da tarefa e não quer clicar em cada passo.
- Lista de permissão: você libera nominalmente o que sabe que é seguro, tipo rodar o lint ou fazer commit.
- Sandbox: isolamento no nível do sistema operacional, restringindo sistema de arquivos e rede, pra ele trabalhar com mais liberdade dentro de uma fronteira definida.
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)",
"WebFetch(domain:github.com)"
],
"deny": [
"Bash(git push *)",
"WebFetch(domain:interno.exemplo.com)"
]
}
}
Bloqueio ganha de liberação, em qualquer nível. Se um nível nega, nenhum outro consegue permitir, e política gerenciada é o topo: nem argumento de linha de comando derruba uma negativa gerenciada. Também vale ao contrário do que muita gente espera: um bloqueio amplo como Bash(aws *) anula até uma liberação mais específica que casaria com a mesma chamada, ou seja, regra de bloqueio não carrega exceção.
Se existe um endereço que ninguém deveria acessar, a regra é WebFetch(domain:exemplo.com) no bloqueio. Subdomínio em qualquer profundidade se escreve WebFetch(domain:*.exemplo.com), e ele não cobre o domínio raiz. Só que bloquear a ferramenta de busca não basta: quem quiser burlar chama curl. O caminho completo é negar também os comandos de rede no bash e liberar por domínio na ferramenta própria.
Quando você escolhe "sim, não pergunte de novo" pra um comando de bash, a regra é gravada em .claude/settings.local.json na raiz do repositório, e passa a valer nas próximas sessões daquele repositório inteiro, inclusive nas iniciadas em subpasta. Aprovação de edição de arquivo é diferente: ela não é gravada, vale até o fim da sessão.
Achar que regra em CLAUDE.md protege alguma coisa. Não protege: instrução é contexto, permissão é regra do cliente. Se algo não pode acontecer, escreva como bloqueio de permissão ou como hook, nunca como pedido educado no arquivo de instruções. E cuidado com o outro extremo, o de desligar tudo por conveniência em máquina que tem acesso a produção.
Fonte · code.claude.com/docs/en/permissions (sintaxe das regras, precedência, WebFetch por domínio e onde a aprovação é salva) e code.claude.com/docs/en/best-practices, seção "Configure permissions".
Movimento 9Os atalhos que mudam o ritmo
Os atalhos que mudam o ritmo
Em uma linha: a maior parte do ganho de velocidade não vem de prompt melhor, vem de interromper e corrigir cedo. Estes são os atalhos que tornam isso barato.
- Shift Tab · alterna o modo de permissão, circulando entre manual, aceitar edições e modo de plano, mais os modos que você tiver habilitado.
- Esc · interrompe no meio da ação. O trabalho feito até ali é preservado, então você redireciona sem perder contexto. Com um diálogo aberto, ele fecha o diálogo em vez de interromper.
- Esc Esc · com texto digitado, limpa o rascunho e guarda no histórico. Com o campo vazio, abre o menu de retorno, pra restaurar código e conversa de um ponto anterior.
- Exclamação no começo · modo shell. Roda o comando direto, joga a saída pra dentro da sessão e o agente responde a partir dela.
- Arroba · menciona caminho de arquivo, com autocompletar, e puxa o conteúdo pro contexto.
- Ctrl R · busca reversa no histórico de comandos.
Ele sugeriu uma edição de vinte linhas e dezenove estão perfeitas. Em vez de aceitar e mandar corrigir depois, aperte escape, diga exatamente qual linha está errada e mande refazer. Ciclo curto de correção rende mais que ciclo longo de conserto, e a doc afirma isso de forma direta: corrigir cedo em geral produz solução melhor e mais rápido do que esperar o fim.
A conversa fica salva localmente. claude --continue retoma a mais recente daquele diretório e claude --resume abre a lista pra escolher, ou aceita o identificador direto. Batize as sessões com nome descritivo e trate cada uma como uma branch de trabalho: cada frente com o próprio contexto persistente.
O retorno com escape duplo só desfaz o que passou pelas ferramentas de edição de arquivo do agente. Alteração feita por comando de bash ou por processo externo não é capturada. Ou seja, checkpoint é conveniência, não substitui git. Commite antes de mandar ele tentar algo arriscado.
O jogo de sinal de cerquilha pra gravar memória não aparece mais na tabela de comandos rápidos da doc de modo interativo. Hoje o caminho documentado é pedir em linguagem natural ("lembre que os testes precisam do Redis local"), que salva na memória automática, ou usar /memory pra abrir e editar os arquivos direto. Da mesma forma, /terminal-setup e /theme não constam na referência de comandos atual: quebra de linha com shift e enter já é nativa em vários terminais, e a aparência ficou dentro de /config.
Fonte · code.claude.com/docs/en/interactive-mode (tabela de atalhos e de comandos rápidos), code.claude.com/docs/en/commands (referência dos comandos embutidos) e code.claude.com/docs/en/best-practices, seções "Course-correct early and often" e "Rewind with checkpoints".
Movimento 10Sem interface: claude -p como utilitário Unix
Sem interface: claude -p como utilitário Unix
Em uma linha: a flag -p roda o agente sem interface. É o mesmo motor da sessão interativa, exposto como comando: você passa o prompt, escolhe o formato de saída e usa o resultado como usaria qualquer utilitário de linha de comando.
O que antes se chamava SDK do Claude Code hoje é o Agent SDK, disponível como CLI pra script e CI e como pacote em Python e TypeScript pra controle programático completo. Se você encontrar material antigo falando em "Claude Code SDK", é a mesma coisa com o nome anterior.
# 1. jogar um log gigante pra dentro e pedir o diagnostico
cat build-error.txt | claude -p 'explique a causa raiz deste erro' > saida.txt
# 2. saida estruturada pra script consumir
claude -p "liste os endpoints da API" --output-format json | jq -r '.result'
# 3. virar um linter do projeto, no package.json
git diff main | claude -p "voce e um corretor de typos. para cada typo
neste diff, responda arquivo:linha numa linha e o problema na seguinte."
# 4. revisar um PR com papel definido
gh pr diff "$1" | claude -p \
--append-system-prompt "Voce e engenheiro de seguranca. Revise
procurando vulnerabilidade." --output-format json
Pra migração grande, o padrão é gerar a lista de arquivos num arquivo texto e depois varrer essa lista chamando claude -p por item, restringindo o que ele pode fazer com --allowedTools. Refine o prompt nos dois ou três primeiros arquivos e só então rode no conjunto inteiro. É trabalho não assistido, então a restrição de ferramenta deixa de ser detalhe e vira o que segura o risco.
Existe a flag --bare, que pula a descoberta automática de hooks, skills, plugins, servidores MCP, memória automática e CLAUDE.md. Serve exatamente pra CI e script, onde você quer o mesmo resultado em toda máquina, sem depender do que um colega deixou no ~/.claude dele. A contrapartida honesta: em modo bare ele não usa o login de assinatura, então é preciso ter a chave de API no ambiente. A doc sinaliza que --bare deve virar o padrão do -p no futuro.
- Entrada por cano tem teto de 10 MB. Acima disso, escreva num arquivo e cite o caminho no prompt.
- O diálogo de confiança de workspace não aparece em modo não interativo. Regra de liberação que dependeria dele fica ignorada, e o comportamento pode diferir do que você viu na sessão interativa.
- O custo em dólar que vem no JSON é estimativa do cliente e pode divergir da fatura.
Fonte · code.claude.com/docs/en/headless (flags, formatos, bare mode, teto de 10 MB e estimativa de custo) e code.claude.com/docs/en/cli-reference.
Movimento 11Rodar vários em paralelo
Rodar vários em paralelo
Em uma linha: um worktree do git é um diretório de trabalho separado, com os próprios arquivos e a própria branch, compartilhando o histórico e o remoto do mesmo repositório. Uma sessão por worktree significa que edição de uma nunca encosta na outra.
# cria o worktree isolado e ja inicia a sessao nele
claude --worktree feature-auth
# noutro terminal, outra frente, isolada da primeira
claude --worktree fix-checkout
# na mao, quando voce precisa de um caminho ou branch especifico
git worktree add ../projeto-feature-a -b feature-a
git worktree list
git worktree remove ../projeto-feature-a
Enquanto a sessão está isolada, a ferramenta bloqueia edição que aponte pro checkout principal, comando cujo diretório de trabalho caia lá, e comando que redirecione o git pra lá por qualquer caminho. Ela também recusa construção de shell que não consegue rastrear estaticamente e pede pra quebrar em comandos simples. Isso vale igualmente pros subagentes que a sessão isolada abrir.
Worktree isola arquivo. Subagente e time de agentes coordenam o trabalho: dá pra pedir que os subagentes rodem cada um no próprio worktree, ou fixar isso num subagente com isolation: worktree no cabeçalho dele. Vale lembrar que rodar em paralelo não é só velocidade: contexto novo melhora revisão, porque o revisor não fica enviesado pelo código que ele mesmo acabou de escrever.
Sessão A implementa. Sessão B, que não viu nada, recebe o arquivo e a instrução de procurar caso de borda, condição de corrida e inconsistência com os padrões que já existem. A saída de B volta pra A como pauta de correção. Funciona igual com teste: uma sessão escreve os testes, outra escreve o código pra passar neles.
- Worktree é um checkout novo, então dependência não vem instalada e arquivo ignorado pelo git, tipo
.env, não existe lá. Pra copiar automaticamente, crie um arquivo.worktreeincludena raiz, com sintaxe de gitignore. - Sessão não interativa com
-pnão tem o passo de saída, então não limpa o worktree sozinha. Remova comgit worktree remove. - Aprovação de permissão dada dentro de um worktree é salva no checkout principal e passa a valer no repositório inteiro. É conveniente e é exatamente por isso que merece atenção.
Fonte · code.claude.com/docs/en/worktrees (flag, isolamento, .worktreeinclude e limpeza) e code.claude.com/docs/en/best-practices, seção "Run multiple Claude sessions".
A ferramenta é a mesma pra todo mundo. O que muda é o cerco que você monta em volta dela.
Quem entrega pouco com o Claude Code costuma fazer as mesmas três coisas: pede grande demais de uma vez, não dá nenhuma forma de conferir o resultado e deixa o contexto virar um depósito de tarefas sem relação. Quem entrega muito faz o contrário, e nada disso é sofisticado: pergunta antes de mandar, separa a fase que lê da fase que escreve, entrega um teste ou um screenshot como juiz, e limpa a mesa entre um assunto e outro.
O resto é infraestrutura, e infraestrutura tem efeito de rede. O CLAUDE.md do projeto, o .mcp.json versionado, a skill com o processo de release, as permissões commitadas: uma pessoa escreve, o time inteiro colhe. É o único investimento aqui que rende mais a cada semana em vez de menos.
Antes de mandar a próxima tarefa grande, responda uma coisa só: que comando ele pode rodar sozinho pra descobrir que errou? Se você não tem resposta, o revisor é você, e a sessão vai custar o seu dia inteiro.
O que se chamava SDK do Claude Code hoje é o Agent SDK, com CLI, Python e TypeScript. Material antigo com o nome anterior descreve a mesma coisa.
Comandos personalizados foram unificados com as skills. Os arquivos em .claude/commands/ continuam funcionando; o formato novo é .claude/skills/<nome>/SKILL.md.
Além do CLAUDE.md escrito por você, existe a memória automática, que o próprio agente escreve por repositório. O comando /memory lista, edita e liga ou desliga isso.
/terminal-setup e /theme não constam na referência atual. Quebra de linha com shift e enter já é nativa em vários terminais, e a aparência migrou pra /config.
A documentação saiu de docs.anthropic.com/en/docs/claude-code/ e hoje responde em code.claude.com/docs/en/. Os links antigos redirecionam.
Sob termos comerciais (Team, Enterprise, API), a Anthropic não treina modelo generativo com código ou prompt enviado ao Claude Code, salvo adesão explícita a programa de parceria. Nas contas de consumidor (Free, Pro e Max) existe uma opção do usuário: com ela ligada, os dados podem ser usados pra treinar. Confira em qual regime você está antes de rodar em código sensível.
Toda afirmação técnica acima foi conferida na documentação oficial do Claude Code. O que não tem fonte não entrou, e onde a doc não crava número eu também não cravei.
- Boas práticas
Verificação, plano antes do código, CLAUDE.md, permissões, CLI e MCP, modo não interativo e sessões paralelas.
code.claude.com/docs/en/best-practices - Memória
Os quatro escopos de CLAUDE.md com caminho exato, ordem de carga, imports, limite de 200 linhas, regras com paths e memória automática.
code.claude.com/docs/en/memory - Permissões
Sintaxe de allow e deny, precedência de bloqueio, regra por domínio da ferramenta de busca e onde a aprovação é gravada.
code.claude.com/docs/en/permissions - MCP
Escopos local, project e user, o arquivo
.mcp.jsonversionado e o fluxo de aprovação de servidor de projeto.
code.claude.com/docs/en/mcp - Skills
A unificação de comandos e skills, os caminhos pessoal e de projeto e o cabeçalho do SKILL.md.
code.claude.com/docs/en/skills - Modo interativo
Tabela de atalhos de teclado e de comandos rápidos.
code.claude.com/docs/en/interactive-mode - Comandos
Referência dos comandos embutidos, usada pra checar o que ainda existe.
code.claude.com/docs/en/commands - Não interativo
A flag
-p, formatos de saída, modo bare, teto de entrada e uso em CI.
code.claude.com/docs/en/headless - CLI
Lista completa de flags, incluindo
--continue,--resumee--permission-mode.
code.claude.com/docs/en/cli-reference - Worktrees
A flag
--worktree, as quatro checagens de isolamento,.worktreeincludee limpeza.
code.claude.com/docs/en/worktrees - Segurança
Arquitetura de permissão, fronteira do diretório de trabalho e proteções contra injeção de prompt.
code.claude.com/docs/en/security - Uso de dados
Política de treinamento por tipo de conta, retenção e o que trafega pra fora da máquina.
code.claude.com/docs/en/data-usage