⚡ AutomationsAI|Portal de Cursos →

Verificando acesso...

MÓDULO 2.1

📘 CLAUDE.md e a pasta .claude/

O coração da configuração do Claude Code num projeto — instruçÔes, settings, hooks, slash commands, permissĂ”es.

7
TĂłpicos
35
Minutos
Inter.
NĂ­vel
PrĂĄtico
Tipo

🎯O que vocĂȘ ganha aqui

Saber EXATAMENTE onde colocar cada peça da configuração do Claude Code. Sair do "joguei tudo no CLAUDE.md" pra ter settings, hooks, slash commands e permissĂ”es nos lugares certos — e funcionando.

ConteĂșdo detalhado

1

📜 CLAUDE.md — hierarquia e escopo

CLAUDE.md existe em trĂȘs nĂ­veis, todos concatenados no system prompt em ordem. Errar a hierarquia faz instrução de projeto sobrescrever global sem vocĂȘ perceber, ou pior — instrução global sufocando preferĂȘncia especĂ­fica do projeto.

Os 3 níveis (do mais genérico ao mais específico)

~/.claude/CLAUDE.md         ← Global (vocĂȘ, todos os projetos)
   ↓ concatena
./CLAUDE.md                 ← Projeto (raiz)
   ↓ concatena
./src/api/CLAUDE.md         ← Subdir (escopo desta pasta)

Quando Claude abre um arquivo em src/api/, vĂȘ os 3 arquivos. Quando abre um em src/ui/, vĂȘ sĂł os 2 primeiros (global + projeto).

✓ Bom CLAUDE.md

  • ‱ Comandos de build/test/lint LITERAIS no topo
  • ‱ ConvençÔes nĂŁo-Ăłbvias (nĂŁo repetir o que linter jĂĄ força)
  • ‱ Links pra ADRs/runbooks profundos
  • ‱ Tom de voz preferido em respostas
  • ‱ < 2KB (caber sem rolar)

✗ CLAUDE.md inchado

  • ‱ Repete style guide inteiro (que jĂĄ estĂĄ em .editorconfig)
  • ‱ HistĂłrico do projeto (irrelevante pro agente)
  • ‱ PolĂ­tica de RH (nĂŁo Ă© instrução de cĂłdigo)
  • ‱ 50+ KB de "best practices" genĂ©ricos
  • ‱ Documentação de bibliotecas internas

💡Regra de ouro

Se o conteĂșdo pode ser lido sob demanda (referĂȘncia), bota em references/ de uma skill ou em docs/ do projeto. Se Ă© sempre necessĂĄrio (build commands, convençÔes centrais), bota em CLAUDE.md. Default: tudo em references/, exceto prova em contrĂĄrio.

Conceitos-chave

3 nĂ­veis
Global, projeto, subdir
Concatenação
Tudo entra no prompt
PrecedĂȘncia
EspecĂ­fico ganha
2KB rule
Caber sem rolar
2

📂 Estrutura completa da pasta .claude/

A convenção Ă© rĂ­gida: nome certo, pasta certa, ou Claude nĂŁo enxerga. Aqui estĂĄ o mapa que vocĂȘ pode imprimir e colar do lado do monitor:

.claude/                          ─ raiz do projeto (tambĂ©m ~/.claude/ global)
├── CLAUDE.md                      ─ instruçÔes (pode estar na raiz do projeto)
├── settings.json                  ─ permissĂ”es, modelo, env, hooks
├── settings.local.json            ─ override local (.gitignore)
│
├── agents/                       ─ SUB-AGENTS em Markdown
│   ├── code-reviewer.md
│   └── doc-writer.md
│
├── skills/                       ─ SKILLS (pastas com SKILL.md)
│   └── my-skill/
│       ├── SKILL.md             ─ frontmatter + body
│       ├── scripts/             ─ scripts auxiliares
│       ├── references/          ─ docs lazy-load
│       └── assets/              ─ imagens/binários
│
├── commands/                     ─ SLASH COMMANDS
│   ├── review.md                ─ /review
│   ├── ship.md                  ─ /ship
│   └── plugin/sub.md            ─ /plugin:sub (namespaced)
│
├── hooks/                        ─ scripts disparados em eventos
│   ├── pre-commit.sh
│   └── on-stop.sh
│
└── output-styles/                ─ estilos de resposta
    └── concise.md

Global vs projeto — mesma estrutura

Tudo isso existe igual em ~/.claude/ (suas preferĂȘncias, vale em todo projeto) e em ./.claude/ (especĂ­fico desse projeto, commitado no git). Skills/agents do projeto tĂȘm precedĂȘncia sobre os globais quando nome coincide.

