Saltar al contenido principal
Los subagentes son asistentes de IA especializados que manejan tipos específicos de tareas. Cada subagente se ejecuta en su propia ventana de contexto con un mensaje del sistema personalizado, acceso a herramientas específicas y permisos independientes. Cuando Claude encuentra una tarea que coincide con la descripción de un subagente, delega en ese subagente, que funciona de forma independiente y devuelve resultados. Los subagentes te ayudan a:
  • Preservar contexto manteniendo la exploración e implementación fuera de tu conversación principal
  • Aplicar restricciones limitando qué herramientas puede usar un subagente
  • Reutilizar configuraciones en proyectos con subagentes a nivel de usuario
  • Especializar comportamiento con mensajes del sistema enfocados para dominios específicos
  • Controlar costos enrutando tareas a modelos más rápidos y económicos como Haiku
Claude utiliza la descripción de cada subagente para decidir cuándo delegar tareas. Cuando creas un subagente, escribe una descripción clara para que Claude sepa cuándo usarlo. Claude Code incluye varios subagentes integrados como Explore, Plan y general-purpose. También puedes crear subagentes personalizados para manejar tareas específicas. Esta página cubre los subagentes integrados, cómo crear los tuyos, opciones de configuración completas, patrones para trabajar con subagentes y subagentes de ejemplo.

Subagentes integrados

Claude Code incluye subagentes integrados que Claude utiliza automáticamente cuando es apropiado. Cada uno hereda los permisos de la conversación principal con restricciones de herramientas adicionales.
Un agente rápido y de solo lectura optimizado para buscar y analizar bases de código.
  • Modelo: Haiku (rápido, baja latencia)
  • Herramientas: Herramientas de solo lectura (acceso denegado a herramientas de Escritura y Edición)
  • Propósito: Descubrimiento de archivos, búsqueda de código, exploración de base de código
Claude delega en Explore cuando necesita buscar o entender una base de código sin hacer cambios. Esto mantiene los resultados de exploración fuera del contexto de tu conversación principal.Al invocar Explore, Claude especifica un nivel de exhaustividad: quick para búsquedas dirigidas, medium para exploración equilibrada, o very thorough para análisis exhaustivo.
Más allá de estos subagentes integrados, puedes crear los tuyos propios con mensajes personalizados, restricciones de herramientas, modos de permiso, hooks y habilidades. Las siguientes secciones muestran cómo comenzar y personalizar subagentes.

Inicio rápido: crea tu primer subagente

Los subagentes se definen en archivos Markdown con frontmatter YAML. Puedes crearlos manualmente o usar el comando /agents. Este tutorial te guía a través de la creación de un subagente a nivel de usuario con el comando /agent. El subagente revisa código y sugiere mejoras para la base de código.
1

Abre la interfaz de subagentes

En Claude Code, ejecuta:
/agents
2

Crea un nuevo agente a nivel de usuario

Selecciona Create new agent, luego elige User-level. Esto guarda el subagente en ~/.claude/agents/ para que esté disponible en todos tus proyectos.
3

Generar con Claude

Selecciona Generate with Claude. Cuando se te pida, describe el subagente:
A code improvement agent that scans files and suggests improvements
for readability, performance, and best practices. It should explain
each issue, show the current code, and provide an improved version.
Claude genera el mensaje del sistema y la configuración. Presiona e para abrirlo en tu editor si deseas personalizarlo.
4

Selecciona herramientas

Para un revisor de solo lectura, deselecciona todo excepto Read-only tools. Si mantienes todas las herramientas seleccionadas, el subagente hereda todas las herramientas disponibles para la conversación principal.
5

Selecciona modelo

Elige qué modelo usa el subagente. Para este agente de ejemplo, selecciona Sonnet, que equilibra capacidad y velocidad para analizar patrones de código.
6

Elige un color

Elige un color de fondo para el subagente. Esto te ayuda a identificar qué subagente se está ejecutando en la interfaz de usuario.
7

Guarda e intenta

Guarda el subagente. Está disponible inmediatamente (no se necesita reiniciar). Intenta:
Use the code-improver agent to suggest improvements in this project
Claude delega en tu nuevo subagente, que escanea la base de código y devuelve sugerencias de mejora.
Ahora tienes un subagente que puedes usar en cualquier proyecto en tu máquina para analizar bases de código y sugerir mejoras. También puedes crear subagentes manualmente como archivos Markdown, definirlos mediante banderas CLI, o distribuirlos a través de plugins. Las siguientes secciones cubren todas las opciones de configuración.

