Skip to content

Referência Completa do Arquivo de Configuração: settings.json

O Que Você Vai Aprender

  • Compreender completamente todas as opções de configuração do ~/.claude/settings.json
  • Personalizar fluxos de trabalho de automação com Hooks
  • Configurar e gerenciar servidores MCP
  • Modificar manifesto de plugins e configuração de caminhos
  • Resolver conflitos de configuração e falhas

O Dilema Atual

Você já está usando o Everything Claude Code, mas encontra estes problemas:

  • "Por que um determinado Hook não está sendo acionado?"
  • "Falha na conexão do servidor MCP, onde está o erro na configuração?"
  • "Quero personalizar uma funcionalidade, qual arquivo de configuração devo modificar?"
  • "Múltiplos arquivos de configuração se sobrepõem, qual é a prioridade?"

Este tutorial fornecerá um manual de referência completo de configuração.

Conceito Central

O sistema de configuração do Claude Code é dividido em três níveis, com prioridade do mais alto para o mais baixo:

  1. Configuração em Nível de Projeto (.claude/settings.json) - Efetivo apenas no projeto atual
  2. Configuração Global (~/.claude/settings.json) - Efetivo em todos os projetos
  3. Configuração Integrada do Plugin (Configuração padrão do Everything Claude Code)

Prioridade de Configuração

As configurações são mescladas em vez de sobrescritas. A configuração em nível de projeto sobrescreve opções com o mesmo nome na configuração global, mas mantém outras opções.

O arquivo de configuração usa formato JSON, seguindo o Claude Code Settings Schema:

json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json"
}

Este schema fornece autocompletar e validação, recomenda-se sempre incluí-lo.

Estrutura do Arquivo de Configuração

Template de Configuração Completo

json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",

  "mcpServers": {},

  "hooks": {
    "PreToolUse": [],
    "PostToolUse": [],
    "SessionStart": [],
    "SessionEnd": [],
    "PreCompact": [],
    "Stop": []
  },

  "disabledMcpServers": [],

  "environmentVariables": {}
}

Regras de Sintaxe JSON

  • Todos os nomes de chaves e valores de string devem ser envolvidos em aspas duplas
  • Não adicione vírgula após o último par chave-valor
  • Comentários não são sintaxe JSON padrão, use o campo "_comments" como alternativa

Configuração Detalhada de Hooks

Hooks são o mecanismo central de automação do Everything Claude Code, definindo scripts automatizados acionados em eventos específicos.

Tipos de Hook e Momentos de Acionamento

Tipo de HookMomento de AcionamentoPropósito
SessionStartQuando a sessão do Claude Code iniciaCarregar contexto, detectar gerenciador de pacotes
SessionEndQuando a sessão do Claude Code terminaSalvar estado da sessão, avaliar padrões de extração
PreToolUseAntes da chamada de ferramentaValidar comandos, bloquear operações perigosas
PostToolUseApós a chamada de ferramentaFormatar código, verificação de tipos
PreCompactAntes da compactação de contextoSalvar snapshot de estado
StopAo final de cada resposta da IAVerificar problemas como console.log

Estrutura de Configuração de Hook

Cada entrada de Hook contém os seguintes campos:

json
{
  "matcher": "tool == \"Bash\" && tool_input.command matches \"npm run dev\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"console.log('Hook triggered')\""
    }
  ],
  "description": "Descrição do Hook (opcional)"
}

Campo matcher

Define condições de acionamento, suporta as seguintes variáveis:

VariávelSignificadoValor de Exemplo
toolNome da ferramenta"Bash", "Write", "Edit"
tool_input.commandConteúdo do comando Bash"npm run dev"
tool_input.file_pathCaminho do arquivo Write/Edit"/path/to/file.ts"

Operadores de Correspondência:

javascript
// Igualdade
tool == "Bash"

// Correspondência regex
tool_input.command matches "npm run dev"
tool_input.file_path matches "\\\\.ts$"

