dot_config/ai_templates/skills/devtools/pseudocode-cas-utilisation/SKILL.md
Déclenché explicitement quand l'utilisateur mentionne `pseudocode-cas-utilisation` ou demande de rédiger / formater un cas d'utilisation (CU) métier en français. Produit un document CU lisible avec corridor principal séparé des variantes ancrées à leurs étapes.
npx skillsauth add pascalandy/dotfiles pseudocode-cas-utilisationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Rédiger un cas d'utilisation (CU) métier en français selon une grammaire pseudocode normalisée. Le document sépare le corridor principal (chemin nominal) des variantes (chemins alternatifs ancrés à une étape précise).
Distinct du skill pseudocode (flows UI en anglais). Ici on documente un processus métier multi-acteurs : qui fait quoi, dans quel système, dans quel ordre, avec quelles erreurs et refus possibles.
ETQ_NN.ÉTAPE N: TITRE.// variantes: ALT_<CU>-E<N>, ....---
name: <Titre du CU>
description: <Une phrase>
tags:
- area/<domaine>
- kind/project
- topic/<sujet>
- status/open
date_created: YYYY-MM-DD
date_updated: YYYY-MM-DD
---
## CU_<NUM> | <Titre court>
### Objectif
<Une phrase qui explique ce que le CU permet d'accomplir.>
### Acteurs
- ETQ_NN <NOM_ACTEUR>
- ETQ_NN <RÔLE> : <NOM>
### Préconditions
- <état vrai avant le déclencheur>
- ...
### Déclencheur
```js
(ACTION)=> DÉCLENCHEUR
()=> <ACTEUR> initie [...]
(SUCCÈS)=> <état observable après le déclencheur>
```
### Scénario principal
```js
(ACTION)=> ÉTAPE 1: TITRE EN MAJUSCULES
()=> ...
(SUCCÈS)=> affiche [...]
// variantes: ALT_<CU>-E1.1, ALT_<CU>-E1.2
(ACTION)=> ÉTAPE 2: ...
```
### Variantes et exceptions
```js
// ALT_<CU>-E1.1 -- ÉTAPE 1: <description courte>
(ACTION)=> <rappel du geste de l'étape>
(ERREUR)=> <condition> [...]
```
### Postconditions
```js
(SUCCÈS)=> Postconditions
()=> <état final 1>
()=> <état final 2>
```
Utiliser ```js pour tous les blocs de pseudocode (coloration syntaxique propre).
| Mot-clé | Usage |
|---|---|
| (ACTION)=> | Étape principale ou geste d'un acteur |
| (SUCCÈS)=> | Résultat positif d'une étape ou état final |
| (ERREUR)=> | Échec technique ou validation refusée |
| (REFUS)=> | Refus humain ou refus d'autorisation |
| (ATTENTE)=> | Opération longue / traitement en cours |
| (SI)=> | Branche conditionnelle |
| Symbole | Usage |
|---|---|
| ()=> | Sous-étape (indentée 2 espaces sous son parent) |
| ["..."] | Libellé UI, message à l'écran, ID, valeur littérale |
| {var} | Variable interpolée dans un libellé : ["Ticket #{num}"] |
| 0o0o | Placeholder / TODO (lettres o, jamais des zéros) |
js.**...**) à l'intérieur des blocs.") seulement -- jamais « » ni "...".if, pas de while).(ACTION)=> ÉTAPE N: TITRE EN MAJUSCULES
()=> ACTEUR fait quelque chose
()=> ACTEUR clique ["Libellé du bouton"]
(ATTENTE)=> opération en cours ["Message d'attente..."]
(SUCCÈS)=> affiche ["Confirmation"]
// variantes: ALT_<CU>-E<N>, ...
L'en-tête (ACTION)=> ÉTAPE N: ... est au niveau racine (pas d'indentation).
Les sous-actions sont indentées 2 espaces.
(SUCCÈS)=>, (ATTENTE)=>, (SI)=> reviennent au niveau racine.
(SUCCÈS)=> peut prendre la forme affiche ["..."] ou un titre descriptif (ex. (SUCCÈS)=> Postconditions).
Une branche conditionnelle interne :
(SI)=> condition
()=> sous-action de la branche
(SUCCÈS)=> résultat de la branche
L'annotation // variantes: apparaît immédiatement après le (SUCCÈS)=> final de l'étape, seulement si des variantes existent.
// ALT_<CU>-E<N>[.M] -- ÉTAPE N: <description courte>
(ACTION)=> <rappel du geste de l'étape source>
(ERREUR)=> <cause> ["Message à l'utilisateur"]
()=> <action de récupération>
ALT_<CU>-E<N> ou ALT_<CU>-E<N>.<M> si plusieurs variantes pour la même étape..1, .2, ... quand collision.(ACTION)=> qui rappelle le geste de l'étape source (point d'ancrage visuel).(ERREUR)=>, (REFUS)=> ou (SUCCÈS)=> selon les chemins.### Acteurs
- ETQ_10 EMPLOYÉ
- ETQ_60 PORTAIL_DÉPENSES
- ETQ_50 SOLUTION : SYSTÈME_PAIE
- ETQ_15 Gestionnaire de l'employé (GESTIONNAIRE)
ETQ_NN toujours présente.MAJUSCULES_AVEC_UNDERSCORES quand utilisés dans le pseudocode (ex. EMPLOYÉ, GESTIONNAIRE, ORDONNANCEUR).Version courte d'un CU complet pour illustrer la grammaire en contexte. La version étendue se trouve dans references/exemple-01-note-de-frais.md.
## CU_801 | Soumettre une note de frais
### Acteurs
- ETQ_10 EMPLOYÉ
- ETQ_15 GESTIONNAIRE
- ETQ_18 FINANCE
- ETQ_60 PORTAIL_DÉPENSES
- ETQ_50 SYSTÈME_PAIE
### Préconditions
- employé enregistré dans PORTAIL_DÉPENSES
- compte bancaire valide au dossier
- gestionnaire désigné pour l'employé
### Déclencheur
```js
(ACTION)=> DÉCLENCHEUR
()=> EMPLOYÉ ouvre ["Nouvelle note de frais"] dans PORTAIL_DÉPENSES
(SUCCÈS)=> formulaire de saisie ouvert
```
### Scénario principal
```js
(ACTION)=> ÉTAPE 1: SAISIE DE LA NOTE
()=> EMPLOYÉ remplit ["date", "montant", "catégorie"]
()=> EMPLOYÉ joint ["reçu numérisé"]
()=> EMPLOYÉ clique ["Soumettre"]
(SUCCÈS)=> affiche ["Note no. {num} -- En attente d'approbation"]
// variantes: ALT_801-E1.1
(ACTION)=> ÉTAPE 2: APPROBATION
()=> GESTIONNAIRE clique ["Approuver"]
(SUCCÈS)=> affiche ["Approbation gestionnaire enregistrée"]
(SI)=> montant supérieur à 5000 $
()=> FINANCE clique ["Approuver"]
(SUCCÈS)=> affiche ["Approbation FINANCE enregistrée"]
// variantes: ALT_801-E2
(ACTION)=> ÉTAPE 3: PAIEMENT
()=> SYSTÈME_PAIE exécute le virement
(ATTENTE)=> exécution ["Paiement en cours..."]
(SUCCÈS)=> affiche ["Virement initié -- référence {ref}"]
```
### Variantes et exceptions
```js
// ALT_801-E1.1 -- ÉTAPE 1: Reçu manquant
(ACTION)=> EMPLOYÉ clique ["Soumettre"]
(ERREUR)=> aucun reçu joint ["Reçu obligatoire au-delà de 25 $"]
()=> retour à ["Formulaire de note"] avec ["Reçu à joindre"]
// ALT_801-E2 -- ÉTAPE 2: Refus de l'approbateur
(ACTION)=> GESTIONNAIRE ou FINANCE ouvre la note
(REFUS)=> approbation refusée
()=> modal ["Motif du refus obligatoire"]
()=> retour à ["Note no. {num}"] avec ["Note refusée -- motif : {raison}"]
```
### Postconditions
```js
(SUCCÈS)=> Postconditions
()=> virement initié vers l'EMPLOYÉ
()=> ligne comptable inscrite
()=> notification envoyée à l'EMPLOYÉ
```
Cas d'utilisation complets, à copier puis adapter. Chaque fichier est autonome (frontmatter + sections + pseudocode). Bonifier les exemples ou ajouter de nouveaux scénarios au fil du temps.
| Fichier | Cas d'utilisation | Patterns clés démontrés |
|---|---|---|
| references/exemple-01-note-de-frais.md | CU_801 -- Soumettre une note de frais | Approbation humaine, branche (SI) sur seuil, (REFUS), variantes multi-erreurs, déclenchement de CU aval. |
| references/exemple-02-reinitialisation-mot-de-passe.md | CU_802 -- Réinitialiser un mot de passe (libre-service) | (ATTENTE) courriel, branche (SI) MFA, variante anti-énumération, validation multi-règles. |
| references/exemple-03-synchronisation-nocturne.md | CU_803 -- Synchronisation nocturne d'inventaire | Déclencheur planifié (cron), acteurs majoritairement systèmes, retry exponentiel, escalade humaine, validation post-chargement. |
Pour ajouter un nouvel exemple : créer references/exemple-NN-<slug>.md (numéro séquentiel, slug court en kebab-case).
()=>.if, while, else en anglais.EMPLOYÉ, GESTIONNAIRE, SYSTÈME_PAIE.clique, ouvre, remplit, affiche, joint.["..."] systématiquement, même pour les messages courts.0o0o (lettres o, jamais des zéros).À éviter :
()=> user remplit le formulaire, clique soumettre et reçoit confirmation).if, while, else en anglais au lieu de (SI)=>, (ATTENTE)=>.(ACTION)=> -- choisir un seul style (le nôtre est majuscules sans backticks).// ALT_<CU>-E<N> -- ÉTAPE N: ...).ALT_401-07 pour une variante de l'étape 2).**...**) à l'intérieur des blocs js.« » ou "..." dans les libellés.o dans le placeholder (utiliser 0o0o exactement).// variantes: après une étape qui en possède.ÉTAPE ni le caractère : (ex. (ACTION)=> 1 SOUMISSION).| Élément | Question à se poser |
|---|---|
| Acteurs | Tous les acteurs (humains + systèmes) sont-ils listés avec ETQ_NN ? |
| Préconditions | Quels états doivent être vrais avant le déclencheur ? |
| Déclencheur | Quel geste démarre le CU ? Y a-t-il un (SUCCÈS)=> observable ? |
| Étapes | Chaque étape a-t-elle un (ACTION)=> initial et un (SUCCÈS)=> final ? |
| Variantes | Chaque chemin d'erreur, refus ou cas limite est-il couvert par une variante ancrée ? |
| Liens étape-variante | L'annotation // variantes: apparaît-elle sur chaque étape qui en a ? |
| Attente | Les opérations longues sont-elles marquées (ATTENTE)=> ? |
| Branches internes | Les chemins alternatifs internes à une étape sont-ils traités avec (SI)=> ? |
| Postconditions | Tous les états finaux et CU avals déclenchés sont-ils listés ? |
| Syntaxe | Aucun backtick, aucun mot-clé anglais, aucun guillemet typographique ? |
development
Explicitly triggered when the user mentions `wiki-map`. It ingests, queries, lints, or compiles a markdown wiki.
testing
Explicitly triggered when the user mentions `single-skill-creator`. It scaffolds a new `SKILL.md`.
testing
Explicitly triggered when the user mentions `qmd`. It searches local markdown or QMD collections.
development
Explicitly triggered when the user mentions `ontology-map`. It builds, refreshes, or checks an ontology.