manipulating-dhsf-screens

Parse, generate, modify, and override Divalto .dhsf screen mask files.

6|Updated May 11, 2026
One-click install
npx skills add https://github.com/divalto/divalto-ia-devkit --skill manipulating-dhsf-screens-divalto
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: manipulating-dhsf-screens
Source: https://github.com/divalto/divalto-ia-devkit/tree/main/plugins/divalto-devkit/skills/manipulating-dhsf-screens
Command: npx skills add https://github.com/divalto/divalto-ia-devkit --skill manipulating-dhsf-screens-divalto

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Divalto .dhsf screen masks are complex INI-structured files with strict layout, encoding (ISO-8859-1 + CRLF), and naming rules that are error-prone to edit by hand. This Skill automates parsing, template-based generation, incremental modification, and standard-mask overriding so integrators avoid broken layouts and compilation failures. ## Core Features & Use Cases - Structural parsing: Convert any .dhsf into a JSON tree (pages, widgets, records, DIVA code) with line ranges for round-trip editing. - Template generation: Scaffold zoom SQL, CRUD, or simple screens from parameterized templates with correct encoding. - Incremental modification: Add fields, table columns, pages, and groupboxes with automatic layout validation (rules R1-R5) after each change. - Mask override scaffolding: Create <base>u.dhsf surcharge files plus _base.dhsf companions with correct [masque] properties and [diva]/[diva_base] migration. - Use Case: Add a custom field to the standard Article zoom screen by scaffolding a gtez000_sqlu.dhsf override, injecting the field on page 11, and validating the layout before compiling with xwin7. ## Quick Start Ask the AI to parse an existing .dhsf mask or generate a new zoom screen for a Divalto entity using the manipulating-dhsf-screens skill.

Frequently Asked Questions about manipulating-dhsf-screens

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a field to a Divalto .dhsf screen mask?

Use dhsf_modify.py with the add-field action, providing page_numero, label, vue, champ, and alias parameters. For zoom template masks, target page 11 (the fiche page). The script updates dernier_id automatically and runs post-modification layout validation.

How do I override a standard Divalto screen mask without modifying it?

Run surcharge_mask.py with the standard mask path to scaffold a <base>u.dhsf copy plus a _base.dhsf companion. The script sets surcharge=oui, date_modif_base, niveau_surcharge, and resets ID counters, then reference the user mask in a .dhps override project.

What naming convention must Divalto .dhsf mask files follow?

Every .dhsf mask must have the letter 'e' in position 3 of the filename. Override masks append 'u' before the extension (e.g., gtez097_sqlu.dhsf). The is_dhsf_filename.py script validates names and decomposes them into domain, type, id, and surcharge flag.

Why does my Divalto mask fail compilation with grid clip errors?

Errors like 'Objet en dehors de la clip grille' occur when widgets exceed page bounds (rules R4/R5). Run dhsf_modify.py --action validate before and after edits to detect violations; table-type widgets are exempt from R4/R5 because their width uses column units.

Can I hide a standard Divalto screen component instead of deleting it?

Yes, add a noms= logical identifier to the component's [presentation] section, then call XmeSetAttribut with AN_VISIBILITE and AV_CACHE in the [diva] section. This preserves compatibility if the standard mask evolves, unlike pure block deletion.