Configurar subagentes

Usa el comando /agents

El comando /agents proporciona una interfaz interactiva para gestionar subagentes. Ejecuta /agents para:
  • Ver todos los subagentes disponibles (integrados, usuario, proyecto y plugin)
  • Crear nuevos subagentes con configuración guiada o generación con Claude
  • Editar la configuración de subagentes existentes y acceso a herramientas
  • Eliminar subagentes personalizados
  • Ver qué subagentes están activos cuando existen duplicados
Esta es la forma recomendada de crear y gestionar subagentes. Para creación manual o automatización, también puedes agregar archivos de subagentes directamente.

Elige el alcance del subagente

Los subagentes son archivos Markdown con frontmatter YAML. Guárdalos en diferentes ubicaciones según el alcance. Cuando múltiples subagentes comparten el mismo nombre, la ubicación de mayor prioridad gana.
UbicaciónAlcancePrioridadCómo crear
Bandera CLI --agentsSesión actual1 (más alta)Pasar JSON al lanzar Claude Code
.claude/agents/Proyecto actual2Interactivo o manual
~/.claude/agents/Todos tus proyectos3Interactivo o manual
Directorio agents/ del pluginDonde el plugin está habilitado4 (más baja)Instalado con plugins
Los subagentes de proyecto (.claude/agents/) son ideales para subagentes específicos de una base de código. Verifica que estén en control de versiones para que tu equipo pueda usarlos y mejorarlos colaborativamente. Los subagentes de usuario (~/.claude/agents/) son subagentes personales disponibles en todos tus proyectos. Los subagentes definidos por CLI se pasan como JSON al lanzar Claude Code. Existen solo para esa sesión y no se guardan en disco, lo que los hace útiles para pruebas rápidas o scripts de automatización:
claude --agents '{
  "code-reviewer": {
    "description": "Expert code reviewer. Use proactively after code changes.",
    "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",
    "tools": ["Read", "Grep", "Glob", "Bash"],
    "model": "sonnet"
  }
}'
La bandera --agents acepta JSON con los mismos campos que frontmatter. Usa prompt para el mensaje del sistema (equivalente al cuerpo markdown en subagentes basados en archivos). Consulta la referencia CLI para el formato JSON completo. Los subagentes de plugin provienen de plugins que has instalado. Aparecen en /agents junto a tus subagentes personalizados. Consulta la referencia de componentes de plugin para detalles sobre la creación de subagentes de plugin.

Escribe archivos de subagentes

Los archivos de subagentes usan frontmatter YAML para configuración, seguido del mensaje del sistema en Markdown:
Los subagentes se cargan al inicio de la sesión. Si creas un subagente agregando manualmente un archivo, reinicia tu sesión o usa /agents para cargarlo inmediatamente.
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---

You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.
El frontmatter define los metadatos y configuración del subagente. El cuerpo se convierte en el mensaje del sistema que guía el comportamiento del subagente. Los subagentes reciben solo este mensaje del sistema (más detalles básicos del entorno como el directorio de trabajo), no el mensaje del sistema completo de Claude Code.

Campos de frontmatter soportados

Los siguientes campos se pueden usar en el frontmatter YAML. Solo name y description son requeridos.
CampoRequeridoDescripción
nameIdentificador único usando letras minúsculas y guiones
descriptionCuándo Claude debe delegar en este subagente
toolsNoHerramientas que el subagente puede usar. Hereda todas las herramientas si se omite
disallowedToolsNoHerramientas a denegar, removidas de la lista heredada o especificada
modelNoModelo a usar: sonnet, opus, haiku, o inherit. Por defecto es sonnet
permissionModeNoModo de permiso: default, acceptEdits, dontAsk, bypassPermissions, o plan
skillsNoHabilidades a cargar en el contexto del subagente al inicio. El contenido completo de la habilidad se inyecta, no solo se pone disponible para invocación. Los subagentes no heredan habilidades de la conversación principal
hooksNoHooks de ciclo de vida limitados a este subagente

Elige un modelo

El campo model controla qué modelo de IA usa el subagente:
  • Alias de modelo: Usa uno de los alias disponibles: sonnet, opus, o haiku
  • inherit: Usa el mismo modelo que la conversación principal (útil para consistencia)
  • Omitido: Si no se especifica, usa el modelo predeterminado configurado para subagentes (sonnet)

