2026
Skill y hooks que impiden que la IA rompa formularios de SAP
Herramientas de análisis estático y hooks que se disparan antes de guardar, para que un asistente de IA no deje los formularios de SAP Business One ilegibles para el ERP.
- Python
- Claude Code
- Análisis estático
- Hooks
- Automatización
Problema
Los formularios de SAP Business One son XML en UTF-16 LE con BOM. Cualquier herramienta que reescriba el fichero en UTF-8, o que se deje el BOM por el camino, produce algo que sigue pareciendo XML pero que el ERP ya no sabe interpretar. El fallo no salta al guardar ni al compilar: aparece cuando un usuario abre esa pantalla. Un asistente de IA editando esos ficheros multiplica ese tipo de error, porque edita rápido y no vuelve a mirar.
Solución
Escribí un conjunto de herramientas de análisis estático y varios hooks que se disparan solos antes de guardar, sin que nadie tenga que acordarse de lanzarlos.
Las comprobaciones son cuatro: preservar la codificación original del fichero, validar que cada control lleva sus atributos obligatorios, detectar identificadores duplicados y bloquear el guardado cuando falta un import. Todo se resuelve leyendo el fichero, sin abrir SAP y sin compilar.
Aparte estaba el coste de lectura. Estos ficheros son largos y leerlos enteros para tocar tres líneas se come un contexto que luego hace falta para el resto del trabajo. Las herramientas devuelven resúmenes quirúrgicos con la parte relevante, que cuestan un 4,3 % de lo que cuesta leer el fichero completo.
Arquitectura
Asistente de IA
|
| lectura escritura
+---------------+ |
| | v
v v Hook de pre-guardado
resumen quirurgico fichero |
(4,3 % del coste) completo v
Analisis estatico
|
+------------------+-----------+------------------+
| | | |
v v v v
codificacion atributos ids unicos imports
UTF-16 LE + BOM obligatorios completos
| | | |
+------------------+-----+-----+------------------+
|
correcto <-----+-----> incorrecto
| |
v v
fichero escrito guardado bloqueadoPor qué está montado así
Los hooks se disparan solos. Una validación que hay que invocar a mano termina no invocándose, y lo sé porque las primeras versiones eran comandos y nadie los lanzaba.
Si falta un import o hay un identificador repetido, el fichero no se escribe. Avisar no servía: el aviso se lee y se sigue adelante.
Todo es análisis estático. No levanta SAP ni compila, así que una comprobación tarda lo que tarda leer el fichero.
Por defecto devuelve un resumen y el fichero entero solo si se pide. El contexto que se gasta leyendo es contexto que falta luego para razonar.
Las reglas son conservadoras a propósito. Un validador que avisa sin motivo acaba desactivado, y entonces no valida nada.
Resultado
Medido en un piloto de cuatro días: 95,7 % menos de consumo en lecturas, 0 falsos positivos sobre 80 ejecuciones y un fallo real detectado antes de llegar a compilar.
Contacto
Trabajemos juntos en tu próximo proyecto
Si tienes un proyecto de SAP Business One, una integración pendiente o simplemente una duda, escríbeme. Respondo a todos los mensajes.
- Ubicación
- Palma, Mallorca
- in/ramon-artigues
- GitHub
- RamonArtigues