// Operações lógicas
tool == "Edit" || tool == "Write"
tool == "Bash" && !(tool_input.command matches "git push")

Array hooks

Define ações a executar, suporta dois tipos:

Tipo 1: command

json
{
  "type": "command",
  "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/suggest-compact.js\""
}
  • ${CLAUDE_PLUGIN_ROOT} variável do diretório raiz do plugin
  • O comando é executado no diretório raiz do projeto
  • Saída em formato JSON padrão é passada para o Claude Code

Tipo 2: prompt (não usado nesta configuração)

json
{
  "type": "prompt",
  "prompt": "Review the code before committing"
}

Exemplos Completos de Configuração de Hooks

O Everything Claude Code fornece mais de 15 Hooks pré-configurados, aqui está a explicação completa da configuração:

Hooks PreToolUse

1. Tmux Dev Server Block

json
{
  "matcher": "tool == \"Bash\" && tool_input.command matches \"(npm run dev|pnpm( run)? dev|yarn dev|bun run dev)\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"console.error('[Hook] BLOCKED: Dev server must run in tmux for log access');console.error('[Hook] Use: tmux new-session -d -s dev \\\"npm run dev\\\"');console.error('[Hook] Then: tmux attach -t dev');process.exit(1)\""
    }
  ],
  "description": "Block dev servers outside tmux - ensures you can access logs"
}

Propósito: Forçar a execução do servidor de desenvolvimento no tmux, garantindo que os logs sejam acessíveis.

Comandos Correspondentes:

  • npm run dev
  • pnpm dev / pnpm run dev
  • yarn dev
  • bun run dev

2. Tmux Reminder

json
{
  "matcher": "tool == \"Bash\" && tool_input.command matches \"(npm (install|test)|pnpm (install|test)|yarn (install|test)?|bun (install|test)|cargo build|make|docker|pytest|vitest|playwright)\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"if(!process.env.TMUX){console.error('[Hook] Consider running in tmux for session persistence');console.error('[Hook] tmux new -s dev  |  tmux attach -t dev')}\""
    }
  ],
  "description": "Reminder to use tmux for long-running commands"
}

Propósito: Lembrar de usar tmux para executar comandos de longa duração.

Comandos Correspondentes:

  • npm install, npm test
  • pnpm install, pnpm test
  • cargo build, make, docker
  • pytest, vitest, playwright

3. Git Push Reminder

json
{
  "matcher": "tool == \"Bash\" && tool_input.command matches \"git push\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"console.error('[Hook] Review changes before push...');console.error('[Hook] Continuing with push (remove this hook to add interactive review)')\""
    }
  ],
  "description": "Reminder before git push to review changes"
}

Propósito: Lembrar de revisar alterações antes de fazer push.

4. Block Random MD Files

json
{
  "matcher": "tool == \"Write\" && tool_input.file_path matches \"\\\\.(md|txt)$\" && !(tool_input.file_path matches \"README\\\\.md|CLAUDE\\\\.md|AGENTS\\\\.md|CONTRIBUTING\\\\.md\")",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"const fs=require('fs');let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const i=JSON.parse(d);const p=i.tool_input?.file_path||'';if(/\\.(md|txt)$/.test(p)&&!/(README|CLAUDE|AGENTS|CONTRIBUTING)\\.md$/.test(p)){console.error('[Hook] BLOCKED: Unnecessary documentation file creation');console.error('[Hook] File: '+p);console.error('[Hook] Use README.md for documentation instead');process.exit(1)}console.log(d)})\""
    }
  ],
  "description": "Block creation of random .md files - keeps docs consolidated"
}

Propósito: Bloquear a criação de arquivos .md aleatórios, mantendo a documentação consolidada.

Arquivos Permitidos:

  • README.md
  • CLAUDE.md
  • AGENTS.md
  • CONTRIBUTING.md

5. Suggest Compact

