AIDive

Borré mi CLAUDE.md y medí qué se rompió

Por AIDive · Publicado el

Agentes de programación

Borrado, medido, se rompió una regla

Borrar un CLAUDE.md significa quitar el archivo de instrucciones que Claude Code lee al comienzo de cada conversación. Boris Cherny, el creador de Claude Code, dijo en un escenario que lo borráramos cada seis meses. Veintidós vídeos lo repitieron en siete semanas. Ninguno abrió un repositorio.

Este artículo hace lo que esos vídeos no hicieron: toma una app real con un CLAUDE.md de 177 líneas, tres skills, cuatro comandos y un hook, ejecuta cinco tareas cotidianas con el archivo y sin él, y cuenta. Cuarenta y cuatro ejecuciones después, se rompió exactamente una regla. El archivo costó tokens en cada tarea, nunca la misma cantidad, y una de sus líneas nadie pudo seguirla.

El clip, palabra por palabra, y las dos frases que no son suyas

El clip viene de la charla de Boris Cherny en YC Startup School, grabada el día después de que Opus 5 saliera. Sus palabras: cada seis meses, borra tu CLAUDE.md, borra tus skills, borra tus hooks. Mira qué hace el modelo, puede que te sorprenda. Con Opus 5, dice, Anthropic realmente recomienda probarlo: puede que el modelo ya no necesite todas esas instrucciones.

Treinta segundos antes viene la salvedad que nadie cita. Anthropic no borra toda la base de código. Borra mucho, y a eso lo llama una ablación. La transcripción escrita conserva esa frase completa hoy. El ochenta por ciento del system prompt de Claude Code se fue así: borrar todo, traerlo de vuelta línea por línea, medir cada línea.

Dos frases que los vídeos de reacción le atribuyen no están en la charla. "Contexto, objetivos y una definición de terminado" no aparece en ningún sitio; lo más cercano que dice es tarea, guardrails, criterios de salida. "Sesenta y cuatro agentes reescribiendo Bun" tampoco es su número: es de Jarred Sumner, en el post de Bun. Cherny dice once días y, cuando le piden una cifra, calcula miles.

Veintidós vídeos en siete semanas citaron el clip. Ninguno hizo la prueba. Así que este artículo hace lo que él realmente describió: borrar, traer de vuelta una pieza a la vez, medir.

El instrumento: ablación, no borrado

Una ablación quita una pieza de una configuración a la vez y mide el efecto, en vez de borrarlo todo y adivinar. El CLAUDE.md se lee al comienzo de cada conversación y de nuevo en cada turno; los skills solo se cargan cuando se invocan. Esa diferencia es lo que se midió.

Anthropic incluye el interruptor de borrado: una simple flag, la misma variable que Cherny nombra en el escenario. El repositorio es una app real mía: 177 líneas de instrucciones, tres skills, cuatro comandos y un hook que se dispara en cada búsqueda.

Dimensión Valor
Tareas cotidianas 5 (componente nuevo, edición, refactor, cambio de store, pregunta de arquitectura)
Configuraciones 5 (completa, sin archivo, sin skills, sin hook, nada)
Modelo uno, fijo
Entorno directorio de configuración vacío, clon nuevo antes de cada ejecución
Ejecuciones 44
Costo $39

Cada ejecución se evaluó de la misma forma, en el mismo clon, por un script en vez de a mano. Lo que cuenta como roto: las propias reglas del repositorio (imports, tipos, design tokens, traducciones) más typecheck y lint.

La única herramienta construida para este tipo de ablación, Caliper, ablata skills y servidores MCP pero nunca toca el archivo; el intercambio del CLAUDE.md se hizo a mano. Los límites, dichos una vez: un repositorio, un modelo, dos ejecuciones por celda, sin transcripción. El primer resultado marcó el tono: la tarea de refactor salió idéntica, sesenta y cuatro centavos con el archivo y sesenta y tres sin él.

Qué se rompió: una regla, en archivos nuevos

La regla que se rompió es una regla de internacionalización, en las propias palabras del archivo: siempre añade inglés y francés, nunca hardcodees un string que vea el usuario. En la tarea de componente nuevo, con el archivo, las cuatro ejecuciones escribieron el archivo de traducción. Sin él, tres de cuatro ejecuciones dejaron el encabezado hardcodeado. Misma tarea, mismo repositorio, mismo modelo, mismo prompt.

Componente nuevo Escribió el archivo de traducción
Con CLAUDE.md 4 de 4
Sin CLAUDE.md 1 de 4

La tarea de edición cuenta la otra mitad. Todas las configuraciones acertaron, incluso sin nada, porque los vecinos lo enseñan: todos los componentes junto al editado ya tienen un archivo de traducción. Todo lo demás se mantuvo en las cuarenta y cuatro ejecuciones: el alias de import, type sobre interface, los design tokens, el patrón del store. El código lo muestra, el archivo lo repite.

Un paper de ETH Zurich midió lo mismo en 138 issues reales. Su hallazgo: los archivos de contexto no mejoran el éxito y cuestan alrededor de un veinte por ciento más, y el modelo sí sigue las instrucciones. Una salvedad: una ejecución sin el archivo escribió el archivo de traducción de todos modos. La regla no es imposible sin el archivo, es poco fiable. Se rompió una regla, la que el código no podía enseñar. Y la ejecución que se saltó ese trabajo también fue la más barata.

Lo que costó el archivo, tarea por tarea

El costo en tokens de un CLAUDE.md es la diferencia de tokens leídos entre una ejecución con el archivo y la misma ejecución sin él.

Tarea Menos tokens leídos sin el archivo
Componente nuevo 61%
Edición 15%
Refactor 5%
Cambio de store 4%
Pregunta de arquitectura 14%
En las diez ejecuciones 32% tokens, 22% dinero

