Construimos nuestra web entera con Claude Code: lecciones del git log Soamee, a software agency, reports that 331 of 639 commits in its website repository since January 2025 involved Claude Code, with the AI tool generating initial translations across five languages, a translation-checker script, and repetitive components, while humans handled visual design and final content review. The agency continues using the tool despite limitations such as imperfect translations and the need for manual design work. Hay algo incómodo en publicar este artículo. Soamee es una agencia de software. Nos contratan para construir productos digitales. Y durante el último año y medio, hemos utilizado Claude Code extensivamente para construir nuestra propia web. Esto es lo que encontramos cuando abrimos el git log. No es un artículo de marketing sobre IA. Es una autopsia honesta: qué nos ahorró semanas, qué nos costó rehacer, y por qué seguimos usando la herramienta a pesar de sus limitaciones. Los números del repositorio Antes de entrar en análisis, los hechos: 639 commits desde enero de 2025 331 commits con participación de Claude Code marcados con Co-Authored-By: Claude 534 archivos en el proyecto actual .astro 345 posts de blog publicados o en borrador 115 casos de éxito en distintos idiomas 5 idiomas : español, inglés, portugués, italiano y alemán- El sitio lleva en producción continua en Dokku sobre soamee.com Ese 52% de commits con participación de IA no significa que Claude Code escribiera la mitad del código. Significa que estuvo presente en más de la mitad de las sesiones de trabajo, a veces generando archivos enteros, a veces sugiriendo una corrección de tres líneas. Qué construyó Claude Code El sistema de traducción Este es el caso de uso donde más hemos recuperado tiempo. El sitio tiene cinco idiomas. Cada post de blog, cada caso de éxito, cada página de servicio existe en ES, EN, PT, IT y DE. Sin IA, eso habría significado contratar cuatro traductores o asumir un retraso enorme entre el contenido en español y sus versiones traducidas. Claude Code generó las traducciones iniciales. No perfectas — el portugués tiene tendencia a contaminar con español cuando el modelo pierde contexto, el alemán necesita revisión de umlauts, el italiano a veces mezcla registros. Pero el borrador de partida existe en segundos, no en días. Los commits del log hablan solos: “Revisión contextual del portugués: bloques en español y acentos ambiguos”, “Corrige contenido en alemán: umlauts, erratas y bloques en español”. Revisamos cada traducción. Pero revisar es mucho más rápido que crear desde cero. El script de verificación de traducciones Tenemos un checker de traducciones que falla el CI si algún contenido en español no tiene su versión en los otros cuatro idiomas. Claude Code escribió la primera versión de scripts/translation-checker.cjs , con sus alias de categorías, sus excepciones para páginas solo-ES y su integración con el hook pre-push . Es un script de Node de 400 líneas que hace exactamente lo que especificamos. No es glamuroso. Es exactamente el tipo de tarea donde un desarrollador humano tarda dos horas y Claude Code tarda veinte minutos. Los componentes repetitivos El sitio tiene páginas de servicios, de industrias, de soluciones — muchas páginas con estructura similar pero contenido diferente. Claude Code generó la mayoría siguiendo el patrón establecido. Cuando el diseño del patrón cambió, las actualizamos en lote. También escribió el middleware de normalización de URLs HTTP a HTTPS, trailing slashes, redirecciones 301 para errores 404 detectados en Google Search Console , el generador del sitemap y varios scripts de CI. El contenido del blog Prácticamente todos los posts de este blog tuvieron participación de Claude Code, en mayor o menor medida. A veces generó el borrador completo a partir de un outline; a veces sugirió estructuras para artículos que yo ya había empezado; a veces simplemente expandió secciones que me habían quedado cortas. La voz es siempre revisada. La estructura suele ser sugerida. Los datos son siempre verificados manualmente. Qué tuvieron que hacer los humanos Diseño visual Este es el límite más claro. Claude Code puede implementar un diseño que le describes con precisión. No puede inventar uno. La identidad visual de soamee — el deep purple 1e1548 , la menta 5dd3b3 , las tramas diagonales a 45 grados, las burbujas concéntricas — salió de decisiones humanas, no de IA. Cuando le pedimos a Claude Code que “mejorara el diseño del blog”, a veces producía algo que funcionaba técnicamente pero que no sonaba a nosotros. Tuvimos que aprender a ser muy específicos: “añade un borde izquierdo de 3px en color mint en los blockquotes” funciona. “Mejora el diseño” no. Las decisiones de arquitectura Elegir Astro 5 con SSR híbrido fue una decisión humana. Elegir Tailwind CSS v4 antes de que hubiera mucha documentación fue una decisión humana y cara en tiempo de debugging . Elegir Dokku sobre otras opciones de deploy fue una decisión humana. Claude Code puede evaluar opciones si se las planteas, pero el criterio de selección — lo que importa para nuestro negocio, nuestro stack, nuestra capacidad operativa — lo ponemos nosotros. La revisión de cada PR Ningún cambio generado por Claude Code fue a producción sin pasar por una revisión. No porque no confiemos en el modelo, sino porque la revisión humana atrapa cosas que el modelo no puede saber: si el tono de un párrafo encaja con cómo hablamos, si una funcionalidad nueva tiene sentido para el negocio, si un link interno apunta al lugar correcto. El git log muestra commits como “Fix broken internal links: /contacto and /servicios/consultoria-tecnologica”. Esos links los rompió un cambio previo generado con IA. Los arregló una sesión posterior de revisión. La lógica de negocio real El formulario de contacto envía a través de Mailgun. La lógica de rate limiting, la gestión de errores, los campos requeridos — eso lo diseñamos nosotros. Claude Code implementó el código una vez que teníamos claro el comportamiento esperado. El flujo de trabajo que funcionó Tardamos unos meses en encontrar el flujo que realmente funciona. Lo que no funciona: darle a Claude Code una tarea ambigua y esperar el resultado perfecto. Lo que sí funciona: 1. Especificación primero. Antes de abrir Claude Code, escribimos qué queremos: el comportamiento exacto, las restricciones, los casos borde. Cuanto más específica la especificación, menos iteraciones. 2. Ramas y PRs siempre. Todo cambio generado con IA va en una rama. Nunca directamente a master. Esto permite revisar el diff completo antes de mergear y revertir fácilmente si algo falla. 3. CI como red de seguridad. El checker de traducciones, el checker de imágenes, los tests de links internos — todo corre en CI. Claude Code a veces genera contenido que pasa sintácticamente pero falla semánticamente un link a una página que no existe, una imagen referenciada pero no creada . El CI lo atrapa. 4. Revisión por secciones. No revisamos un PR de 50 archivos de una vez. Lo dividimos en bloques temáticos: primero el contenido en español, luego las traducciones de una lengua, luego las otras. 5. El humano cierra el commit. Siempre. El mensaje de commit lo escribe un humano, no Claude Code. Es una señal pequeña pero importante de que alguien ha mirado. Lo que nos sorprendió bueno y malo Sorpresas positivas El debugging de CSS es extraordinariamente bueno. Tailwind CSS v4 era territorio nuevo y con poca documentación cuando lo adoptamos. Claude Code nos ayudó a entender por qué ciertos breakpoints no se comportaban como esperábamos y cómo funciona el sistema de capas de v4. Sin esa ayuda, habríamos tardado mucho más en estabilizar el sistema de diseño. Los scripts de automatización son su punto fuerte. Translation checker, link checker, generador de sitemaps, scripts de snapshot SEO — herramientas que habrían tomado días se generan en horas y luego se refinan. La consistencia entre archivos similares es notable. Cuando tienes un patrón — una página de servicio, un post de blog con FAQ, un caso de éxito — Claude Code lo replica con fidelidad. Los humanos somos inconsistentes por naturaleza; el modelo no lo es. Sorpresas negativas La alucinación de dependencias. Especialmente en las fases iniciales con Astro 5 y Tailwind v4, Claude Code a veces sugería APIs que no existían en esas versiones. Aprendimos a verificar siempre contra la documentación oficial antes de implementar. El problema del contexto largo. En sesiones muy largas, el modelo puede “olvidar” restricciones establecidas al principio. Un ejemplo real: establecimos al inicio que no usaríamos ciertos componentes deprecated, y cinco horas después Claude Code los sugirió de nuevo. Las sesiones cortas y focalizadas funcionan mejor. El diseño “genérico” por defecto. Sin instrucciones muy específicas, Claude Code tiende hacia soluciones que se ven como cualquier otro sitio con Tailwind. El resultado técnicamente correcto, visualmente sin personalidad. La identidad de marca requiere supervisión constante. Las traducciones al portugués necesitan revisión especial. El modelo confunde con más frecuencia español y portugués que cualquier otro par de idiomas. Probablemente por la similitud entre lenguas. Las revisiones al PT son sistemáticamente más largas que las de DE o IT. ¿Lo haríamos de nuevo? Sí, con matices Si empezáramos soamee.com hoy, usaríamos Claude Code desde el día uno. Pero con estas guías claras: Úsalo para volumen, no para decisiones. Si tienes que crear 20 páginas similares, Claude Code es imbatible. Si tienes que decidir si esas páginas deben existir, pregúntate tú. El tiempo de revisión no desaparece, cambia. Antes del flujo con IA, el tiempo lo invertíamos en crear. Ahora lo invertimos en revisar. Es un cambio de naturaleza, no una reducción proporcional. Crear con IA es más rápido; revisar requiere atención y criterio. No elimines el CI por confianza. Cada vez que pensamos “este cambio es tan simple que no necesita check completo”, algo falla. El CI corre siempre, sin excepciones. La voz de marca es intransferible. Claude Code puede imitar estilos, pero no conoce tu empresa, tus clientes, tus valores internos. Los textos que importan — las propuestas de valor, las descripciones de servicio, los casos de éxito — pasan siempre por edición humana. Conclusión 639 commits. 331 con participación de IA. 534 archivos Astro. 5 idiomas. Y una web que funciona en producción, que rankea, que convierte. ¿Claude Code construyó soamee.com? No exactamente. Lo construimos nosotros, con Claude Code como herramienta principal para el volumen de trabajo. La diferencia importa: la herramienta no tiene stake en el resultado, no conoce el contexto de negocio, no toma las decisiones que definen el producto. Si tienes un proyecto con mucho contenido repetitivo, traducciones a múltiples idiomas, o necesitas mover mucho código en poco tiempo, Claude Code puede cambiar significativamente tu capacidad de output. Con revisión humana sistemática, con CI robusto y con expectativas calibradas sobre lo que puede y no puede hacer. Si te interesa cómo tomamos decisiones de stack — incluyendo por qué elegimos Astro sobre Next.js /blog/nextjs-vs-astro-2026 para este sitio — lo contamos en detalle en ese post. Y si tienes curiosidad por el trabajo que hacemos para clientes, puedes ver nuestros casos de éxito /casos y cómo trabajamos /como-trabajamos . El git log no miente. Y el nuestro dice que esta combinación funciona.