json
{
  "matcher": "tool == \"Edit\" || tool == \"Write\"",
  "hooks": [
    {
      "type": "command",
      "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/suggest-compact.js\""
    }
  ],
  "description": "Suggest manual compaction at logical intervals"
}

Propósito: Sugerir compactação manual de contexto em intervalos lógicos.

Hook SessionStart

Load Previous Context

json
{
  "matcher": "*",
  "hooks": [
    {
      "type": "command",
      "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/session-start.js\""
    }
  ],
  "description": "Load previous context and detect package manager on new session"
}

Propósito: Carregar contexto da sessão anterior e detectar gerenciador de pacotes.

Hooks PostToolUse

1. Log PR URL

json
{
  "matcher": "tool == \"Bash\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const i=JSON.parse(d);const cmd=i.tool_input?.command||'';if(/gh pr create/.test(cmd)){const out=i.tool_output?.output||'';const m=out.match(/https:\\/\\/github.com\\/[^/]+\\/[^/]+\\/pull\\/\\d+/);if(m){console.error('[Hook] PR created: '+m[0]);const repo=m[0].replace(/https:\\/\\/github.com\\/([^/]+\\/[^/]+)\\/pull\\/\\d+/,'$1');const pr=m[0].replace(/.*\\/pull\\/(\\d+)/,'$1');console.error('[Hook] To review: gh pr review '+pr+' --repo '+repo)}}console.log(d)})\""
    }
  ],
  "description": "Log PR URL and provide review command after PR creation"
}

Propósito: Registrar URL do PR e fornecer comando de revisão após a criação do PR.

2. Auto Format

json
{
  "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.(ts|tsx|js|jsx)$\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"const{execSync}=require('child_process');const fs=require('fs');let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const i=JSON.parse(d);const p=i.tool_input?.file_path;if(p&&fs.existsSync(p)){try{execSync('npx prettier --write \"'+p+'\"',{stdio:['pipe','pipe','pipe']})}catch(e){}}console.log(d)})\""
    }
  ],
  "description": "Auto-format JS/TS files with Prettier after edits"
}

Propósito: Formatar automaticamente arquivos JS/TS com Prettier.

3. TypeScript Check

json
{
  "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.(ts|tsx)$\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"const{execSync}=require('child_process');const fs=require('fs');const path=require('path');let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const i=JSON.parse(d);const p=i.tool_input?.file_path;if(p&&fs.existsSync(p)){let dir=path.dirname(p);while(dir!==path.dirname(dir)&&!fs.existsSync(path.join(dir,'tsconfig.json'))){dir=path.dirname(dir)}if(fs.existsSync(path.join(dir,'tsconfig.json'))){try{const r=execSync('npx tsc --noEmit --pretty false 2>&1',{cwd:dir,encoding:'utf8',stdio:['pipe','pipe','pipe']});const lines=r.split('\\n').filter(l=>l.includes(p)).slice(0,10);if(lines.length)console.error(lines.join('\\n'))}catch(e){const lines=(e.stdout||'').split('\\n').filter(l=>l.includes(p)).slice(0,10);if(lines.length)console.error(lines.join('\\n'))}}}console.log(d)})\""
    }
  ],
  "description": "TypeScript check after editing .ts/.tsx files"
}

Propósito: Executar verificação de tipos após editar arquivos TypeScript.

4. Console.log Warning

json
{
  "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.(ts|tsx|js|jsx)$\"",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"const fs=require('fs');let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const i=JSON.parse(d);const p=i.tool_input?.file_path;if(p&&fs.existsSync(p)){const c=fs.readFileSync(p,'utf8');const lines=c.split('\\n');const matches=[];lines.forEach((l,idx)=>{if(/console\\.log/.test(l))matches.push((idx+1)+': '+l.trim())});if(matches.length){console.error('[Hook] WARNING: console.log found in '+p);matches.slice(0,5).forEach(m=>console.error(m));console.error('[Hook] Remove console.log before committing')}}console.log(d)})\""
    }
  ],
  "description": "Warn about console.log statements after edits"
}

