From divalto-devkit
Trouve un EnrNo libre dans le fichier menu `g3f.dhfi` d'un domaine ERP, selon la plage demandee (`standard` < 100000 reserve ERP, `custom` >= 100000 recommande pour creations utilisateur). Scan des enregistrements M2 (Ce=2) avec filtre obligatoire (piege multi-structure M0/M2, cf RETEX R-006), puis calcul max+1 dans la plage. Previent les collisions d'EnrNo lors de l'ecriture d'un nouveau choix de menu. A utiliser avant d'ecrire un enreg M2 dans `g3f.dhfi` (ou un enreg M1 de visibilite F7 dans `a5f.dhfi`) pour une entite metier custom.
How this skill is triggered — by the user, by Claude, or both
Slash command
/divalto-devkit:allocating-menu-enrnoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Probleme resolu
Le fichier menu g3f.dhfi (base Xmenuf) stocke les choix de menu en table M2 (Ce=2) avec un champ EnrNo qui doit etre unique. Lors de l'ecriture d'un nouveau choix (ajout d'une entree menu pour un zoom custom), il faut trouver un EnrNo libre pour eviter la collision et preserver la coherence de l'index C (Ce, EnrNo).
Observation empirique (RETEX R-005, 2026-04-23) :
g3f.dhfi Achat-Vente X.13 ont tous un EnrNo < 100000 (ex : Race de chien = 1564).>= 100000 est reservee aux customisations utilisateur pour eviter les collisions avec les numeros alloues par l'IHM standard. [A VERIFIER]Ce skill encapsule cette logique.
py .claude/skills/allocating-menu-enrno/scripts/find_free_enrno.py \
--file "{CHEMIN_ERP_STANDARD}\Achat-Vente\fichier\g3f.dhfi" \
--range custom
Retourne le premier EnrNo libre dans [100000, 999999].
py .claude/skills/allocating-menu-enrno/scripts/find_free_enrno.py \
--file "<g3f.dhfi>" \
--range custom --count 5
py .claude/skills/allocating-menu-enrno/scripts/find_free_enrno.py \
--file "<g3f.dhfi>" \
--range standard
A n'utiliser que si on installe des choix "ERP-standard" (cas exceptionnel pour une customisation qui s'integre au standard plutot que de s'isoler).
| Plage | Bornes | Usage | Recommandation |
|---|---|---|---|
standard | 1 -- 99999 | Zone reservee ERP standard, allouee par l'IHM native | Deconseille pour customisation -- risque de collision a l'installation d'un correctif ERP |
custom | 100000 -- 999999 | Zone customisations utilisateur | Recommande pour toute creation custom (zoom metier, nouveau choix menu) |
Detail + hypothese [A VERIFIER] : reference/plages-enrno.md.
{
"file": "C:\\...\\Achat-Vente\\fichier\\g3f.dhfi",
"range": "custom",
"range_bounds": [100000, 999999],
"free": [100001],
"sources": {
"m2_records": 1367,
"enrno_parsed": 1367,
"used_in_range": 0,
"max_used_in_range": null
},
"note": "Hypothese plages standard < 100000 / custom >= 100000 [A VERIFIER] RETEX R-005 2026-04-23"
}
Champs :
free : liste des EnrNo libres (ordre croissant, --count N)sources.m2_records : nombre de choix M2 lus (apres filtre Ce=2)sources.used_in_range : nombre de M2 dont EnrNo est dans la plagesources.max_used_in_range : plus grand EnrNo actuellement utilise dans la plage (null si plage vide)Exit codes :
0 : au moins un EnrNo libre trouve1 : aucun libre (plage saturee) OU aucun M2 lu (fichier vide / erreur silencieuse)2 : erreur (fichier introuvable, read_isam.py inaccessible, JSON invalide)g3f.dhfi contient 2 tables distinctes :
Ce=0, 508 octets) : parametres generaux du domaine (1 enreg par fichier, header)Ce=2, 1000 octets) : choix du menu (les "vraies" entrees)Un scan M2 sans filtre Ce=2 lit aussi l'enreg M0 avec les offsets M2 -> valeurs aberrantes qui polluent les stats. Ce skill applique systematiquement --filter "Ce=2" via subprocess read_isam.py.
Structure M0 disponible dans reading-isam-files/scripts/structures/structure_xmenuf_m0.json pour decoder proprement ce header si besoin.
| Script | Role | Entree | Sortie JSON |
|---|---|---|---|
scripts/find_free_enrno.py | Scan M2 + calcul EnrNo libre | --file <g3f.dhfi> + --range {standard, custom} + [--count N] + [--read-isam-script PATH] | {free[], sources, range_bounds} |
Le script vendored scripts/structure_xmenuf_m2.json rend ce skill autonome : pas de dependance au skill reading-isam-files au niveau structure (mais appel subprocess a son read_isam.py pour l'ISAM).
g3f.dhfi -- typiquement dans creating-diva-entity CP10 (Menu domaine)a5f.dhfi -- si l'application preconise d'aligner le numero d'ordre M1 sur l'EnrNo correspondant M2 (pattern a verifier)modifying-diva-entity qui ajoute des choix menu a une entite existantereading-isam-files/scripts/structures/structure_xmenuf_m2.json : structure canonique M2 (source du vendored)npx claudepluginhub divalto/divalto-ia-devkit --plugin divalto-devkitProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.