Saltar al contenido
CCAR-P English

Apuntes de Certificación

Lo que hay que saber en frío para los cuatro exámenes Claude · verificado contra doc oficial, agosto 2026

Estos apuntes cubren el núcleo común de los cuatro exámenes. Cada sección lleva el peso que tiene en cada uno, para que decidas dónde gastar el tiempo. Las secciones 1-4 y 6 valen para tres exámenes a la vez: son la mejor inversión del temario.

¿Vas con prisa? Empieza por las tarjetas: tandas de 10 en tres minutos, con repetición espaciada. Estos apuntes son la referencia larga a la que volver cuando una tarjeta no te cuadre.

1 · Bucle agéntico y tool use

CCAR-F 27%CCAR-P 17%CCDV-F 14,7%

Un agente es, en la definición que usa Anthropic, un LLM usando herramientas en bucle de forma autónoma. El ciclo tiene cinco pasos: recibir prompt → el modelo evalúa y responde → se ejecutan las tools que ha pedido → los resultados vuelven → repetir. Termina cuando el modelo produce una respuesta sin llamadas a tools.

Cómo se sabe que hay que seguir

A nivel de API, cuando Claude quiere usar una tool la respuesta trae stop_reason: "tool_use" y uno o más bloques tool_use con id, name e input. Cuando ha terminado, stop_reason: "end_turn". Ese campo es el control de flujo del bucle.

Valores posibles de stop_reason: end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded.

Cómo vuelven los resultados

En un mensaje con role: "user" que contiene bloques tool_result. Campos: tool_use_id (obligatorio), content (opcional) e is_error (opcional). No existe rol tool ni function en la API de Claude, a diferencia de otras APIs de chat.

Dos reglas de formato que devuelven 400 si se incumplen: el mensaje con los tool_result debe ir inmediatamente después del assistant que emitió el tool_use, y los bloques tool_result deben ir los primeros del array content. Cualquier texto va detrás.

Errores de tool

Un fallo de tool no es una excepción de tu aplicación: es información para el modelo. Se devuelve como tool_result con is_error: true y una causa legible, para que el agente pueda reintentar con otros parámetros, escalar o informar.

Definir tools

Tres campos obligatorios: name (regex ^[a-zA-Z0-9_-]{1,64}$), description e input_schema (JSON Schema).

Frase literal de la doc«Provide extremely detailed descriptions. This is by far the most important factor in tool performance». El objetivo es al menos 3-4 frases por descripción. En las pruebas de Anthropic, reescribir descripciones de tools con un agente de testing redujo un 40% el tiempo de completado de tareas.

Buenas prácticas oficiales: consolidar operaciones relacionadas en menos tools con un parámetro de acción, en vez de create_pr/review_pr/merge_pr; namespacing por servicio (github_list_prs); devolver identificadores semánticos estables, no referencias internas opacas.

La capacidad de elegir bien la tool se degrada por encima de 30-50 tools disponibles. Con catálogos grandes se recomienda tool search. Repartir las tools entre varios servidores MCP conectados a la vez no soluciona nada: el modelo sigue viendo el total.

tool_choice: cuatro valores

ValorEfecto
autoPor defecto cuando hay tools. El modelo decide.
anyObliga a usar alguna tool.
toolObliga a una concreta, con name.
nonePor defecto cuando no hay tools.

Con any o tool la API hace prefill del mensaje del asistente, así que no habrá texto natural antes del tool_use. Si tu interfaz muestra ese texto como razonamiento visible, desaparece.

El uso paralelo de tools está activado por defecto; se desactiva con disable_parallel_tool_use: true dentro de tool_choice.

Client tools vs server tools

Client tools: las defines tú, la respuesta llega con stop_reason: "tool_use", tú ejecutas y devuelves tool_result. Incluye también las de esquema Anthropic como bash, text_editor, memory o computer.
Server tools: se ejecutan en la infraestructura de Anthropic dentro de la misma request, sin ida y vuelta por tu parte — búsqueda web, web fetch, ejecución de código, conector MCP.

Anti-patrones que caen como distractores
  • Parsear lenguaje natural («he terminado») para decidir si el bucle para.
  • Usar un tope de iteraciones como mecanismo principal de parada (como red de seguridad sí, como criterio no).
  • Comprobar si hay texto del asistente para dar por terminada la tarea: puede haber texto junto a un tool_use.
  • Lanzar excepción o devolver 500 desde una tool en vez de is_error.
platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls · .../define-tools · code.claude.com/docs/en/agent-sdk/agent-loop

2 · Subagentes y orquestación multi-agente

CCAR-F 27%CCAR-P 17%CCDV-F 14,7%

Arquitectura hub-and-spoke: un coordinador gestiona toda la comunicación entre subagentes, el manejo de errores y el enrutado de información. Se elige por observabilidad y control, no por ahorro — los sistemas multi-agente consumen del orden de 15× los tokens de un chat (los agentes simples, ~4×). Por eso solo se justifican en tareas de alto valor.

Lo que más se pregunta: el aislamiento de contexto

Regla centralUn subagente arranca con contexto fresco. Lo único que cruza la frontera es el string del prompt con el que se le invoca, más su propio system prompt, el CLAUDE.md del proyecto y las definiciones de tools. No hereda el historial ni los tool results del padre. Y de vuelta, solo el mensaje final del subagente llega al padre como tool result.

Consecuencia práctica: si el subagente de síntesis produce informes vacíos de detalle, casi siempre es porque el coordinador no incluyó los hallazgos previos en su prompt. Y al pasar contexto entre agentes conviene usar formatos estructurados que separen contenido de metadatos (URLs de origen, nombres de documento, páginas) para no perder la atribución.