Propósito: Detectar e avisar sobre declarações console.log no arquivo.

Hook Stop

Check Console.log in Modified Files

json
{
  "matcher": "*",
  "hooks": [
    {
      "type": "command",
      "command": "node -e \"const{execSync}=require('child_process');const fs=require('fs');let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{execSync('git rev-parse --git-dir',{stdio:'pipe'})}catch{console.log(d);process.exit(0)}try{const files=execSync('git diff --name-only HEAD',{encoding:'utf8',stdio:['pipe','pipe','pipe']}).split('\\n').filter(f=>/\\.(ts|tsx|js|jsx)$/.test(f)&&fs.existsSync(f));let hasConsole=false;for(const f of files){if(fs.readFileSync(f,'utf8').includes('console.log')){console.error('[Hook] WARNING: console.log found in '+f);hasConsole=true}}if(hasConsole)console.error('[Hook] Remove console.log statements before committing')}catch(e){}console.log(d)})\""
    }
  ],
  "description": "Check for console.log in modified files after each response"
}

Propósito: Verificar console.log em arquivos modificados.

Hook PreCompact

Save State Before Compaction

json
{
  "matcher": "*",
  "hooks": [
    {
      "type": "command",
      "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/pre-compact.js\""
    }
  ],
  "description": "Save state before context compaction"
}

Propósito: Salvar estado antes da compactação de contexto.

Hooks SessionEnd

1. Persist Session State

json
{
  "matcher": "*",
  "hooks": [
    {
      "type": "command",
      "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/session-end.js\""
    }
  ],
  "description": "Persist session state on end"
}

Propósito: Persistir estado da sessão.

2. Evaluate Session

json
{
  "matcher": "*",
  "hooks": [
    {
      "type": "command",
      "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/evaluate-session.js\""
    }
  ],
  "description": "Evaluate session for extractable patterns"
}

Propósito: Avaliar sessão para extrair padrões reutilizáveis.

Personalizar Hooks

Você pode personalizar Hooks das seguintes maneiras:

Método 1: Modificar settings.json

bash
# Editar configuração global
vim ~/.claude/settings.json
json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "tool == \"Bash\" && tool_input.command matches \"your_pattern\"",
        "hooks": [
          {
            "type": "command",
            "command": "node -e \"console.log('Your custom hook')\""
          }
        ],
        "description": "Your custom hook"
      }
    ]
  }
}

Método 2: Sobrescrever com Configuração em Nível de Projeto

Crie .claude/settings.json no diretório raiz do projeto:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "tool == \"Bash\" && tool_input.command matches \"your_custom_command\"",
        "hooks": [
          {
            "type": "command",
            "command": "node -e \"console.log('Project-specific hook')\""
          }
        ]
      }
    ]
  }
}

Vantagens da Configuração em Nível de Projeto

  • Não afeta a configuração global
  • Efetivo apenas no projeto específico
  • Pode ser commitado no controle de versão

Configuração Detalhada de Servidores MCP

MCP (Model Context Protocol) servidores expandem as capacidades de integração com serviços externos do Claude Code.

Estrutura de Configuração MCP

json
{
  "mcpServers": {
    "server_name": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-name"],
      "env": {
        "ENV_VAR": "your_value"
      },
      "description": "Server description"
    },
    "http_server": {
      "type": "http",
      "url": "https://example.com/mcp",
      "description": "HTTP server description"
    }
  }
}

Tipos de Servidor MCP

Tipo 1: npx

json
{
  "github": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"],
    "env": {
      "GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT_HERE"
    },
    "description": "GitHub operations - PRs, issues, repos"
  }
}

Descrição dos Campos:

  • command: Comando de execução, geralmente npx
  • args: Array de argumentos, -y confirma instalação automaticamente
  • env: Objeto de variáveis de ambiente
  • description: Texto descritivo

Tipo 2: http

json
{
  "vercel": {
    "type": "http",
    "url": "https://mcp.vercel.com",
    "description": "Vercel deployments and projects"
  }
}