Controla las capacidades del subagente

Puedes controlar qué pueden hacer los subagentes a través del acceso a herramientas, modos de permiso y reglas condicionales.

Herramientas disponibles

Los subagentes pueden usar cualquiera de las herramientas internas de Claude Code. Por defecto, los subagentes heredan todas las herramientas de la conversación principal, incluyendo herramientas MCP. Para restringir herramientas, usa el campo tools (lista blanca) o el campo disallowedTools (lista negra):
---
name: safe-researcher
description: Research agent with restricted capabilities
tools: Read, Grep, Glob, Bash
disallowedTools: Write, Edit
---

Modos de permiso

El campo permissionMode controla cómo el subagente maneja los mensajes de permiso. Los subagentes heredan el contexto de permiso de la conversación principal pero pueden anular el modo.
ModoComportamiento
defaultVerificación de permiso estándar con mensajes
acceptEditsAuto-aceptar ediciones de archivo
dontAskAuto-denegar mensajes de permiso (las herramientas explícitamente permitidas aún funcionan)
bypassPermissionsSaltar todas las verificaciones de permiso
planModo plan (exploración de solo lectura)
Usa bypassPermissions con cuidado. Salta todas las verificaciones de permiso, permitiendo que el subagente ejecute cualquier operación sin aprobación.
Si el principal usa bypassPermissions, esto toma precedencia y no puede ser anulado.

Precarga de habilidades en subagentes

Usa el campo skills para inyectar contenido de habilidad en el contexto de un subagente al inicio. Esto le da al subagente conocimiento de dominio sin requerir que descubra y cargue habilidades durante la ejecución.
---
name: api-developer
description: Implement API endpoints following team conventions
skills:
  - api-conventions
  - error-handling-patterns
---

Implement API endpoints. Follow the conventions and patterns from the preloaded skills.
El contenido completo de cada habilidad se inyecta en el contexto del subagente, no solo se pone disponible para invocación. Los subagentes no heredan habilidades de la conversación principal; debes enumerarlas explícitamente.
Esto es lo inverso de ejecutar una habilidad en un subagente. Con skills en un subagente, el subagente controla el mensaje del sistema y carga contenido de habilidad. Con context: fork en una habilidad, el contenido de la habilidad se inyecta en el agente que especifiques. Ambos usan el mismo sistema subyacente.

Reglas condicionales con hooks

Para un control más dinámico sobre el uso de herramientas, usa hooks PreToolUse para validar operaciones antes de que se ejecuten. Esto es útil cuando necesitas permitir algunas operaciones de una herramienta mientras bloqueas otras. Este ejemplo crea un subagente que solo permite consultas de base de datos de solo lectura. El hook PreToolUse ejecuta el script especificado en command antes de que se ejecute cada comando Bash:
---
name: db-reader
description: Execute read-only database queries
tools: Bash
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/validate-readonly-query.sh"
---
Claude Code pasa la entrada del hook como JSON vía stdin a comandos de hook. El script de validación lee este JSON, extrae el comando Bash, y sale con código 2 para bloquear operaciones de escritura:
#!/bin/bash
# ./scripts/validate-readonly-query.sh

INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

# Block SQL write operations (case-insensitive)
if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then
  echo "Blocked: Only SELECT queries are allowed" >&2
  exit 2
fi

exit 0
Consulta Hook input para el esquema de entrada completo y códigos de salida para cómo los códigos de salida afectan el comportamiento.

Deshabilita subagentes específicos

Puedes prevenir que Claude use subagentes específicos agregándolos al array deny en tu configuración. Usa el formato Task(subagent-name) donde subagent-name coincide con el campo name del subagente.
{
  "permissions": {
    "deny": ["Task(Explore)", "Task(my-custom-agent)"]
  }
}
Esto funciona para subagentes integrados y personalizados. También puedes usar la bandera CLI --disallowedTools:
claude --disallowedTools "Task(Explore)"
Consulta la documentación IAM para más detalles sobre reglas de permiso.

Define hooks para subagentes

Los subagentes pueden definir hooks que se ejecutan durante el ciclo de vida del subagente. Hay dos formas de configurar hooks:
  1. En el frontmatter del subagente: Define hooks que se ejecutan solo mientras ese subagente está activo
  2. En settings.json: Define hooks que se ejecutan en la sesión principal cuando los subagentes comienzan o se detienen

Hooks en frontmatter de subagente