Treinta y dos por ciento es el número que titularía cualquier vídeo, y es el equivocado. El mayor ahorro es la ejecución que no escribió el archivo de traducción: más barata porque hizo menos. Donde la salida fue idéntica, el archivo costó de cuatro a catorce por ciento. Ese es su precio real, y el veinte por ciento del paper cae justo entre esos dos números.

El mecanismo cuesta unos 1.800 tokens, leídos de nuevo en cada turno. Los skills, el hook y el knowledge graph no produjeron nada medible, presentes o ausentes. El ruido es mayor que casi todo eso: la misma tarea con el mismo archivo costó $2.11 en una ejecución y $1.33 en la otra. Dos ejecuciones llegaron al límite de turnos, una con el archivo y otra sin él. Así que el archivo cuesta un poco en todas partes y se gana su lugar una vez, a menos que también mienta.

Las líneas que mentían

Una línea mentirosa es una instrucción que el modelo no puede seguir o que no cambia nada. La línea que se adelantó al principio: importa el tema desde el alias de design-tokens. El alias no existe: la configuración de TypeScript mapea un prefijo, y la carpeta de tokens no tiene ningún archivo de tema. En cada ejecución, con el archivo o sin él, se hizo lo mismo que hacen los vecinos, la misma línea de import cuarenta y cuatro veces.

El archivo tiene ochenta y dos líneas de resumen de arquitectura. Misma pregunta, seis respuestas: las seis encontraron los mismos nueve archivos, de backend a pantalla, en el mismo orden, con el resumen y sin él. Un bloque apunta a un knowledge graph que el clon no tiene; con el grafo presente, la pregunta costó lo mismo.

Medida Valor
Regla de tamaño de Anthropic menos de 200 líneas
Este archivo 177 líneas
Archivo mediano en el dataset de 30k repos de reporails 50 ítems, 12 directivas
Líneas de directiva en este archivo 24 de 177

La posición decide cuál de dos reglas contradictorias gana, y el modelo nunca lo dice, unos noventa puntos en el test de un proveedor. El resumen podría ayudar en una tarea que no se ejecutó aquí: una sola sonda, una sola respuesta. Tres tipos de líneas, entonces: la que se ganó su lugar, las que el código ya enseña, las que mienten.

Guardar, mover, borrar: la lista corta

Tres montones, y la medición detrás de cada uno.

Montón Qué va ahí Medición
Guardar La regla que el código no puede mostrar 6 líneas que salvaron 4 ejecuciones
Mover El resumen de arquitectura y los comandos 107 líneas sin ganancia medida
Borrar Las líneas que mienten, y las que el árbol ya muestra 44 ejecuciones idénticas

Guarda lo que el modelo falló dos veces: ese es el propio criterio de Anthropic para el archivo. Mueve el resumen y los comandos a un árbol de archivos que se cargan cuando se necesitan; el post de julio de Anthropic llama mito al repositorio central. Los hooks se quedan: una gate no caduca cuando el modelo mejora. Corta la prosa que el modelo ya superó, conserva la gate.

El archivo después: unas setenta líneas, las seis que se lo ganaron encima. Ese es el método de Cherny, leído entero: borrar, traer de vuelta línea por línea, medir. Un repositorio, un modelo, dos ejecuciones por celda; tus montones serán distintos, el método no. Borrar costó una regla y ahorró poco. Encontrar las líneas que mienten fue la ganancia.

Fuentes

Preguntas frecuentes

¿Deberías borrar tu CLAUDE.md como dijo Boris Cherny?
No a ciegas. La charla de Cherny describe una ablación: borrar el archivo, traerlo de vuelta línea por línea y medir cada línea. En un archivo real de 177 líneas, borrarlo rompió una regla en 44 ejecuciones y ahorró poco; la ganancia fue encontrar las líneas que mienten.
¿Qué se rompe cuando borras un CLAUDE.md?
En este repositorio, una regla: añadir siempre traducciones en inglés y francés. Sin el archivo, tres de cuatro ejecuciones dejaron un encabezado hardcodeado en la tarea de componente nuevo. Todas las demás reglas se mantuvieron porque el código vecino ya las muestra.
¿Cuántos tokens cuesta un CLAUDE.md?
Unos 1.800 tokens leídos de nuevo en cada turno. Tarea por tarea eso fue del 4% al 61% menos tokens leídos sin el archivo; donde la salida fue idéntica el archivo costó del 4% al 14%, lo que coincide con el 20% promedio del paper de ETH Zurich.
¿Qué debería quedarse en un CLAUDE.md?
Las reglas que el código no puede mostrar, que es también el propio criterio de Anthropic: guarda lo que el modelo falló dos veces. Mueve resúmenes y listas de comandos a archivos que se cargan cuando se necesitan, borra instrucciones que apuntan a cosas que no existen, y conserva los hooks, porque una gate no caduca cuando el modelo mejora.
¿Los archivos de contexto como CLAUDE.md o AGENTS.md mejoran a los agentes de código?
El paper de ETH Zurich sobre 138 issues reales encontró que los archivos de contexto no mejoran el éxito de la tarea y elevan el costo de inferencia más de un 20% en promedio, aunque el modelo sí sigue las instrucciones. Esta medición en un repositorio cayó en el mismo rango.
¿Qué es una ablación en términos de Claude Code?
Quitar una pieza de la configuración a la vez, con el modelo fijo y un clon nuevo por ejecución, y medir el efecto. Anthropic la usó para recortar el 80% del system prompt de Claude Code; aquí se ejecutó en cinco configuraciones: completa, sin archivo, sin skills, sin hook, nada.

Vídeos relacionados