Descrição dos Campos:

  • type: Deve ser "http"
  • url: URL do servidor
  • description: Texto descritivo

Servidores MCP Pré-configurados do Everything Claude Code

A seguir está a lista de todos os servidores MCP pré-configurados:

Nome do ServidorTipoDescriçãoRequer Configuração
githubnpxOperações GitHub (PR, Issues, Repos)GitHub PAT
firecrawlnpxWeb scraping e crawlingFirecrawl API Key
supabasenpxOperações de banco de dados SupabaseProject Ref
memorynpxMemória persistente entre sessõesNão
sequential-thinkingnpxRaciocínio em cadeiaNão
vercelhttpGerenciamento de deploys e projetos VercelNão
railwaynpxDeploys RailwayNão
cloudflare-docshttpBusca de documentação CloudflareNão
cloudflare-workers-buildshttpBuilds Cloudflare WorkersNão
cloudflare-workers-bindingshttpBindings Cloudflare WorkersNão
cloudflare-observabilityhttpLogs e monitoramento CloudflareNão
clickhousehttpConsultas analíticas ClickHouseNão
context7npxBusca de documentação em tempo realNão
magicnpxComponentes Magic UINão
filesystemnpxOperações de sistema de arquivosConfiguração de caminho

Adicionar Servidores MCP

Adicionar a Partir de Pré-configurados

  1. Copie a configuração do servidor de mcp-configs/mcp-servers.json
  2. Cole no seu ~/.claude/settings.json
json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"
      },
      "description": "GitHub operations - PRs, issues, repos"
    }
  }
}
  1. Substitua os placeholders YOUR_*_HERE pelos valores reais

Adicionar Servidor MCP Personalizado

json
{
  "mcpServers": {
    "my_custom_server": {
      "command": "npx",
      "args": ["-y", "@your-org/your-server"],
      "env": {
        "API_KEY": "your_api_key"
      },
      "description": "Custom MCP server"
    }
  }
}

Desabilitar Servidores MCP

Use o array disabledMcpServers para desabilitar servidores específicos:

json
{
  "mcpServers": {
    "github": { /* ... */ },
    "firecrawl": { /* ... */ }
  },
  "disabledMcpServers": ["github", "firecrawl"]
}

Aviso sobre Janela de Contexto

Habilitar muitos servidores MCP ocupará grande parte da janela de contexto. Recomenda-se habilitar < 10 servidores MCP.

Configuração Detalhada de Plugins

Estrutura do plugin.json

.claude-plugin/plugin.json é o arquivo de manifesto do plugin, definindo metadados e caminhos de componentes.

json
{
  "name": "everything-claude-code",
  "description": "Complete collection of battle-tested Claude Code configs",
  "author": {
    "name": "Affaan Mustafa",
    "url": "https://x.com/affaanmustafa"
  },
  "homepage": "https://github.com/affaan-m/everything-claude-code",
  "repository": "https://github.com/affaan-m/everything-claude-code",
  "license": "MIT",
  "keywords": [
    "claude-code",
    "agents",
    "skills",
    "hooks",
    "commands",
    "rules",
    "tdd",
    "code-review",
    "security",
    "workflow",
    "automation",
    "best-practices"
  ],
  "commands": "./commands",
  "skills": "./skills"
}

Descrição dos Campos

CampoTipoObrigatórioDescrição
namestringSNome do plugin
descriptionstringSDescrição do plugin
author.namestringSNome do autor
author.urlstringNURL da página do autor
homepagestringNPágina inicial do plugin
repositorystringNURL do repositório
licensestringNLicença
keywordsstring[]NArray de palavras-chave
commandsstringSCaminho do diretório de comandos
skillsstringSCaminho do diretório de skills

Modificar Caminhos do Plugin

Se você precisa personalizar caminhos de componentes, modifique plugin.json:

json
{
  "name": "my-custom-claude-config",
  "commands": "./custom-commands",
  "skills": "./custom-skills"
}