⚠Erros comuns de path

  • ‱ Colocar skill em .claude/skill/ (singular) → Claude nĂŁo vĂȘ
  • ‱ SKILL.md em letra minĂșscula → nĂŁo reconhece
  • ‱ Sub-agent em .claude/sub-agents/ → tem que ser agents/
  • ‱ Slash command sem .md → ignorado

Conceitos-chave

Convention
Nome certo, pasta certa
Mirror layout
Global = projeto
PrecedĂȘncia
Projeto > global
Gitignore parcial
.local.json fora
3

⚙ settings.json — o que vocĂȘ controla

Arquivo JSON com configuração comportamental. É onde vocĂȘ reduz fricção de permissĂŁo, troca modelo, injeta hooks. Override em cascata: user (~/.claude/) → project (.claude/) → local (.claude/settings.local.json).

settings.json comentado (exemplo real)

{
  "model": "claude-opus-4-6",         // modelo padrĂŁo da sessĂŁo
  "includeCoAuthoredBy": true,         // Co-Authored-By em commits

  "permissions": {
    "allow": [
      "Bash(ls:*)", "Bash(cat:*)",           // libera leitura
      "Bash(git status:*)", "Bash(git log:*)", // git read-only
      "Read", "Grep", "Glob"                   // tools bĂĄsicas
    ],
    "deny": [
      "Bash(rm -rf:*)",                       // nunca
      "Bash(curl:* | sh)"                     // pipe pra shell = nĂŁo
    ],
    "ask": [
      "Bash(git push:*)",                     // sempre confirma
      "Write", "Edit"                          // escrita = confirma
    ]
  },

  "env": {
    "CLAUDE_PROJECT_DIR": "${cwd}",
    "NODE_ENV": "development"
  },

  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "./scripts/log-bash.sh"
      }]
    }]
  }
}

user

~/.claude/settings.json

Suas preferĂȘncias em todos projetos. Modelo, theme, tom de voz.

project

.claude/settings.json

Vai pro git. PermissÔes e hooks que o time inteiro herda.

local

.claude/settings.local.json

Override local (.gitignore). Credenciais, env de dev.

Conceitos-chave

Cascata user → project → local
Cada um sobrescreve
allow/deny/ask
3 verbos de permissĂŁo
Env interpolation
${cwd}, ${env}
Matchers
Glob por tool
4

đŸȘ Hooks — a Ășnica forma de garantir comportamento

Hooks sĂŁo shell commands disparados pelo harness em eventos do agente. Eles RODAM, nĂŁo dependem do Claude lembrar de fazer. É a Ășnica forma de garantir determinismo ("sempre lint antes de commit").

⏼

PreToolUse — antes de cada tool

Roda antes de Claude executar uma ferramenta. Pode bloquear (exit ≠ 0) ou só logar.

Caso clĂĄssico: bloquear comandos perigosos, logar todo Bash, redirecionar Read pra MCP indexado.

⏭

PostToolUse — depois de cada tool

Roda depois. Recebe o output da tool, pode anotar contexto pra prĂłximas rodadas.

Caso clĂĄssico: rodar formatter apĂłs Edit, validar JSON depois de Write, indexar arquivo mudado.

âč

Stop — quando o agente decide parar

Roda quando Claude termina o turno. Permite checagem final.

Caso clĂĄssico: rodar testes, validar diff antes de devolver controle, exigir checklist completo.

🟱

SessionStart e UserPromptSubmit

SessionStart: roda ao abrir sessĂŁo. UserPromptSubmit: a cada mensagem sua.

Caso clĂĄssico: SessionStart popula MCP, UserPromptSubmit injeta contexto adicional (claude-mem, etc.).

💡Memory NÃO substitui hook

Quando vocĂȘ pede "sempre faz X", Claude pode esquecer (nĂŁo Ă© determinĂ­stico). Hook RODA. Pediu pra rodar lint antes de commit? Hook. Pediu pra logar comandos? Hook. MemĂłria de skill ajuda, mas pra garantia, hook.

Conceitos-chave

DeterminĂ­stico
Sempre roda
Exit code
0 ok, ≠0 bloqueia
Fail-open vs close
PolĂ­tica de erro
Matchers
Filtro por tool
5

⚡ Slash commands customizados

Arquivos markdown em .claude/commands/ que viram comandos slash automaticamente. Tarefa que vocĂȘ repete? Vira /comando e some.

Exemplo — .claude/commands/review.md

---
description: Revisa o diff atual procurando bugs de correção
allowed-tools: Bash(git diff:*), Read, Grep
---

