- Claude Code se usa ampliamente tanto en proyectos personales como en entornos de monorepo empresariales, y se organiza la forma real de usar sus componentes clave y funciones avanzadas
- La clave para operar agentes de forma efectiva no está en el estilo de salida ni en la UI, sino en la calidad del PR final, y la meta es una delegación estilo “configurar y olvidarse” (shoot and forget)
- El centro de la base de código es el archivo
CLAUDE.md, que funciona como una “constitución” que define las reglas de comportamiento del agente y cómo usar las herramientas
- Funciones como gestión de contexto, comandos slash, subagentes, Hooks y GitHub Action (GHA) elevan el nivel de colaboración y automatización
- Se distingue la relación entre Skills y MCP (Model Context Protocol) para enfatizar una estructura de agentes flexible y centrada en scripting
- Se ofrece una guía práctica para expandir Claude Code más allá de una simple herramienta CLI y convertirlo en una infraestructura de desarrollo con IA de nivel empresarial
- Uso muchísimo Claude Code
- En proyectos de hobby lo ejecuto varias veces por semana en una VM, usando
--dangerously-skip-permissions para convertir ideas en código al instante
- En el trabajo, el equipo construye reglas y herramientas para AI IDE, y nuestro equipo de ingeniería consume miles de millones de tokens al mes solo en generación de código
- El mercado de agentes CLI está saturado con Claude Code, Gemini CLI, Cursor y Codex CLI, pero la competencia real es entre Anthropic y OpenAI
- Pero al hablar con desarrolladores, la elección de herramientas depende de factores superficiales
- Como una implementación de función “con suerte” o el “vibe” de un system prompt preferido
- A estas alturas, todas estas herramientas son bastante buenas
- Algunos incluso se enfocan demasiado en el estilo de salida o la UI
- Adulaciones como "you're absolutely right!" no son un bug especialmente relevante
- Más bien son señal de que el usuario está demasiado metido en el loop
- Mi filosofía central de uso es "Shoot and Forget"
- El flujo es: delegar, configurar el contexto, ejecutar la tarea
- La herramienta se juzga por el PR final, evaluando el resultado y no el proceso para llegar ahí
- Este texto es una reflexión sobre todo el ecosistema basada en mi experiencia usando Claude Code durante los últimos meses
- Casi todas las funciones que uso (y las que no uso)
- El archivo básico
CLAUDE.md
- Comandos slash personalizados
- El poderoso mundo de los Subagents, Hooks y GitHub Actions
- Como el texto es bastante largo, se recomienda usarlo más como referencia que leerlo completo
CLAUDE.md: la constitución del agente
Compact, Context, Clear: gestión de la ventana de contexto
- Usa el comando
/context para revisar el uso de la ventana de 200k tokens
- Incluso en Sonnet-1M, no está claro si toda la ventana de contexto se aprovecha de forma efectiva
- Una sesión nueva en monorepo consume por defecto ~20k tokens (10%), y los 180k restantes se usan para cambios en curso (se agotan rápido)
- Tres flujos de trabajo principales
/compact (evitar): la compresión automática es opaca, da errores y está poco optimizada, así que conviene evitarla lo más posible
/clear + /catchup (reinicio simple): forma básica de reiniciar; con /clear se limpia el estado y luego un /catchup personalizado lee todos los archivos modificados del branch de git
- "Document & Clear" (reinicio complejo): para trabajo grande; Claude vuelca el plan y el progreso en un
.md → /clear → en una sesión nueva se lee el .md y se continúa
Comandos slash personalizados
- Los comandos slash son solo atajos simples para prompts frecuentes, ni más ni menos
- Configuración mínima
/catchup: prompt para leer todos los archivos modificados del branch de git
/pr: helper para ordenar el código, hacer staging y preparar el PR
- Una lista compleja de comandos personalizados es un antipatrón
- La esencia de un agente como Claude: generar resultados útiles y combinables a partir de casi cualquier entrada en lenguaje natural
- Obligar a ingenieros (o no ingenieros) a aprender una lista obligatoria de “comandos mágicos” para hacer tareas = fracaso
- El objetivo es construir un agente con un
CLAUDE.md más intuitivo y mejores herramientas
Subagent personalizado
- En teoría, una función potente de gestión de contexto
- Trabajo complejo: contexto de entrada de
X tokens + contexto de trabajo de Y tokens + respuesta de Z tokens
N tareas = (X + Y + Z) * N tokens en la ventana principal
- Solución con Subagent: delegar las tareas
(X + Y) * N a un agente especializado y devolver solo la respuesta final de Z tokens
- Dos problemas nuevos que crean los Subagent personalizados en la práctica
- Gatekeeping de contexto: al crear un Subagent
PythonTests, se oculta todo el contexto de pruebas al agente principal → imposible razonar de forma integral → se fuerza a llamar al Subagent para saber cómo verificar su propio código
- Imposición de flujo de trabajo humano: se obliga a Claude a seguir un flujo de trabajo rígido definido por humanos → indicar cómo delegar = el mismo problema que el agente debería resolver
-
Personalmente prefiero la función Task(...)
- Crear una copia de un agente de propósito general con la función integrada
Task(...) de Claude
- Colocar todo el contexto clave en
CLAUDE.md
- El agente principal decide cuándo y cómo delegar trabajo a su propia copia
- Se mantienen las ventajas de ahorro de contexto del Subagent, pero se eliminan sus desventajas
- El agente gestiona dinámicamente su propia orquestación
- En "Building Multi-Agent Systems (Part 2)" se le da el nombre de arquitectura "Master-Clone"
- La prefiero mucho más que el modelo "Lead-Specialist" que inducen los Subagent personalizados
Resume, Continue, History
- Uso básico
- Uso con frecuencia
claude --resume y claude --continue
- Reinicio rápido de una terminal con errores o de una sesión vieja
- Reanudar una sesión de hace varios días con
claude --resume para resumir cómo superé un error específico → mejorar CLAUDE.md y las herramientas internas
- Uso avanzado
- Claude Code guarda el historial de todas las sesiones en
~/.claude/projects/
- Tengo scripts que aprovechan los datos crudos del historial de sesiones
- Ejecuto metaanálisis sobre los logs: busco excepciones comunes, solicitudes de permisos y patrones de error → mejoro el contexto dirigido al agente
Hooks
- Críticos en repos empresariales: no los uso en proyectos hobby
- Reglas determinísticas de tipo "must-do" que complementan las sugerencias "should-do" de
CLAUDE.md
- Dos tipos
- Hook de bloqueo en la etapa de commit (Block-at-Submit): estrategia principal
- Envolver todos los comandos
Bash(git commit) con un Hook PreToolUse
- Verificar el archivo
/tmp/agent-pre-commit-pass (que el script de pruebas crea solo cuando todas las pruebas pasan)
- Si el archivo no existe, se bloquea el commit → se obliga a Claude a entrar en un bucle de "probar-corregir" hasta que el build funcione
- Hook de pista: Hook simple no bloqueante que da feedback de tipo "fire-and-forget" cuando el agente toma una opción subóptima
- No uso deliberadamente Hooks de bloqueo en la etapa de escritura (
Edit o Write)
- Bloquear al agente a mitad del plan causa confusión o "frustración"
- Es mucho más efectivo verificar el resultado final completado en la etapa de commit, después de terminar el trabajo
Modo de planificación
- La planificación es esencial para cambios de funciones "grandes" con un AI IDE
- Proyectos hobby: uso exclusivamente el modo de planificación integrado
- Cómo alinearme antes de iniciar Claude
- Definir cómo hacer el build y los "checkpoints de inspección" donde el trabajo debe detenerse y mostrar resultados
- El uso regular construye una fuerte intuición sobre el contexto mínimo necesario para obtener un buen plan sin que Claude arruine la implementación
- Monorepo empresarial: empecé a desplegar una herramienta de planificación personalizada basada en el SDK de Claude Code
- Similar al modo de plan nativo, pero con prompts enfocados en alinear la salida con el formato de diseño técnico ya existente
- Fuerza buenas prácticas internas por defecto (desde la estructura del código hasta privacidad de datos y seguridad)
- Permite que un ingeniero haga el "vibe plan" de una nueva función como si fuera un arquitecto senior (al menos esa es la propuesta)
Skills
- Coincido con Simon Willison: Skills es (probablemente) un negocio más grande que MCP
- Evolución en 3 etapas del modelo mental de autonomía del agente
- Single Prompt: darle todo el contexto al agente en un solo prompt gigante (frágil, no escala)
- Tool Calling: el modelo de agente "clásico", creando herramientas manualmente y abstracciones de la realidad para el agente (mejoró, pero crea nuevas abstracciones y cuellos de botella de contexto)
- Scripting: dar al agente acceso al entorno crudo (binarios, scripts, documentación) → el agente escribe código sobre la marcha para interactuar
- Agent Skills es la siguiente función obvia: una formalización del producto de la capa de "Scripting"
- Si preferiste CLI sobre MCP, ya obtuviste implícitamente las ventajas de Skills
- El archivo
SKILL.md es una forma más organizada, compartible y detectable de documentar esos CLI y scripts y exponerlos al agente
- Skills son la abstracción correcta: formalizan un modelo de agente basado en "scripting" más sólido y flexible que el modelo rígido tipo API que representa MCP
MCP (Model Context Protocol)
- Que existan Skills no significa que MCP esté muerto (ver "Everything Wrong with MCP")
- Problema anterior: mucha gente construyó MCP horribles y pesados en contexto, con decenas de herramientas que espejan una REST API (
read_thing_a(), read_thing_b(), update_thing_c())
- El modelo de "Scripting" (formalizado con Skills) es una mejor forma, pero necesita una manera segura de acceder al entorno → ese es el nuevo rol, más enfocado, de MCP
-
Nuevo rol de MCP: gateway de datos
- En lugar de APIs infladas, un gateway simple y seguro que ofrece unas pocas herramientas potentes de alto nivel
download_raw_data(filters…)
take_sensitive_gated_action(args…)
execute_code_in_environment_with_state(code…)
- El rol de MCP: gestionar autenticación, networking y límites de seguridad, y luego no estorbar, en vez de abstraer la realidad para el agente
- Proporciona un punto de entrada para el agente → el agente hace el trabajo real con scripting y contexto en
markdown
- El único MCP que uso actualmente: Playwright (tiene sentido porque es un entorno complejo y con estado)
- Todas las herramientas sin estado (Jira, AWS, GitHub) se migran a CLI simples
Claude Code SDK
- Claude Code no es solo una CLI interactiva, sino también un SDK potente para crear agentes completamente nuevos tanto para tareas de programación como no técnicas
- En la mayoría de los nuevos proyectos personales, empiezo a usarlo como framework base de agentes en lugar de herramientas como LangChain/CrewAI
- Tres formas principales de uso
- Scripting paralelo a gran escala: no usar chat interactivo durante refactorizaciones grandes, correcciones de bugs o migraciones
- Escribir scripts bash simples que llamen en paralelo a
claude -p "in /pathA change all refs from foo to bar"
- Mucho más escalable y controlable que hacer que un agente principal administre decenas de tareas de subagentes
- Construcción de herramientas internas de chat: perfecto para envolver procesos complejos en una interfaz de chat simple para usuarios no técnicos
- Ej.: un instalador que, cuando hay un error, recurre a Claude Code SDK para resolver el problema del usuario
- Ej.: una herramienta interna tipo "v0-at-home" para que el equipo de diseño pueda vibe-codear mockups de frontend con el framework UI interno de la empresa (garantiza alta fidelidad de la idea y permite un uso más directo en código frontend de producción)
- Prototipado rápido de agentes: el caso de uso más común, y no solo para programación
- Cuando hay una idea para una tarea de agente (por ejemplo, un "agente de investigación de amenazas" usando una CLI personalizada o MCP)
- Construir y probar rápidamente el prototipo con Claude Code SDK antes de hacer commit del scaffolding completo del despliegue
Claude Code GitHub Action (GHA)
- Una de mis funciones favoritas y más subestimadas: el concepto es simple (ejecutar Claude Code en GHA), pero esa simplicidad es la fuente de su poder
- Similar al agente en segundo plano de Cursor o a la UI web administrada de Codex, pero mucho más personalizable
- Control total del contenedor y del entorno → mejor acceso a los datos
- Controles de sandboxing y auditoría mucho más potentes que en otros productos
- Soporta todas las funciones avanzadas como Hooks y MCP
-
Casos de uso
- Construir una herramienta personalizada de "PR desde cualquier lugar"
- Se puede disparar un PR desde Slack, Jira e incluso alertas de CloudWatch
- GHA devuelve un PR completamente probado después de corregir el bug o agregar la funcionalidad
- Flywheel impulsado por datos
- Los logs de GHA = logs completos del agente
- Revisar periódicamente los logs a nivel empresa: detectar errores comunes, fallas de bash y prácticas de ingeniería desalineadas
- Flywheel: bug → mejoras en CLAUDE.md/CLI → mejor agente
$ query-claude-gha-logs --since 5d | claude -p "see what the other claudes were getting stuck on and fix it, then put up a PR"
settings.json
- Ciertas configuraciones son esenciales tanto para proyectos personales como para el trabajo
HTTPS_PROXY/HTTP_PROXY: para depuración
- Inspeccionar tráfico en bruto para ver el prompt exacto que Claude está enviando
- Para agentes en segundo plano, es una herramienta potente de sandboxing de red granular
MCP_TOOL_TIMEOUT/BASH_MAX_TIMEOUT_MS: aumentar los valores
- Se prefiere ejecutar comandos largos y complejos; el timeout por defecto suele ser demasiado conservador
- No está claro si sigue siendo necesario después de los trabajos bash en segundo plano, pero se mantiene por si acaso
ANTHROPIC_API_KEY: usar una clave de API enterprise en el trabajo (mediante apiKeyHelper)
- Cambiar del licenciamiento "por asiento" al precio "basado en uso" (un modelo mucho mejor para esta forma de trabajar)
- Considerar la enorme diferencia en uso entre desarrolladores (se ha visto una diferencia de 1:100 entre ingenieros)
- Los ingenieros pueden experimentar con scripts LLM que no sean Claude Code usando una sola cuenta enterprise
"permissions": auditar periódicamente por cuenta propia la lista de comandos que Claude tiene permitido ejecutar automáticamente
Cierre
- Es mucho contenido, pero espero que sea útil
- Si todavía no usas agentes basados en CLI como Claude Code o Codex CLI, deberías hacerlo
- Casi no hay buenas guías sobre estas funciones avanzadas, y la única forma de aprender es meterse de lleno
2 comentarios
Opiniones en Hacker News
Estamos sincronizando los archivos con AGENTS.md para mantener compatibilidad con otros IDE de IA
Al investigar recientemente, vimos que la forma recomendada por Anthropic es poner solo una línea con
@AGENTS.mden el archivoCLAUDE.md, y dejar el contenido real en AGENTS.mdDocumentación relacionada: Claude Code Best Practices
Me gustó mucho esta parte del artículo sobre MCP
Me parece acertada la idea de que “MCP no debería ser una API compleja, sino una puerta de enlace simple que gestione autenticación, red y límites de seguridad, y luego se quite del camino”
Artículo relacionado
Aun así, casi no uso MCP. Ojalá se enfocaran más en la parte de autenticación (auth)
Enlace de referencia: post en X
Es una lástima que un artículo de 3000 palabras se vea como “demasiado largo y solo para consulta”
Me gustaría ver una versión aún más extensa con ejemplos reales
Estoy usando una rutina de reinicio simple con
/cleary/catchuppara reiniciar el estado de Claude y hacer que vuelva a leer los archivos modificadosProbablemente pronto el comando
/compacttermine cumpliendo ese papel/compact, casi no se puede usarAunque muestre “0% context remaining”, en realidad alrededor de un 30% queda reservado para la compresión
Y aun así, como la mitad de las veces la compresión falla o choca con límites de la API
También está bueno usar Claude Code para mejorar su propia configuración
Recomiendo cambiar a modo plan y usar este prompt:
“Lee este documento (How I use every Claude Code feature) y dime cómo mejorar mi configuración de Claude Code”
Dejé de mantener CLAUDE.md porque Claude ni siquiera sigue bien instrucciones simples que están ahí
Por ejemplo, aunque le diga que nombre los scripts generados como
<foo>.aigen.ts, ignora eso la mitad de las vecesAsí que lo termino resolviendo metiendo el contexto directamente en el prompt cada vez
¿Soy el único al que le pasa esto?
He visto resultados parecidos en varios proyectos
Decían que “si no estás usando un agente basado en CLI, deberías hacerlo”, pero me pregunto si de verdad es mejor que la app de Cursor
Cursor es cómodo porque puedes seleccionar una parte específica del código y con Cmd-L decir “arregla esta parte”
Enviar fragmentos de código por CLI parece un poco engorroso
Tanto la UX liviana como la eficiencia son mejores. Claude funciona mejor en CC
gh)Al leer la frase “Claude Code no es un simple CLI, sino un SDK con el que puedes crear nuevos agentes”, sentí cansancio porque sonaba como prosa escrita por IA
Me dio la impresión de que no respetaba al lector
En este caso me parece un buen ejemplo porque se nota que el autor lo leyó y lo editó personalmente
En cambio, copiar y pegar salida de IA tal cual sí merece críticas
A mí, al contrario, me hizo sentir respetado y lo leí hasta el final
Estas herramientas son interesantes, pero me preocupa que la industria otra vez se esté enfocando en la tecnología en sí y no en el cliente
(Me recuerda al ensayo de Paul Graham “Top idea in your mind”)
Si el producto se hace rápido y barato pero queda lleno de bugs, no sirve de nada
Con la IA pasa lo mismo: los CEO la ven solo como una forma de recortar personal, pero la tecnología todavía no está al nivel de dar beneficios reales al cliente
Los chatbots de IA solo logran molestar más a los clientes
La velocidad a la que está avanzando Claude Code es sorprendentemente rápida
Sigue mejorando tanto que cada semana hay algo nuevo que aprender
Si pudiera agregar funciones sin volver lenta mi M4 Mac (64GB RAM), eso sí sería verdadera magia
Está bueno, pero..