sage-x3-l4g
Skill Claude pour écrire, relire et déboguer du code Sage X3 V12 L4G — classes du dictionnaire et scripts de classe, représentations, objets Classic et points d’entrée, transactions, dictionnaire de données et paramètres, REST Syracuse et SOAP, imports, workflows, pièces automatiques, batchs, tests AXUNIT.
Donne à Claude le vocabulaire, les idiomes et les conventions du L4G Sage X3 (4GL / X3 script / Adonix) pour qu’il écrive du code qui n’utilise que de vrais mots-clés et de vraies API superviseur. Centré sur la V12 ; le Classic est couvert là où il tourne encore en V12.
Chaque référence cite les pages de l’aide en ligne Sage sur lesquelles elle s’appuie (section ## Sources en fin de fichier), et le script de validation rejette les identifiants qui n’existent pas en X3. Le contenu est vérifié sur la documentation Sage, pas compilé sur un dossier réel — voir Limites.
Parcourir les références en ligne → actouf.github.io/sage-x3-l4g
Contenu
Point d’entrée
SKILL.md— quand l’utiliser, discipline de vérification, modèle mental (préfixes,fstat/adxuprec, un seul niveau de transaction), idiomes V12 vs Classic, Funprog transactionnel de référence
Langage
references/language-basics.md— types, déclarations, tableaux etSorta, modes de passage, flux de contrôle,Break, sous-programmes,Gosub,Onerrgo/Resumereferences/database.md—Read/For/Filter/Link,Update … With,Readlock,Rewritebykeyet UPDTICK,Execsql, fstat / adxuprec, l’idiome transactionnelreferences/builtin-functions.md— fonctions chaînes, dates, nombres et système (format$,gdat$,instr,vireblc,ctrans,pat,filinfo,System)references/sequential-files.md—Openi/Openo/Openio,Rdseq/Wrseq/Getseq/Putseq,Iomode, encodages,filpathreferences/data-dictionary.md— tables (GESATB), champ ajouté à une table standard, index, validation, types de données (GESATY), menus locaux (TXT), tables diverses, vues SQL (GESAVW), paramètres généraux et leur lecture en L4Greferences/conventions-and-naming.md— préfixes X / Y / Z, codes activité, chapitres de messages, nommage des scripts et tables, abréviations et index primaires des tables standardreferences/function-codes.md— liste vérifiée des fonctions GESxxx, et codes qui n’existent pas
Modèles objet et IHM
references/v12-classes-representations.md— aiguillage : classes, représentations ou objets Classic, migration Classic → V12references/v12-classes.md— dictionnaire des classes, scripts de classe ($PROPERTIES/$EVENTS/$METHODS/$OPERATIONS), règles, événements, instances,fmet,ASETERRORreferences/v12-representations.md— représentations, facettes, scripts et événements de représentationreferences/classic-objects.md— objets Classic : scripts spécifiques$ACTION, actions de création / modification,OK/GOKreferences/entry-points.md— points d’entrée (GESAPE,GPOINT,GPE) pour adapter les traitements standard sans les modifierreferences/screens-and-masks.md— masques Classic,[M:...], actions champs,mkstat, instructions d’écran dépréciées
Intégration
references/web-services-integration.md— aiguillage : REST, SOAP, HTTP sortant, fichiers ou API GraphQL de X3 Services, journal d’intégration, checklist de publicationreferences/web-services-rest.md— exposer X3 en REST Syracuse (/api1/..., représentations, facettes, pagination, authentification)references/web-services-rest-client.md— appeler des API HTTP / REST externes (ASYRRESTCLI.EXEC_REST_WS), JSON avecParseInstancereferences/web-services-soap.md— publier des web services SOAP Classic (GESASU, GESAWE, pools Syracuse, callContext)references/web-services-soap-client.md— appeler un service SOAP externe depuis X3 : enveloppe, échappement, analyse, faultsreferences/imports-exports.md— modèles d’import / export (GESAOE), lancement depuis le code, échanges de fichiersreferences/reports-printing.md— dictionnaire des états, destinations, impression depuis le codereferences/workflow-email.md— règles workflow (GESAWA), règles d’affectation, modèles de données, envoi d’e-mails (ASEND_MAIL)references/accounting-automatic-journals.md— pièces automatiques (GESGAU), formules, sous-programmes de lien et de pièce, points d’entrée CPTAUTO, tables des écritures comptables
Exploitation
references/development-workflow.md— où vivent les scripts, dictionnaire des traitements (GESADC), Safe X3 Studio (Eclipse), compilation, la boucle écrire → compiler → corriger → tester → patcherreferences/batch-scheduling.md— tâches batch (GESABT), tâches récurrentes (GESABA), calendriers, suivi des requêtes, reprise sur incident, garde mono-instance parLockreferences/personalisation-activity.md— codes activité (GESACV), hiérarchie des dossiers, patchs (APATCH / PATCH), personnalisationreferences/localization.md— messages etmess(), langue de connexion, formats de date et de nombrereferences/localization-formats.md— devises, pays et formats d’adresse, jeux de caractèresreferences/data-migration.md— tables de staging, chargements idempotents, rapprochement, basculereferences/debugging-traces.md— fichiers de log (classeALOGen V7+,OUVRE_TRACE/ECR_TRACEen Classic), log moteur, variables d’erreur, débogueurreferences/diagnostics-postmortem.md— incidents de production : verrous, batchs en échec, logs, modèle de rapport d’incident
Qualité
references/performance.md— profileur (ASYRTIMING), accès par index,Linkplutôt que N+1 lectures,Columns, taille des transactions, SQL ensemblistereferences/security-permissions.md— profils fonctionnels, contrôle d’accès, authentification des web services, secrets, injectionreferences/audit-compliance.md— table d’audit, compteurs, RGPD accès / effacement / portabilité, rétentionreferences/unit-testing-axunit.md— suites de tests AXUNIT (scriptsQLF*), assertions, exécutionreferences/code-review-checklist.md— passe de revue structurée, signaux d’alerte classés par gravitéreferences/common-patterns.md— recettes Classic / cœur et index indiquant où vit chaque recettereferences/common-patterns-v12.md— recettes V12references/version-caveats.md— comportements dépendant de la version et points à vérifier sur votre dossier
Exemples (plugins/sage-x3-l4g/examples/, livrés avec le skill)
| Fichier | Sujet |
|---|---|
YACCLIB.src |
Funprog transactionnel YTRANSFER et contrôle ALOG des soldes |
QLFYAC_TRANSFER.src |
Suite de tests AXUNIT pour YTRANSFER |
YTRFPOST.src |
Traitement batch d’une table de transit, transaction par ligne, ALOG |
SPEYCU.src |
Actions d’objet Classic refusant création ou modification par OK = 0 |
YSUBITM.src |
Point d’entrée BEFWRIITF de SUBITM : ligne d’audit, GOK = 0 |
YCONTRACT_CSPE.src |
Script de classe V12 : règle CONTROL, événements de contrôle, méthode ARET_VALUE |
YRESTRATE.src |
Appel REST sortant EXEC_REST_WS, analyse JSON, journal d’intégration |
YIMPLAUNCH.src |
Import silencieux IMPORTSIL et archivage du fichier importé |
Installation
Claude Code (CLI, VS Code, JetBrains)
claude plugin marketplace add actouf/sage-x3-l4g
claude plugin install sage-x3-l4g@sage-x3-l4g
Ou depuis une session : /plugin marketplace add actouf/sage-x3-l4g, puis /plugin install sage-x3-l4g@sage-x3-l4g. Mise à jour : claude plugin update sage-x3-l4g@sage-x3-l4g (la mise à jour automatique est désactivée par défaut pour les marketplaces tierces ; elle s’active dans /plugin).
Claude Desktop
Personnaliser → Plugins → Plugins personnels → + → ajouter la marketplace actouf/sage-x3-l4g, puis installer sage-x3-l4g.
Claude.ai (web)
- Télécharger
sage-x3-l4g.zipdepuis la dernière release (il contient le dossier du skillsage-x3-l4g/). - Dans Claude.ai : Personnaliser → Skills → + → Importer un skill, puis choisir le zip.
Utilisation
Le skill se déclenche tout seul. Demandez simplement :
- « Écris un Funprog qui transfère un montant entre deux comptes, appelable dans ou hors transaction »
- « Dans ma classe V12 YCONTRACT, refuse la création si ENDDAT < STRDAT »
- « Ajoute un contrôle à la création d’un client sans toucher au standard »
- « Appelle une API REST externe depuis X3 et lis une valeur dans la réponse JSON »
- « Relis ce script L4G et dis-moi ce qui cloche »
- « Écris un test AXUNIT pour mon Funprog YTRANSFER »
- « Comment ajouter un champ spécifique à la table des clients sans perdre la modification au prochain patch ? »
FAQ
V12 ou V7 ? Le V6 est-il couvert ?
La V12 est la cible principale ; la V7 partage le même modèle classes / représentations. Le Classic (masques, scripts d’objet $ACTION, SOAP) est couvert parce qu’il tourne encore en V12. Les patterns purement V6 ne le sont pas.
Pourquoi tester fstat plutôt que des exceptions ?
Les instructions base de données et fichiers ne lèvent pas d’exception : elles positionnent [S]fstat. Update positionne aussi [S]adxuprec et Delete [S]adxdlrec, le nombre de lignes touchées : fstat = 0 ne prouve donc pas qu’une ligne a été modifiée. Sans ces tests, les bugs sont silencieux.
Quel niveau de patch ?
Les références suivent l’aide en ligne V12 et signalent ce qui dépend de la version (par exemple l’analyse JSON native). Vérifiez sur votre dossier avant de livrer ; version-caveats.md liste les points à contrôler.
Peut-on mélanger français et anglais dans les exemples ? Oui, comme dans les vraies bases de code X3.
Où signaler une erreur ? Dans les issues GitHub, avec la source ou le patch V12 qui contredit la référence.
Limites
- Aucun dossier X3 réel n’est utilisé : les exemples sont vérifiés sur la documentation, pas compilés. Compilez-les dans votre bac à sable avant usage.
- Les routines superviseur documentées uniquement par la communauté sont signalées (community-reported).
Contribuer
Issues et PR bienvenues — voir CONTRIBUTING.md : politique des sources, style, tests locaux (claude --plugin-dir, evals) et processus de release.
Licence
MIT — utilisez, modifiez et redistribuez librement.
Remerciements
Construit à partir de l’aide en ligne Sage X3, de L.V. Expertise X3 et du Sage Community Hub. Non affilié à Sage.