CCAR-F · Claude Code
Modo plan o ejecución directa
Pedirle a Claude Code que “pase el monolito a microservicios” y dejarlo editar desde el primer minuto es una receta para el retrabajo (rework): las dependencias aparecen tarde y las decisiones de arquitectura quedan tomadas por accidente. Pedirle un plan para corregir un typo es perder tiempo. La pregunta es cuándo vale la pena planear.
Los dos modos
En modo plan (plan mode), Claude explora el código y diseña un enfoque sin modificar nada: es exploración de solo lectura. Lo revisás, lo ajustás y recién después se ejecuta. En ejecución directa (direct execution), Claude lee y edita en el mismo paso.
| Modo plan | Ejecución directa |
|---|---|
| Varias formas válidas de hacerlo | Un solo camino claro |
| Decisiones de arquitectura (fronteras de servicios, elegir entre integraciones con distinta infraestructura) | Cambio acotado y conocido |
| Muchos archivos (una migración de librería que toca 45) | Un archivo, una función |
| Requisito vago sin datos (“hacé más rápido el checkout”) | Bug con stack trace claro, un typo que rompe el deploy, agregar una validación de fecha |
No hay un umbral fijo de archivos. Lo que decide es si hay ambigüedad y alternativas que comparar. Si la complejidad ya está en el requisito (“reestructurar la autenticación en 15 archivos”), el plan va desde el principio; no se espera a “ver si aparecen sorpresas”.
El patrón híbrido
Lo más común es combinar los dos: el patrón híbrido (plan-then-execute). Primero se planea en modo plan (mapear los usos de la librería vieja, decidir el patrón de reemplazo y los casos límite) y, con el plan aprobado, se pasa a ejecución directa para aplicarlo archivo por archivo. Replanificar cada archivo rompe la consistencia que buscaba el plan.
Y al revés: si a mitad de una ejecución directa aparece complejidad que no estaba en el requisito (un renombre simple que resulta tocar reflexión y seis paquetes), conviene parar y pasar a modo plan para mapear los usos antes de seguir.
Cuidar el contexto mientras se explora
Explorar produce mucha salida: listados de archivos, grafos de dependencias, fragmentos de código. Si todo eso entra en la conversación principal, la ventana se llena y las respuestas siguientes empeoran. El subagente Explore (Explore subagent) es un subagente integrado de solo lectura pensado para buscar y analizar código: hace la exploración en su propio contexto y devuelve solo un resumen. Su ventaja no es un acceso especial ni un modelo distinto, sino el aislamiento.
Las trampas típicas
- “Empezar directo y que la implementación revele las fronteras”: descubre las dependencias cuando ya hay que deshacer.
- “Ejecución directa con instrucciones muy detalladas”: supone que ya conocés la estructura correcta sin haber explorado.
- “Directo y paso a plan si aparece complejidad”, cuando la complejidad ya se conoce.
- Usar modo plan para todo, incluidos los cambios triviales.
- Leer los archivos en la conversación principal para “tener todo a mano” durante una exploración larga.
En el examen
Buscá en el escenario las señales: decisiones de arquitectura, varias opciones, decenas de archivos o un pedido sin datos piden modo plan; un cambio de una línea con causa conocida pide ejecución directa. Si la exploración amenaza con llenar el contexto, la respuesta suma el subagente Explore.
Pregunta rápida
Una pregunta del simulacro sobre este dominio. Cuenta para tu progreso.
An open-source foundation's tooling team reviews about 40 pull requests a week. They want a /pr-check command that takes a pull request number as an argument, fetches the diff and runs their review checklist on it.
The command must be version-controlled with the project, so that every maintainer gets the same version and changes to it go through review like any other code.
A first draft was written as a section in the root CLAUDE.md that asked for the PR number at the start, but maintainers found that it loaded in every session even when nobody was reviewing.
The maintainers work on Linux and macOS, and the project uses GitHub Actions for CI.
Where and how should the command be created?