Définir et utiliser les SKILLS avec BOB sur IBMi
Pourquoi utiliser des SKILLS avec BOB ?
Les SKILLS permettent de définir, de sauvegarder, des descriptions de résultats attendus de BOB.
Une fois défini, un SKILL peut donc être réutilisé, ce qui évite d’avoir à ressaisir les mêmes informations dans le prompt à chaque fois que la demande porte sur un résultat attendu similaire.
Contrairement au CONTEXTES qui donnent des informations sur l’environnement à utiliser par BOB, les SKILLS fournissent à BOB des informations sur le résultat attendu.
L’objectif d’un SKILL est donc :
- de fournir des informations à l’IA pour lui permettre de mieux formater ses réponses.
- Normes de codage définies dans l’entreprises
- Règles de programmation utilisées par le service informatique
- Paragraphes attendus dans les documents produits
- Format des schémas à insérer dans les documents
- …
- …
- de ne pas avoir à ressaisir ces informations à chaque demande.
Création d'un SKILL pour BOB :
Pour créer un SKILL, il suffit de créer un fichier markdown (.md) en lui donnant un nom facilement identifiable commençant par « skill-« .
Voici un cas simple : la création d’un SKILL dédié à une documentation orientée utilisateur : skill-documentation-utilisateur.md
L’objectif de ce SKILL étant de fournir à BOB les informations nécessaires pour produire un documentation utilisateur, non technique, affichant les enchainements écran et détaillant les diverses options et touches de fonctions utilisables.
Une fois le fichier .md créé, il faut, ensuite, saisir dans ce fichier, de préférence de manière ordonnée, la liste des informations à fournir à l’IA.
Il est aussi possible de demander de l’aide à BOB pour créer ce skill avec, par exemple, le prompt suivant :
Génère moi un SKILL appelé skill-documentation-utilisateur.md, définissant une documentation de chaine de traitement interactive sur IBMi. La documentation ne doit pas être technique mais fonctionnelle, orientée utilisateur. Elle devra comporter des schémas au format mermaid représentant les enchainements d’écran. Chaque option et touche de fonction utilisée devra être décrite. Chaque écran devra faire l’objet d’une représentation graphique au format mermaid. Les données techniques telles que les noms des programmes et des DSPF ne doivent pas apparaître dans la documentation.
Le document produit par BOB devra être relu et revu (complété avec des informations supplémentaires, ou épurée de paragraphes jugés non utiles par exemple)…
Le mieux étant d’utiliser le SKILL et de le corriger en fonction des résultats obtenus, puis de le rejouer pour le vérifier de nouveau…
Ceci afin d’obtenir le SKILL idéal, produisant un résultat répondant totalement aux attentes initiales.
Exemple :
Fichier : skill-documentation-utilisateur.md
La documentation doit être orientée utilisateur final, sans détails techniques d’implémentation, et
**100% basée sur l’analyse des sources réels** (programmes RPGLE et fichiers DSPF).
Le document généré doit être un .md généré dans : « C:\BOB\Résultats BOB »
– **INTERDICTION FORMELLE d’inventer ou supposer des informations**
– Analyser les fichiers DSPF pour les touches de fonction réelles
– Analyser les programmes RPGLE pour les options réelles du subfile
– Vérifier chaque détail dans le code source avant de le documenter
– Expliquer « ce que fait » l’application, pas « comment elle le fait »
– Éviter les termes techniques (subfile, indicateurs, RPGLE, etc.)
– Se concentrer sur les actions utilisateur et leurs résultats
– Documenter TOUTES les options disponibles
– Documenter TOUTES les touches de fonction actives
– Inclure les messages d’avertissement et de confirmation
**Date** : [Date]
**Application** : [Code Application]
[Description en 2-3 phrases de la fonctionnalité principale]
– **Menu** : [Chemin d’accès depuis le menu principal]
A –>|Option 2| C[Écran 2]
B –>|F12| A
C –>|F12| A
– Utiliser des noms d’écrans compréhensibles (pas les codes techniques)
– Indiquer les options/touches qui permettent la navigation
– Montrer les retours arrière (F12, F3)
– Garder le diagramme simple et lisible
[Expliquer à quoi sert cet écran en 2-3 phrases]
[Inclure une représentation ASCII de l’écran en utilisant la police CONSOLAS]
Utiliser des blocs de code avec la police CONSOLAS pour les représentations d’écran.
1. Les représentations écran ne doivent pas afficher de bordure encadran les écrans
2. La largeur d’une ligne doit être SOIT 80 colonnes, SOIT 132 colonnes
3. Compléter avec des espaces si nécessaire pour atteindre la largeur exacte
4. Utiliser impérativement la police CONSOLAS pour les représentations d’écran
| Zone | Description | Format | Obligatoire |
|——|————-|——–|————-|
| [Nom] | [Description] | [Type] | Oui/Non |
|——–|————-|——–|
| [Code] | [Nom] | [Ce qui se passe] |
|——–|————-|
| F3 | Sortie de l’application |
| F12 | Retour à l’écran précédent |
|——-|————|
| [Terme métier] | [Explication simple] |
**IMPORTANT** : Analyser TOUS les programmes appelés, y compris ceux appelés par des programmes appelés (analyse récursive).
1. Lire le programme principal (ex: SCNFLDP00.RPGLE)
2. Identifier tous les programmes appelés dans les prototypes (Dcl-pr … extpgm)
3. Pour CHAQUE programme identifié, répéter l’étape 2
4. Continuer jusqu’à avoir identifié tous les programmes de la chaîne
– Le programme RPGLE (ex: SCNFLDP00.RPGLE)
– Le fichier DSPF correspondant (ex: SCNFLDD00.DSPF)
– SCNFLDP00 appelle SCNFLDP01, SCNFLDP03, etc.
– SCNFLDP01 appelle SCNFLDP10, SCNFLDP11, SCNFLDP12
– SCNFLDP03 appelle SCNFLDP30, SCNFLDP31, SCNFLDP32
– Tous ces programmes doivent être documentés
1. **Touches de fonction** : Chercher les lignes CF03, CF06, CF08, CF12, etc.
Exemple : CF03(03) signifie que F3 est active
2. **Zones de saisie** : Chercher les champs avec attribut B (Both = saisie)
Exemple : C_CHOIX 2 0B signifie zone de saisie numérique
3. **Libellés d’écran** : Les textes entre quotes définissent les titres et labels
4. **Structure du subfile** : Si présent, identifier les colonnes affichées
1. **Options du menu** : Dans la section SELECT/WHEN
Exemple : WHEN E_CHOIX = 1; indique que l’option 1 existe
2. **Actions des options** : Le code appelé après chaque WHEN
Exemple : GestionTextes(l_codeRetour); indique l’action de l’option
3. **Options du subfile** : Dans la section de traitement du subfile
Exemple : WHEN S_OPTION = ‘2’; indique que l’option 2 existe
4. **Validations** : Les contrôles effectués sur les saisies
« `
– Vérifier que chaque option documentée existe dans le code
– Vérifier que chaque touche documentée est définie dans le DSPF
– Vérifier la cohérence entre DSPF et RPGLE
– Noms techniques des programmes (sauf en référence)
– Détails d’implémentation (SQL, RPG, indicateurs)
– Noms de tables ou fichiers techniques
– Structures de données internes
– Codes d’erreur système
– Sections « Prérequis techniques »
– Sections « FAQ » (sauf si demandé explicitement)
– Sections « Support technique » (sauf si demandé explicitement)
– Sections « Messages et alertes » (sauf si demandé explicitement)
– Sections « Cas d’usage pratiques » (sauf si demandé explicitement)
– [ ] Toutes les informations proviennent des sources analysés
– [ ] Aucune information n’a été inventée ou supposée
– [ ] Tous les écrans de la chaîne sont documentés
– [ ] Toutes les options réelles sont documentées
– [ ] Toutes les touches de fonction actives sont documentées
– [ ] Le vocabulaire est orienté utilisateur (pas technique)
– [ ] Le diagramme Mermaid est clair et complet
– [ ] Les cas d’usage sont pratiques et réalistes
– [ ] Le glossaire explique les termes métier
– [ ] Les représentations d’écrans sont présentes
« `
Crée une documentation utilisateur pour la chaîne de traitement [NOM].
Sources à analyser :
– Programme principal : [chemin/XXXP00.RPGLE]
– Écran principal : [chemin/XXXD00.DSPF]
– Autres programmes : [liste]
1. Analyse TOUS les fichiers sources fournis
2. Extrais les informations réelles (options, touches, écrans)
3. Crée la documentation en suivant le SKILL-DOCUMENTATION-UTILISATEUR
4. N’invente AUCUNE information
5. Utilise un vocabulaire orienté utilisateur
|
|——————-|———————|
| Subfile | Liste |
| Option 2 du subfile | Modifier un élément |
| Indicateur 30 | Champ actif/inactif |
| EXFMT | Affichage de l’écran |
| F8 = Extraction | F8 = Exporter les données |
| RPGLE | Programme |
### Structure des Phrases **Bon** : « Saisissez le code de la bibliothèque à analyser »
**Mauvais** : « Le champ C_BIB attend une valeur CHAR(10) »
**Bon** : « Appuyez sur F6 pour créer un nouveau texte »
**Mauvais** : « CF06 appelle le programme SCNFLDP10 »
**Bon** : « La liste affiche les résultats de la recherche »
**Mauvais** : « Le subfile SFL01 contient les enregistrements »
– Décrire la liste comme « Liste des [éléments] »
– Documenter les colonnes affichées
– Expliquer comment naviguer (Page Up/Down)
– Lister les options disponibles sur chaque ligne
– Mettre en évidence les avertissements
– Expliquer clairement les conséquences de la confirmation
– Documenter les deux choix (Oui/Non)
– Indiquer les champs obligatoires
– Expliquer le format attendu
– Donner des exemples de saisie valide
1. **Un fichier Markdown** contenant la documentation complète
2. **Un diagramme Mermaid** de navigation entre écrans
3. **Des représentations d’écrans** (ASCII ou captures)
4. **Une liste de vérification** confirmant l’analyse des sources
– Prendre le temps d’analyser chaque source
– Vérifier chaque information avant de la documenter
– En cas de doute, analyser à nouveau le code source
– Un utilisateur doit pouvoir utiliser l’application avec uniquement ce guide
– Aucune connaissance technique ne doit être requise
– Tous les termes métier doivent être expliqués
– Les sources analysés sont référencés
– Les informations sont traçables
– Les mises à jour peuvent être faites en réanalysant les sources
Utilisation d'un SKILL dans un prompt pour BOB :
Pour utiliser un SKILL dans un prompt BOB, il suffit d’inclure dans le prompt : @ + nom_du_skill_a_utiliser.md
Par exemple :
Pour créer une documentation utilisateur d’une chaine de traitement, il suffit d’utiliser le prompt suivant :
@skill-documentation-utilisateur.md Documente la chaine de traitement IBMi dont le point d’entrée est le programme XXXXXXXXXX dont le source se trouve dans le fichier QXXXSRC de la bibliothèque XXXXXXXXXX. Tous les sources à analyser se trouvent dans la bibliothèque XXXXXXXXX.
Dans le prompt, ci-dessus, figurent des information contextuelles qui aurait pu être replacées par l’utilisation d’un contexte particulier.
Dans un même prompt, il est possible d’indiquer un ou plusieurs CONTEXTES et d’utiliser un ou plusieurs SKILLS en fonction des besoins.
Pour aller plus loin...
- Les SKILLS sont perfectibles. Ils doivent être complétés et/ou corrigés de façon à ce qu’ils puissent correspondre exactement à vos attentes.
- Idéalement ils doivent être partagés par les membres d’une même équipe afin d’homogénéiser les réponses de BOB.