PTENES
MÓDULO 2.1 · Ruta 2 · Creación práctica

📋 El frontmatter completo

O frontmatter es el panel de control de tu subagente: los campos YAML que están entre --- e --- en la parte superior del archivo .md. Cada campo tiene una responsabilidad precisa: configurar qué, con qué, cómo y dónde el agente se ejecuta.

7
Temas
~30
Minutos
Básico
Nivel
Práctica
Tipo

Imagina el frontmatter como la ficha técnica de un colaborador: nombre, herramientas disponibles, modelo cognitivo, memoria y patrón general de comportamiento. Claude Code lee solo el frontmatter para decidir si debe llamar a este agente; el cuerpo completo solo se carga cuando el agente se invoca de verdad. Cada campo que omites se convierte en un valor predeterminado; cada campo que completas se convierte en una decisión deliberada.

code-reviewer.md --- frontmatter (YAML) name: code-reviewer description: Revisa el diff en busca de errores y fallas tools: Read, Grep, Glob model: claude-sonnet-4-5 --- cuerpo (Markdown — instrucciones del agente) You are a senior code reviewer… 1. Ejecuta git diff para ver los cambios 2. Identifica errores, brechas de seguridad… … 🏷️ name 🎯 description (disparador) 🔧 tools (permisos) 🧠 model (qué Claude) 📝 cuerpo (cerebro)

↑ Anatomía de un archivo .md: frontmatter (YAML) + cuerpo (Markdown). Claude Code lee el frontmatter para decidir; el cuerpo define el comportamiento.

Contenido detallado

1

🏷️ name — la identidad del agente

El campo name define el identificador único de tu subagente. Así lo llama el director, y es el nombre que aparece en la línea de estado mientras el agente está en ejecución. Piénsalo como el seudónimo profesional del colaborador.

📐 Reglas de formato

  • •Letras minúsculas e guiones — nunca espacios, guiones bajos ni mayúsculas.
  • •Debe ser único dentro del proyecto o de la carpeta global ~/.claude/agents/.
  • •Debe ser descriptivo de la función, no la tecnología; prefiere code-reviewer a typescript-checker.
  • •Máximo práctico: 30–40 caracteres — aparece en la UI y debe ser legible.
ejemplos de name frontmatter YAML
# BOM — papel claro, minúsculas, hífens
name: code-reviewer
name: doc-writer
name: sql-optimizer
name: security-auditor

# RUIM — espaço, maiúscula, underscore
name: Code Reviewer     # espaço + maiúscula
name: code_reviewer     # underscore
name: TypescriptChecker # camelCase
Qué es:

identificador único del agente — minúsculas y guiones, sin espacios.

Por qué aprender:

un nombre incorrecto hace que Claude Code ignore el archivo o falle silenciosamente al cargar el agente.

Conceptos clave:

kebab-case · unicidad por ámbito · legibilidad en la UI · papel > tecnología.

2

🎯 description — el disparador de invocación

A description es el campo más estratégico del frontmatter. Es el texto que el director lee para decidir si debe llamar a este agente o no. Piénsalo como la placa de entrada del consultorio: "cardiólogo — dolores en el pecho, chequeo cardíaco". Sin la señal correcta, el maestro cruza la puerta y no sabe qué hay adentro.

Cómo usa el maestro la description

1

Tú haces una solicitud

"Revisa el código que acabo de escribir y señala los bugs."

2

El maestro lee los name + description de todos los agentes

No lee el cuerpo, solo el encabezado. Es rápido y barato en tokens.

3

Hace la correspondencia semántica

Si la description del code-reviewer dice "revisa el diff en busca de errores"; la solicitud coincide. Se llama al agente.

4

Solo entonces carga el cuerpo completo

El costo en tokens del cuerpo solo existe cuando se invoca al agente, no en el "proceso de selección".

💡 Consejo: incluye explícitamente «cuándo usar»

La description más eficaz nombra el activador: "Úsalo después de cualquier cambio de código" o "Úsalo cuando el usuario pida optimizar una consulta SQL". Esta instrucción directa elimina la ambigüedad en la coincidencia del maestro.

Qué es:

el texto que el maestro lee para decidir si llama a este agente: el activador de invocación.

Por qué aprender:

una description vaga hace que nunca se invoque al agente; una description específica garantiza que se invoque en el momento adecuado.

Conceptos clave:

coincidencia semántica · «cuándo usar» explícito · costo de selección cero · divulgación progresiva.

3

🔧 tools — permisos declarados

El campo tools é a lista blanca de herramientas que puede usar el subagente. Si no declaras nada, hereda todas las herramientas del maestro — lo que puede ser demasiado. Restringir herramientas es una decisión de seguridad y enfoque: un revisor que solo lee no puede escribir archivos accidentalmente.

