mdma-cli 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,32 +14,29 @@ Cela installe la skill dans `.claude/skills/mdma/` de ton projet.
14
14
 
15
15
  ## Utilisation
16
16
 
17
- ### Mode interactif (par defaut)
17
+ ### Mode interactif
18
18
 
19
19
  ```bash
20
20
  /mdma
21
21
  ```
22
22
 
23
23
  Reponds aux questions, rules generes dans `.claude/rules/`.
24
+ A la fin, propose de sauvegarder ton profil via dialogue fichier (Finder/Explorer).
24
25
 
25
- ### Mode profil
26
+ ### Importer un profil existant
26
27
 
27
28
  ```bash
28
- # Sauvegarder tes preferences dans un profil
29
- /mdma save MonProfil
30
-
31
- # Appliquer un profil existant (sans Q&A)
32
- /mdma MonProfil
29
+ /mdma import
33
30
  ```
34
31
 
35
- Les profils sont stockes dans `.mdma-profiles/`.
32
+ Ouvre un dialogue fichier pour selectionner un profil `.md` existant, puis genere les rules sans Q&A.
36
33
 
37
34
  ### Workflow recommande
38
35
 
39
36
  1. Lance Claude Code dans ton projet
40
37
  2. (Optionnel) Tape `/init` pour generer le contexte projet
41
- 3. Premier projet : `/mdma save TonNom` (cree ton profil)
42
- 4. Projets suivants : `/mdma TonNom` (applique direct)
38
+ 3. Premier projet : `/mdma` puis sauvegarde ton profil quelque part (cloud, cle USB...)
39
+ 4. Projets suivants : `/mdma import` pour reutiliser ton profil
43
40
 
44
41
  ## Ce que ça fait
45
42
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Skill Claude Code pour configurer les préférences de travail d'un agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -23,8 +23,18 @@ Ce document montre des exemples de rules files générés par `/mdma`.
23
23
 
24
24
  > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
25
25
 
26
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
27
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
28
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
29
+ > - En cas de doute → STOP → demander à l'utilisateur
30
+
26
31
  ## Étapes obligatoires
27
32
 
33
+ ### 0. Setup Git
34
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
35
+ - Si sur `main` → créer une branche AVANT toute modification
36
+ - Ne jamais rationaliser ("c'est juste un petit fix")
37
+
28
38
  ### 1. Plan
29
39
  - Explore le codebase (structure documentée dans `CLAUDE.md`)
30
40
  - Propose un plan d'implémentation
@@ -40,7 +50,12 @@ Ce document montre des exemples de rules files générés par `/mdma`.
40
50
  - Si fail → tente de fixer
41
51
  - Max 5 itérations
42
52
  - Si toujours fail → **STOP** → demande quoi faire
43
- - Si pass → **STOP** → attend validation
53
+
54
+ #### 3.1 Tests visuels (obligatoire si applicable)
55
+ - **Vérifie** si `.claude/rules/visual-test.md` existe
56
+ - Si oui → exécute les tests visuels
57
+
58
+ - Si tous les tests passent → **STOP** → attend validation
44
59
 
45
60
  ### 4. Review
46
61
  - Review ton propre code
@@ -67,6 +82,9 @@ Ce document montre des exemples de rules files générés par `/mdma`.
67
82
 
68
83
  ## Règles absolues
69
84
 
85
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
86
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
87
+
70
88
  1. **JAMAIS push sur main**
71
89
  2. **JAMAIS commit sans branche** `feature/xxx` ou `fix/xxx`
72
90
  3. **JAMAIS branche sans issue GitHub**
@@ -10,31 +10,27 @@ Tu configures les préférences de travail d'un agent de code (Claude Code, Curs
10
10
 
11
11
  ## Modes
12
12
 
13
- `/mdma` supporte 3 modes selon les arguments :
13
+ `/mdma` supporte 2 modes :
14
14
 
15
15
  ### Mode 1 : `/mdma` (sans argument)
16
- → Lance le Q&A interactif, génère les rules à la fin.
16
+ → Lance le Q&A interactif, génère les rules, puis propose de sauvegarder le profil via dialogue fichier.
17
17
 
18
- ### Mode 2 : `/mdma save <nom>`
19
- Lance le Q&A interactif, sauvegarde le profil dans `.mdma-profiles/<nom>.md`, puis génère les rules.
20
-
21
- ### Mode 3 : `/mdma <nom>`
22
- → Cherche `.mdma-profiles/<nom>.md`. Si trouvé, génère les rules directement sans Q&A. Si non trouvé, propose de lancer le Q&A et sauvegarder sous ce nom.
18
+ ### Mode 2 : `/mdma import`
19
+ Ouvre un dialogue fichier pour sélectionner un profil existant (`.md`), puis génère les rules directement sans Q&A.
23
20
 