Spawning y paralelismo

  • La tool de spawn debe estar en allowedTools o la invocación se deniega.
  • Paralelizar = emitir varias llamadas de spawn en una sola respuesta del coordinador. Una por turno es ejecución secuencial disfrazada.
  • AgentDefinition: obligatorios description y prompt. Opcionales: tools, disallowedTools, model (incluido 'inherit'), skills, memory, mcpServers, maxTurns, effort, permissionMode. Si omites tools, hereda todas las disponibles.
  • Los agentes definidos programáticamente tienen precedencia sobre los del filesystem con el mismo nombre.

Diseño del coordinador

Prompts de objetivos y criterios de calidad, no de pasos procedimentales, para que los subagentes se adapten. El coordinador debe seleccionar dinámicamente qué subagentes invocar según la complejidad de la consulta, en vez de recorrer siempre el pipeline completo, y particionar el alcance para minimizar duplicación. El fallo típico es una descomposición demasiado estrecha que deja lagunas: se corrige con un bucle donde el coordinador evalúa la síntesis, detecta huecos y re-delega con queries dirigidas.

Cifras del sistema de investigación de Anthropic

  • Multi-agente (Opus como lead, Sonnet como subagentes) superó al single-agent en 90,2% en su eval interna.
  • Tres factores explican el 95% de la varianza de rendimiento; el uso de tokens por sí solo explica el 80%. Los otros dos: número de tool calls y elección de modelo.
  • Reglas de escalado del prompt del lead: dato simple = 1 agente y 3-10 tool calls; comparación directa = 2-4 subagentes con 10-15 calls cada uno; investigación compleja = más de 10 subagentes.
  • El lead lanza 3-5 subagentes en paralelo y cada uno usa 3+ tools en paralelo: hasta 90% menos tiempo en consultas complejas.
  • Cada subagente puede gastar decenas de miles de tokens y devolver un resumen destilado de 1.000-2.000 tokens.
code.claude.com/docs/en/agent-sdk/subagents · anthropic.com/engineering/multi-agent-research-system

3 · Workflow vs agente: los cinco patrones

CCAR-F 27%CCAR-P 17%CCDV-F 14,7%
Definiciones canónicasWorkflow = LLMs y tools orquestados por rutas de código predefinidas. Agente = el LLM dirige dinámicamente su propio proceso y uso de tools. Ambos son «sistemas agénticos».

Criterio: los workflows dan predictibilidad y consistencia en tareas bien definidas; los agentes se eligen cuando hace falta flexibilidad y decisión dirigida por el modelo a escala. Y la recomendación previa a todo: para muchas aplicaciones basta con optimizar una sola llamada con retrieval y ejemplos in-context. Añadir complejidad solo cuando mejore el resultado de forma demostrable.

El bloque base de todo es el augmented LLM: modelo + retrieval + tools + memoria.

PatrónCuándoMarca distintiva
Prompt chainingTarea descomponible en subtareas fijasCambia latencia por precisión; permite «gates» programáticos entre pasos
RoutingInputs de categorías distintasRequiere categorías separables y clasificación fiable
ParallelizationSubtareas independientes (sectioning) o varias pasadas de lo mismo (voting)Las subtareas están predefinidas
Orchestrator-workersLa descomposición no se conoce de antemanoLas subtareas las decide el modelo en runtime
Evaluator-optimizerHay criterios claros y el feedback mejora demostrablementeUn LLM genera, otro evalúa, se itera
La confusión que buscanParallelization vs orchestrator-workers. La diferencia no es cuántos agentes hay ni si corren a la vez: es si las subtareas estaban definidas antes de empezar.

Tres principios de cierre: simplicidad, transparencia (mostrar los pasos de planificación) y diseño cuidadoso de la ACI (agent-computer interface).

anthropic.com/engineering/building-effective-agents

4 · Context engineering

CCAR-F 15%CCAR-P 13%CCDV-F 11%

Context engineering = curar y mantener el conjunto óptimo de tokens durante la inferencia. Es la progresión natural del prompt engineering, que se limitaba a escribir instrucciones. Principio guía: el conjunto más pequeño posible de tokens de alta señal.

Context rotA mayor número de tokens en la ventana, menor capacidad del modelo de recordar con precisión. Causa: atención cuadrática sobre n tokens y una distribución de entrenamiento sesgada a secuencias cortas. Es un gradiente de degradación, no un acantilado — cabe en la ventana y aun así rinde peor.

Las tres técnicas para tareas largas, y cuándo cada una

TécnicaCuándo
CompactionFlujo conversacional con mucho ida y vuelta
Structured note-taking (memoria agéntica)Desarrollo iterativo con hitos claros
Arquitecturas multi-agenteInvestigación y análisis con exploración paralela

Compaction

Se pasa el historial al modelo para que lo resuma. Preserva decisiones arquitectónicas, bugs sin resolver y detalles de implementación; descarta tool outputs redundantes. En Claude Code continúa con el contexto comprimido más los cinco archivos accedidos más recientemente. Al afinarla: primero maximizar recall, después iterar precisión.

Consecuencia práctica que cae en el examenLa compactación puede perder instrucciones del prompt inicial. Lo que debe persistir va en CLAUDE.md, porque se reinyecta en cada request.

Tool result pruning

«La forma más segura y ligera de compactación es el tool result clearing». El razonamiento oficial: una vez que una tool se llamó hace mucho, el agente no necesita volver a ver su resultado crudo.

Just-in-time vs monolítico