✓ Principio del mínimo privilegio

  • ✓code-reviewer: solo Read, Grep, Glob
  • ✓doc-writer: Read, Write (sin acceso a Bash)
  • ✓sql-runner: solo Bash (para psql)
  • ✓Declara solo lo que la tarea realmente exige

✗ Errores comunes

  • ✗Dejar sin tools (hereda todo del maestro)
  • ✗Dar Bash a un agente que solo lee archivos
  • ✗Dar Write a un revisor (puede sobrescribir código)
  • ✗Listar herramientas que el agente nunca usa (ruido)

📊 Herramientas nativas más usadas

Read

lee archivos del proyecto

Write

crea / edita archivos

Edit

edita fragmentos específicos

Bash

ejecuta comandos de shell

Grep

búsqueda en archivos

Glob

lista archivos por defecto

WebFetch

búsqueda en la web

Agent

lanza subagentes anidados

Task

crea tareas largas

Qué es:

lista blanca de herramientas que el subagente puede usar durante la ejecución.

Por qué aprender:

restringe lo que puede salir mal; un revisor sin Write no puede borrar código por accidente.

Conceptos clave:

mínimo privilegio · lista de permitidos · herramientas nativas · herencia del maestro (cuando se omite).

4

🧠 model — qué modelo de Claude ejecuta la tarea

El campo model define qué modelo de lenguaje ejecutará el agente. Esta es la decisión de costo y calidad: las tareas simples y repetitivas van a modelos rápidos y baratos; los análisis profundos van a Opus. El tema de los modelos por tarea es la Ruta 3 completa — aquí aprendemos la sintaxis del campo.

valores aceptados en model junio 2026
model: haiku          # rápido, barato — triagem, classificação
model: sonnet          # equilibrado — maioria dos casos
model: opus            # profundo e caro — análises complexas

# IDs completos (mais estáveis em produção)
model: claude-haiku-4-5
model: claude-sonnet-4-5
model: claude-opus-4-5

# omitido: herda o modelo do maestro (padrão seguro)

💡 Regla práctica de inicio

Empieza siempre con model: sonnet. Si el agente hace clasificaciones simples, cambia a haiku. Si hace razonamientos complejos (arquitectura, auditoría), cambia a opus. La T3 te dará el criterio exacto para cada caso.

Qué es:

campo que define qué modelo Claude ejecuta este agente — controla el costo y la profundidad.

Por qué aprender:

sin este campo, todos los agentes se ejecutan con el modelo más caro de forma predeterminada — gasto innecesario.

Conceptos clave:

haiku/sonnet/opus · IDs completos frente a alias · herencia del maestro · costo × calidad.

5

🎨 color e 🧠 memory — identidad y persistencia

Dos campos que completan la configuración básica: color define la color de realce visual del agente en la UI, y memory define a qué archivos de memoria accede — controlando lo que «sabe» incluso antes de que empiece la tarea.

🎨 color

Color hexadecimal o nombre del color que aparece en la línea de estado de la terminal junto al nombre del agente.

color: "#34d399"   # verde
color: "#60a5fa"   # azul
color: "red"       # nome CSS

Opcional — solo visual. Si se omite, Claude Code usa un color predeterminado.

🧠 memory

Controla qué archivos CLAUDE.md carga el agente en el contexto al iniciar. Hay cuatro valores posibles:

  • project — CLAUDE.md del proyecto
  • user — ~/.claude/CLAUDE.md global
  • local — CLAUDE.local.md (privado)
  • none — sin memoria precargada

📊 Cuándo usar memory: none

Los agentes de clasificación o análisis imparcial se benefician de memory: none — no deben verse influenciados por las preferencias del proyecto. En cambio, un agente de documentación necesita memory: project para conocer las convenciones del repositorio.

Qué es:

color = identidad visual; memory = archivos CLAUDE.md que el agente carga al iniciarse.

Por qué aprender:

una memory incorrecta hace que el agente ignore las convenciones del proyecto o cargue contexto irrelevante y costoso.

Conceptos clave:

color (visual) · memoria: proyecto/usuario/local/ninguna · contexto precargado · agente imparcial vs. contextualizado.

6

🚫 disallowed-tools — el bloqueo explícito

Mientras tools es una lista blanca (solo se puede usar lo que aparece en ella), disallowed-tools es una lista negra explícita: "el agente puede usar todo, excepto esto". Úsalo cuando quieras heredar la mayoría de las herramientas del maestro, pero bloquear específicamente una o dos que sean peligrosas.

disallowed-tools en uso frontmatter YAML
---
name: code-analyzer
description: Analisa a base de código. Nunca modifica arquivos.
model: sonnet
disallowed-tools:
  - Write    # não pode criar / sobrescrever
  - Edit     # não pode editar trechos
  - Bash     # não pode rodar comandos