Revise o diff atual da branch.

Procure:
- Bugs de correção (não estilo)
- Casos nĂŁo tratados (null, vazio, edge)
- Vulnerabilidades comuns (SQLi, XSS, path traversal)

Use \`$ARGUMENTS\` se passado para focar em arquivo especĂ­fico.

Retorne uma lista numerada de findings + severity.

Uso: /review ou /review src/api/auth.ts

✓ Bons casos de slash

  • ‱ /review — revisa diff atual
  • ‱ /ship — checklist prĂ©-merge
  • ‱ /test — gera testes pro arquivo aberto
  • ‱ /explain — explica trecho selecionado
  • ‱ /changelog — gera entrada do CHANGELOG

✗ Mau uso de slash

  • ‱ ConteĂșdo enorme que deveria ser skill
  • ‱ Comando que sĂł faz sentido pra vocĂȘ (usa user-level, nĂŁo projeto)
  • ‱ Sem allowed-tools (pode tudo)
  • ‱ Sem description (descobre sĂł lendo o arquivo)

Conceitos-chave

$ARGUMENTS
Args do comando
allowed-tools
Restringe surface
Namespace
/plugin:sub
User vs projeto
Escopo do slash
6

🔐 Sistema de permissĂ”es — fricção vs segurança

TrĂȘs verbos: allow (libera), deny (bloqueia), ask (pergunta). Configuração mal calibrada vira fricção (perguntar pra tudo) ou risco (liberar demais).

Categoria
Recomendado
Exemplo
Leitura/anĂĄlise
allow
Read, Grep, Glob, Bash(ls:*)
Git read-only
allow
Bash(git status:*), Bash(git log:*)
Edição
ask
Edit, Write
Push/merge
ask
Bash(git push:*), Bash(gh pr merge:*)
Destrutivo
deny
Bash(rm -rf:*), Bash(git push --force:*)
Curl com pipe
deny
Bash(curl:* | sh)

Modos de sessĂŁo

Independente das permissĂ”es do settings.json, vocĂȘ pode trocar o MODO ao vivo:

  • default: usa exatamente o settings
  • acceptEdits: aceita Edit/Write sem perguntar (Ăștil em refactor)
  • plan: sĂł planeja, nunca edita (Ăștil em arquitetura)
  • bypassPermissions: ignora tudo (perigoso — sĂł pra ambiente sandbox)

Conceitos-chave

3 verbos
allow/deny/ask
Glob patterns
Bash(cmd:*)
Modes
plan, acceptEdits
MCP allowlist
mcp__server__
7

đŸ§Ș Plan mode e output styles

Dois mecanismos pra trocar comportamento ao vivo sem editar settings. Plan mode congela edição (Claude planeja, não age). Output styles trocam o tom de resposta (concise, verbose, explanatory, etc.).

📋 Plan mode

Ativa com /plan ou flag --plan. Claude lĂȘ, pensa, propĂ”e — mas nĂŁo escreve nem roda destrutivo atĂ© vocĂȘ sair do modo.

Quando usar: refactor grande, escolha de arquitetura, hipĂłtese de bug. VocĂȘ quer alinhamento antes da ação.

🎹 Output styles

Ativa com /output-style concise. Vivem em .claude/output-styles/<nome>.md. Trocam tom sem mexer no system prompt.

Built-in: concise (objetivo), verbose (detalhado), explanatory (didĂĄtico). Customize criando seu prĂłprio.

💡Combo prático

Tarefa nova de arquitetura? Entra em /plan + /output-style verbose. Claude desenha tudo, vocĂȘ revisa, daĂ­ sai do plan mode e ele executa.

Conceitos-chave

Modo da sessĂŁo
NĂŁo precisa editar settings
/plan
SĂł lĂȘ, nĂŁo escreve
/output-style
Tom de resposta
Customização
.md em output-styles/

🎯Resumo do módulo

✓
CLAUDE.md tem 3 níveis — global, projeto, subdir; tudo concatenado.
✓
.claude/ tem convenção rígida — agents/, skills/, commands/, hooks/, output-styles/.
✓
settings.json em cascata — user → project → local.json (gitignore).
✓
Hooks sĂŁo determinĂ­sticos — Ășnica forma de GARANTIR comportamento.
✓
Slash commands = tarefa repetida virou comando — .md em .claude/commands/.
✓
allow leitura, ask escrita, deny destrutivo — calibração padrão.
✓
Plan mode + output styles ajustam ao vivo — sem editar settings.

PrĂłximo mĂłdulo:

2.2 — Skills, sub-agents e MCP no Claude Code