Claude Code para código legacy: Oracle Forms, PL/SQL, .NET Framework y Visual C++ (guía y formación de equipos, 2026)
Claude Code sirve para código legacy de Oracle Forms, PL/SQL, .NET Framework, C# y Visual C++ siempre que el código esté en texto y el equipo trabaje con método: documentar antes de tocar, tests de regresión primero y cambios pequeños revisados por una persona. En octubre de 2026 lo que mejor funciona es formar primero a 5-8 champions durante 2 jornadas más 4 semanas, con un CLAUDE.md por repositorio, hooks que bloquean producción y la base de datos en solo lectura. Oracle Forms exige un paso previo: convertir los .fmb a XML con frmf2xml.
Este post sale de conversaciones reales de este otoño con departamentos de informática que mantienen sistemas de hace 15 o 25 años. Ninguno quiere "vibe coding". Quieren que el mantenimiento correctivo deje de comerse la semana y que la modernización deje de ser un proyecto que se aplaza cada ejercicio. Explico qué hace Claude Code en cada stack, qué no hace, la configuración que dejo montada en las formaciones y cómo compararlo con Copilot, Cursor y OpenCode sin humo.
Si buscas la guía general de adopción, está en Claude Code para empresas: implementación, formación y ROI. Aquí solo hablo de código heredado.
Por qué el código legacy es donde Claude Code rinde más (y donde más daño puede hacer)#
En un repositorio moderno con tests, Claude Code acelera. En un sistema legacy sin tests, sin documentación y con la persona que lo escribió jubilada, hace algo más valioso: convierte en texto legible lo que solo vivía en la cabeza de dos personas. Pero el mismo sistema tiene trampas que un repositorio nuevo no tiene: procedimientos que llaman pantallas que llaman procesos batch, lógica de negocio repartida entre triggers de base de datos y triggers de Forms, y una base de datos de producción a la que medio equipo tiene acceso con un usuario con demasiados privilegios.
Por eso el orden importa más que la herramienta: primero leer y documentar, después fijar el comportamiento con tests, y solo entonces cambiar. Quien empieza por "refactoriza este paquete" acaba con un PR de 3.000 líneas que nadie se atreve a aprobar.
Qué hace Claude Code en cada stack legacy (octubre 2026)#
| Stack (octubre 2026) | Qué hace bien | Qué necesita antes | Límite honesto |
|---|---|---|---|
| PL/SQL (paquetes, procedimientos, triggers) | Documentar paquetes de miles de líneas, mapear dependencias, proponer tests con utPLSQL, detectar código muerto | El código exportado a ficheros (.pks/.pkb) en Git, no solo en la base de datos | No conoce los datos reales ni los planes de ejecución si no se los das |
| SQL y vistas | Explicar consultas de 200 líneas, proponer índices y reescrituras equivalentes | Esquema y volúmenes aproximados | Cualquier optimización se valida con el plan de ejecución en preproducción |
| Oracle Forms (.fmb, .mmb, .olb) | Leer la lógica de triggers y unidades de programa, inventariar pantallas, preparar la migración pantalla a pantalla | Convertir los binarios a XML con frmf2xml (sección propia abajo) | No "ve" el diseño visual: hay que acompañar con capturas |
| .NET Framework y C# | Tests unitarios donde no los hay, refactorización por partes, preparar el salto a .NET 10 | Que la solución compile desde línea de comandos (MSBuild o dotnet build) | WebForms y WinForms con diseñador visual exigen más trabajo manual |
| Visual C++ y MFC | Mapear bases de código de cientos de miles de líneas, aislar el núcleo de cálculo de la interfaz, proponer el replatforming por fases | Un build reproducible y tests de caracterización con tolerancias numéricas | No cabe todo en contexto: se trabaja módulo a módulo |
| Java, Python/Django, PHP, VB | Entender módulos sin documentación, homogeneizar convenciones, reducir el correctivo | El repositorio en Git (si estáis en SVN, se puede trabajar igual, pero Git facilita la revisión) | Lo mismo que el resto: el criterio de negocio lo pone el equipo |
Lo común a todas las filas: Claude Code trabaja sobre texto en el disco del desarrollador, ejecuta comandos en su terminal y propone cambios que alguien revisa. No es un servicio que "se conecta al sistema" y lo cambia por su cuenta, salvo que tú le des ese permiso. Y no deberías.
¿Cuál es la mejor forma de usar Claude Code con código legacy en 2026?#
La mejor forma es un ciclo de cuatro pasos por módulo: documentar, fijar comportamiento con tests, cambiar en piezas pequeñas y revisar en un PR que una persona aprueba. Con este orden, el riesgo de romper producción baja a lo que ya teníais antes de usar IA, y el tiempo se va a lo que el equipo no hacía por falta de horas: documentación y tests.
| Paso | Qué le pides a Claude Code | Qué entrega | Quién decide |
|---|---|---|---|
| 1. Documentar | "Lee el paquete PKG_LIQUIDACIONES y escribe en docs/ qué hace cada procedimiento, quién lo llama y qué tablas toca" | Un Markdown revisable con dependencias | El responsable del módulo valida que es correcto |
| 2. Fijar comportamiento | "Escribe tests de regresión utPLSQL para los 5 procedimientos públicos con los casos que aparecen en el código" | Tests que pasan con el código actual | El equipo añade los casos que el código no cuenta |
| 3. Cambiar por partes | "Extrae el cálculo de recargos a una función, sin cambiar la firma pública" | Un diff pequeño, un procedimiento por PR | El revisor humano |
| 4. Revisar | "Revisa este PR contra el CLAUDE.md y lista riesgos" | Comentarios de revisión | El revisor humano, siempre |
Uso el modo plan de Claude Code en los pasos 1 y 3: primero propone qué va a hacer, la persona lo corrige y solo después ejecuta. En legacy es la diferencia entre un asistente útil y uno que "arregla" tres cosas que nadie le pidió. Si quieres profundizar en cómo repartir trabajo entre agentes en tareas largas, tienes subagentes en Claude Code paso a paso.
Oracle Forms paso a paso: de .fmb binario a XML que Claude Code puede leer#
Es la pregunta que más me hacen los equipos con Forms: los módulos .fmb son binarios, y Claude Code no puede leer la lógica que hay dentro. La solución es oficial y existe desde hace más de 20 años: la utilidad Forms2XML, que se invoca como frmf2xml. Según la documentación de Oracle, acepta módulos de formulario (.fmb), de menú (.mmb) y librerías de objetos (.olb), deja el resultado en la carpeta actual y añade el tipo al nombre: EXPEDIENTES.fmb se convierte en EXPEDIENTES_fmb.xml.
1# Oracle Forms 12c: el script vive en la carpeta bin de la instancia de Forms.2# "forms1" es el nombre por defecto de la instancia; comprobad el vuestro.3FORMS_BIN="$DOMAIN_HOME/config/fmwconfig/components/FORMS/instances/forms1/bin"4 5# frmf2xml escribe en el directorio actual: nos situamos en el repositorio6mkdir -p ~/repos/expedientes/forms/xml && cd ~/repos/expedientes/forms/xml7 8# Un módulo9"$FORMS_BIN/frmf2xml.sh" OVERWRITE=YES USE_PROPERTY_IDS=NO /fuentes/forms/EXPEDIENTES.fmb10# -> EXPEDIENTES_fmb.xml11 12# Todos los formularios, menús y librerías de objetos13for f in /fuentes/forms/*.fmb /fuentes/forms/*.mmb /fuentes/forms/*.olb; do14 "$FORMS_BIN/frmf2xml.sh" OVERWRITE=YES USE_PROPERTY_IDS=NO "$f"15done16 17# En Windows el equivalente es frmf2xml.bat en la misma carpeta bin.18# Alternativa documentada por Oracle (requiere el CLASSPATH de Forms cargado):19# java oracle.forms.util.xmltools.Forms2XML OVERWRITE=YES EXPEDIENTES.fmb
Tres detalles que ahorran una mañana:
- Usad el script de la instancia, no
javaa pelo. El error típico, "could not find or load main class oracle.forms.util.xmltools.Forms2XML", aparece cuando se llama sin el entorno de Forms cargado. El script de la carpetabinde la instancia lo prepara. OVERWRITE=YESevita que se pare al encontrar un XML anterior (por defecto esNO), y Oracle indica queUSE_PROPERTY_IDSdebe quedarse enNOpara generar nombres de propiedad legibles.- Las librerías PL/SQL (
.pll) no pasan por frmf2xml. Se exportan a texto.plddesde Forms Builder (Archivo › Convertir) o con el compilador en modo script. Sin ellas, Claude Code verá llamadas a procedimientos que no encuentra.
Con los XML y los .pld en el repositorio, el código de cada trigger (WHEN-VALIDATE-ITEM, POST-QUERY, KEY-COMMIT…) queda en atributos del XML, con los saltos de línea escapados. Claude Code lo lee sin problema. Lo que le pido en la primera sesión es un inventario: qué bloques tiene cada pantalla, contra qué tablas trabajan, qué triggers contienen lógica de negocio y qué paquetes de base de datos llaman. Ese inventario es el documento de partida de cualquier migración, la haga Claude Code o no.
Los XML son de solo lectura. Si alguien quiere modificar la pantalla, se hace en Forms Builder como siempre. Lo dejo escrito en el CLAUDE.md para que nadie intente editar el XML y reconvertirlo a binario.
Migraciones: qué hace Claude Code y qué sigue siendo trabajo del equipo (2026)#
Claude Code no migra un sistema solo. Lo que hace es abaratar las partes que antes hacían inviable la migración: entender el código antiguo, escribir los tests que lo fijan y traducir pieza a pieza.
| Migración (octubre 2026) | Destino habitual | Dónde ayuda Claude Code | Qué sigue siendo decisión humana |
|---|---|---|---|
| Oracle Forms → web | Oracle APEX, o Java/.NET con un frontend moderno | Inventario de triggers, extracción de reglas de negocio a PL/SQL o servicios, traducción pantalla a pantalla | Arquitectura destino, rediseño de la experiencia, orden de migración |
| .NET Framework → .NET actual | .NET 10 (LTS); .NET 8 deja de tener soporte en noviembre de 2026 | Tests antes de mover, sustitución de APIs no disponibles, proyectos SDK-style | Qué hacer con WebForms, WCF y dependencias sin versión moderna |
| Visual C++ → replatforming | C++ moderno con CMake, núcleo separado de la interfaz | Mapa de módulos, tests de caracterización con tolerancias, traducción por capas | Toolkit gráfico nuevo, plataformas objetivo, qué se reescribe y qué se envuelve |
| PL/SQL monolítico → paquetes ordenados | La misma base de datos, mejor organizada | Detectar duplicados y código muerto, extraer funciones, tests utPLSQL | Qué se mueve a la aplicación y qué se queda en la base de datos |
| SVN → Git | Git con revisión por PR | Scripts de migración y limpieza de historial | Política de ramas y de revisión |
Una nota honesta sobre .NET: Microsoft marca el .NET Upgrade Assistant como deprecado y remite a GitHub Copilot app modernization, integrado en Visual Studio 2022 (17.14.16 o posterior) y Visual Studio 2026. Si vuestro equipo vive en Visual Studio y ya paga Copilot, tiene sentido usarlo para el salto de framework. Claude Code encaja en lo que viene alrededor: tests previos, refactorizaciones, documentación y la lógica de negocio que ninguna herramienta de upgrade toca.
En el caso de Visual C++, el patrón que funciona en bases de código grandes es el de "golden master": antes de tocar nada, se capturan las salidas del sistema actual sobre un conjunto de entradas reales y se guardan como referencia. Cada módulo portado tiene que reproducirlas dentro de una tolerancia numérica pactada. Sin eso, en software de cálculo nadie puede saber si el port es correcto.
CLAUDE.md por repositorio: configuración recomendada para un repositorio PL/SQL#
El CLAUDE.md es el fichero que Claude Code lee al empezar cada sesión. En legacy es la pieza más rentable de toda la formación, porque fija por escrito lo que hoy solo sabe el veterano del equipo. Este es un ejemplo real de estructura (con nombres cambiados):
1# CLAUDE.md — repositorio gestion-expedientes (PL/SQL + Oracle Forms)2 3## Qué es4Paquetes PL/SQL del sistema de gestión de expedientes (Oracle 19c) y pantallas5Oracle Forms 12c. El código se exporta desde PREPRODUCCIÓN con DBMS_METADATA.6Producción no se toca desde aquí. Nunca.7 8## Estructura9- paquetes/*.pks especificación · paquetes/*.pkb cuerpo10- forms/xml/*_fmb.xml pantallas convertidas con frmf2xml (SOLO LECTURA: no editar)11- forms/pld/*.pld librerías PL/SQL de Forms en texto (SOLO LECTURA)12- tests/utplsql/ tests de regresión13- docs/ documentación generada y revisada por el equipo14 15## Reglas16- No generes ni ejecutes DDL ni DML contra ninguna base de datos. Si hace falta un17 script, déjalo en scripts/pendientes/ para que lo revise y ejecute una persona.18- Antes de modificar un paquete: escribe o amplía sus tests utPLSQL y comprueba que19 pasan con el código ACTUAL. Si no pasan, para y avisa.20- Un procedimiento por PR. No cambies firmas públicas: las llaman pantallas Forms y21 procesos batch nocturnos (ver docs/dependencias.md).22- Convenciones: p_ parámetros, v_ variables, c_ constantes, e_ excepciones.23 Palabras reservadas en mayúsculas. Comentarios en castellano.24- Si un trigger de Forms llama a un paquete, anótalo en docs/dependencias.md.25 26## Comandos27- Tests: utplsql run "$UT_CONN" -source_path=paquetes -test_path=tests/utplsql28- La variable UT_CONN apunta a DESARROLLO. No la cambies.
Tres mejores prácticas que se ven en el ejemplo: el CLAUDE.md dice qué no hacer con tanto detalle como qué hacer, apunta a la documentación de dependencias en lugar de copiarla, y vive en Git, así que se revisa en PR como cualquier código. Uno por repositorio, no uno genérico para todo el departamento.
Hooks de seguridad: que Claude Code no pueda tocar producción ni leer secretos#
Las instrucciones del CLAUDE.md se pueden olvidar. Un hook no. Es un script que Claude Code ejecuta antes de cada acción; si termina con código de salida 2, la acción se bloquea y el motivo le llega a Claude como error. Este es el que dejo en los repositorios con base de datos Oracle:
1#!/usr/bin/env bash2# .claude/hooks/proteger-bd.sh3# Bloquea cualquier mención a producción y cualquier DDL/DML enviado por4# SQL*Plus, SQLcl o el servidor MCP de la base de datos. Conservador a propósito.5entrada="$(cat)"6herramienta="$(jq -r '.tool_name' <<<"$entrada")"7contenido="$(jq -c '.tool_input' <<<"$entrada")"8 9# 1. Producción no existe para Claude Code (poned aquí vuestros alias TNS de producción)10if grep -Eiqw 'PRODDB|ORCL_PROD' <<<"$contenido"; then11 echo "Bloqueado: la conexión de producción no se usa desde Claude Code." >&212 exit 213fi14 15# 2. Nada de DDL ni DML contra la base de datos16if [[ "$herramienta" == mcp__sqlcl__* ]] || grep -Eiqw 'sqlplus|sql' <<<"$contenido"; then17 if grep -Eiqw 'CREATE|ALTER|DROP|TRUNCATE|GRANT|REVOKE|INSERT|UPDATE|DELETE|MERGE' <<<"$contenido"; then18 echo "Bloqueado: DDL/DML no permitido. Deja el script en scripts/pendientes/." >&219 exit 220 fi21fi22exit 0
Y su registro en .claude/settings.json, junto con las reglas de permisos que impiden leer secretos:
1{2 "permissions": {3 "deny": [4 "Read(./.env)",5 "Read(./.env.*)",6 "Read(./config/tnsnames.ora)",7 "Bash(git push *)"8 ]9 },10 "hooks": {11 "PreToolUse": [12 {13 "matcher": "Bash|mcp__sqlcl__.*",14 "hooks": [15 {16 "type": "command",17 "command": "\"${CLAUDE_PROJECT_DIR}\"/.claude/hooks/proteger-bd.sh"18 }19 ]20 }21 ]22 }23}
El formato es el de la documentación oficial de hooks de Claude Code (evento PreToolUse, matcher por nombre de herramienta, código de salida 2 para bloquear). Dos advertencias: el script necesita jq instalado, y el exit 1 no bloquea, solo avisa. Si la empresa quiere que nadie pueda saltarse estas reglas, van en la configuración gestionada (managed settings) que despliega el área de sistemas, que tiene prioridad sobre la del proyecto y la del usuario. Tienes más contexto de política y datos en seguridad de Claude Code en empresas.
| Control (octubre 2026) | Dónde se configura | Qué evita | ¿Se lo puede saltar el desarrollador? |
|---|---|---|---|
| CLAUDE.md con reglas | Raíz del repositorio | Cambios fuera de convención, DDL "por si acaso" | Sí: es una instrucción, no un bloqueo |
| Hook PreToolUse | .claude/settings.json | DDL/DML, conexiones a producción | Sí, si edita el fichero local |
Reglas deny de permisos | .claude/settings.json | Leer .env, tnsnames, hacer push | Sí, si edita el fichero local |
| Managed settings | Desplegado por sistemas | Todo lo anterior, de forma obligatoria | No |
| Usuario de BD de solo lectura | La propia base de datos | Cualquier escritura, aunque falle todo lo demás | No |
| Preproducción con datos anonimizados | Infraestructura | Exponer datos personales al modelo | No |
La última fila es la que de verdad protege. Los hooks son el cinturón; el usuario de solo lectura sobre una copia es el airbag.
MCP a la base de datos en solo lectura: Claude Code consultando Oracle sin riesgo#
Para documentar PL/SQL bien, Claude Code necesita ver el esquema real: tablas, columnas, restricciones, dependencias. La forma limpia es un servidor MCP que le dé acceso de lectura. Oracle publica uno propio dentro de SQLcl (se arranca con sql -mcp), que usa las conexiones guardadas en SQLcl. El montaje que recomiendo:
1-- En PREPRODUCCIÓN, con datos anonimizados. Nunca en producción.2CREATE USER claude_lectura IDENTIFIED BY "<contraseña-del-gestor-de-secretos>";3GRANT CREATE SESSION TO claude_lectura;4GRANT SELECT_CATALOG_ROLE TO claude_lectura; -- diccionario: DBA_SOURCE, DBA_DEPENDENCIES...5GRANT SELECT ON gestion.expedientes TO claude_lectura;6GRANT SELECT ON gestion.liquidaciones TO claude_lectura;7-- Ni INSERT, ni UPDATE, ni EXECUTE sobre paquetes.
1# 1. Guardar la conexión en SQLcl (el MCP solo ve conexiones con contraseña guardada)2sql /nolog3SQL> conn -save claude_pre -savepwd claude_lectura@//preprod-db:1521/PREPDB4 5# 2. Registrar el servidor MCP en el repositorio, compartido con el equipo (.mcp.json)6claude mcp add --scope project sqlcl -- /opt/sqlcl/bin/sql -mcp
Con eso, Claude Code puede preguntar "qué objetos dependen de PKG_LIQUIDACIONES" o "qué columnas tiene la tabla de recargos" sin que nadie copie y pegue. El hook de la sección anterior sigue vigilando las llamadas al servidor MCP (mcp__sqlcl__.*), y el usuario de solo lectura hace que, aunque el hook fallara, la base de datos rechace cualquier escritura. Si queréis conectar también Jira, GitLab o Redmine, tienes la panorámica en servidores MCP de Claude para empresas.
Claude Code vs GitHub Copilot vs Cursor vs OpenCode para código legacy (octubre 2026)#
Uno de los equipos con los que hablé este mes comparaba Claude Code con OpenCode porque quería mandar las tareas sencillas a modelos más baratos. Es una pregunta razonable. Esta es la comparación que hago en las formaciones, centrada en legacy:
| Criterio (octubre 2026) | Claude Code | GitHub Copilot | Cursor | OpenCode |
|---|---|---|---|---|
| Dónde trabaja | Terminal, con extensiones para VS Code y JetBrains | Visual Studio, VS Code, JetBrains y otros IDE; agente en GitHub y CLI | Editor propio (basado en VS Code) y CLI | Terminal; código abierto (licencia MIT) |
| Modelos | Claude (vía Anthropic, Amazon Bedrock o Google Vertex AI) | Varios: Claude, GPT, Gemini | Varios proveedores | 75+ proveedores, incluidos modelos locales |
| Enrutar tareas a modelos baratos | Sí, entre modelos Claude (subagentes con Haiku o Sonnet) | Selector de modelo por petición | Selector de modelo | Sí, modelo por agente y cualquier proveedor |
| Hooks y bloqueo de acciones | Hooks en todo el ciclo y managed settings | Políticas de organización en GitHub | Reglas de proyecto | Configuración y plugins |
| Encaje con .NET Framework | Bueno en código; el diseñador visual sigue en Visual Studio | El mejor: app modernization oficial de Microsoft | Limitado: no sustituye a Visual Studio | Como Claude Code |
| Encaje con PL/SQL y Forms | Bueno con código exportado y MCP de SQLcl | Bueno en el editor | Bueno en el editor | Bueno con código exportado |
| Tareas largas de varios pasos | Su punto fuerte: plan, subagentes, compactación | Modo agente y coding agent en GitHub | Modo agente | Agentes configurables |
| Soporte empresarial | Contrato con Anthropic o con la nube | Contrato con GitHub/Microsoft | Contrato con Cursor | Comunidad; el soporte depende del proveedor del modelo |
| Mejor para | Equipos que quieren un agente con reglas y control fino | Equipos en Visual Studio y GitHub Enterprise | Desarrolladores que viven en el editor | Equipos que priorizan código abierto y elegir proveedor |
Mi conclusión, sin vender nada: si el departamento ya vive en Visual Studio y GitHub, Copilot es el camino de menos resistencia para .NET, y Claude Code se suma para las tareas largas, el PL/SQL y la documentación. Si lo que pesa es el control (hooks, permisos, configuración gestionada) y el trabajo de varios pasos sobre código heredado, Claude Code es hoy la herramienta más completa. OpenCode tiene sentido si el criterio principal es abrir el modelo a cualquier proveedor, incluido uno local, y aceptáis que el soporte sea de comunidad. En la formación dejo documentado cuándo usar cada uno; no hace falta elegir solo uno.
Para comparativas más amplias: Claude Code vs Cursor vs Copilot en empresa y Cursor vs Claude Code vs OpenCode.
Qué dicen los usuarios y qué dice la evidencia#
No cito puntuaciones de G2 ni de Capterra porque mezclan perfiles muy distintos. El dato independiente más útil para un jefe de informática es el estudio de METR (julio de 2025): 16 desarrolladores experimentados, 246 tareas reales en repositorios grandes y maduros. Con herramientas de IA tardaron un 19% más, aunque creían haber ido un 20% más rápido. Los propios autores lo presentan como una foto de las herramientas de principios de 2025 en un contexto concreto, no como una ley. Lo que sí enseña es que la productividad hay que medirla, no suponerla. Por eso en las formaciones la medición es parte del programa y no la dejo para después.
Dónde se alojan los datos según la opción#
| Opción | Dónde se procesa el código | Qué revisar antes |
|---|---|---|
| Claude Code con plan de empresa | Nube de Anthropic | Que el plan excluya el entrenamiento con vuestros datos y el DPA vigente |
| Claude Code vía Amazon Bedrock o Google Vertex AI | La nube contratada, con región europea | Acuerdo con el proveedor de nube; útil si ya tenéis uno |
| GitHub Copilot Business/Enterprise | Nube de GitHub/Microsoft | Exclusiones de contenido y políticas de la organización |
| OpenCode con modelo local | Vuestro servidor | Capacidad de hardware y calidad del modelo en vuestro código |
En la administración pública este punto, junto con el Esquema Nacional de Seguridad, suele decidir la herramienta antes que cualquier comparativa técnica. Tienes el detalle por herramienta en a dónde van tus datos en ChatGPT, Claude, Cursor y Copilot.
Cuatro situaciones reales de este otoño (anonimizadas)#
Estas son conversaciones de septiembre y octubre de 2026 con equipos que querían usar Claude Code sobre lo que ya tienen. Ninguna lleva nombre, por política.
| Organización (octubre 2026) | Stack | Lo que pedían | Por dónde empezar |
|---|---|---|---|
| Organismo público provincial de recaudación, 51-200 personas | SQL, PL/SQL, Oracle Forms, .NET, C# | "Refactorizar y acelerar nuestros flujos de desarrollo", con mantenimiento correctivo y evolutivo, integraciones y sustitución de soluciones obsoletas | Champions + un módulo PL/SQL real: documentación, tests y un primer refactor revisado |
| Empresa de software de ingeniería vibroacústica, unas 13 personas | Unas 400.000 líneas de Visual C++ | Replatforming con Claude Code | Mapa de módulos y golden master del núcleo de cálculo antes de portar nada |
| Consultora tecnológica para sanidad pública | Java, .NET, GitLab | Piloto de adopción de Claude Code con champions | 5-8 champions, CLAUDE.md por repositorio y MCP a GitLab |
| Servicio de informática de una universidad pública, unos 20 desarrolladores | Django/Python, SVN y Git, Redmine | Inmersión presencial de 2-3 días para "acabar trabajando con agentes" | Formato inmersión con su backlog real y Redmine conectado |
Las cuatro tienen algo en común: nadie pedía una demo. Pedían que su equipo trabajara distinto el lunes siguiente. Eso no se consigue con una charla, se consigue con práctica sobre el código propio y con un grupo interno que mantenga el método cuando el formador se va.
Programa de champions: mejores prácticas para formar a 5-8 personas primero#
En un departamento de 20-50 desarrolladores no forma a todo el mundo a la vez. Forma primero a un grupo de 5-8 champions que representen los stacks (alguien de PL/SQL, alguien de Forms, alguien de .NET) y que tengan crédito dentro del equipo. Ellos prueban, ajustan el CLAUDE.md y los hooks, y luego forman al resto con ejemplos de su propio código.
| Semana | Qué hacen los champions | Entregable |
|---|---|---|
| Jornadas 1-2 (presencial) | Fundamentos, CLAUDE.md, hooks, MCP y un módulo legacy real de principio a fin | CLAUDE.md y hooks del primer repositorio |
| Semana 1 | Documentan un módulo cada uno con Claude Code y lo revisa otro champion | docs/ revisados en PR |
| Semana 2 | Escriben tests de regresión del módulo documentado | Tests que pasan con el código actual |
| Semana 3 | Primer refactor pequeño por persona, en PR | Un PR aprobado por persona |
| Semana 4 | Miden y preparan la formación interna para el resto | Métricas y plan de despliegue al equipo |
| Después | Sesiones internas para el resto del departamento | Equipo completo con el método |
La medición no tiene que ser sofisticada. Tres números bastan: tiempo hasta que un PR se aprueba, cuántos cambios se rehacen a mano y cuántas personas usan la herramienta cada semana. Se toman antes de empezar y a las 4-6 semanas, que es cuando la adopción se estabiliza o se cae.
Formatos de formación de Claude Code para equipos con código legacy (2026)#
Estos son los formatos de la formación de Claude Code para equipos de desarrollo que imparto in-company:
| Formato (2026) | Duración | Grupo | Para qué |
|---|---|---|---|
| Claude Code | 8-24 h, de 1 a 3 jornadas | 5-25 desarrolladores | Fundamentos, hooks, MCP y la tercera jornada dedicada a código legacy |
| Programa de champions | 2 jornadas + 4 semanas | 5-8 personas primero | Un grupo piloto que después forma al resto |
| Inmersión presencial | 2-3 días seguidos | El equipo de desarrollo | Trabajar el propio backlog con agentes desde el primer día |
| Seguimiento | 4 semanas, 1 h semanal | Champions o equipo | Que la adopción no se caiga al mes |
Si quieres ver cómo es un día de trabajo con desarrolladores senior, está la agenda real de un workshop de Claude Code de 8 horas. Y si la formación tiene que cubrir también la obligación de alfabetización en IA, lo explico en formación obligatoria del artículo 4 del AI Act.
Errores comunes al usar Claude Code con código legacy#
| Error (visto en 2025-2026) | Qué pasa | Cómo evitarlo |
|---|---|---|
| Pedir un refactor antes de documentar | PR enorme que nadie se atreve a aprobar | Documentar y revisar primero; un procedimiento por PR |
| Cambiar sin tests de regresión | Se rompe un proceso batch que nadie recordaba | Tests que pasan con el código actual antes de tocar |
| Darle credenciales de producción "para que vea los datos" | Riesgo real de escritura y de exponer datos personales | Usuario de solo lectura sobre preproducción anonimizada |
| Intentar leer los .fmb directamente | Claude Code no ve los triggers y se inventa la lógica | Convertir a XML con frmf2xml y exportar los .pll a .pld |
| Un CLAUDE.md genérico para todo el departamento | Reglas que no aplican a ningún repositorio | Uno por repositorio, revisado en PR |
| Medir solo "lo rápido que escribe" | El ahorro parece mayor de lo que es | Medir tiempo hasta aprobar el PR y cambios rehechos |
| Formar a todos a la vez sin champions | A las 6 semanas cada uno vuelve a sus hábitos | 5-8 champions primero, luego el resto |
Para quién NO es esta formación#
- Si nadie del equipo tiene tiempo durante 4 semanas para practicar sobre código real: sin práctica, la formación se queda en una jornada agradable.
- Si la política interna no permite que el código salga del perímetro y no hay opción de nube con región europea ni modelo local: primero hay que resolver eso, y no es una cuestión de formación.
- Si lo que buscáis es que alguien migre el sistema por vosotros. Eso es un proyecto de desarrollo, no una formación; se puede plantear, pero son entregables distintos.
¿Quién forma a un equipo de informática en Claude Code sobre código legacy en España?#
Soy Javier Santos Criado, consultor IA en Javadex, y la formación de Claude Code para equipos de desarrollo que imparto tiene un itinerario propio para código legacy: trabajamos sobre vuestros repositorios de PL/SQL, Oracle Forms, .NET o Visual C++, dejamos montados el CLAUDE.md, los hooks y el MCP de solo lectura, y formamos a los champions que mantienen el método cuando termino. Lo imparto yo, sin subcontratas, presencial o remoto, y lo que se construye queda en vuestros repositorios. Si dudas entre que te formen o que te lo construyan, la diferencia está en quién implanta la IA y forma al equipo.
El primer paso es un diagnóstico sin coste: qué stacks tenéis, cuántas personas, qué restricciones de datos y qué módulo usaríamos de ejemplo. → Quiero formar a mi equipo en Claude Code. Si prefieres escribir directamente, javi@javadex.es. Respondo en menos de 24 horas.
Preguntas frecuentes#
¿Sirve Claude Code para código legacy en Oracle Forms y PL/SQL?#
Sí. Claude Code trabaja sobre cualquier código en texto: paquetes PL/SQL exportados a ficheros, SQL, C#, Visual C++, Java o Python. Lo más rentable es documentar código que nadie recuerda, escribir tests de regresión antes de tocar y refactorizar por partes con revisión humana. Oracle Forms exige convertir antes los .fmb a XML.
¿Sirve Claude Code para código legacy en 2026?#
Sí, en octubre de 2026 es uno de los usos donde más tiempo ahorra, siempre con método: documentar, fijar el comportamiento con tests, cambiar en piezas pequeñas y revisar cada PR. La productividad conviene medirla: el estudio de METR de 2025 mostró que la percepción de ahorro y el ahorro real pueden no coincidir.
¿Cómo lee Claude Code un fichero .fmb de Oracle Forms?#
No puede leerlo directamente porque es binario. Se convierte a XML con la utilidad Forms2XML de Oracle (frmf2xml.sh o frmf2xml.bat, en la carpeta bin de la instancia de Forms), que genera un fichero como EXPEDIENTES_fmb.xml con el código de los triggers. Las librerías .pll se exportan aparte a texto .pld.
¿Cómo evito que Claude Code toque la base de datos de producción?#
Con cuatro capas: reglas en el CLAUDE.md, un hook PreToolUse que bloquea DDL, DML y cualquier mención a producción, reglas deny de permisos (y managed settings si debe ser obligatorio), y sobre todo un usuario de solo lectura conectado a una preproducción con datos anonimizados.
¿Puede Claude Code migrar .NET Framework a .NET actual?#
Ayuda en la migración: escribe los tests previos, sustituye APIs y refactoriza por partes. Para el salto de framework, Microsoft recomienda GitHub Copilot app modernization en Visual Studio, y ambas herramientas pueden convivir. El destino recomendable hoy es .NET 10, porque .NET 8 deja de tener soporte en noviembre de 2026.
¿Claude Code, Copilot, Cursor u OpenCode para un departamento con código antiguo?#
Depende del entorno. Copilot encaja mejor si el equipo vive en Visual Studio y GitHub; Claude Code, si importan el control con hooks y las tareas largas sobre código heredado; Cursor, si el equipo trabaja en el editor; OpenCode, si el criterio es código abierto y elegir cualquier proveedor de modelo.
¿Cómo se forma a un equipo de desarrollo en Claude Code con código heredado?#
Empezando por 5-8 champions que representen los stacks, con 2 jornadas presenciales sobre un módulo real y 4 semanas de práctica con seguimiento. Después, los champions forman al resto con ejemplos de su propio código. El presupuesto se cierra tras un diagnóstico sin coste.