---

⚖️ tools vs. disallowed-tools — cuándo usar cada uno

Usa tools cuándo…

  • • El agente necesita un conjunto pequeño y bien definido de herramientas
  • • Quieres declarar explícitamente qué puede hacer el agente
  • • El agente es nuevo y quieres tener control total

Usa disallowed-tools cuándo…

  • • El agente necesita muchas herramientas pero quiere bloquear pocas
  • • Quieres heredar automáticamente futuras ampliaciones de herramientas
  • • Solo necesitas quitar las herramientas destructivas de un agente genérico
Qué es:

lista negra de herramientas — el agente puede usar todo excepto lo que aparece aquí.

Por qué aprender:

alternativa a tools cuando la lista de permisos sería enorme: bloquear es más conciso que enumerarlo todo.

Conceptos clave:

lista negra · herencia con excepción · blocklist vs. allowlist · seguridad selectiva.

7

🔌 Campos avanzados — MCP y otros

Además de los campos básicos, el frontmatter admite configuraciones avanzadas para integrar servidores MCP (Model Context Protocol), que amplían las herramientas disponibles con APIs externas, bases de datos, servicios y mucho más. Estos campos son opcionales y generalmente aparecen en agentes de producción.

campos avanzados de MCP frontmatter YAML
---
name: db-analyst
description: Analisa dados no PostgreSQL. Use quando pedir
  insights de banco ou queries de análise.
model: sonnet
tools: mcp__postgres  # ferramenta via MCP
mcp_servers:         # servidores MCP disponíveis
  - postgres         # nome definido em .claude/mcp.json
---

✓ Qué amplía MCP

  • ✓Consultas directas a bases de datos
  • ✓Integración con APIs de terceros (Slack, GitHub, Jira)
  • ✓Herramientas personalizadas de tu empresa
  • ✓Sistemas de archivos remotos y S3

📌 Requisito previo

El servidor MCP debe estar configurado en .claude/mcp.json antes de referenciar en el frontmatter.

// .claude/mcp.json
{
  "postgres": {
    "command": "mcp-postgres",
    "args": ["postgresql://…"]
  }
}
Qué es:

campos avanzados que conectan el agente a servidores MCP — ampliándolo más allá de las herramientas nativas.

Por qué aprender:

MCP es el puente para integrar subagentes con sistemas reales de producción (bases de datos, API, servicios).

Conceptos clave:

MCP · mcp_servers · herramientas externas · .claude/mcp.json · integración de producción.

📄

Ejemplo real: frontmatter completo comentado

Uno security-auditor.md de producción usando todos los campos que vimos — con comentarios que explican cada decisión de diseño. Este es el punto de referencia que puedes copiar y adaptar.

.claude/agents/security-auditor.md Frontmatter completo
---
name: security-auditor        # kebab-case, papel claro

description: |               # bloco multiline para descrições longas
  Audita o código em busca de vulnerabilidades de segurança:
  SQL injection, XSS, dependências desatualizadas, segredos
  expostos e falhas de autenticação.
  Use quando o usuário pedir revisão de segurança, antes
  de qualquer PR para produção, ou após mudanças em auth.
                               # ↑ "quando usar" explícito = gatilho preciso

tools: Read, Grep, Glob      # só leitura — auditor nunca modifica

model: claude-opus-4-5       # análise crítica → modelo mais capaz

color: "#f87171"              # vermelho = segurança (visual na UI)

memory: project             # carrega CLAUDE.md do projeto
                               # → conhece as convenções de segurança do repo

disallowed-tools:           # bloqueio explícito de ferramentas destrutivas
  - Write                      # não pode alterar arquivos
  - Edit                       # não pode editar trechos
  - Bash                       # não pode executar scripts
---

# Corpo do agente (cérebro) — carregado só quando invocado

You are a senior application security engineer.
Your role is to audit code for vulnerabilities — never to fix them.

When invoked:
1. Run Grep to find patterns: SQL queries, eval(), innerHTML, passwords, tokens.
2. Read each flagged file in full context.
3. Classify each finding by severity: CRITICAL / HIGH / MEDIUM / LOW.

Output format:
- One table: Severity | File | Line | Issue | Recommendation
- Summary paragraph with the 3 most critical risks
- Do NOT rewrite code — only report.

🔒 tools + disallowed

Usa tools para la lista de permitidos y disallowed-tools redundantemente para mayor claridad — un enfoque de defensa en profundidad.

🧠 model: opus

La auditoría de seguridad es crítica — aquí vale la pena usar el modelo más caro. Los agentes de triaje simple pueden usar haiku.

📝 description multiline

El pipe | en YAML permite varias líneas. Úsalo para descripciones largas con activadores explícitos.

⌨️

Prompts listos (copia y pega)