Define hooks directamente en el archivo markdown del subagente. Estos hooks solo se ejecutan mientras ese subagente específico está activo y se limpian cuando termina.
EventoEntrada del matcherCuándo se dispara
PreToolUseNombre de herramientaAntes de que el subagente use una herramienta
PostToolUseNombre de herramientaDespués de que el subagente use una herramienta
Stop(ninguno)Cuando el subagente termina
Este ejemplo valida comandos Bash con el hook PreToolUse y ejecuta un linter después de ediciones de archivo con PostToolUse:
---
name: code-reviewer
description: Review code changes with automatic linting
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/validate-command.sh $TOOL_INPUT"
  PostToolUse:
    - matcher: "Edit|Write"
      hooks:
        - type: command
          command: "./scripts/run-linter.sh"
---
Los hooks Stop en frontmatter se convierten automáticamente a eventos SubagentStop.

Hooks a nivel de proyecto para eventos de subagente

Configura hooks en settings.json que respondan a eventos del ciclo de vida del subagente en la sesión principal. Usa el campo matcher para dirigirse a tipos de agentes específicos por nombre.
EventoEntrada del matcherCuándo se dispara
SubagentStartNombre del tipo de agenteCuando un subagente comienza la ejecución
SubagentStopNombre del tipo de agenteCuando un subagente se completa
Este ejemplo ejecuta scripts de configuración y limpieza solo cuando el subagente db-agent comienza y se detiene:
{
  "hooks": {
    "SubagentStart": [
      {
        "matcher": "db-agent",
        "hooks": [
          { "type": "command", "command": "./scripts/setup-db-connection.sh" }
        ]
      }
    ],
    "SubagentStop": [
      {
        "matcher": "db-agent",
        "hooks": [
          { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }
        ]
      }
    ]
  }
}
Consulta Hooks para el formato de configuración de hook completo.

Trabaja con subagentes

Entiende la delegación automática

Claude delega automáticamente tareas basadas en la descripción de la tarea en tu solicitud, el campo description en configuraciones de subagentes, y contexto actual. Para fomentar la delegación proactiva, incluye frases como “use proactively” en el campo description de tu subagente. También puedes solicitar un subagente específico explícitamente:
Use the test-runner subagent to fix failing tests
Have the code-reviewer subagent look at my recent changes

Ejecuta subagentes en primer plano o segundo plano

Los subagentes pueden ejecutarse en primer plano (bloqueante) o segundo plano (concurrente):
  • Los subagentes en primer plano bloquean la conversación principal hasta completarse. Los mensajes de permiso y preguntas aclaratorias (como AskUserQuestion) se pasan a ti.
  • Los subagentes en segundo plano se ejecutan concurrentemente mientras continúas trabajando. Heredan los permisos del principal y auto-niegan cualquier cosa no pre-aprobada. Si un subagente en segundo plano necesita un permiso que no tiene o necesita hacer preguntas aclaratorias, esa llamada de herramienta falla pero el subagente continúa. Las herramientas MCP no están disponibles en subagentes en segundo plano.
Si un subagente en segundo plano falla debido a permisos faltantes, puedes reanudarlo en primer plano para reintentar con mensajes interactivos. Claude decide si ejecutar subagentes en primer plano o segundo plano basado en la tarea. También puedes:
  • Pedirle a Claude que “run this in the background”
  • Presionar Ctrl+B para enviar una tarea en ejecución al segundo plano
Para deshabilitar toda la funcionalidad de tareas en segundo plano, establece la variable de entorno CLAUDE_CODE_DISABLE_BACKGROUND_TASKS en 1. Consulta Variables de entorno.

Patrones comunes

Aísla operaciones de alto volumen

Uno de los usos más efectivos para subagentes es aislar operaciones que producen grandes cantidades de salida. Ejecutar pruebas, obtener documentación, o procesar archivos de registro puede consumir contexto significativo. Al delegar estos a un subagente, la salida detallada permanece en el contexto del subagente mientras solo el resumen relevante regresa a tu conversación principal.
Use a subagent to run the test suite and report only the failing tests with their error messages

Ejecuta investigación en paralelo

Para investigaciones independientes, genera múltiples subagentes para trabajar simultáneamente:
Research the authentication, database, and API modules in parallel using separate subagents
Cada subagente explora su área independientemente, luego Claude sintetiza los hallazgos. Esto funciona mejor cuando las rutas de investigación no dependen una de la otra.
Cuando los subagentes se completan, sus resultados regresan a tu conversación principal. Ejecutar muchos subagentes que cada uno devuelve resultados detallados puede consumir contexto significativo.

