SpyBara
Go Premium

agent-sdk/claude-code-features.md 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

283 added, 0 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

Usar características de Claude Code en el SDK

Cargue instrucciones de proyecto, skills, hooks y otras características de Claude Code en sus agentes SDK.

El Agent SDK se basa en la misma base que Claude Code, lo que significa que sus agentes SDK tienen acceso a las mismas características basadas en el sistema de archivos: instrucciones de proyecto (CLAUDE.md y reglas), skills, hooks y más.

Cuando omite settingSources, query() lee la misma configuración del sistema de archivos que la CLI de Claude Code: configuración de usuario, proyecto y local, archivos CLAUDE.md y skills, agentes y comandos en .claude/. Para ejecutar sin estos, pase settingSources: [], lo que limita el agente a lo que configure programáticamente. La configuración de políticas administradas y la configuración global ~/.claude.json se leen independientemente de esta opción. Consulte Qué settingSources no controla.

Para una descripción conceptual de lo que hace cada característica y cuándo usarla, consulte Extender Claude Code.

Controlar la configuración del sistema de archivos con settingSources

La opción de fuentes de configuración (setting_sources en Python, settingSources en TypeScript) controla qué configuración basada en el sistema de archivos carga el SDK. Pase una lista explícita para optar por fuentes específicas, o pase una matriz vacía para deshabilitar la configuración de usuario, proyecto y local.

Este ejemplo carga tanto la configuración a nivel de usuario como a nivel de proyecto estableciendo settingSources en ["user", "project"]:

from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

async for message in query(
prompt="Help me refactor the auth module",
options=ClaudeAgentOptions(
# "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.
# Together they give the agent access to CLAUDE.md, skills, hooks, and
# permissions from both locations.
setting_sources=["user", "project"],
allowed_tools=["Read", "Edit", "Bash"],
),
):
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text)
if isinstance(message, ResultMessage) and message.subtype == "success":
print(f"\nResult: {message.result}")

Cada fuente carga la configuración desde una ubicación específica, donde <cwd> es el directorio de trabajo que pasa a través de la opción cwd (o el directorio actual del proceso si no está establecido). Para la definición de tipo completa, consulte SettingSource (TypeScript) o SettingSource (Python).

