← claude-core
Recursos
EN PT ES
▮ CLAUDE-CORE · ACADEMY CLAUDE CODE v2.1.143 12 MÓDULOS · INICIANTE → AVANÇADO ▮

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

§1

Modelo Mental

fundamentos

TL;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)

  1. claude.ai (chat) — conversa, sem ferramentas, sem repo. Melhor pra pensar em voz alta.
  2. Claude Code — agente nativo de terminal que lê seu codebase, edita arquivos, roda comandos, conserta erros. Melhor pra entregar código.
  3. Anthropic API — Claude programável dentro do seu app. Melhor quando VOCÊ é o harness.

▸ O loop do agente, em 5 passos

promptmodelotool callresultadomodelo → (loop até terminar) repete até: resposta só de texto · max-turns atingido · budget atingido · interrupção do usuário

▸ 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)
Próximo → §2 · Sua Primeira Sessão
§2

Sua Primeira Sessão

fundamentos

TL;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

  1. claude — REPL interativo. Caso de 90%. Você digita, ele responde, itera.
  2. claude -p "tarefa" — one-shot. Imprime o resultado e sai. Pra pipes, scripts, CI.
  3. claude -c — retoma a última conversa nesse dir. Pega de onde você parou.
  4. 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

startup ─SessionStart→ interactive ⇄ /compact ⇄ compacted │ └─/clear→ contexto novo ─SessionEnd→ finalizado

▸ 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)
Próximo → §3 · CLAUDE.md, o manual
§3

CLAUDE.md, o manual de instruções

fundamentos

TL;DRCLAUDE.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)

~/.claude/CLAUDE.md # user-global · preferências por máquina <ancestors>/CLAUDE.md # cada dir do cwd até a raiz do repo ./CLAUDE.md # projeto · o canônico · git-tracked ./CLAUDE.local.md # overrides pessoais · gitignored <subdir>/CLAUDE.md # aninhado · on-demand quando arquivos do subdir são tocados

▸ As quatro coisas que vale colocar

  1. Stack. Linguagem, framework, test runner. Evita Claude adivinhar.
  2. Build & test. Comandos exatos. bun test, pnpm run lint, etc.
  3. Convenções. Estilo, padrões, naming. O que um reviewer corrigiria.
  4. 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)
Próximo → §4 · Permissões & Segurança
§4

Permissões & Segurança

fundamentos

TL;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)

  1. default — prompt em toda chamada de ferramenta. Mais seguro, mais lento.
  2. acceptEdits — aceita edits automaticamente, ainda pergunta pra Bash. Bom pra refactor.
  3. plan — modo read-only; Claude propõe um plano, você aprova antes de qualquer escrita.
  4. 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-permissions em 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-usd pra um agente desgovernado queimar dinheiro ao invés de arquivos.
Aprofundar → cheatsheet card PERMISSIONS (defaultMode · allow patterns · escapes)
Próximo → §5 · O Universo MCP
§5

O Universo MCP

capacidades

TL;DRMCP (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

playwrightgithub ───── CLAUDE ───── chrome-devtoolsdbhub nextjs-devtools cada servidor = uma superfície externa · cada ferramenta = um verbo nessa superfície
Aprofundar → radial do ecossistema MCP no Atlas
Próximo → §6 · Skills — engarrafando prompts
§6

Skills — engarrafando seus prompts

capacidades

TL;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

.claude/skills/<nome>/ ├── SKILL.md # frontmatter + corpo é o prompt ├── templates/ # assets opcionais └── examples/ # material de referência

▸ 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

  1. $ARGUMENTS — o que o usuário digitou depois do slash command. Permite uma skill lidar com várias formas de chamar.
  2. !`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.

Aprofundar → cheatsheet card SKILLS (frontmatter completo · padrões de invocação)
Próximo → §7 · Agents — delegação
§7

Agents — delegação feita certo

capacidades

TL;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.

Aprofundar → diagrama Atlas Skill · Agent · Hook composition
Próximo → §8 · Hooks — guardião de cada ação
§8

Hooks — guardião de cada ação

capacidades

TL;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

  1. Session lifecycle — SessionStart · SessionEnd · Setup · Stop · StopFailure
  2. Prompts & instructions — UserPromptSubmit · UserPromptExpansion · InstructionsLoaded
  3. Tool gates — PreToolUse · PostToolUse · PostToolUseFailure · PostToolBatch
  4. Permission — PermissionRequest · PermissionDenied
  5. Sub-agents & tasks — SubagentStart · SubagentStop · TaskCreated · TaskCompleted
  6. Compaction — PreCompact · PostCompact
  7. 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.
Aprofundar → radial Atlas de hook taxonomy · 29 eventos de relance
Próximo → §9 · Custo & Fit do Modelo
§9

Custo & Fit do Modelo

avançado

TL;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

haiku sonnet opus $0.25/$1.25 $3/$15 $15/$75 in/out in/out in/out formatação docs ✓ ótimo ~ ok ✗ 60× desperdício refactor simples ───────────────────────────────────────────────────────────────── coding tasks ~ subdim. ✓ ótimo ~ 5× overspend test fixes ───────────────────────────────────────────────────────────────── arquitetura ✗ não dá ~ esforça ✓ ótimo debug difícil

▸ 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_control explí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 fit
Próximo → §10 · Padrões de Workflow
§10

Padrões de Workflow

avançado

TL;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

  1. Sequential — um Claude, uma tarefa, de cima pra baixo. Default. Use pra qualquer coisa onde o passo N depende do N−1.
  2. Operator — você fica no loop, Claude propõe diffs, você aceita/rejeita. Use pra code review e edits cirúrgicos.
  3. Split-merge — um parent dispara N agents delegados (um por arquivo, um por módulo), parent funde os retornos. Use pra refactors estilo codemod.
  4. Agent teams — cadeia Plan → Implement → Review, cada um um sub-agent diferente com contexto próprio. Use pra features não-triviais.
  5. Headlessclaude -p em 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

precisa de checkpoint humano entre passos? ─sim→ operator │ não ▼ trabalho é naturalmente paralelo? ─sim→ split-merge │ não ▼ decompõe em modos de raciocínio diferentes ─sim→ agent teams (plan / code / review)? │ não ▼ roda em CI sem humano? ─sim→ headless │ não ▼ default → sequential

▸ 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 PATTERNS
Próximo → §11 · Compaction & Memória
§11

Compaction & Memória

avançado

TL;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

  1. CLAUDE.md — sempre em contexto. A camada "como esse projeto funciona".
  2. Auto-memory — Claude escreve fatos sobre seu projeto em ~/.claude/projects/<slug>/memory/ conforme aprende. Indexado por MEMORY.md, carregado no início da sessão.
  3. Transcript — a conversa em si. Quando cresce além do budget, compaction entra em ação.

▸ O fluxo de compaction

turn N → PreCompact hook → summarizer roda → PostCompact │ ▼ SessionStart(source:compact) re-injeta additionalContext pro turn N+1

▸ 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.
  • PreCompact pode escrever antes da truncagem; só SessionStart pode 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
Próximo → §12 · CI/CD & Headless
§12

CI/CD & Headless

avançado

TL;DRclaude -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

  1. PR review bot — roda em pull_request, posta findings como review comment.
  2. Test-fix loop — roda em workflow_dispatch, tenta consertar testes falhando, abre PR com o fix.
  3. 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 é sonnet no 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.
Aprofundar → cheatsheet card I/O & FORMAT · seção de recipes