Encadena subagentes

Para flujos de trabajo de múltiples pasos, pídele a Claude que use subagentes en secuencia. Cada subagente completa su tarea y devuelve resultados a Claude, que luego pasa contexto relevante al siguiente subagente.
Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

Elige entre subagentes y conversación principal

Usa la conversación principal cuando:
  • La tarea necesita ida y vuelta frecuente o refinamiento iterativo
  • Múltiples fases comparten contexto significativo (planificación → implementación → prueba)
  • Estás haciendo un cambio rápido y dirigido
  • La latencia importa. Los subagentes comienzan frescos y pueden necesitar tiempo para reunir contexto
Usa subagentes cuando:
  • La tarea produce salida detallada que no necesitas en tu contexto principal
  • Quieres aplicar restricciones de herramientas o permisos específicos
  • El trabajo es autónomo y puede devolver un resumen
Considera Habilidades en su lugar cuando quieras mensajes reutilizables o flujos de trabajo que se ejecuten en el contexto de conversación principal en lugar de contexto de subagente aislado.
Los subagentes no pueden generar otros subagentes. Si tu flujo de trabajo requiere delegación anidada, usa Habilidades o encadena subagentes desde la conversación principal.

Gestiona el contexto del subagente

Reanuda subagentes

Cada invocación de subagente crea una nueva instancia con contexto fresco. Para continuar el trabajo de un subagente existente en lugar de comenzar de nuevo, pídele a Claude que lo reanude. Los subagentes reanudados retienen su historial de conversación completo, incluyendo todas las llamadas de herramienta anteriores, resultados y razonamiento. El subagente continúa exactamente donde se detuvo en lugar de comenzar de nuevo. Cuando un subagente se completa, Claude recibe su ID de agente. Para reanudar un subagente, pídele a Claude que continúe el trabajo anterior:
Use the code-reviewer subagent to review the authentication module
[Agent completes]

Continue that code review and now analyze the authorization logic
[Claude resumes the subagent with full context from previous conversation]
También puedes pedirle a Claude el ID del agente si quieres referenciarlo explícitamente, o encontrar IDs en los archivos de transcripción en ~/.claude/projects/{project}/{sessionId}/subagents/. Cada transcripción se almacena como agent-{agentId}.jsonl. Las transcripciones de subagentes persisten independientemente de la conversación principal:
  • Compactación de conversación principal: Cuando la conversación principal se compacta, las transcripciones de subagentes no se ven afectadas. Se almacenan en archivos separados.
  • Persistencia de sesión: Las transcripciones de subagentes persisten dentro de su sesión. Puedes reanudar un subagente después de reiniciar Claude Code reanudando la misma sesión.
  • Limpieza automática: Las transcripciones se limpian basadas en la configuración cleanupPeriodDays (predeterminado: 30 días).

Compactación automática

Los subagentes soportan compactación automática usando la misma lógica que la conversación principal. Por defecto, la compactación automática se dispara aproximadamente al 95% de capacidad. Para disparar compactación más temprano, establece CLAUDE_AUTOCOMPACT_PCT_OVERRIDE a un porcentaje más bajo (por ejemplo, 50). Consulta variables de entorno para detalles. Los eventos de compactación se registran en archivos de transcripción de subagentes:
{
  "type": "system",
  "subtype": "compact_boundary",
  "compactMetadata": {
    "trigger": "auto",
    "preTokens": 167189
  }
}
El valor preTokens muestra cuántos tokens se usaron antes de que ocurriera la compactación.

Subagentes de ejemplo

Estos ejemplos demuestran patrones efectivos para construir subagentes. Úsalos como puntos de partida, o genera una versión personalizada con Claude.
Mejores prácticas:
  • Diseña subagentes enfocados: cada subagente debe sobresalir en una tarea específica
  • Escribe descripciones detalladas: Claude usa la descripción para decidir cuándo delegar
  • Limita el acceso a herramientas: otorga solo permisos necesarios para seguridad y enfoque
  • Verifica en control de versiones: comparte subagentes de proyecto con tu equipo

Revisor de código