24
21
  ## Détection du mode
25
22
 
26
23
  1. Regarde l'argument passé à `/mdma`
27
24
  2. Si pas d'argument → Mode 1
28
- 3. Si argument = "save <nom>" → Mode 2
29
- 4. Si argument = "<nom>" → Mode 3
25
+ 3. Si argument = "import" → Mode 2
30
26
 
31
27
  ---
32
28
 
33
- ## Ta mission (Modes 1 et 2)
29
+ ## Ta mission (Mode 1)
34
30
 
35
31
  Collecter les préférences de travail du développeur : style de réponse, workflow agent, workflow git.
36
32
 
37
- Ensuite, générer les rules files adaptés (et sauvegarder le profil si Mode 2).
33
+ Ensuite, générer les rules files adaptés et proposer de sauvegarder le profil.
38
34
 
39
35
  **Note** : Le contexte projet (stack, structure) est géré par `/init` ou manuellement dans CLAUDE.md. Tu ne génères que les rules.
40
36
 
@@ -121,32 +117,75 @@ Tu passes par 4 phases dans l'ordre. Pour chaque phase, tu as un objectif et des
121
117
 
122
118
  ---
123
119
 
124
- ## Mode 3 : Appliquer un profil
120
+ ## Dialogues fichier natifs
125
121
 
126
- Si l'utilisateur lance `/mdma <nom>` :
122
+ Pour ouvrir un dialogue fichier natif, utilise les commandes suivantes selon l'OS.
127
123
 
128
- 1. Cherche `.mdma-profiles/<nom>.md`
129
- 2. Si trouvé :
130
- - Lis le profil
131
- - Affiche un résumé : "Profil <nom> trouvé : <niveau>, <style>, <git workflow>"
132
- - Génère les 3 rules files directement
133
- - Affiche "Rules générées depuis le profil <nom>."
134
- 3. Si non trouvé :
135
- - Dis : "Profil <nom> non trouvé. Tu veux le créer ?"
136
- - Si oui → passe en Mode 2 (Q&A + save)
137
- - Si non → arrête
124
+ ### Détection de l'OS
138
125
 
139
- ---
126
+ ```bash
127
+ OS=$(uname -s)
128
+ ```
129
+
130
+ | Valeur | OS |
131
+ |--------|-----|
132
+ | `Darwin` | macOS |
133
+ | `Linux` | Linux |
134
+ | `MINGW*` ou `CYGWIN*` | Windows (Git Bash) |
140
135
 
141
- ## Sauvegarde du profil (Mode 2)
136
+ ### Commandes par OS
142
137
 
143
- Après le Q&A et avant de générer les rules, sauvegarde le profil :
138
+ #### macOS (osascript)
139
+
140
+ **Dialogue "Enregistrer sous"** :
141
+ ```bash
142
+ osascript -e 'POSIX path of (choose file name with prompt "Sauvegarder le profil mdma" default name "profil.md")'
143
+ ```
144
+
145
+ **Dialogue "Ouvrir"** :
146
+ ```bash
147
+ osascript -e 'POSIX path of (choose file of type {"md", "public.plain-text"} with prompt "Sélectionner un profil mdma")'
148
+ ```
144
149
 
145
- **Fichier** : `.mdma-profiles/<nom>.md`
150
+ #### Linux (zenity)
151
+
152
+ **Dialogue "Enregistrer sous"** :
153
+ ```bash
154
+ zenity --file-selection --save --filename="profil.md" --title="Sauvegarder le profil mdma" --file-filter="*.md"
155
+ ```
156
+
157
+ **Dialogue "Ouvrir"** :
158
+ ```bash
159
+ zenity --file-selection --title="Sélectionner un profil mdma" --file-filter="*.md"
160
+ ```
161
+
162
+ #### Windows (PowerShell)
163
+
164
+ **Dialogue "Enregistrer sous"** :
165
+ ```bash
166
+ powershell -command "Add-Type -AssemblyName System.Windows.Forms; \$d = New-Object System.Windows.Forms.SaveFileDialog; \$d.Filter = 'Markdown (*.md)|*.md'; \$d.FileName = 'profil.md'; if (\$d.ShowDialog() -eq 'OK') { \$d.FileName }"
167
+ ```
168
+
169
+ **Dialogue "Ouvrir"** :
170
+ ```bash
171
+ powershell -command "Add-Type -AssemblyName System.Windows.Forms; \$d = New-Object System.Windows.Forms.OpenFileDialog; \$d.Filter = 'Markdown (*.md)|*.md'; if (\$d.ShowDialog() -eq 'OK') { \$d.FileName }"
172
+ ```
173
+
174
+ ### Fallback
175
+
176
+ Si la commande échoue (serveur headless, SSH, zenity non installé, etc.) :
177
+ 1. Affiche : "Impossible d'ouvrir le dialogue fichier."
178
+ 2. Demande le chemin manuellement : "Indique le chemin complet du fichier :"
179
+ 3. Valide que le chemin finit par `.md`, sinon ajoute l'extension
180
+
181
+ ---
182
+
183
+ ## Format du profil
184
+
185
+ Le profil sauvegardé/importé utilise ce format :
146
186
 