Fuente Qué carga Ubicación
"project" CLAUDE.md del proyecto, .claude/rules/*.md, skills del proyecto, hooks del proyecto, settings.json del proyecto <cwd>/.claude/ y cada directorio padre hasta la raíz del sistema de archivos (deteniéndose cuando se encuentra un .claude/ o no hay más padres)
"user" CLAUDE.md del usuario, ~/.claude/rules/*.md, skills del usuario, configuración del usuario ~/.claude/
"local" CLAUDE.local.md (gitignored), .claude/settings.local.json <cwd>/

Omitir settingSources es equivalente a ["user", "project", "local"].

La opción cwd determina dónde busca el SDK la configuración del proyecto. Si ni cwd ni ninguno de sus directorios padre contiene una carpeta .claude/, las características a nivel de proyecto no se cargarán.

Qué settingSources no controla

settingSources cubre la configuración de usuario, proyecto y local. Algunas entradas se leen independientemente de su valor:

Entrada Comportamiento Para deshabilitar
Configuración de políticas administradas Siempre se carga cuando está presente en el host Elimine el archivo de configuración administrada
Configuración global ~/.claude.json Siempre se lee Reubique con CLAUDE_CONFIG_DIR en env
Memoria automática en ~/.claude/projects/<project>/memory/ Se carga de forma predeterminada en el mensaje del sistema Establezca autoMemoryEnabled: false en la configuración, o CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 en env

Instrucciones de proyecto (CLAUDE.md y reglas)

Los archivos CLAUDE.md y los archivos .claude/rules/*.md proporcionan a su agente contexto persistente sobre su proyecto: convenciones de codificación, comandos de compilación, decisiones de arquitectura e instrucciones. Cuando settingSources incluye "project" (como en el ejemplo anterior), el SDK carga estos archivos en el contexto al inicio de la sesión. El agente luego sigue sus convenciones de proyecto sin que tenga que repetirlas en cada mensaje.

Ubicaciones de carga de CLAUDE.md

Nivel Ubicación Cuándo se carga
Proyecto (raíz) <cwd>/CLAUDE.md o <cwd>/.claude/CLAUDE.md settingSources incluye "project"
Reglas del proyecto <cwd>/.claude/rules/*.md settingSources incluye "project"
Proyecto (directorios padre) Archivos CLAUDE.md en directorios por encima de cwd settingSources incluye "project", se carga al inicio de la sesión
Proyecto (directorios hijo) Archivos CLAUDE.md en subdirectorios de cwd settingSources incluye "project", se carga bajo demanda cuando el agente lee un archivo en ese subárbol
Local (gitignored) <cwd>/CLAUDE.local.md settingSources incluye "local"
Usuario ~/.claude/CLAUDE.md settingSources incluye "user"
Reglas del usuario ~/.claude/rules/*.md settingSources incluye "user"

Todos los niveles son aditivos: si existen archivos CLAUDE.md tanto de proyecto como de usuario, el agente ve ambos. No hay una regla de precedencia dura entre niveles; si las instrucciones entran en conflicto, el resultado depende de cómo Claude las interprete. Escriba reglas que no entren en conflicto, o indique la precedencia explícitamente en el archivo más específico ("Estas instrucciones de proyecto anulan cualquier valor predeterminado conflictivo a nivel de usuario").

Para saber cómo estructurar y organizar el contenido de CLAUDE.md, consulte Administrar la memoria de Claude.

Skills

Los skills son archivos markdown que proporcionan a su agente conocimiento especializado y flujos de trabajo invocables. A diferencia de CLAUDE.md (que se carga cada sesión), los skills se cargan bajo demanda. El agente recibe descripciones de skills al inicio y carga el contenido completo cuando es relevante.

Los skills se descubren desde el sistema de archivos a través de settingSources. Con opciones predeterminadas, los skills de usuario y proyecto se cargan automáticamente. La herramienta Skill está habilitada de forma predeterminada cuando no especifica allowedTools. Si está usando una lista de permitidos allowedTools, incluya "Skill" explícitamente.

from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

# Skills in .claude/skills/ are discovered automatically
# when settingSources includes "project"
async for message in query(
prompt="Review this PR using our code review checklist",
options=ClaudeAgentOptions(
setting_sources=["user", "project"],
allowed_tools=["Skill", "Read", "Grep", "Glob"],
),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)

Para obtener más información sobre cómo crear y usar skills, consulte Agent Skills en el SDK.

Hooks

El SDK admite dos formas de definir hooks, y se ejecutan lado a lado:

  • Hooks del sistema de archivos: comandos de shell definidos en settings.json, cargados cuando settingSources incluye la fuente relevante. Estos son los mismos hooks que configuraría para sesiones interactivas de Claude Code.
  • Hooks programáticos: funciones de devolución de llamada pasadas directamente a query(). Se ejecutan en el proceso de su aplicación y pueden devolver decisiones estructuradas. Consulte Controlar la ejecución con hooks.

Ambos tipos se ejecutan durante el mismo ciclo de vida del hook. Si ya tiene hooks en el .claude/settings.json de su proyecto y establece settingSources: ["project"], esos hooks se ejecutan automáticamente en el SDK sin configuración adicional.

Las devoluciones de llamada de hooks reciben la entrada de la herramienta y devuelven un diccionario de decisión. Devolver {} (un diccionario vacío) significa permitir que la herramienta continúe. Devolver {"decision": "block", "reason": "..."} previene la ejecución y la razón se envía a Claude como el resultado de la herramienta. Consulte la guía de hooks para la firma de devolución de llamada completa y los tipos de retorno.

from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage


# PreToolUse hook callback. Positional args:
#   input_data: HookInput dict with tool_name, tool_input, hook_event_name
#   tool_use_id: str | None, the ID of the tool call being intercepted
#   context: HookContext, carries session metadata
async def audit_bash(input_data, tool_use_id, context):
command = input_data.get("tool_input", {}).get("command", "")
if "rm -rf" in command:
return {"decision": "block", "reason": "Destructive command blocked"}
return {}  # Empty dict: allow the tool to proceed


# Filesystem hooks from .claude/settings.json run automatically
# when settingSources loads them. You can also add programmatic hooks:
async for message in query(
prompt="Refactor the auth module",
options=ClaudeAgentOptions(
setting_sources=["project"],  # Loads hooks from .claude/settings.json
hooks={
"PreToolUse": [
HookMatcher(matcher="Bash", hooks=[audit_bash]),
]
},
),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)

Cuándo usar qué tipo de hook

Tipo de hook Mejor para
Sistema de archivos (settings.json) Compartir hooks entre sesiones CLI y SDK. Admite "command" (scripts de shell), "http" (POST a un punto final), "mcp_tool" (llamar a la herramienta de un servidor MCP conectado), "prompt" (LLM evalúa un mensaje), y "agent" (genera un agente verificador). Se ejecutan en el agente principal y en cualquier subagenteque genere.
Programático (devoluciones de llamada en query()) Lógica específica de la aplicación; devolver decisiones estructuradas; integración en proceso. Limitado a la sesión principal únicamente.

Para obtener detalles completos sobre hooks programáticos, consulte Controlar la ejecución con hooks. Para la sintaxis de hooks del sistema de archivos, consulte Hooks.

Elegir la característica correcta

El Agent SDK le proporciona acceso a varias formas de extender el comportamiento de su agente. Si no está seguro de cuál usar, esta tabla asigna objetivos comunes al enfoque correcto.

Desea... Usar Superficie del SDK
Establecer convenciones de proyecto que su agente siempre sigue CLAUDE.md settingSources: ["project"] lo carga automáticamente
Proporcionar al agente material de referencia que carga cuando es relevante Skills settingSources + allowedTools: ["Skill"]
Ejecutar un flujo de trabajo reutilizable (desplegar, revisar, lanzar) Skills invocables por el usuario settingSources + allowedTools: ["Skill"]
Delegar una subtarea aislada a un contexto nuevo (investigación, revisión) Subagentos parámetro agents + allowedTools: ["Agent"]
Coordinar múltiples instancias de Claude Code con listas de tareas compartidas y mensajería directa entre agentes Equipos de agentes No se configura directamente a través de opciones del SDK. Los equipos de agentes son una característica CLI donde una sesión actúa como el líder del equipo, coordinando el trabajo entre compañeros independientes
Ejecutar lógica determinista en llamadas de herramientas (auditoría, bloqueo, transformación) Hooks parámetro hooks con devoluciones de llamada, o scripts de shell cargados a través de settingSources
Proporcionar a Claude acceso a herramientas estructuradas a un servicio externo MCP parámetro mcpServers

Cada característica que habilita se suma a la ventana de contexto de su agente. Para costos por característica y cómo se superponen estas características, consulte Extender Claude Code.

Recursos relacionados

  • Extender Claude Code: Descripción conceptual de todas las características de extensión, con tablas de comparación y análisis de costos de contexto
  • Skills en el SDK: Guía completa para usar skills programáticamente
  • Subagentos: Defina e invoque subagentos para subtareas aisladas
  • Hooks: Intercepte y controle el comportamiento del agente en puntos de ejecución clave
  • Permisos: Controle el acceso a herramientas con modos, reglas y devoluciones de llamada
  • Mensajes del sistema: Inyecte contexto sin archivos CLAUDE.md