Outros Arquivos de Configuração

package-manager.json

Configuração do gerenciador de pacotes, suporta nível de projeto e global:

json
{
  "packageManager": "pnpm"
}

Localização:

  • Global: ~/.claude/package-manager.json
  • Projeto: .claude/package-manager.json

marketplace.json

Manifesto do marketplace de plugins, usado para o comando /plugin marketplace add:

json
{
  "name": "everything-claude-code",
  "displayName": "Everything Claude Code",
  "description": "Complete collection of Claude Code configs",
  "url": "https://github.com/affaan-m/everything-claude-code"
}

statusline.json

Exemplo de configuração da barra de status:

json
{
  "items": [
    {
      "type": "text",
      "text": "Everything Claude Code"
    }
  ]
}

Mesclagem e Prioridade de Arquivos de Configuração

Estratégia de Mesclagem

Os arquivos de configuração são mesclados na seguinte ordem (posterior tem prioridade):

  1. Configuração integrada do plugin
  2. Configuração global (~/.claude/settings.json)
  3. Configuração do projeto (.claude/settings.json)

Exemplo:

json
// Configuração integrada do plugin
{
  "hooks": {
    "PreToolUse": [/* Hook A */]
  }
}

// Configuração global
{
  "hooks": {
    "PreToolUse": [/* Hook B */]
  }
}

// Configuração do projeto
{
  "hooks": {
    "PreToolUse": [/* Hook C */]
  }
}

// Resultado final da mesclagem (configuração do projeto tem prioridade)
{
  "hooks": {
    "PreToolUse": [/* Hook C */]  // Hook C sobrescreve A e B
  }
}

Observações

  • Arrays com o mesmo nome são completamente sobrescritos, não são anexados
  • Recomenda-se definir apenas as partes que precisam ser sobrescritas na configuração do projeto
  • Use o comando /debug config para visualizar a configuração completa

Configuração de Variáveis de Ambiente

Defina variáveis de ambiente em settings.json:

json
{
  "environmentVariables": {
    "CLAUDE_PACKAGE_MANAGER": "pnpm",
    "NODE_ENV": "development"
  }
}

Lembrete de Segurança

  • Variáveis de ambiente são expostas no arquivo de configuração
  • Não armazene informações sensíveis no arquivo de configuração
  • Use variáveis de ambiente do sistema ou arquivos .env para gerenciar chaves

Solução de Problemas Comuns de Configuração

Problema 1: Hook Não Dispara

Possíveis Causas:

  1. Expressão matcher incorreta
  2. Formato de configuração do Hook incorreto
  3. Arquivo de configuração não salvo corretamente

Passos de Diagnóstico:

bash
# Verificar sintaxe da configuração
cat ~/.claude/settings.json | python -m json.tool

# Verificar se o Hook foi carregado
# Execute no Claude Code
/debug config

Correções Comuns:

json
// ❌ Erro: aspas simples
{
  "matcher": "tool == 'Bash'"
}

// ✅ Correto: aspas duplas
{
  "matcher": "tool == \"Bash\""
}

Problema 2: Falha na Conexão do Servidor MCP

Possíveis Causas:

  1. Variáveis de ambiente não configuradas
  2. Problemas de rede
  3. URL do servidor incorreta

Passos de Diagnóstico:

bash
# Testar servidor MCP
npx @modelcontextprotocol/server-github --help

# Verificar variáveis de ambiente
echo $GITHUB_PERSONAL_ACCESS_TOKEN

Correções Comuns:

json
// ❌ Erro: nome da variável de ambiente incorreto
{
  "env": {
    "GITHUB_TOKEN": "ghp_xxx"  // Deveria ser GITHUB_PERSONAL_ACCESS_TOKEN
  }
}

// ✅ Correto
{
  "env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx"
  }
}

Problema 3: Conflito de Configuração

Sintoma: Algumas opções de configuração não têm efeito

Causa: Configuração em nível de projeto sobrescreveu a configuração global

