CLAUDE CODE MASTER CLASS
Da primeira sessão a usuário avançado · 12 módulos · ~60 minutos de ponta a ponta.
Pra quem isso é
Você já usou um assistente de código, mas o Claude Code parece mais profundo que uma caixa de chat e você suspeita que tem um sistema por trás. Tem. Essa Master Class percorre as 12 superfícies desse sistema, do binário claude até CI/CD headless, com um diagrama por conceito e uma receita copy-paste por módulo.
Como usar essa página
- De cima pra baixo é o caminho canônico. Cada módulo amplia o anterior.
- Se você só tem 10 minutos — leia §1 Modelo Mental, §3 CLAUDE.md, §8 Hooks. Esses três são o núcleo conceitual.
- Cada módulo termina com um link Aprofundar → pro cheatsheet de referência (tabela completa de flags / diagrama completo / schema inteiro).
- Construído contra Claude Code
v2.1.143. Flags da CLI e nomes de hook event seguem essa versão.
Modelo Mental
fundamentosTL;DR — Claude Code não é "Claude num terminal." É um agent harness: um loop que lê o seu repo, roda ferramentas, observa resultados, itera. O modelo é um nó; o harness é o sistema.
▸ Três coisas que a Anthropic oferece (escolha a certa)
- claude.ai (chat) — conversa, sem ferramentas, sem repo. Melhor pra pensar em voz alta.
- Claude Code — agente nativo de terminal que lê seu codebase, edita arquivos, roda comandos, conserta erros. Melhor pra entregar código.
- Anthropic API — Claude programável dentro do seu app. Melhor quando VOCÊ é o harness.
▸ O loop do agente, em 5 passos
▸ O que faz o Claude Code diferente
- Tem workspace próprio. Pode `Read`, `Edit`, `Write`, `Bash` nos seus arquivos — não só falar sobre eles.
- Tem contrato. Permissões, hooks, e CLAUDE.md são os trilhos. Você configura intenção; Claude trabalha dentro dela.
- Compõe. Skills, agents, servidores MCP, hooks — cada um é uma primitiva. Essa Master Class ensina cada uma.
▸ Experimenta agora
cd ~/seu-projeto
claude
> o que esse codebase faz? Aprofundar → cheatsheet PARTE I (superfície CLI) Sua Primeira Sessão
fundamentosTL;DR — Quatro formas de entrada cobrem 95% do uso real: claude (interativo), claude -p (one-shot), claude -c (continuar), claude -r (retomar por id). O resto são flags em cima.
▸ As quatro formas
claude— REPL interativo. Caso de 90%. Você digita, ele responde, itera.claude -p "tarefa"— one-shot. Imprime o resultado e sai. Pra pipes, scripts, CI.claude -c— retoma a última conversa nesse dir. Pega de onde você parou.claude -r [id|busca]— escolhe uma sessão específica. Picker interativo se sem arg.
▸ Três flags que valem desde o dia 1
--model haiku|sonnet|opus— escolhe o cérebro. Default é sonnet. (§9 cobre quando usar cada um.)--add-dir <path>— deixa Claude enxergar arquivos fora do cwd. Workflow multi-repo.--max-budget-usd 0.50— teto duro. Sessão para quando o cap de custo é atingido.
▸ O grafo de sessão
▸ Experimenta agora
# one-shot scriptável, saída estruturada, com budget
claude -p --output-format json --max-budget-usd 0.50 \
"resuma os últimos 3 commits" Aprofundar → cheatsheet PARTE I (modos · modelo · I/O · subcomandos) CLAUDE.md, o manual de instruções
fundamentosTL;DR — CLAUDE.md é a primeira coisa que Claude lê. Coloca as convenções do projeto aqui e você para de se repetir a cada sessão. Os arquivos fazem merge num ancestor walk; arquivos aninhados podem ser path-scoped.
▸ A hierarquia (todos fazem merge no prompt)
▸ As quatro coisas que vale colocar
- Stack. Linguagem, framework, test runner. Evita Claude adivinhar.
- Build & test. Comandos exatos.
bun test,pnpm run lint, etc. - Convenções. Estilo, padrões, naming. O que um reviewer corrigiria.
- Pegadinhas. Comportamento não-óbvio. O que já te mordeu uma vez.
▸ Frontmatter path-scoped
---
paths: ["src/**", "tests/**"]
---
# Só é carregado quando arquivos em src/ ou tests/ são tocados.
# Use pra manter o CLAUDE.md focado. ▸ Imports (compõe, não duplica)
@./conventions.md # relativo
@~/.claude/snippet.md # user-home
@/abs/path.md # absoluto Aprofundar → cheatsheet PARTE II (card CLAUDE.md · imports · reload triggers) Permissões & Segurança
fundamentosTL;DR — Claude pergunta antes de fazer coisas destrutivas, mas você decide a política. Quatro modos vão de "pergunta tudo" a "confia no agente", mais uma allow/deny list com glob patterns.
▸ Os quatro modos (do menos pro mais confiante)
- default — prompt em toda chamada de ferramenta. Mais seguro, mais lento.
- acceptEdits — aceita edits automaticamente, ainda pergunta pra Bash. Bom pra refactor.
- plan — modo read-only; Claude propõe um plano, você aprova antes de qualquer escrita.
- bypassPermissions — agente roda solto. Use em sandbox descartável ou em CI com cap duro de budget.
▸ Allow / deny com glob patterns
// .claude/settings.json
{ "permissions": {
"defaultMode": "default",
"allow": ["Bash(git *)", "Read", "Edit"],
"deny": ["Bash(rm -rf *)", "Bash(curl *)"]
} } ▸ A regra de segurança
- Maioria dos patterns é
ToolName(arg-pattern). O arg pattern é um shell-glob. - Deny ganha de allow pra mesma ferramenta. Construa sua rede de segurança com deny.
- Nunca cole
--dangerously-skip-permissionsem repo real. A flag existe pra sandbox — desabilita TODO check de permissão, incluindo a deny list. - Combine modos de alta confiança com
--max-budget-usdpra um agente desgovernado queimar dinheiro ao invés de arquivos.
O Universo MCP
capacidadesTL;DR — MCP (Model Context Protocol) é como Claude conversa com o mundo além do seu filesystem. Um .mcp.json declara servidores; cada servidor expõe ferramentas chamadas mcp__<srv>__<tool>.
▸ Cinco servidores maduros pra conhecer
- playwright — automação de browser. Click, type, screenshot, evaluate JS. Default pra workflow autenticado.
- chrome-devtools — observabilidade de rede, performance, runtime. Só pra debug.
- dbhub — SQL multi-DB (Postgres, MySQL, SQLite). Read-only por padrão.
- nextjs-devtools — build logs, routes, server actions, diagnostics de cache.
- github — issues / PRs / repos / workflows estruturados (mais rico que o CLI
gh).
▸ Adicionando um servidor
// .mcp.json na raiz do repo
{ "mcpServers": {
"playwright": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-playwright"]
}
} } ▸ Trust gate
Por padrão Claude pergunta antes de habilitar servidores MCP declarados num projeto. Use enableAllProjectMcpServers: true nos settings pra pular o prompt — só em repos que você confia.
▸ Modelo mental
Skills — engarrafando seus prompts
capacidadesTL;DR — uma skill é uma pasta com um SKILL.md dentro. O corpo dele É o prompt. Invoca como /<nome>. Você para de colar as mesmas instruções toda sessão.
▸ Anatomia
▸ O frontmatter que importa
---
description: Dica de descoberta em uma linha (Claude lê pra saber quando sugerir você)
argument-hint: <new <slug> | list>
allowed-tools: [Read, Grep, Bash]
paths: ["docs/specs/**"] # path-scoped: só carregável em dirs que casem
context: fork # turn isolado (não polui a conversa principal)
---
# /nome — corpo abaixo dessa linha é o prompt ▸ Duas features que fazem diferença
$ARGUMENTS— o que o usuário digitou depois do slash command. Permite uma skill lidar com várias formas de chamar.!`shell-cmd`— roda no carregamento da skill; stdout é injetado como contexto. Excelente pra estado vivo ("data de hoje", "branch atual", "lista de PRs abertos").
▸ Skills bundled (já na sua máquina)
/simplify · /batch · /debug · /loop · /claude-api — todas vêm com o Claude Code. /help lista o que está na sua instalação.
Agents — delegação feita certo
capacidadesTL;DR — um agent roda num contexto isolado e retorna uma única mensagem. Delegue quando (a) o trabalho precisa de muitas tool calls, (b) o resultado cabe num resumo, ou (c) você quer manter ruído fora da conversa principal.
▸ Os cinco agents built-in
- general-purpose — pesquisa e execução multi-step. O default.
- Explore — busca read-only rápida. "Onde X está definido? Que arquivos usam Y?"
- Plan — modo arquiteto. Produz um plano de implementação, não escreve código.
- claude-code-guide — Q&A sobre o próprio Claude Code (essa Master Class é um exemplo real).
- statusline-setup — configura sua status line. Nicho mas vem com o produto.
▸ Uma boa delegação tem cinco partes
TASK: uma frase — o que fazer
CONTEXT: arquivos/paths que o agent deve ler primeiro
CONSTRAINTS: o que NÃO fazer · budgets · guardrails de estilo
DELIVERABLE: artefato concreto (path de arquivo, PR, formato do resumo)
DONE_WHEN: condição verificável (testes passam, arquivo existe) DELIVERABLE ou DONE_WHEN é obrigatório (ou ambos). O agent não herda contexto do pai — entrega tudo que ele precisa de antemão.
▸ Dispatch via tool call
Agent({
subagent_type: "Explore",
prompt: "TASK: localizar todos os callers de getUser() em src/.\n..." ,
model: "sonnet", // opcional · sobrescreve default
isolation: "worktree", // opcional · roda em worktree git temporário
}) ▸ Model-fit cheatsheet
Implementação mecânica → sonnet. Lookup rápido de schema/protocolo → haiku. Revisão de arquitetura ou debug exploratório → opus. Pesquisa comparativa multi-fonte → opus se ≥2 sinais, senão sonnet.
Hooks — guardião de cada ação
capacidadesTL;DR — hooks são shell scripts que rodam em eventos de ciclo de vida. 29 eventos no total. Cada um recebe JSON via stdin e decide pelo exit code: 0 = permite, 2 em PreToolUse = BLOQUEIA (stderr mostrado ao agent), qualquer outro = só log.
▸ As sete famílias de eventos
- Session lifecycle — SessionStart · SessionEnd · Setup · Stop · StopFailure
- Prompts & instructions — UserPromptSubmit · UserPromptExpansion · InstructionsLoaded
- Tool gates — PreToolUse · PostToolUse · PostToolUseFailure · PostToolBatch
- Permission — PermissionRequest · PermissionDenied
- Sub-agents & tasks — SubagentStart · SubagentStop · TaskCreated · TaskCompleted
- Compaction — PreCompact · PostCompact
- System — Notification · TeammateIdle · ConfigChange · CwdChanged · FileChanged · WorktreeCreate · WorktreeRemove · Elicitation · ElicitationResult
▸ Hook mínimo viável
// .claude/settings.json
{ "hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "bash .claude/hooks/check-bash.sh"
}]
}]
} } #!/usr/bin/env bash
# .claude/hooks/check-bash.sh — lê JSON de stdin, decide pelo exit
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
if [[ "$cmd" =~ rm\ -rf ]]; then
echo "bloqueado: rm -rf é negado nesse projeto" >&2
exit 2
fi
exit 0 ▸ Uma pegadinha que vale sinalizar
PostToolUse(Bash) dispara só em sucesso. Pra capturar falhas, pareie com PostToolUseFailure(Bash). Payload de falha usa .error e não tem tool_response.
▸ Três tipos de handler
type: command— shell script. O default.type: prompt— single-turn Claude eval sobre$ARGUMENTS.type: agent— dispara um sub-agente com ferramentas pra verificação profunda.
Custo & Fit do Modelo
avançadoTL;DR — a mesma tarefa rodando no Opus pode custar 60× mais que no Haiku. A diagonal é ótima; fora dela é gasto excessivo ou subdimensionado. Escolher certo uma vez pode cortar 70% da conta.
▸ Os três modelos · por milhão de tokens
▸ Knob de effort (só Opus)
--effort low|medium|high troca latência por profundidade. low pra loops apertados, high pra revisão one-shot de arquitetura.
▸ Cache é sua segunda maior alavanca
- Anthropic cacheia prompts por 5 minutos (tier free) ou 1 hora (com
cache_controlexplícito). - System prompts + CLAUDE.md + reads longos são candidatos a cache. Repetir dentro do TTL é ~90% mais barato.
- Sleeps longos (≥5 min) quebram o cache. Planeje intervalos de loop com isso em mente.
▸ O teto duro
claude -p --max-budget-usd 1.00 --max-turns 12 \
"rodar testes, consertar falhas, repetir até verde" Budget cap e turn cap são a rede de segurança — quando um loop não converge, ele para de queimar dinheiro ao invés de ficar criativo.
Aprofundar → matriz Atlas Cost × Model fitPadrões de Workflow
avançadoTL;DR — a maioria do trabalho real no Claude Code encaixa em uma de cinco formas. Escolher a forma certa importa mais que escolher o modelo certo.
▸ Os cinco padrões
- Sequential — um Claude, uma tarefa, de cima pra baixo. Default. Use pra qualquer coisa onde o passo N depende do N−1.
- Operator — você fica no loop, Claude propõe diffs, você aceita/rejeita. Use pra code review e edits cirúrgicos.
- Split-merge — um parent dispara N agents delegados (um por arquivo, um por módulo), parent funde os retornos. Use pra refactors estilo codemod.
- Agent teams — cadeia Plan → Implement → Review, cada um um sub-agent diferente com contexto próprio. Use pra features não-triviais.
- Headless —
claude -pem CI/CD com saída estruturada. Sem humano no loop. Use pra PR review bots, test-fix loops, audit de dependências.
▸ Escolhendo a forma
▸ O trade-off escondido
Padrões paralelos (split-merge, agent teams) são rápidos mas custam mais em tokens totais porque cada agent delegado carrega contexto próprio. Sequential é mais lento mas mais barato. Escolha paralelo só quando latência de wall-clock importa de verdade.
Aprofundar → cheatsheet card WORKFLOW PATTERNSCompaction & Memória
avançadoTL;DR — Claude Code resume sessões longas automaticamente. O resumo é lossy. A ponte PreCompact → SessionStart(compact) é como você preserva o sinal cru que importa.
▸ Três camadas de memória
- CLAUDE.md — sempre em contexto. A camada "como esse projeto funciona".
- Auto-memory — Claude escreve fatos sobre seu projeto em
~/.claude/projects/<slug>/memory/conforme aprende. Indexado porMEMORY.md, carregado no início da sessão. - Transcript — a conversa em si. Quando cresce além do budget, compaction entra em ação.
▸ O fluxo de compaction
▸ Por que a ponte de hook importa
- O summarizer é a única coisa que atravessa a fronteira por padrão — e summarização perde citação verbatim, paths de arquivo, palavras exatas.
- Só
PreCompactpode escrever antes da truncagem; sóSessionStartpode injetar depois. Nenhum outro hook fecha esse gap. - Salve raw turns em disco no PreCompact, leia de volta no SessionStart-com-source-compact. É o padrão canônico.
▸ Experimenta agora
# compaction manual
/compact
# revisa o que foi preservado
/memory Aprofundar → fluxo Atlas Compaction interrupt CI/CD & Headless
avançadoTL;DR — claude -p é a porta pra uso não-interativo. Combine com --output-format json, --max-budget-usd, e --max-turns pra ter um agent determinístico, com budget e parseável no seu pipeline.
▸ As cinco flags que fazem headless funcionar
-p, --print— imprime resultado e sai. Sem REPL.--output-format json|text|stream-json— JSON é o default certo pra máquinas.--max-turns N— cap duro de iterações do agent. Para runaway.--max-budget-usd X— cap duro de custo. Para overrun de custo.--permission-mode bypassPermissions— necessário em CI onde não tem humano pra aprovar. Pareie com os dois caps acima.
▸ Um step real do GitHub Actions
- name: PR review bot
run: |
claude -p \
--permission-mode bypassPermissions \
--output-format json \
--max-turns 6 \
--max-budget-usd 0.50 \
"review do PR #${{ github.event.number }} pra issues de segurança,
retorne findings em JSON: {findings: [{file, line, severity, why}]}"
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} ▸ Três padrões que entregam
- PR review bot — roda em
pull_request, posta findings como review comment. - Test-fix loop — roda em
workflow_dispatch, tenta consertar testes falhando, abre PR com o fix. - Audit de dependências — roda toda noite, lê
package.json+ advisories, abre issues pra deps vulneráveis.
▸ A disciplina
- Sempre setar cap de turn E cap de budget. Os dois. CI loops é onde dinheiro desaparece.
- Use o modelo mais barato que dá conta. Maioria do trabalho de CI é
sonnetno máximo. - Trate o JSON de saída como contrato — faça o step do CI falhar se o JSON estiver malformado, ao invés de deixar cascatear.