Un subagente de solo lectura que revisa código sin modificarlo. Este ejemplo muestra cómo diseñar un subagente enfocado con acceso limitado a herramientas (sin Edición o Escritura) y un mensaje detallado que especifica exactamente qué buscar y cómo formatear la salida.
---
name: code-reviewer
description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.
tools: Read, Grep, Glob, Bash
model: inherit
---

You are a senior code reviewer ensuring high standards of code quality and security.

When invoked:
1. Run git diff to see recent changes
2. Focus on modified files
3. Begin review immediately

Review checklist:
- Code is clear and readable
- Functions and variables are well-named
- No duplicated code
- Proper error handling
- No exposed secrets or API keys
- Input validation implemented
- Good test coverage
- Performance considerations addressed

Provide feedback organized by priority:
- Critical issues (must fix)
- Warnings (should fix)
- Suggestions (consider improving)

Include specific examples of how to fix issues.

Depurador

Un subagente que puede tanto analizar como corregir problemas. A diferencia del revisor de código, este incluye Edit porque corregir bugs requiere modificar código. El mensaje proporciona un flujo de trabajo claro desde diagnóstico hasta verificación.
---
name: debugger
description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.
tools: Read, Edit, Bash, Grep, Glob
---

You are an expert debugger specializing in root cause analysis.

When invoked:
1. Capture error message and stack trace
2. Identify reproduction steps
3. Isolate the failure location
4. Implement minimal fix
5. Verify solution works

Debugging process:
- Analyze error messages and logs
- Check recent code changes
- Form and test hypotheses
- Add strategic debug logging
- Inspect variable states

For each issue, provide:
- Root cause explanation
- Evidence supporting the diagnosis
- Specific code fix
- Testing approach
- Prevention recommendations

Focus on fixing the underlying issue, not the symptoms.

Científico de datos

Un subagente específico de dominio para trabajo de análisis de datos. Este ejemplo muestra cómo crear subagentes para flujos de trabajo especializados fuera de tareas de codificación típicas. Establece explícitamente model: sonnet para análisis más capaz.
---
name: data-scientist
description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.
tools: Bash, Read, Write
model: sonnet
---

You are a data scientist specializing in SQL and BigQuery analysis.

When invoked:
1. Understand the data analysis requirement
2. Write efficient SQL queries
3. Use BigQuery command line tools (bq) when appropriate
4. Analyze and summarize results
5. Present findings clearly

Key practices:
- Write optimized SQL queries with proper filters
- Use appropriate aggregations and joins
- Include comments explaining complex logic
- Format results for readability
- Provide data-driven recommendations

For each analysis:
- Explain the query approach
- Document any assumptions
- Highlight key findings
- Suggest next steps based on data

Always ensure queries are efficient and cost-effective.

Validador de consultas de base de datos

Un subagente que permite acceso Bash pero valida comandos para permitir solo consultas SQL de solo lectura. Este ejemplo muestra cómo usar hooks PreToolUse para validación condicional cuando necesitas control más fino que el campo tools proporciona.
---
name: db-reader
description: Execute read-only database queries. Use when analyzing data or generating reports.
tools: Bash
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/validate-readonly-query.sh"
---

You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

When asked to analyze data:
1. Identify which tables contain the relevant data
2. Write efficient SELECT queries with appropriate filters
3. Present results clearly with context

You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.
Claude Code pasa la entrada del hook como JSON vía stdin a comandos de hook. El script de validación lee este JSON, extrae el comando siendo ejecutado, y lo verifica contra una lista de operaciones de escritura SQL. Si se detecta una operación de escritura, el script sale con código 2 para bloquear la ejecución y devuelve un mensaje de error a Claude vía stderr. Crea el script de validación en cualquier lugar en tu proyecto. La ruta debe coincidir con el campo command en tu configuración de hook:
#!/bin/bash
# Blocks SQL write operations, allows SELECT queries

# Read JSON input from stdin
INPUT=$(cat)

# Extract the command field from tool_input using jq
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

if [ -z "$COMMAND" ]; then
  exit 0
fi

# Block write operations (case-insensitive)
if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then
  echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2
  exit 2
fi

exit 0
Haz el script ejecutable:
chmod +x ./scripts/validate-readonly-query.sh
El hook recibe JSON vía stdin con el comando Bash en tool_input.command. El código de salida 2 bloquea la operación y alimenta el mensaje de error de vuelta a Claude. Consulta Hooks para detalles sobre códigos de salida y Hook input para el esquema de entrada completo.

Próximos pasos

Ahora que entiendes los subagentes, explora estas características relacionadas: