Ir al contenido principal
Javadex

Claude Code para código legacy: Oracle Forms, PL/SQL, .NET Framework y Visual C++ (guía y formación de equipos, 2026)

19 min

Qué hace Claude Code de verdad sobre Oracle Forms, PL/SQL, .NET Framework y Visual C++: documentar lo heredado, tests de regresión antes de tocar, refactorización por partes y migraciones. Con el CLAUDE.md, el hook y el comando frmf2xml que uso en las formaciones.

Aplicarlo en mi empresa Diagnóstico de 30 min · sin compromiso
Índice del artículo16 secciones

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 bienQué necesita antesLímite honesto
PL/SQL (paquetes, procedimientos, triggers)Documentar paquetes de miles de líneas, mapear dependencias, proponer tests con utPLSQL, detectar código muertoEl código exportado a ficheros (.pks/.pkb) en Git, no solo en la base de datosNo conoce los datos reales ni los planes de ejecución si no se los das
SQL y vistasExplicar consultas de 200 líneas, proponer índices y reescrituras equivalentesEsquema y volúmenes aproximadosCualquier 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 pantallaConvertir 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 10Que 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 MFCMapear 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 fasesUn build reproducible y tests de caracterización con tolerancias numéricasNo cabe todo en contexto: se trabaja módulo a módulo
Java, Python/Django, PHP, VBEntender módulos sin documentación, homogeneizar convenciones, reducir el correctivoEl 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.

PasoQué le pides a Claude CodeQué entregaQuié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 dependenciasEl 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 actualEl 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 PREl revisor humano
4. Revisar"Revisa este PR contra el CLAUDE.md y lista riesgos"Comentarios de revisiónEl 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.