147
- **Format** :
148
187
  ```markdown
149
- # Profil <nom>
188
+ # Profil
150
189
 
151
190
  ## Personnalité
152
191
  - level: <junior|mid|senior>
@@ -170,7 +209,36 @@ Après le Q&A et avant de générer les rules, sauvegarde le profil :
170
209
  - testRequired: <true|false>
171
210
  ```
172
211
 
173
- Crée le dossier `.mdma-profiles/` s'il n'existe pas.
212
+ ---
213
+
214
+ ## Mode 1 : Workflow complet (`/mdma`)
215
+
216
+ 1. Lance le Q&A interactif (Phases 1-4)
217
+ 2. Génère les 3 rules files
218
+ 3. Demande : "Tu veux sauvegarder ce profil pour le réutiliser ?"
219
+ 4. Si oui :
220
+ - Détecte l'OS avec `uname -s`
221
+ - Exécute la commande "Enregistrer sous" appropriée
222
+ - Si dialogue réussi → écris le profil au chemin retourné
223
+ - Si dialogue échoue → fallback saisie manuelle
224
+ - Assure-toi que le fichier a l'extension `.md`
225
+ - Affiche : "Profil sauvegardé vers <chemin>"
226
+ 5. Propose la suppression du skill (voir Nettoyage)
227
+
228
+ ---
229
+
230
+ ## Mode 2 : Import (`/mdma import`)
231
+
232
+ 1. Détecte l'OS avec `uname -s`
233
+ 2. Exécute la commande "Ouvrir" appropriée
234
+ 3. Si dialogue réussi → récupère le chemin
235
+ 4. Si dialogue échoue → fallback saisie manuelle
236
+ 5. Lis le fichier profil
237
+ 6. Parse les données (format ci-dessus)
238
+ 7. Affiche un résumé : "Profil importé : <niveau>, <style>, <git workflow>"
239
+ 8. Génère les 3 rules files
240
+ 9. Affiche : "Rules générées depuis le profil importé."
241
+ 10. Propose la suppression du skill (voir Nettoyage)
174
242
 
175
243
  ---
176
244
 
@@ -25,8 +25,18 @@ Le workflow de l'agent, étape par étape.
25
25
 
26
26
  > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
27
27
 
28
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
29
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
30
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
31
+ > - En cas de doute → STOP → demander à l'utilisateur
32
+
28
33
  ## Étapes obligatoires
29
34
 
35
+ ### 0. Setup Git
36
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
37
+ - Si sur `main` → créer une branche AVANT toute modification
38
+ - Ne jamais rationaliser ("c'est juste un petit fix")
39
+
30
40
  ### 1. Plan
31
41
  - Explore le codebase (structure documentée dans `CLAUDE.md`)
32
42
  - Propose un plan d'implémentation
@@ -43,8 +53,14 @@ Le workflow de l'agent, étape par étape.
43
53
  - Si le test passe → relance la suite complète
44
54
  - Max {workflow.maxTestIterations} itérations
45
55
  - Si toujours fail → **STOP** → demande quoi faire
46
- - Si `visual-test.md` existe → suivre ses instructions
47
- - Si pass **STOP** attend validation
56
+
57
+ #### 3.1 Tests visuels (obligatoire si applicable)
58
+ - **Vérifie** si `.claude/rules/visual-test.md` existe
59
+ - Si oui → exécute `/screenshot` et compare `current/` vs `baseline/`
60
+ - Différence intentionnelle → mettre à jour `baseline/`
61
+ - Régression détectée → **STOP** → corriger avant de continuer
62
+
63
+ - Si tous les tests passent → **STOP** → attend validation
48
64
 
49
65
  ### 4. Review
50
66
  - Review ton propre code
@@ -84,6 +100,9 @@ Le workflow git personnalisé.
84
100
 
85
101
  ## Règles absolues
86
102
 
103
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
104
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
105
+
87
106
  1. **JAMAIS push sur main**
88
107
  2. **JAMAIS commit sans branche** `{git.branchFormat}`
89
108
  3. **JAMAIS branche sans issue GitHub**