En JIT el agente mantiene identificadores ligeros (rutas, queries guardadas, links) y carga los datos en runtime con tools, en vez de precargarlo todo. Ventajas: descubrimiento progresivo, y los metadatos como señal (nombres, jerarquía de carpetas, timestamps). Contrapartida reconocida: la exploración en runtime es más lenta que el retrieval precomputado. Claude Code usa un modelo híbrido: CLAUDE.md se carga por adelantado, glob y grep recuperan just-in-time.

anthropic.com/engineering/effective-context-engineering-for-ai-agents

5 · Claude Code: memoria, permisos, hooks, sesiones

CCAR-F 20%CCAR-P 7%CCDV-F 3,1%

Ojo al reparto: en el Developer pesa solo 3,1%. Si es tu terreno diario, es justo donde no debes gastar tiempo de estudio.

Jerarquía de CLAUDE.md

Orden de alcance: managed policyusuario (~/.claude/CLAUDE.md) → proyecto (./CLAUDE.md) → local (./CLAUDE.local.md).

Se concatenan, no se sobrescribenEl de proyecto no sustituye al de usuario: se suman. Por eso instrucciones contradictorias entre niveles producen comportamiento errático — hay que eliminarlas, no confiar en que una gane.

Precedencia de settings (distinta de la de CLAUDE.md)

Managed (no anulable) → argumentos de CLI → local → proyecto → usuario. Las reglas de permisos se fusionan entre scopes en vez de sobrescribirse.

Permisos

Tres tipos: allow / ask / deny. Se evalúan en orden deny → ask → allow; el primero que casa decide y la especificidad no altera ese orden. Un deny con nombre desnudo (Bash) elimina la tool del contexto; con specifier (Bash(rm *)) bloquea solo las coincidencias.

Modos: default, acceptEdits, plan, auto, dontAsk, bypassPermissions. Plan mode bloquea ediciones hasta que apruebas el plan: su valor está en tareas de alto impacto con incertidumbre sobre el alcance del cambio.

Hooks

Eventos principales: PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStart/SubagentStop, PreCompact, SessionStart/SessionEnd, Notification, Setup.

  • PreToolUse devuelve permissionDecision: allow, deny, ask o defer. Un deny impide la ejecución y Claude recibe el rechazo como tool result.
  • PostToolUse puede añadir contexto o reemplazar la salida antes de que Claude la vea.
  • Los hooks corren en tu proceso, fuera del context window: no consumen contexto salvo lo que devuelvan.
  • Exit code 2 = error bloqueante, no anulable ni con un allow.
  • Silencio no es aprobación: un hook puede denegar, pero callarse deja seguir el flujo normal de permisos.

Sesiones: tres mecanismos distintos

MecanismoQué hace
continueRetoma la sesión más reciente del directorio, sin ID
resumeRetoma una sesión concreta por ID
forkCrea una sesión nueva con copia del historial, con ID propio, dejando intacta la original
Matiz del forkRamifica la conversación, no el filesystem. Las ediciones de archivos del fork son reales y visibles para otras sesiones. Para revertir archivos hace falta checkpointing.

Headless

-p/--print con --output-format text|json|stream-json, --allowedTools, --continue/--resume. Es la vía para CI y automatización.

code.claude.com/docs/en/memory · .../settings · .../permissions · .../hooks · .../headless

6 · Model Context Protocol

CCAR-P 19%CCAR-F 18%CCDV-F 10,6%

Arquitectura

Un MCP Host (la aplicación de IA) crea un MCP Client por cada MCP Server, con conexión dedicada 1:1. Dos capas: data layer (JSON-RPC 2.0, primitivas, notificaciones) y transport layer (framing, canales, autorización).

Las tres primitivas de servidor y quién las controla

Es la pregunta más repetible de MCPTools → las controla el modelo. Resources → los controla la aplicación (son de solo lectura). Prompts → los controla el usuario (a menudo expuestos como slash commands).

Métodos: tools/list, tools/call; resources/list, resources/read; prompts/list, prompts/get. Los recursos llevan URI única y MIME type, en dos patrones: Direct Resources (URI fija) y Resource Templates (URI parametrizada).

Transportes

Dos estándar: stdio (JSON-RPC delimitado por newline sobre un subproceso que lanza el cliente) y Streamable HTTP (POST a un endpoint único; respuesta JSON o stream SSE).

Autorización

  • Es opcional y aplica a transportes HTTP. stdio no debería usarla: toma credenciales del entorno.
  • El MCP Server actúa como OAuth 2.1 Resource Server; el cliente como OAuth 2.1 Client.
  • PKCE obligatorio. El token va siempre en cabecera Authorization: Bearer, nunca en query string.
  • Códigos: 401 no autorizado o token inválido, 403 scopes insuficientes, 400 request malformado.

MCP dentro de Claude Code

Tres scopes: local (por defecto, por máquina), project (.mcp.json versionado en el repo, requiere aprobación interactiva la primera vez), user (todos tus proyectos). Precedencia local > project > user.

Nomenclatura: tools = mcp__servidor__tool; prompts = slash commands /mcp__servidor__prompt; resources = menciones @servidor:protocolo://ruta.

Aviso de seguridad oficialAnthropic revisa los connectors contra sus criterios de listado pero no audita ni gestiona la seguridad de ningún MCP server. La responsabilidad de lo que expones es tuya.
modelcontextprotocol.io/docs/learn/architecture · .../server-concepts · /specification/latest/basic/authorization · code.claude.com/docs/en/mcp

7 · Skill, MCP, hook o CLAUDE.md: el árbol de decisión

