CLAUDE.md e regras), skills, hooks e muito mais.
Quando você omite settingSources, query() lê as mesmas configurações do sistema de arquivos que a CLI Claude Code: configurações de usuário, projeto e local, arquivos CLAUDE.md e skills, agentes e comandos em .claude/. Para executar sem estes, passe settingSources: [], o que limita o agente ao que você configura programaticamente. As configurações de política gerenciada e a configuração global ~/.claude.json são lidas independentemente desta opção. Veja O que settingSources não controla.
Para uma visão geral conceitual do que cada recurso faz e quando usá-lo, veja Extend Claude Code.
Controlar configurações do sistema de arquivos com settingSources
A opção de fontes de configuração (setting_sources em Python, settingSources em TypeScript) controla quais configurações baseadas em sistema de arquivos o SDK carrega. Passe uma lista explícita para optar por fontes específicas, ou passe um array vazio para desabilitar configurações de usuário, projeto e local.
Este exemplo carrega configurações de nível de usuário e nível de projeto definindo settingSources para ["user", "project"]:
<cwd> é o diretório de trabalho que você passa via opção cwd, ou o diretório atual do processo se não definido. Para a definição de tipo completa, veja SettingSource (TypeScript) ou SettingSource (Python).
| Fonte | O que carrega | Local |
|---|---|---|
"project" | CLAUDE.md do projeto, .claude/rules/*.md, skills do projeto, hooks do projeto, settings.json do projeto | <cwd>/.claude/ para settings.json e hooks; <cwd> e cada diretório pai para CLAUDE.md e rules; <cwd> e cada diretório pai até a raiz do repositório para skills |
"user" | CLAUDE.md do usuário, ~/.claude/rules/*.md, skills do usuário, configurações do usuário | ~/.claude/ |
"local" | CLAUDE.local.md, .claude/settings.local.json | <cwd>/.claude/ para settings.local.json; <cwd> e cada diretório pai para CLAUDE.local.md |
settingSources é equivalente a ["user", "project", "local"].
A opção cwd determina onde o SDK procura por entradas de nível de projeto. CLAUDE.md e rules carregam de <cwd> e de cada diretório pai. Skills carregam de <cwd> e de cada diretório pai até a raiz do repositório. settings.json do projeto e hooks carregam apenas de <cwd>/.claude/ sem fallback de diretório pai.
O que settingSources não controla
settingSources cobre configurações de usuário, projeto e local. Algumas entradas são lidas independentemente de seu valor:
| Entrada | Comportamento | Para desabilitar |
|---|---|---|
| Configurações de política gerenciada | Sempre carregadas quando presentes no host | Remova o arquivo de configurações gerenciadas |
Configuração global ~/.claude.json | Sempre lida | Relocalize com CLAUDE_CONFIG_DIR em env |
Memória automática em ~/.claude/projects/<project>/memory/ | Carregada por padrão no prompt do sistema | Defina autoMemoryEnabled: false nas configurações, ou CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 em env |
| Conectores MCP do claude.ai | Carregados quando o método de autenticação ativo é uma assinatura do claude.ai. Passar mcpServers: {} não os suprime | Defina strictMcpConfig: true, ou ENABLE_CLAUDEAI_MCP_SERVERS=false em env |
Instruções do projeto (CLAUDE.md e regras)
ArquivosCLAUDE.md e arquivos .claude/rules/*.md dão ao seu agente contexto persistente sobre seu projeto: convenções de codificação, comandos de compilação, decisões de arquitetura e instruções. Quando settingSources inclui "project" (como no exemplo acima), o SDK carrega esses arquivos em contexto no início da sessão. O agente então segue suas convenções de projeto sem você repeti-las em cada prompt.
CLAUDE.md load locations
| Nível | Local | Quando carregado |
|---|---|---|
| Projeto (raiz) | <cwd>/CLAUDE.md ou <cwd>/.claude/CLAUDE.md | settingSources inclui "project" |
| Regras do projeto | <cwd>/.claude/rules/*.md e .claude/rules/*.md em cada diretório pai | settingSources inclui "project" |
| Projeto (diretórios pai) | Arquivos CLAUDE.md em diretórios acima de cwd | settingSources inclui "project", carregado no início da sessão |
| Projeto (diretórios filho) | Arquivos CLAUDE.md em subdiretórios de cwd | settingSources inclui "project", carregado sob demanda quando o agente lê um arquivo nessa subárvore |
| Local | <cwd>/CLAUDE.local.md e CLAUDE.local.md em cada diretório pai | settingSources inclui "local" |
| Usuário | ~/.claude/CLAUDE.md | settingSources inclui "user" |
| Regras do usuário | ~/.claude/rules/*.md | settingSources inclui "user" |
CLAUDE.md de projeto e usuário, o agente vê ambos. Não há regra de precedência rígida entre níveis; se as instruções conflitarem, o resultado depende de como Claude as interpreta. Escreva regras não conflitantes, ou declare precedência explicitamente no arquivo mais específico (“Estas instruções de projeto substituem quaisquer padrões conflitantes de nível de usuário”).
Para como estruturar e organizar conteúdo CLAUDE.md, veja Manage Claude’s memory.
Skills
Skills são arquivos markdown que dão ao seu agente conhecimento especializado e fluxos de trabalho invocáveis. Diferentemente deCLAUDE.md (que carrega a cada sessão), skills carregam sob demanda. O agente recebe descrições de skills na inicialização e carrega o conteúdo completo quando relevante.
Skills são descobertos do sistema de arquivos através de settingSources. Quando a opção skills em query() é omitida, skills de usuário e projeto descobertos são habilitados e a ferramenta Skill fica disponível, correspondendo ao comportamento da CLI. Para controlar quais skills são habilitados, passe skills como "all", uma lista de nomes de skills, ou [] para desabilitar todos. Quando skills é definido, o SDK adiciona a ferramenta Skill a allowedTools automaticamente. Se você também passar uma lista explícita de tools, inclua "Skill" nessa lista para que Claude possa invocar skills.
Skills devem ser criados como artefatos do sistema de arquivos (
.claude/skills/<name>/SKILL.md). O SDK não tem uma API programática para registrar skills. Veja Agent Skills in the SDK para detalhes completos.Hooks
O SDK suporta duas maneiras de definir hooks, e eles executam lado a lado:- Filesystem hooks: comandos shell definidos em
settings.json, carregados quandosettingSourcesinclui a fonte relevante. Estes são os mesmos hooks que você configuraria para sessões interativas de Claude Code. - Programmatic hooks: funções de callback passadas diretamente para
query(). Estes executam em seu processo de aplicação e podem retornar decisões estruturadas. Veja Control execution with hooks.
settings.json do seu projeto e você define settingSources: ["project"], esses hooks executam automaticamente no SDK sem configuração extra.
Callbacks de hook recebem a entrada da ferramenta e retornam um dict de decisão. Retornar {} significa permitir que a ferramenta prossiga. Para bloquear a execução, retorne um objeto hookSpecificOutput com permissionDecision: "deny" e um permissionDecisionReason. A razão é enviada para Claude como o resultado da ferramenta. Os campos decision e reason de nível superior estão descontinuados para PreToolUse. Veja o hooks guide para a assinatura de callback completa e tipos de retorno.
Quando usar qual tipo de hook
| Tipo de hook | Melhor para |
|---|---|
Filesystem (settings.json) | Compartilhar hooks entre sessões CLI e SDK. Suporta "command" (scripts shell), "http" (POST para um endpoint), "mcp_tool" (chamar a ferramenta de um servidor MCP conectado), "prompt" (LLM avalia um prompt), e "agent" (spawns um agente verificador). Estes disparam no agente principal e em qualquer subagente que ele spawna. |
Programmatic (callbacks em query()) | Lógica específica da aplicação, decisões estruturadas e integração em processo. Estes também disparam dentro de subagentes. O callback recebe agent_id e agent_type para distinguir. |
O SDK TypeScript suporta eventos de hook adicionais além de Python, incluindo
SessionStart, SessionEnd, TeammateIdle, e TaskCompleted. Veja o hooks guide para a tabela de compatibilidade de eventos completa.Escolha o recurso certo
O Agent SDK oferece acesso a várias maneiras de estender o comportamento do seu agente. Se você não tem certeza qual usar, esta tabela mapeia objetivos comuns para a abordagem correta.| Você quer… | Use | Superfície SDK |
|---|---|---|
| Definir convenções de projeto que seu agente sempre segue | CLAUDE.md | settingSources: ["project"] carrega automaticamente |
| Dar ao agente material de referência que ele carrega quando relevante | Skills | opção settingSources + skills |
| Executar um fluxo de trabalho reutilizável (deploy, review, release) | User-invocable skills | opção settingSources + skills |
| Delegar uma subtarefa isolada para um contexto fresco (research, review) | Subagents | parâmetro agents + allowedTools: ["Agent"] |
| Coordenar múltiplas instâncias de Claude Code com listas de tarefas compartilhadas e mensagens diretas entre agentes | Agent teams | Não configurado diretamente via opções SDK. Agent teams são um recurso CLI onde uma sessão atua como o líder da equipe, coordenando trabalho entre colegas independentes |
| Executar lógica determinística em chamadas de ferramenta (audit, block, transform) | Hooks | parâmetro hooks com callbacks, ou scripts shell carregados via settingSources |
| Dar a Claude acesso estruturado a ferramenta para um serviço externo | MCP | parâmetro mcpServers |
Related resources
- Extend Claude Code: Visão geral conceitual de todos os recursos de extensão, com tabelas de comparação e análise de custo de contexto
- Skills in the SDK: Guia completo para usar skills programaticamente
- Subagents: Defina e invoque subagents para subtarefas isoladas
- Hooks: Intercepte e controle comportamento do agente em pontos-chave de execução
- Permissions: Controle acesso a ferramentas com modos, regras e callbacks
- System prompts: Injete contexto sem arquivos CLAUDE.md