Tres prompts para usar ahora en Claude Code: crear un agente mediante /agents, inspeccionar un agente existente y generar un frontmatter a medida para un rol específico.

Prompt 1 — generar frontmatter mediante /agents crea el .md completo
Crie um subagente chamado "doc-writer" que escreve
documentação técnica em Markdown. Ele deve usar apenas
Read e Write, rodar em sonnet, e ter memória do projeto.
Escreva o frontmatter completo e um corpo de 5 linhas.
Prompt 2 — inspeccionar un agente existente entiende lo que está configurado
Leia o frontmatter de todos os arquivos .md em
.claude/agents/ e me diga: quais modelos estão sendo
usados, quais ferramentas cada agente tem, e se algum
agente tem description vaga que pode atrapalhar o match.
Prompt 3 — frontmatter para un rol específico generación a medida
Quero um agente que otimize queries SQL pesadas.
Escreva o frontmatter completo incluindo: name kebab-case,
description com o gatilho "quando usar", tools mínimas,
model adequado ao tipo de análise, e color de destaque.
Depois explique cada campo escolhido e por quê.
🖥️

Pantalla simulada: /agents y el frontmatter cargado

Así es como Claude Code muestra sus agentes después de cargar los archivos .md. La UI muestra el nombre, a description resumida, las herramientas e o modelo de cada agente. El campo color aparece como el punto de color junto al nombre.

claude code · /agents · 4 agentes encontrados 📋 lista
security-auditor claude-opus-4-5 Read Grep Glob
Audita el código en busca de vulnerabilidades. Úsalo antes de los PR para producción…
code-reviewer claude-sonnet-4-5 Read Grep Glob
Revisa el diff actual en busca de errores y fallas de seguridad. Úsalo después de un cambio de código…
doc-writer claude-sonnet-4-5 Read Write
Escribe documentación técnica en Markdown. Úsalo cuando te pidan un README, docstrings o guías…
sql-optimizer claude-haiku-4-5 Read Bash
Analiza y optimiza consultas SQL lentas. Úsalo al identificar consultas con un tiempo > 500ms…
↑↓ navegar · enter seleccionar · esc cerrar 4 agentes · 2 project · 2 global

↑ Recreación ilustrativa del panel /agents. O color aparece como un punto; la descripción se trunca, pero basta para la coincidencia semántica.

🎯

Ejercicio

Escribe el frontmatter completo para un subagente llamado test-writer — un agente que lee código fuente y escribe pruebas unitarias en vitest/jest. Usa todos los campos obligatorios y al menos un campo avanzado.

Cómo hacerlo

  1. Decide el name: debe estar en kebab-case y describir el rol.
  2. Escribe la description: incluye «cuándo usar» y las situaciones que lo activan.
  3. Lista los tools mínimos: ¿qué necesita realmente un escritor de pruebas?
  4. Elige el model: ¿escribir pruebas es simple o complejo? Justifica tu respuesta.
  5. Agrega color e memory con una justificación cada uno.

✅ Criterio de verificación — cómo saber si acertaste

  • →name está en kebab-case, sin espacios ni mayúsculas.
  • →description contiene al menos una frase del tipo "Usa cuando…" o "Usa después de…".
  • →tools incluye Read e Write, y justificaste por qué esos dos.
  • →model elegido con justificación de costo × calidad.
  • →El frontmatter comienza y termina con --- y es YAML válido (sin mezclar tabs y espacios).

Ejemplo resuelto

---
name: test-writer
description: |
  Lê código-fonte e escreve testes unitários em vitest/jest.
  Use quando pedir "escreva testes para este arquivo" ou
  após implementar uma nova função ou classe.
tools: Read, Write, Glob   # lê fonte, escreve teste, lista arquivos
model: sonnet              # escrever testes exige raciocínio médio
color: "#4ade80"          # verde = "passou nos testes"
memory: project           # precisa conhecer o framework do projeto
---

✅ Resumen del módulo

✓
name — kebab-case, único y descriptivo del rol. Es el identificador en la UI y en la coincidencia del maestro.
✓
description — el disparador: el director solo lee esto para decidir si llama al agente. Incluye "Úsalo cuando…".
✓
tools — lista blanca de permisos. Mínimo necesario; un agente de lectura no necesita Write.
✓
model — haiku/sonnet/opus según la complejidad de la tarea. Si se omite, hereda el modelo del maestro.
✓
color + memory — identidad visual y contexto precargado (project/user/local/none).
✓
disallowed-tools — lista negra cuando quieres heredar todo, pero bloquear algunas herramientas específicas.
✓
MCP — mcp_servers conecta el agente con bases de datos, APIs y servicios mediante Model Context Protocol.

Próximo módulo:

2.2 — La descripción es el disparador. Cómo escribir descriptions que el agente principal reconozca y active con precisión.