CCAR-F 18%CCDV-F 10,6%CCAR-P 7%
SíntomaRespuesta
Convención mal aplicada dos vecesCLAUDE.md
Mismo prompt retecleadoSkill invocable por el usuario
Mismo playbook pegado por tercera vezSkill
Copiar datos de una pestaña que Claude no veMCP server
Tarea lateral que inunda el contextoSubagente
«Que pase siempre, sin preguntar»Hook
Segundo repo con el mismo setupPlugin
MCP vs Skill, en la frase oficial«MCP le da a Claude herramientas para un sistema externo, con conexión y autenticación gestionadas por el server. Las Skills le dan conocimiento sobre cómo usar esas herramientas». Son complementarias, no alternativas.
Hook vs Skill: determinismo«Una instrucción como "nunca edites .env" en CLAUDE.md o en una skill es una petición, no una garantía. Un hook PreToolUse que bloquea la edición es enforcement».

Coste de contexto de cada mecanismo

  • CLAUDE.md: contenido completo en cada request.
  • Skills: solo las descripciones al inicio.
  • MCP: nombres de tools al inicio, esquemas diferidos.
  • Subagentes: contexto aislado.
  • Hooks: cero, salvo que devuelvan output.

Agent Skills: progressive disclosure en tres niveles

NivelQuéCoste
L1 Metadataname + descriptionSiempre cargado, ~100 tokens por skill
L2 InstructionsCuerpo del SKILL.mdAl activarse; objetivo por debajo de 5k tokens
L3 ResourcesFicheros empaquetadosCero hasta que se acceden

Frontmatter obligatorio del estándar: solo name y description. description ≤1024 caracteres, en tercera persona, y debe decir qué hace y cuándo usarla. Cuerpo por debajo de 500 líneas.

code.claude.com/docs/en/features-overview · docs.claude.com/en/docs/agents-and-tools/agent-skills/overview

8 · Messages API, errores, streaming y batch

CCDV-F 33,1%CCAR-P 19%

El dominio más pesado del Developer con diferencia. Buena parte es ingeniería de software genérica: puntos baratos.

Estructura básica

POST /v1/messages. Obligatorios: model, messages, max_tokens.

No existe el rol systemEl array messages solo admite user y assistant. El system prompt va en el parámetro top-level system, como string o array de bloques de texto — esto último es lo que permite poner ahí un breakpoint de caché. Turnos consecutivos del mismo rol se combinan en uno.

Errores

CódigoTipoQué hacer
400invalid_request_errorArreglar la request
401 / 403auth / permisosCredencial
413request_too_largeTrocear (Messages 32 MB · Batch 256 MB · Files 500 MB)
429rate_limit_errorTu cuota. También salta por subidas bruscas de tráfico: la mitigación es rampa gradual
529overloaded_errorSobrecarga global de la API, no tuya. Backoff exponencial

Los SDK oficiales reintentan fallos transitorios con backoff exponencial, 2 reintentos por defecto, respetando retry-after. Toda respuesta trae cabecera request-id.

Streaming

Secuencia: message_start → por cada bloque content_block_start + N content_block_delta + content_block_stopmessage_deltamessage_stop. Los usage del message_delta son acumulativos.

Trampa de manejo de erroresLos errores de stream llegan como event: error después de un HTTP 200, porque la cabecera ya se envió. Un manejador que solo mire el status code no los ve nunca.

Las llamadas no-streaming están limitadas a un timeout de 10 minutos. Para operaciones largas: streaming o Batch.

Message Batches API

  • Descuento del 50% sobre input y output.
  • Límite: 100.000 requests o 256 MB, lo que se alcance primero.
  • La mayoría termina en menos de 1 hora; los resultados están disponibles al completar o a las 24 h, lo que ocurra antes. Los batches expiran si no completan en 24 h.
  • Resultados descargables durante 29 días.
  • Estados del batch: solo in_progress y ended. Por request: succeeded, errored, canceled, expired (los tres últimos no se facturan).
  • No soporta stream: true. El progreso se sigue por los contadores del batch.
  • Se recomienda TTL de caché de 1 hora, porque suelen tardar más de 5 minutos.
docs.claude.com/en/api/messages · /en/api/errors · /en/build-with-claude/streaming · /en/build-with-claude/batch-processing

9 · Modelos, thinking, effort y tokens

CCDV-F 16,8%CCAR-P 13%CCAO-F 12%

Criterio de selección

La respuesta correcta casi siempreAjustar el modelo a la tarea. Nunca «usa siempre el más capaz». Haiku para volumen, velocidad y coste; Sonnet como equilibrio; Opus para razonamiento complejo y trabajo agéntico largo. Los distractores típicos son usar el modelo tope para todo, desactivar features para ahorrar, o cambiar de plataforma: ninguno ataca el trade-off.

Thinking

  • Adaptive thinking: el modelo decide cuándo y cuánto pensar. En los modelos actuales está siempre activo sin configuración.
  • Extended thinking con budget_tokens es el mecanismo antiguo, deprecado y rechazado con 400 en los modelos recientes.
  • Facturación: los tokens de razonamiento se facturan como output y cuentan contra max_tokens, aunque el texto no se devuelva. Se cobran los tokens generados, no los del resumen visible.
  • Los bloques thinking llevan signature y deben devolverse sin modificar, o 400.

Effort

Niveles max, xhigh, high, medium, low, con default high. Es una señal conductual, no un presupuesto estricto, y afecta a todos los tokens incluidas las llamadas a tools.

Interacción con cachéEl effort se renderiza en el prompt, así que cambiarlo entre requests rompe el prefijo cacheado. En sesiones largas hay que mantenerlo constante.

