← Artículos

Por qué Claude te escribe código que ya no existe

· 5 min de lectura

Claude no inventa funciones al azar: repite la documentación que existía cuando lo entrenaron. Si tu librería cambió de versión después de esa fecha, el modelo escribe código correcto para una versión que tú ya no usas. El arreglo no es un modelo más caro, sino inyectarle la documentación de tu versión exacta antes de que escriba, con un servidor MCP como Context7.

Me pasó esta semana. Le pedí a Claude un pedazo de código para una librería que uso todos los días, lo pegué, y explotó. La función que había escrito no existía. Perdí un buen rato buscando el error en mi lado —el prompt, la versión de Node, mi propio archivo de configuración— hasta que caí en la cuenta de que el código no estaba mal: estaba viejo. Esa distinción cambia todo lo que haces después.

Un modelo no consulta la documentación, la recuerda

Un modelo de lenguaje no abre la web de tu librería cuando le preguntas. Responde con lo que quedó fijo en su entrenamiento. Si la librería publicó una versión nueva después de esa fecha —y las librerías del ecosistema JavaScript publican varias por mes— el modelo sigue escribiendo con la API vieja, y lo hace con toda la seguridad del mundo, porque para él esa API existe. Por eso el síntoma es tan raro de diagnosticar: el código se ve bien, tiene la forma correcta, y el error que te devuelve la terminal no dice "esto es de otra versión". Dice que la función no existe, y tú asumes que te equivocaste al escribirla.

Este sistema es el que enseño dentro de la comunidad MÁQUINA IA: las estaciones, los gates y el código que lo sostiene.

Por qué escribir un prompt mejor no lo arregla

Esta es la parte que me costó aceptar. Pasé un rato intentando resolverlo por prompt: "usa la última versión", "no uses funciones deprecadas", "revisa la documentación oficial". Ninguna funciona, y la razón es simple: le estás pidiendo al modelo que consulte algo que no tiene. Pedirle que sea más cuidadoso con información que no posee solo hace que invente con más convicción. Cambiar a un modelo más caro tampoco lo arregla. Un modelo mejor razona mejor sobre lo que sabe; no sabe más de tu librería de lo que sabía el día que lo entrenaron.

Lo que sí lo arregla: documentación por versión, dentro del prompt

La solución real es aburrida y mecánica: meterle la documentación actual de tu librería, en tu versión exacta, dentro del contexto antes de que escriba una línea. Eso es exactamente lo que hace Context7, el servidor MCP de Upstash (60.500 estrellas en GitHub, licencia MIT). Expone dos herramientas: una que traduce el nombre de tu librería a un identificador interno, y otra que trae la documentación de esa versión concreta y la coloca en el contexto del modelo. No es un modelo nuevo ni un plugin mágico: es un buscador de documentación con permiso para escribir en el prompt. Se conecta a Claude Code como cualquier otro servidor MCP, y funciona sin clave de API con límites básicos de uso. La clave gratuita del panel de Context7 solo sube esos límites.

El dato honesto: lo que esto no hace

No cubre librerías que Context7 no tenga indexadas. Si tu dependencia es interna, privada o muy de nicho, sigues en el mismo punto: ahí lo que funciona es pegarle tú el fragmento de documentación relevante. Tampoco es gratis en tokens. Inyectar documentación consume contexto, y en una conversación larga ese contexto compite con tu propio código. Vale la pena cuando trabajas con una librería que se mueve rápido; es ruido cuando le pides algo que no depende de ninguna versión. Y no arregla el problema de fondo, que es de diseño: mientras los modelos se entrenen con una foto del pasado, siempre va a hacer falta una pieza que les acerque el presente.

Cómo lo tengo montado

Lo conecto una sola vez con alcance de usuario, para que esté disponible en todos mis proyectos, y le dejo escrito en el archivo de instrucciones del proyecto que consulte la documentación antes de escribir código de esa librería. Con eso, la regla deja de depender de que yo me acuerde de pedirla. Si te está pasando lo mismo, el cambio de mentalidad es este: cuando Claude escriba algo que no compila, antes de dudar de tu prompt, pregúntate de qué año es la respuesta.

Preguntas frecuentes

¿Por qué Claude escribe código con funciones que ya no existen?
Porque responde con la documentación que estaba vigente cuando se entrenó el modelo, no con la que está publicada hoy. Si tu librería sacó una versión nueva después de esa fecha, el modelo sigue usando la API anterior. No es una alucinación al azar: es información correcta pero caducada, y por eso resulta tan convincente.
¿Sirve pedirle en el prompt que use la última versión?
No de forma fiable. Le estás pidiendo que consulte información que no tiene almacenada, así que en el mejor de los casos adivina y en el peor inventa con más seguridad. Lo único que funciona es darle la documentación actual dentro del contexto, ya sea pegándola tú a mano o con un servidor MCP que la traiga automáticamente.
¿Qué es Context7 y cuánto cuesta?
Context7 es un servidor MCP de Upstash, de código abierto con licencia MIT, que trae documentación actualizada y específica de versión y la inyecta en el contexto del modelo. Se puede usar sin clave de API con límites básicos de uso; la clave gratuita del panel solo sirve para subir esos límites. No requiere pagar una suscripción para empezar.
¿Un modelo más caro resuelve el problema de la documentación vieja?
No. Un modelo más capaz razona mejor sobre lo que ya sabe, pero su conocimiento de tu librería sigue congelado en la fecha de entrenamiento. El problema no es de capacidad de razonamiento sino de datos ausentes, y eso solo se soluciona metiendo la información que falta dentro del contexto de la conversación.

Fuentes