Solução:

bash
# Visualizar configuração do projeto
cat .claude/settings.json

# Visualizar configuração global
cat ~/.claude/settings.json

# Excluir configuração do projeto (se não for necessária)
rm .claude/settings.json

Problema 4: Erro de Formato JSON

Sintoma: Claude Code não consegue ler a configuração

Ferramentas de Diagnóstico:

bash
# Usar jq para validar
cat ~/.claude/settings.json | jq '.'

# Usar Python para validar
cat ~/.claude/settings.json | python -m json.tool

# Usar ferramenta online
# https://jsonlint.com/

Erros Comuns:

json
// ❌ Erro: vírgula no final
{
  "hooks": {
    "PreToolUse": []
  },
}

// ❌ Erro: aspas simples
{
  "description": 'Hooks configuration'
}

// ❌ Erro: comentário
{
  "hooks": {
    // This is a comment
  }
}

// ✅ Correto
{
  "hooks": {
    "PreToolUse": []
  }
}

Resumo da Lição

Esta lição explicou sistematicamente o sistema completo de configuração do Everything Claude Code:

Conceitos Centrais:

  • Configuração dividida em três níveis: projeto, global, plugin
  • Prioridade de configuração: projeto > global > plugin
  • Formato JSON estrito, atenção a aspas duplas e sintaxe

Configuração de Hooks:

  • 6 tipos de Hook, mais de 15 Hooks pré-configurados
  • Expressão matcher define condições de acionamento
  • Suporta Hooks personalizados e sobrescrita em nível de projeto

Servidores MCP:

  • Dois tipos: npx e http
  • Mais de 15 servidores pré-configurados
  • Suporta desabilitação e personalização

Configuração de Plugins:

  • plugin.json define metadados do plugin
  • Suporta caminhos de componentes personalizados
  • marketplace.json usado para marketplace de plugins

Outras Configurações:

  • package-manager.json: configuração do gerenciador de pacotes
  • statusline.json: configuração da barra de status
  • environmentVariables: definição de variáveis de ambiente

Problemas Comuns:

  • Hook não dispara → Verificar matcher e formato JSON
  • Falha na conexão MCP → Verificar variáveis de ambiente e rede
  • Conflito de configuração → Visualizar configurações em nível de projeto e global
  • Erro de formato JSON → Usar jq ou ferramentas online para validar

Prévia da Próxima Lição

Na próxima lição vamos aprender Referência Completa de Rules: Explicação Detalhada de 8 Conjuntos de Regras.

Você vai aprender:

  • Regras de Security: Prevenir vazamento de dados sensíveis
  • Regras de Coding Style: Estilo de código e melhores práticas
  • Regras de Testing: Cobertura de testes e requisitos de TDD
  • Regras de Git Workflow: Padrões de commit e fluxo de PR
  • Como personalizar conjuntos de regras para atender às necessidades do projeto

Apêndice: Referência do Código-Fonte

Clique para expandir e ver a localização do código-fonte

Última atualização: 2026-01-25

FuncionalidadeCaminho do ArquivoLinhas
Configuração de Hookshooks/hooks.json1-158
Manifesto do plugin.claude-plugin/plugin.json1-28
Configuração de servidores MCPmcp-configs/mcp-servers.json1-92
Manifesto do marketplace.claude-plugin/marketplace.json-

Scripts de Hook Principais:

  • session-start.js: Carregar contexto ao iniciar sessão
  • session-end.js: Salvar estado ao terminar sessão
  • suggest-compact.js: Sugerir compactação manual de contexto
  • pre-compact.js: Salvar estado antes da compactação
  • evaluate-session.js: Avaliar sessão para extrair padrões

Variáveis de Ambiente Principais:

  • CLAUDE_PLUGIN_ROOT: Diretório raiz do plugin
  • GITHUB_PERSONAL_ACCESS_TOKEN: Autenticação da API GitHub
  • FIRECRAWL_API_KEY: Autenticação da API Firecrawl