Tokens y límites

  • POST /v1/messages/count_tokens es gratuito, con rate limits independientes de los de creación de mensajes. Devuelve una estimación.
  • Rate limits por organización y usage tier, medidos en RPM, ITPM y OTPM.
  • ITPM es cache-aware: cuentan input_tokens + cache_creation_input_tokens; cache_read_input_tokens no cuenta en la mayoría de modelos.
  • max_tokens no influye en el cálculo de OTPM: se cuentan los tokens realmente generados.
docs.claude.com/en/about-claude/models/overview · /en/build-with-claude/thinking · /en/api/rate-limits

10 · Prompt caching

CCDV-F 16,8%CCAR-P 13%
ParámetroValor
TTL por defecto5 minutos
TTL extendido1 hora
Breakpoints máximos4 (el automático consume uno)
Ventana de lookback20 bloques por breakpoint
Escritura 5 min1,25× el input base
Escritura 1 h
Lectura (hit)0,1×
Cuándo amortizaCon TTL de 5 minutos: sobrecoste de 0,25× y ahorro de 0,9× por lectura → amortiza con la primera lectura. Con TTL de 1 hora hacen falta dos. Se acumula con el descuento del Batch API.

Jerarquía del prefijo

toolssystemmessages, hasta el bloque marcado inclusive. Consecuencia: cambiar las tools invalida todo lo que hay por debajo. De ahí la disciplina de mantener el catálogo de tools estable en sesiones largas.

Otras invalidaciones: cambios de thinking o de effort invalidan messages; tool_choice e imágenes, solo messages. Poner un parámetro explícitamente en su valor por defecto equivale a omitirlo y no invalida.

El fallo silenciosoCada modelo tiene un mínimo de tokens cacheables (entre 512 y 4.096 según el modelo). Por debajo del mínimo no se cachea y no se devuelve error. El síntoma es que cache_creation_input_tokens y cache_read_input_tokens están ambos a cero.

La vida de la caché se mide desde el inicio de la request, y cada uso la refresca sin coste extra.

docs.claude.com/en/build-with-claude/prompt-caching

11 · Salida estructurada

CCAR-F 20%CCDV-F 11%

Dos features: JSON outputs (schema en la configuración de salida) y strict tool use. El mecanismo es constrained decoding: la gramática garantiza el cumplimiento del schema, sin reintentos.