bash
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 repositorio
6mkdir -p ~/repos/expedientes/forms/xml && cd ~/repos/expedientes/forms/xml
7 
8# Un módulo
9"$FORMS_BIN/frmf2xml.sh" OVERWRITE=YES USE_PROPERTY_IDS=NO /fuentes/forms/EXPEDIENTES.fmb
10# -> EXPEDIENTES_fmb.xml
11 
12# Todos los formularios, menús y librerías de objetos
13for f in /fuentes/forms/*.fmb /fuentes/forms/*.mmb /fuentes/forms/*.olb; do
14 "$FORMS_BIN/frmf2xml.sh" OVERWRITE=YES USE_PROPERTY_IDS=NO "$f"
15done
16 
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 java a 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 carpeta bin de la instancia lo prepara.
  • OVERWRITE=YES evita que se pare al encontrar un XML anterior (por defecto es NO), y Oracle indica que USE_PROPERTY_IDS debe quedarse en NO para generar nombres de propiedad legibles.
  • Las librerías PL/SQL (.pll) no pasan por frmf2xml. Se exportan a texto .pld desde 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 habitualDónde ayuda Claude CodeQué sigue siendo decisión humana
Oracle Forms → webOracle APEX, o Java/.NET con un frontend modernoInventario de triggers, extracción de reglas de negocio a PL/SQL o servicios, traducción pantalla a pantallaArquitectura 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 2026Tests antes de mover, sustitución de APIs no disponibles, proyectos SDK-styleQué hacer con WebForms, WCF y dependencias sin versión moderna
Visual C++ → replatformingC++ moderno con CMake, núcleo separado de la interfazMapa de módulos, tests de caracterización con tolerancias, traducción por capasToolkit gráfico nuevo, plataformas objetivo, qué se reescribe y qué se envuelve
PL/SQL monolítico → paquetes ordenadosLa misma base de datos, mejor organizadaDetectar duplicados y código muerto, extraer funciones, tests utPLSQLQué se mueve a la aplicación y qué se queda en la base de datos
SVN → GitGit con revisión por PRScripts de migración y limpieza de historialPolí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):

markdown
1# CLAUDE.md — repositorio gestion-expedientes (PL/SQL + Oracle Forms)
2 
3## Qué es
4Paquetes PL/SQL del sistema de gestión de expedientes (Oracle 19c) y pantallas
5Oracle Forms 12c. El código se exporta desde PREPRODUCCIÓN con DBMS_METADATA.
6Producción no se toca desde aquí. Nunca.
7 
8## Estructura
9- paquetes/*.pks especificación · paquetes/*.pkb cuerpo
10- 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ón
13- docs/ documentación generada y revisada por el equipo
14 
15## Reglas
16- No generes ni ejecutes DDL ni DML contra ninguna base de datos. Si hace falta un
17 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 que
19 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 y
21 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## Comandos
27- Tests: utplsql run "$UT_CONN" -source_path=paquetes -test_path=tests/utplsql
28- 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:

bash
1#!/usr/bin/env bash
2# .claude/hooks/proteger-bd.sh
3# Bloquea cualquier mención a producción y cualquier DDL/DML enviado por
4# 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"; then
11 echo "Bloqueado: la conexión de producción no se usa desde Claude Code." >&2
12 exit 2
13fi
14 
15# 2. Nada de DDL ni DML contra la base de datos
16if [[ "$herramienta" == mcp__sqlcl__* ]] || grep -Eiqw 'sqlplus|sql' <<<"$contenido"; then
17 if grep -Eiqw 'CREATE|ALTER|DROP|TRUNCATE|GRANT|REVOKE|INSERT|UPDATE|DELETE|MERGE' <<<"$contenido"; then
18 echo "Bloqueado: DDL/DML no permitido. Deja el script en scripts/pendientes/." >&2
19 exit 2
20 fi
21fi
22exit 0

Y su registro en .claude/settings.json, junto con las reglas de permisos que impiden leer secretos:

json
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 configuraQué evita¿Se lo puede saltar el desarrollador?
CLAUDE.md con reglasRaíz del repositorioCambios fuera de convención, DDL "por si acaso"Sí: es una instrucción, no un bloqueo
Hook PreToolUse.claude/settings.jsonDDL/DML, conexiones a producciónSí, si edita el fichero local
Reglas deny de permisos.claude/settings.jsonLeer .env, tnsnames, hacer pushSí, si edita el fichero local
Managed settingsDesplegado por sistemasTodo lo anterior, de forma obligatoriaNo
Usuario de BD de solo lecturaLa propia base de datosCualquier escritura, aunque falle todo lo demásNo
Preproducción con datos anonimizadosInfraestructuraExponer datos personales al modeloNo

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:

sql
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.

bash
1# 1. Guardar la conexión en SQLcl (el MCP solo ve conexiones con contraseña guardada)
2sql /nolog
3SQL> conn -save claude_pre -savepwd claude_lectura@//preprod-db:1521/PREPDB
4 
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 CodeGitHub CopilotCursorOpenCode
Dónde trabajaTerminal, con extensiones para VS Code y JetBrainsVisual Studio, VS Code, JetBrains y otros IDE; agente en GitHub y CLIEditor propio (basado en VS Code) y CLITerminal; código abierto (licencia MIT)
ModelosClaude (vía Anthropic, Amazon Bedrock o Google Vertex AI)Varios: Claude, GPT, GeminiVarios proveedores75+ proveedores, incluidos modelos locales
Enrutar tareas a modelos baratosSí, entre modelos Claude (subagentes con Haiku o Sonnet)Selector de modelo por peticiónSelector de modeloSí, modelo por agente y cualquier proveedor
Hooks y bloqueo de accionesHooks en todo el ciclo y managed settingsPolíticas de organización en GitHubReglas de proyectoConfiguración y plugins
Encaje con .NET FrameworkBueno en código; el diseñador visual sigue en Visual StudioEl mejor: app modernization oficial de MicrosoftLimitado: no sustituye a Visual StudioComo Claude Code
Encaje con PL/SQL y FormsBueno con código exportado y MCP de SQLclBueno en el editorBueno en el editorBueno con código exportado
Tareas largas de varios pasosSu punto fuerte: plan, subagentes, compactaciónModo agente y coding agent en GitHubModo agenteAgentes configurables
Soporte empresarialContrato con Anthropic o con la nubeContrato con GitHub/MicrosoftContrato con CursorComunidad; el soporte depende del proveedor del modelo
Mejor paraEquipos que quieren un agente con reglas y control finoEquipos en Visual Studio y GitHub EnterpriseDesarrolladores que viven en el editorEquipos 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ónDónde se procesa el códigoQué revisar antes
Claude Code con plan de empresaNube de AnthropicQue el plan excluya el entrenamiento con vuestros datos y el DPA vigente
Claude Code vía Amazon Bedrock o Google Vertex AILa nube contratada, con región europeaAcuerdo con el proveedor de nube; útil si ya tenéis uno
GitHub Copilot Business/EnterpriseNube de GitHub/MicrosoftExclusiones de contenido y políticas de la organización
OpenCode con modelo localVuestro servidorCapacidad 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)StackLo que pedíanPor dónde empezar
Organismo público provincial de recaudación, 51-200 personasSQL, PL/SQL, Oracle Forms, .NET, C#"Refactorizar y acelerar nuestros flujos de desarrollo", con mantenimiento correctivo y evolutivo, integraciones y sustitución de soluciones obsoletasChampions + un módulo PL/SQL real: documentación, tests y un primer refactor revisado
Empresa de software de ingeniería vibroacústica, unas 13 personasUnas 400.000 líneas de Visual C++Replatforming con Claude CodeMapa de módulos y golden master del núcleo de cálculo antes de portar nada
Consultora tecnológica para sanidad públicaJava, .NET, GitLabPiloto de adopción de Claude Code con champions5-8 champions, CLAUDE.md por repositorio y MCP a GitLab
Servicio de informática de una universidad pública, unos 20 desarrolladoresDjango/Python, SVN y Git, RedmineInmersió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.

SemanaQué hacen los championsEntregable
Jornadas 1-2 (presencial)Fundamentos, CLAUDE.md, hooks, MCP y un módulo legacy real de principio a finCLAUDE.md y hooks del primer repositorio
Semana 1Documentan un módulo cada uno con Claude Code y lo revisa otro championdocs/ revisados en PR
Semana 2Escriben tests de regresión del módulo documentadoTests que pasan con el código actual
Semana 3Primer refactor pequeño por persona, en PRUn PR aprobado por persona
Semana 4Miden y preparan la formación interna para el restoMétricas y plan de despliegue al equipo
DespuésSesiones internas para el resto del departamentoEquipo 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ónGrupoPara qué
Claude Code8-24 h, de 1 a 3 jornadas5-25 desarrolladoresFundamentos, hooks, MCP y la tercera jornada dedicada a código legacy
Programa de champions2 jornadas + 4 semanas5-8 personas primeroUn grupo piloto que después forma al resto
Inmersión presencial2-3 días seguidosEl equipo de desarrolloTrabajar el propio backlog con agentes desde el primer día
Seguimiento4 semanas, 1 h semanalChampions o equipoQue la adopción no se caiga al mes
Inversión: no hay tarifa cerrada, porque depende de las jornadas, el tamaño del grupo y si es presencial o remota. Primero hago un diagnóstico sin coste del stack y del equipo, y con eso envío presupuesto cerrado en menos de 24 horas. La formación es bonificable por FUNDAE para empresas del régimen general (tienes el cálculo en cuánto recuperas con FUNDAE). Para administraciones públicas preparo presupuesto formal con memoria del servicio, calendario de ejecución y factura electrónica por FACe.

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é pasaCómo evitarlo
Pedir un refactor antes de documentarPR enorme que nadie se atreve a aprobarDocumentar y revisar primero; un procedimiento por PR
Cambiar sin tests de regresiónSe rompe un proceso batch que nadie recordabaTests 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 personalesUsuario de solo lectura sobre preproducción anonimizada
Intentar leer los .fmb directamenteClaude Code no ve los triggers y se inventa la lógicaConvertir a XML con frmf2xml y exportar los .pll a .pld
Un CLAUDE.md genérico para todo el departamentoReglas que no aplican a ningún repositorioUno por repositorio, revisado en PR
Medir solo "lo rápido que escribe"El ahorro parece mayor de lo que esMedir tiempo hasta aprobar el PR y cambios rehechos
Formar a todos a la vez sin championsA las 6 semanas cada uno vuelve a sus hábitos5-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.

¿Quieres formar a tu equipo en IA?

Workshops in-company adaptados a tu stack: Claude Code, agentic coding, prompting profesional, RAG práctico. De 1 a 5 jornadas según el alcance. Documentación y handover incluidos.

Quiero la formaciónjavi@javadex.es
Javier Santos - Especialista en IA & Machine Learning

Javier Santos

Consultor de IA para empresas. Comparto contenido sobre inteligencia artificial, automatización y desarrollo cada semana.