Prefill ya no valeRellenar el turno del asistente con { para forzar JSON era la técnica clásica. Hoy no está soportado en Claude 4.6 y posteriores y es incompatible con JSON outputs. Si aparece como opción, es un distractor histórico.
Cuándo la salida puede no cumplir el schema igualmentestop_reason: "refusal" — devuelve 200, te facturan, y el rechazo prevalece sobre el schema.
stop_reason: "max_tokens" — salida truncada.
Además, el casing de los valores enum no está garantizado: compara sin distinguir mayúsculas.
La validación defensiva sigue siendo obligatoria.

Detalles finos

  • Orden de propiedades: se respeta el del schema, pero las requeridas van primero. Si el orden importa, márcalo todo como required.
  • Grammar caching: la primera request con un schema nuevo tiene latencia extra de compilación; se cachea 24 h desde el último uso. Cambiar solo name o description no la invalida.
  • Structured outputs inyecta un system prompt adicional y cambiar el formato invalida el prompt cache del hilo.
  • Citations + structured outputs = 400. Son incompatibles.

Consistencia sin schema

Cuando no hay schema, la técnica más efectiva es restringir con ejemplos: la doc dice explícitamente que es más efectivo que las instrucciones abstractas. Los adjetivos describen una aspiración; los ejemplos la definen.

platform.claude.com/docs/en/build-with-claude/structured-outputs · .../strengthen-guardrails/increase-consistency

12 · Evals y alucinaciones

CCAO-F 21%CCAR-P 16%CCDV-F 2,6%

Criterios de éxito

Deben ser específicos, medibles, alcanzables y relevantes. Ejemplo oficial de criterio bueno: «menos del 0,1% de las salidas sobre 10.000 pruebas marcadas por el filtro de contenido». El malo: «salidas seguras».

Los tres principios, uno contraintuitivo1. Ser específico de la tarea (reflejar la distribución real, incluir edge cases).
2. Automatizar siempre que se pueda.
3. Priorizar volumen sobre calidad — literal: «más preguntas con señal algo peor y grading automático es mejor que menos preguntas calificadas a mano con alta calidad».

Métodos de grading, en orden de preferencia oficial

MétodoCuándo
Código (exact match, string match)El más rápido y fiable. Corrección binaria y literal
LLM-as-judgeJuicios con matiz. «Probar fiabilidad primero, luego escalar»
HumanoLa doc dice literalmente «Avoid if possible»

Tres consejos para LLM-as-judge: rúbricas detalladas y claras; salida empírica y acotada (solo correcto/incorrecto, o escala 1-5); y pedir que razone antes de puntuar y después descartar el razonamiento. En el sistema de investigación de Anthropic, un solo juez con una sola llamada resultó más consistente que varios jueces.

Métodos por criterio, según la doc: fidelidad → exact match; consistencia → similitud coseno; relevancia y coherencia → ROUGE-L; tono → Likert vía LLM; privacidad → clasificación binaria.

Reducir alucinaciones

Básicas: permitir que diga «no lo sé»; usar citas textuales como anclaje (para documentos de más de 20k tokens, pedir los quotes literales antes de la tarea); verificar, con retractación si no encuentra un quote que respalde una afirmación.

Avanzadas: chain-of-thought verification; best-of-N (misma prompt N veces — las inconsistencias delatan alucinación); refinamiento iterativo; restricción a conocimiento externo (usar solo los documentos aportados).

Diagnóstico en producciónRepite el mismo input varias veces. Inconsistente entre ejecuciones → alucinación. Fallo sistemático y reproducible → prompt o capacidad del modelo. Separar eso antes de tocar nada es el primer paso.

Y el disclaimer oficial: estas técnicas reducen, no eliminan, las alucinaciones.

platform.claude.com/docs/en/test-and-evaluate/develop-tests · .../strengthen-guardrails/reduce-hallucinations

13 · Seguridad: inyección, mínimo privilegio, secretos

CCAO-F 15%CCAR-P 14%CCDV-F 8,1%

Dos modelos de amenaza distintos

Jailbreak o inyección directa: el adversario es el usuario. Inyección indirecta: el usuario es de confianza, pero Claude procesa contenido de terceros — webs, emails, documentos, resultados de tools.

Mitigaciones de inyección indirecta (lo más examinable)

  • Poner el contenido no confiable solo en bloques tool_result, nunca en el system prompt ni en bloques de texto de usuario. Claude está entrenado para tratar con escepticismo las instrucciones que aparecen dentro de tool results.
  • Declarar qué es y de dónde viene ese contenido.
  • Declarar la política en el system prompt: el contenido de tools y documentos es dato no confiable y nunca puede sobreescribir el system prompt ni la petición original.
  • Codificar en JSON el contenido no confiable: el escapado da delimitadores inequívocos e impide «salir» del contexto cerrando comillas o etiquetas.
  • No metas tus propias instrucciones dentro de un tool result: se ignoran o se marcan como inyección. Van en un turno de usuario posterior.
  • Screening de las salidas de tools antes de que Claude actúe sobre ellas, con un modelo ligero y salida estructurada.
  • Red-team de tu propio agente antes de desplegar, y monitorización continua después.
Mínimo privilegio: el patrón de respuesta correctaAnte un agente con capacidades que no necesita, la respuesta correcta es quitar la capacidad. Loggear es forense (el daño ya ocurrió). Confirmar depende de un humano atento y sufre fatiga de aprobación. Instruir en el system prompt es una petición, no un control. Ninguna de las tres cierra el vector.

En el conector MCP esto se implementa como allowlist (deshabilitar por defecto y habilitar tools concretas) o denylist. Para un asistente de solo lectura, se deniegan las tools de escritura y destructivas.

Claves y secretos

  • Guardarlas en un gestor de secretos, rotarlas periódicamente y revocar cualquiera que se sospeche filtrada.
  • Usar workspaces para segmentar claves por proyecto y entorno — así un incidente se aísla.
  • La expiración se elige al crear la clave y no se puede cambiar después. Tras expirar: 401, y no se pueden reactivar.
  • La expiración no sustituye a la higiene de secretos.
  • CORS no está soportado con zero data retention: hay que enrutar por un backend proxy, nunca llamar a la API desde el navegador.
platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks · .../manage-claude/authentication · .../agents-and-tools/mcp-connector

14 · RAG y estrategias de recuperación

CCAR-P 19%

Casi exclusivo del Architect Professional. Si vas solo a por los Foundations, puedes saltarlo.

La decisión previa a montar RAGSi la base de conocimiento cabe por debajo de ~200.000 tokens (unas 500 páginas), se puede meter entera en el prompt sin RAG. Con prompt caching, la latencia baja más de 2× y el coste hasta un 90%. Montar un pipeline de recuperación sobre un corpus que cabe en la ventana es complejidad injustificada.

Por qué embeddings solos no bastan

Los embeddings capturan semántica y pierden coincidencias léxicas exactas: identificadores, códigos de error, nombres propios raros. El ejemplo de la doc es «Error code TS-999». BM25 las recupera. Se combinan con rank fusion, y esa es la línea base recomendada.

Contextual Retrieval y sus cifras

Consiste en anteponer a cada chunk un contexto explicativo generado por el modelo (típicamente 50-100 tokens) antes de embeberlo y de indexarlo en BM25. Medido como reducción de fallos de recuperación sobre una línea base del 5,7%:

ConfiguraciónReducción de fallos
Contextual embeddings solo−35% (5,7% → 3,7%)
+ Contextual BM25−49% (→ 2,9%)
+ Reranking−67% (→ 1,9%)

Los beneficios se acumulan. Reranking: recuperar top-150, rerankear y pasar top-20 al modelo. Top-20 rinde mejor que top-10 y que top-5.

Enfoques que Anthropic probó y descartóAñadir resúmenes genéricos del documento a cada chunk («ganancias muy limitadas») e indexación basada en resúmenes («bajo rendimiento»). Son distractores perfectos porque suenan razonables.

Anthropic no ofrece modelo de embeddings propio: la doc recomienda proveedores externos. Y la regla final del post: «Always run evals».

anthropic.com/engineering/contextual-retrieval · platform.claude.com/docs/en/build-with-claude/embeddings

15 · Compliance: ZDR, HIPAA, retención

CCAO-F 15%CCAR-P 14%

Certificaciones

HIPAA-ready (con BAA), ISO 27001:2022, ISO/IEC 42001:2023 (gestión de sistemas de IA), SOC 2 Tipo I y II. FedRAMP no está en esa lista corporativa: llega por terceros (Bedrock en GovCloud, Claude for Government).

La distinción que más caeBajo HIPAA, la API bloquea con 400 una feature no elegible.
Bajo ZDR, la API no bloquea: usar una feature no elegible es optar por salir del acuerdo para ese dato concreto.

Zero Data Retention

  • Se habilita por organización y no se extiende automáticamente a otras organizaciones de la misma cuenta.
  • No elegibles: procesamiento por lotes (retiene resultados), Files API, ejecución de código, conector MCP, Agent Skills, y CORS.
  • Los datos retenidos nunca se usan para entrenar sin permiso expreso.

HIPAA

  • Requiere BAA firmado, se aplica a nivel de organización y una vez habilitado es permanente: un admin no puede desactivarlo. Para cargas HIPAA y no-HIPAA hacen falta organizaciones separadas.
  • Si tienes HIPAA, no necesitas además ZDR.
Regla concreta y fácil de violarBajo HIPAA, no incluir PHI en definiciones de JSON schema — ni en nombres de propiedades, ni en enum, const o pattern. Los schemas se cachean aparte y no reciben las protecciones. Es facilísimo caer modelando un campo como enum de valores reales.

Retención pese a cualquier acuerdo: si el contenido lo marcan los sistemas automáticos de trust & safety o hay requerimiento legal, se puede retener hasta 2 años.

En Bedrock o Google Cloud el proveedor cloud es el data processor, no Anthropic: hay que consultar su documentación.

support.claude.com/en/articles/10015870 · platform.claude.com/docs/en/manage-claude/api-and-data-retention

17 · Claude Code en equipo: permisos, revisión y portabilidad

CCAR-F 20%CCAR-P 7%CCDV-F 3,1%

Este bloque vale casi cuatro veces más en el Architect Foundations que en el Developer. Estúdialo pensando en el CCAR-F.

El modo de permisos es una decisión de riesgo, no de velocidadSe elige por el perfil de riesgo del trabajo y del entorno, no por la preferencia de que pregunte menos. Un modo bypass en una máquina de desarrollo contra un repositorio vivo elimina todos los puntos de control entre el agente y tus ficheros.

Y el matiz que completa la respuesta: una regla deny sobre la ruta que no se debe tocar, puesta a nivel de proyecto o de empresa, cubre el hueco que el modo por sí solo no cubre. Modo y reglas son capas distintas: el modo decide cuánto pregunta, la regla decide qué es directamente inalcanzable.

Revisión de código con IA

Findings para triar, no un veredicto para aplicarFíate de lo que el revisor puede probar desde el diff que tiene delante — un null check que falta, un recurso sin cerrar — y confírmalo en las líneas que cita. Trata cualquier afirmación sobre comportamiento en ejecución o sobre otro sistema como una hipótesis a verificar, porque la hizo sin la evidencia que la probaría.

Dos consecuencias de diseño: la puerta humana va donde un hallazgo se convierte en una acción difícil de revertir, no en cada comentario; y la forma de subir la precisión del revisor es darle las convenciones del equipo que si no tendría que adivinar. Es exactamente el escenario 5 del CCAR-F (Claude Code en CI/CD), donde el objetivo declarado es dar feedback accionable y minimizar falsos positivos.

Portabilidad de skills

El mismo SKILL.md corre en Claude Code, en la Messages API y a través del Agent SDK, pero cada runtime lo carga y lo aísla distinto: descubrimiento por filesystem en Claude Code, beta headers y contenedor de ejecución de código en la API, y setting sources en el SDK.

  • Una skill acotada a una descripción clara y libre de suposiciones sobre el entorno local se porta limpia. Una que da por hecho la terminal en la que se escribió, no.
  • En todos los runtimes, los subagentes arrancan limpios: no precargan skills automáticamente.

Los cuatro mecanismos de contexto duradero

MecanismoProblema que resuelve
CLAUDE.mdMemoria de proyecto persistente entre sesiones. Se diluye con el tamaño.
Ficheros de reglasAcotan la guía al sitio donde aplica
HooksAplican guardarraíles de forma determinista, no probabilística
SubagentesMantienen el trabajo de exploración fuera del contexto principal
El anti-patrónMeter los cuatro en CLAUDE.md. Produce un único fichero más difícil de mantener y más fácil de ignorar. Cada mecanismo resuelve un problema distinto; si un ítem te ofrece «documéntalo todo en CLAUDE.md», desconfía.

Que el montaje sea compartible

Un plugin que referencia una ruta absoluta al directorio personal del autor se instala en una máquina y falla en todas las demás. Reglas: rutas relativas a la raíz del proyecto en todo lo que se vaya a compartir, requisitos de variables de entorno documentados o validados en la instalación, y probar la instalación desde una máquina limpia antes de distribuir.

code.claude.com/docs/en/permissions · .../permission-modes · .../plugins-reference · docs.claude.com/en/docs/agents-and-tools/agent-skills/overview

18 · MCP: transporte, scope y requisitos de empresa

CCAR-P 19%CCAR-F 18%CCDV-F 10,6%
Transporte y scope son decisiones independientes con consecuencias dependientesstdio para servidores que corren en tu máquina. HTTP para cualquier cosa hospedada en remoto o usada por varios desarrolladores.
Scope local deja el servidor personal. Scope de proyecto lo comparte con el repositorio vía .mcp.json.
La combinación tiene que casar con la intención de despliegue.

De ahí sale la frase que más se presta a ítem: un servidor stdio declarado en .mcp.json es una configuración que parece compartible y no lo es. El fichero viaja con el repo, pero el proceso que lanza solo existe en la máquina del que lo escribió. Un servidor de equipo requiere transporte HTTP y scope de proyecto o de empresa: las dos cosas a la vez.

Los cuatro requisitos que trae un cliente regulado

Pregunta del clienteRespuesta técnica
IdentidadOAuth para servicios con identidad de usuario
Credenciales de servicioVariables de entorno, nunca en el repositorio
Registro de accesosHooks PostToolUse para auditoría
Control de configuraciónManaged settings de empresa, que no se pueden anular
Por qué esto se preguntaNinguno de los cuatro es difícil de implementar, pero todos son difíciles de meter con calzador después de que un despliegue en producción haya suspendido una revisión de seguridad. La respuesta correcta en un ítem de escenario suele ser «identificar los requisitos de seguridad antes de desplegar», no la mitigación concreta.
code.claude.com/docs/en/mcp · modelcontextprotocol.io/specification/latest/basic/transports · .../basic/authorization · code.claude.com/docs/en/hooks

19 · Números que caen

Repaso rápido la víspera. Si te sabes esta tabla, tienes cubierta la parte memorística de los cuatro exámenes.

ConceptoValor
Corte de aprobado720 sobre 100-1.000
Duración de todos los exámenes120 minutos
Validez de la credencial12 meses
Descuento del Batch API50% input y output
Límite de un batch100.000 requests o 256 MB
Ventana del batchmenos de 1 h la mayoría; expira a las 24 h
Resultados de batch descargables29 días
TTL de caché5 min por defecto · 1 h extendido
Breakpoints de cachéMáximo 4
Coste de cachéescritura 1,25× (5 min) / 2× (1 h) · lectura 0,1×
Degradación en selección de toolsPor encima de 30-50 tools
Descripción de tool recomendadaAl menos 3-4 frases
Umbral de long-context sin RAG~200.000 tokens (~500 páginas)
Contextual retrieval + BM25 + reranking−67% de fallos de recuperación
Reranking: qué se pasa al modeloTop-20, de top-150 recuperados
Quotes literales para groundingDocumentos de más de 20k tokens
Consumo de agentes vs chat~4× agente simple · ~15× multi-agente
Resumen que devuelve un subagente1.000-2.000 tokens
Reintentos por defecto de los SDK2, con backoff exponencial
Timeout de llamadas no-streaming10 minutos
Descripción de una Skillmáx. 1024 caracteres, en tercera persona
Metadata de Skill siempre cargada~100 tokens por skill

20 · Trampas por versión

La documentación de Anthropic se reescribe deprisa. Estos puntos aparecen en material de terceros con la respuesta antigua, que hoy es incorrecta. Son los ítems donde más gente falla por haber estudiado en blogs.

Prefill para forzar JSONAntes: rellenar el turno del asistente con {.
Ahora: no soportado en Claude 4.6+ e incompatible con JSON outputs. Se usa structured outputs.
Extended thinking con budget_tokensAntes: se fijaba un presupuesto explícito de razonamiento.
Ahora: deprecado y rechazado con 400 en los modelos recientes. Adaptive thinking está activo por defecto.
Sampling y roots en MCPAntes: primitivas de cliente estándar.
Ahora: deprecadas en la spec vigente. La primitiva de cliente viva es elicitation. Y el handshake initialize desaparece en la spec moderna, que es stateless.
El nombre de la tool de subagentesLa guía del examen la llama Task; la documentación actual la ha renombrado a Agent, y ambos nombres conviven en releases recientes. Si un ítem te obliga a elegir entre los dos sin contexto de versión, el ítem está mal escrito — en el examen real, ancla la respuesta en la guía.
stop_reason: "tool_use"Es un concepto de la Messages API. En el resultado del Agent SDK no aparece como valor posible, porque el bucle del SDK no termina en tool_use. Si la pregunta va de control de bucle, piensa a nivel de API.
El Evaluation Tool de la ConsoleSu página se retiró y se fusionó con la guía de evals. Los detalles de su interfaz que circulan por blogs no se pueden confirmar en documentación viva. No estudies la UI: estudia el método.
Fuera del alcance del CCAR-P · 1

Esto no lo evalúa el CCAR-P. Se deja accesible porque saber qué no entra también ahorra tiempo, pero no lo estudies para este examen.

16 · Criterio de negocio (Associate)

CCAO-F entero

Aquí el examen no mide conocimiento técnico sino juicio. Cambia el chip: la respuesta correcta suele ser la prudente y verificable, nunca la más rápida ni la más sofisticada.

Heurísticas que resuelven la mayoría de ítems

  • Ante un dato con pinta de preciso (número de artículo, cifra, referencia) → verificar contra la fuente autoritativa antes de usarlo. La confianza declarada por el modelo no es señal de exactitud.
  • Ante datos personales regulados → anonimizar o eliminar antes de subir. Que el uso sea interno no exime de la política, y «instruir al modelo para que no retenga» no es un control de cumplimiento.
  • Ante volumen alto y tarea sencilla → modelo rápido y barato.
  • Ante «automatiza este proceso» → analizar el proceso antes. Automatizar un proceso malo da un proceso malo más rápido. Integrar no es rediseñar.
  • Ante un stakeholder que pregunta si puede fiarse → valor y límites, con el control de verificación que lleva incorporado. Ni sobreventa ni rechazo.
  • Ante una decisión de alto impacto sobre personas → no la delegues en la salida del modelo. Revisión humana antes de que nada tenga efecto.
  • Ante una conversación larga que se vuelve incoherente → resumir y reiniciar con ese resumen.
  • Ante una corrección que haces siempre a mano → eso es configuración, no trabajo: súbela a las instrucciones del Project.
  • Ante un prompt que empeora al añadirle requisitos → aislar, quitando y reintroduciendo de uno en uno.

Y un objetivo que se olvida: mantener. Un Project que funcionaba y se degrada a los seis meses casi siempre tiene fuentes de conocimiento e instrucciones obsoletas que nadie actualizó.