mdma-cli 2.0.2 → 3.0.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.
@@ -0,0 +1,19 @@
1
+ # Sélection des modèles
2
+
3
+ Utiliser le modèle approprié selon la complexité de la tâche pour optimiser coûts et rapidité.
4
+
5
+ ## Correspondance tâche/modèle
6
+
7
+ | Tâche | Modèle | Justification |
8
+ |-------|--------|---------------|
9
+ | Tests, build, lint | `haiku` | Exécution simple, pas de raisonnement |
10
+ | Exploration de code, recherche | `sonnet` | Bon équilibre |
11
+ | Implémentation, review, architecture | `opus` | Raisonnement complexe |
12
+
13
+ ## Syntaxe
14
+
15
+ Spécifier le modèle dans la demande si besoin :
16
+ - "Lance les tests avec haiku"
17
+ - "Explore le code avec sonnet"
18
+
19
+ Par défaut, l'agent choisit le modèle selon le tableau ci-dessus.
package/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # mdma
2
2
 
3
- > Rules opinionated pour agents de code
4
-
5
- 3 fichiers de rules best practice pour Claude Code. Pas de Q&A, pas de config. Ca juste marche.
3
+ Opinionated rules for Claude Code agents.
6
4
 
7
5
  ## Installation
8
6
 
@@ -10,19 +8,31 @@
10
8
  npx mdma-cli add
11
9
  ```
12
10
 
13
- Copie dans `.claude/rules/` :
14
- - `workflow.md` - comment l'agent travaille
15
- - `git.md` - workflow git strict
16
- - `style.md` - style de reponse
11
+ Installs default rules to `.claude/rules/mdma/`:
12
+ - `workflow.md` - agent workflow
13
+ - `git.md` - git conventions
14
+ - `style.md` - response style
15
+ - `models.md` - model selection by task complexity
16
+
17
+ ## Commands
18
+
19
+ ```bash
20
+ npx mdma-cli add # Install default rules
21
+ npx mdma-cli add <template> # Install a specific template
22
+ npx mdma-cli list # List available templates
23
+ npx mdma-cli help # Show help
24
+ ```
25
+
26
+ ## Templates
17
27
 
18
- ## C'est tout
28
+ Templates are project-specific rule sets. Use `npx mdma-cli list` to see available templates.
19
29
 
20
- Les rules sont pretes. Modifie-les si besoin.
30
+ Common rules (`models.md`, `style.md`) are always included. Template-specific rules (`workflow.md`, `git.md`) can override defaults.
21
31
 
22
- ## Pourquoi ?
32
+ ## Update
23
33
 
24
- Qui va choisir de mal coder ? Personne. Donc pas besoin de Q&A.
34
+ Run `npx mdma-cli add` again. The `mdma/` folder is replaced with the latest rules. Your custom rules outside this folder are preserved.
25
35
 
26
- ## Licence
36
+ ## License
27
37
 
28
38
  MIT
package/bin/init.js CHANGED
@@ -1,56 +1,112 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { copyFileSync, mkdirSync, existsSync } from 'fs';
3
+ import { copyFileSync, mkdirSync, rmSync, readdirSync, existsSync } from 'fs';
4
4
  import { join, dirname } from 'path';
5
5
  import { fileURLToPath } from 'url';
6
6
 
7
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
- const RULES_SRC = join(__dirname, '..', '.claude', 'rules');
9
- const RULES_DEST = join(process.cwd(), '.claude', 'rules');
10
-
11
- const FILES = ['workflow.md', 'git.md', 'style.md'];
8
+ const PKG_ROOT = join(__dirname, '..');
9
+ const RULES_COMMON = join(PKG_ROOT, '.claude', 'rules', 'mdma');
10
+ const RULES_DEFAULT = join(RULES_COMMON, 'default');
11
+ const TEMPLATES_DIR = join(PKG_ROOT, 'project-templates');
12
+ const RULES_DEST = join(process.cwd(), '.claude', 'rules', 'mdma');
12
13
 
13
14
  function showHelp() {
14
- console.log('mdma-cli - Rules opinionated pour agents de code\n');
15
+ console.log('mdma-cli - Opinionated rules for code agents\n');
15
16
  console.log('Usage:');
16
- console.log(' npx mdma-cli add Copie les rules dans .claude/rules/');
17
- console.log(' npx mdma-cli help Affiche cette aide\n');
17
+ console.log(' npx mdma-cli add [template] Install rules to .claude/rules/mdma/');
18
+ console.log(' npx mdma-cli list List available templates');
19
+ console.log(' npx mdma-cli help Show this help\n');
20
+ console.log('Examples:');
21
+ console.log(' npx mdma-cli add Install default rules');
22
+ console.log(' npx mdma-cli add arte-player Install arte-player template\n');
18
23
  }
19
24
 
20
- function add() {
21
- console.log('mdma-cli - Installation des rules\n');
25
+ function listTemplates() {
26
+ console.log('mdma-cli - Available templates\n');
22
27
 
23
- mkdirSync(RULES_DEST, { recursive: true });
28
+ if (!existsSync(TEMPLATES_DIR)) {
29
+ console.log(' (no templates found)\n');
30
+ return;
31
+ }
32
+
33
+ const templates = readdirSync(TEMPLATES_DIR, { withFileTypes: true })
34
+ .filter(d => d.isDirectory())
35
+ .map(d => d.name);
36
+
37
+ if (templates.length === 0) {
38
+ console.log(' (no templates found)\n');
39
+ return;
40
+ }
24
41
 
25
- let copied = 0;
26
- let skipped = 0;
27
-
28
- for (const file of FILES) {
29
- const dest = join(RULES_DEST, file);
30
- if (existsSync(dest)) {
31
- console.log(` [skip] ${file} (existe deja)`);
32
- skipped++;
33
- } else {
34
- copyFileSync(join(RULES_SRC, file), dest);
35
- console.log(` [ok] ${file}`);
36
- copied++;
37
- }
42
+ console.log(' default (built-in)');
43
+ for (const template of templates) {
44
+ console.log(` ${template}`);
45
+ }
46
+ console.log(`\nUsage: npx mdma-cli add <template>\n`);
47
+ }
48
+
49
+ function copyMdFiles(srcDir, destDir, label) {
50
+ if (!existsSync(srcDir)) {
51
+ console.log(` [skip] ${label} (not found)`);
52
+ return 0;
38
53
  }
39
54
 
40
- console.log(`\n${copied} fichier(s) copie(s), ${skipped} ignore(s).\n`);
55
+ const files = readdirSync(srcDir).filter(f => f.endsWith('.md'));
41
56
 
42
- if (copied > 0) {
43
- console.log('Rules installees dans .claude/rules/');
44
- console.log('Modifie-les selon tes besoins.\n');
57
+ for (const file of files) {
58
+ copyFileSync(join(srcDir, file), join(destDir, file));
59
+ console.log(` [ok] ${file}`);
45
60
  }
61
+
62
+ return files.length;
63
+ }
64
+
65
+ function add(templateName) {
66
+ const isDefault = !templateName || templateName === 'default';
67
+ const templateDir = isDefault ? RULES_DEFAULT : join(TEMPLATES_DIR, templateName);
68
+
69
+ // Validate template exists
70
+ if (!isDefault && !existsSync(templateDir)) {
71
+ console.error(`Error: Template "${templateName}" not found.\n`);
72
+ console.log('Available templates:');
73
+ listTemplates();
74
+ process.exit(1);
75
+ }
76
+
77
+ console.log(`mdma-cli - Installing ${isDefault ? 'default' : templateName} rules\n`);
78
+
79
+ // Remove existing mdma rules folder
80
+ rmSync(RULES_DEST, { recursive: true, force: true });
81
+ mkdirSync(RULES_DEST, { recursive: true });
82
+
83
+ let total = 0;
84
+
85
+ // Copy common rules (models.md, style.md)
86
+ const commonFiles = readdirSync(RULES_COMMON).filter(f => f.endsWith('.md'));
87
+ for (const file of commonFiles) {
88
+ copyFileSync(join(RULES_COMMON, file), join(RULES_DEST, file));
89
+ console.log(` [ok] ${file}`);
90
+ total++;
91
+ }
92
+
93
+ // Copy template-specific rules (may override common)
94
+ total += copyMdFiles(templateDir, RULES_DEST, templateName || 'default');
95
+
96
+ console.log(`\n${total} file(s) installed to .claude/rules/mdma/`);
97
+ console.log('Edit them as needed.\n');
46
98
  }
47
99
 
48
100
  function main() {
49
101
  const command = process.argv[2];
102
+ const arg = process.argv[3];
50
103
 
51
104
  switch (command) {
52
105
  case 'add':
53
- add();
106
+ add(arg);
107
+ break;
108
+ case 'list':
109
+ listTemplates();
54
110
  break;
55
111
  case 'help':
56
112
  case '--help':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "2.0.2",
3
+ "version": "3.0.0",
4
4
  "description": "Rules opinionated pour agents de code",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,7 +17,8 @@
17
17
  },
18
18
  "files": [
19
19
  "bin",
20
- ".claude/rules"
20
+ ".claude/rules",
21
+ "project-templates"
21
22
  ],
22
23
  "keywords": [
23
24
  "claude",
@@ -0,0 +1,42 @@
1
+ # Workflow Git
2
+
3
+ ## Règles absolues
4
+
5
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
6
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
7
+
8
+ 1. **JAMAIS push sur main**
9
+ 2. **JAMAIS commit sans branche** `feature/` ou `fix/`
10
+ 3. **JAMAIS merge sans PR**
11
+ 4. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
12
+ 5. **JAMAIS tu ne seras cité, ni dans les descriptions, les titres, les descriptions ou en tant qu'auteur. Jamais nul part, tout est de privaloops.
13
+
14
+ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
15
+
16
+ ## Process
17
+
18
+ ### Avant de coder
19
+ 1. Synchroniser avec le remote :
20
+ - Si sur `main` : `git pull origin main`
21
+ - Si sur une feature branch : `git fetch && git rebase origin/main`
22
+ 2. Créer une branche depuis main : `feature/xxx` ou `fix/xxx`
23
+ 3. `git checkout -b feature/ma-feature`
24
+
25
+ ### Commits
26
+ - Convention : **conventional commits**
27
+ - `feat:` nouvelle fonctionnalité
28
+ - `fix:` correction de bug
29
+ - `docs:` documentation
30
+ - `refactor:` refactoring
31
+ - `chore:` maintenance
32
+ - `test:` ajout/modification de tests
33
+ - Messages clairs et concis
34
+ - Un commit = un changement logique
35
+
36
+ ### Après validation
37
+ 1. `git add <fichiers>` (pas -A)
38
+ 2. `git commit -m "feat: description"`
39
+ 3. `git push -u origin <branche>`
40
+ 4. `gh pr create --fill` en assignant le milestone correspondant à la version corrigé du ticket initial. Si ce milestone n'existe pas, crée le.
41
+ 5. Attendre validation utilisateur
42
+ 6. `git checkout main && git pull`
@@ -0,0 +1,47 @@
1
+ # Workflow Agent
2
+
3
+ > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
4
+
5
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
6
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
7
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
8
+ > - En cas de doute → STOP → demander à l'utilisateur
9
+
10
+ ## Étapes obligatoires
11
+
12
+ ### 0. Setup Git
13
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
14
+ - Si sur `main` → créer une branche AVANT toute modification
15
+ - Ne jamais rationaliser ("c'est juste un petit fix")
16
+
17
+ ### 1. Plan
18
+ - Cherche dans .zshrc pour le token JIRA afin de l'utiliser en REST API avec CURL. Attention le token peut contenir des caractères spéciaux tiens en compte dans le CURL.
19
+ - Cherche le contenu du ticket JIRA à traiter avec l'id donné dans le prompt https://artetv.atlassian.net/browse/XXXXXX
20
+ - Passe le statut du ticket JIRA à "In progress"
21
+ - Attribut le à moi-même
22
+ - Explore le codebase (structure documentée dans `CLAUDE.md`)
23
+ - Propose un plan d'implémentation
24
+ - **STOP** → attend validation avant de coder
25
+
26
+ ### 2. Code
27
+ - Implémente selon le plan validé
28
+ - Petits commits logiques (conventions dans `git.md`)
29
+ - **STOP** → montre les modifications, attend validation
30
+
31
+ ### 3. Test
32
+ - Lance les tests(commande dans `CLAUDE.md`)
33
+ - Si fail → arrête et fixe CE test uniquement
34
+ - Si le test passe → relance la suite complète
35
+ - Max 5 itérations
36
+ - Si toujours fail → **STOP** → demande quoi faire
37
+
38
+ ### 4. Review
39
+ - Review ton propre code
40
+ - Vérifie : sécurité, performance, lisibilité
41
+ - Propose des améliorations si pertinent
42
+ - **STOP** → attend validation
43
+
44
+ ### 5. Git
45
+ - Exécute le workflow défini dans `git.md`
46
+ - **STOP** → attend validation avant de commiter
47
+ - Passe le statut du ticket JIRA à "Testing"
@@ -0,0 +1,42 @@
1
+ # Workflow Git
2
+
3
+ ## Règles absolues
4
+
5
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
6
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
7
+
8
+ 1. **JAMAIS push sur main**
9
+ 2. **JAMAIS commit sans branche** `feature/` ou `fix/`
10
+ 4. **JAMAIS merge sans PR**
11
+ 5. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
12
+
13
+ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
14
+
15
+ ## Process
16
+
17
+ ### Avant de coder
18
+ 1. Demander à l'utilisateur s'il souhaite se baser sur `main/master` ou `develop/dev`
19
+ 2. Synchroniser la branche de base choisie avec le remote :
20
+ 3. Créer une branche depuis la base choisie et la nommer : `feature/xxx` ou `fix/xxx`
21
+ 4. Checkout la nouvelle branche
22
+
23
+ ### Commits
24
+ - Convention : **conventional commits**
25
+ - `feat:` nouvelle fonctionnalité
26
+ - `fix:` correction de bug
27
+ - `docs:` documentation
28
+ - `refactor:` refactoring
29
+ - `chore:` maintenance
30
+ - `test:` ajout/modification de tests
31
+ - Messages clairs et concis
32
+ - Un commit = un changement logique
33
+
34
+ ### Après validation
35
+ 1. `git add <fichiers>` (pas -A)
36
+ 2. `git commit -m "XXX: description"`. Remplacer XXX par le prefix de conventionnal commits qui correspond le mieux (voir ### Commits)
37
+ 3. `git push -u origin <branche>`
38
+ 4. `gh pr create --fill`
39
+ 7. `git checkout main && git pull`
40
+
41
+ ### Tests
42
+ Les tests **DOIVENT** passer avant merge.
@@ -0,0 +1,65 @@
1
+ # Workflow Agent
2
+
3
+ > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
4
+
5
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
6
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
7
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
8
+ > - En cas de doute → STOP → demander à l'utilisateur
9
+
10
+ ## Étapes obligatoires
11
+
12
+ ### 0. Setup Git
13
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
14
+ - Si sur `main` → créer une branche AVANT toute modification
15
+ - Ne jamais rationaliser ("c'est juste un petit fix")
16
+
17
+ ### 1. Plan
18
+ - Explore le codebase (structure documentée dans `CLAUDE.md`)
19
+ - Propose un plan d'implémentation
20
+ - **STOP** → attend validation avant de coder
21
+
22
+ ### 2. Code
23
+ - Implémente selon le plan validé
24
+ - Petits commits logiques (conventions dans `git.md`)
25
+ - **STOP** → montre les modifications, attend validation
26
+
27
+ ### 3. Test
28
+ - Lance les tests (commande dans `CLAUDE.md`)
29
+ - Si fail → arrête et fixe CE test uniquement
30
+ - Si le test passe → relance la suite complète
31
+ - Max 5 itérations
32
+ - Si toujours fail → **STOP** → demande quoi faire
33
+
34
+ #### 3.1 Tests visuels (obligatoire si applicable)
35
+ - **Vérifie** si `.claude/rules/visual-test.md` existe
36
+ - Si oui → exécute `/screenshot` et compare `current/` vs `baseline/`
37
+ - Différence intentionnelle → mettre à jour `baseline/`
38
+ - Régression détectée → **STOP** → corriger avant de continuer
39
+
40
+ - Si tous les tests passent → **STOP** → attend validation
41
+
42
+ ### 4. Review
43
+ - Review ton propre code
44
+ - Vérifie : sécurité, performance, lisibilité
45
+ - Propose des améliorations si pertinent
46
+ - **STOP** → attend validation
47
+
48
+ ### 5. Compound
49
+ - Consulte `CHANGELOG.md`, `DECISIONS.md`, `LEARNINGS.md` pour contexte
50
+ - Apprends des feedbacks de cette session
51
+ - Note les préférences exprimées pour les appliquer ensuite
52
+
53
+ ### 6. Document
54
+ - Met à jour `CHANGELOG.md` pour chaque feature/fix (obligatoire)
55
+ - Met à jour `LEARNINGS.md` si apprentissage important
56
+ - Met à jour `DECISIONS.md` si décision structurante
57
+ - Si ces fichiers n'existent pas → les créer avec les formats standards :
58
+ - CHANGELOG.md : [Keep a Changelog](https://keepachangelog.com/)
59
+ - DECISIONS.md : format ADR (Architecture Decision Records)
60
+ - LEARNINGS.md : format session avec contexte, décisions, leçons
61
+ - **STOP** → attend validation
62
+
63
+ ### 7. Git
64
+ - Exécute le workflow défini dans `git.md`
65
+ - **STOP** → attend validation avant de commiter
@@ -0,0 +1,47 @@
1
+ # Workflow Git
2
+
3
+ ## Règles absolues
4
+
5
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
6
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
7
+
8
+ 1. **JAMAIS push sur main**
9
+ 2. **JAMAIS commit sans branche** `feature/` ou `fix/`
10
+ 3. **JAMAIS branche sans issue GitHub**
11
+ 4. **JAMAIS merge sans PR**
12
+ 5. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
13
+
14
+ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
15
+
16
+ ## Process
17
+
18
+ ### Avant de coder
19
+ 1. Synchroniser avec le remote :
20
+ - Si sur `main` : `git pull origin main`
21
+ - Si sur une feature branch : `git fetch && git rebase origin/main`
22
+ 2. Créer une issue GitHub (titre + description)
23
+ 3. Créer une branche depuis main : `feature/xxx` ou `fix/xxx`
24
+ 4. `git checkout -b feature/ma-feature`
25
+
26
+ ### Commits
27
+ - Convention : **conventional commits**
28
+ - `feat:` nouvelle fonctionnalité
29
+ - `fix:` correction de bug
30
+ - `docs:` documentation
31
+ - `refactor:` refactoring
32
+ - `chore:` maintenance
33
+ - `test:` ajout/modification de tests
34
+ - Messages clairs et concis
35
+ - Un commit = un changement logique
36
+
37
+ ### Après validation
38
+ 1. `git add <fichiers>` (pas -A)
39
+ 2. `git commit -m "feat: description"`
40
+ 3. `git push -u origin <branche>`
41
+ 4. `gh pr create --fill`
42
+ 5. Attendre validation utilisateur
43
+ 6. `gh pr merge --merge --delete-branch`
44
+ 7. `git checkout main && git pull`
45
+
46
+ ### Tests
47
+ Les tests **DOIVENT** passer avant merge.
@@ -0,0 +1,65 @@
1
+ # Workflow Agent
2
+
3
+ > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
4
+
5
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
6
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
7
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
8
+ > - En cas de doute → STOP → demander à l'utilisateur
9
+
10
+ ## Étapes obligatoires
11
+
12
+ ### 0. Setup Git
13
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
14
+ - Si sur `main` → créer une branche AVANT toute modification
15
+ - Ne jamais rationaliser ("c'est juste un petit fix")
16
+
17
+ ### 1. Plan
18
+ - Explore le codebase (structure documentée dans `CLAUDE.md`)
19
+ - Propose un plan d'implémentation
20
+ - **STOP** → attend validation avant de coder
21
+
22
+ ### 2. Code
23
+ - Implémente selon le plan validé
24
+ - Petits commits logiques (conventions dans `git.md`)
25
+ - **STOP** → montre les modifications, attend validation
26
+
27
+ ### 3. Test
28
+ - Lance les tests (commande dans `CLAUDE.md`)
29
+ - Si fail → arrête et fixe CE test uniquement
30
+ - Si le test passe → relance la suite complète
31
+ - Max 5 itérations
32
+ - Si toujours fail → **STOP** → demande quoi faire
33
+
34
+ #### 3.1 Tests visuels (obligatoire si applicable)
35
+ - **Vérifie** si `.claude/rules/visual-test.md` existe
36
+ - Si oui → exécute `/screenshot` et compare `current/` vs `baseline/`
37
+ - Différence intentionnelle → mettre à jour `baseline/`
38
+ - Régression détectée → **STOP** → corriger avant de continuer
39
+
40
+ - Si tous les tests passent → **STOP** → attend validation
41
+
42
+ ### 4. Review
43
+ - Review ton propre code
44
+ - Vérifie : sécurité, performance, lisibilité
45
+ - Propose des améliorations si pertinent
46
+ - **STOP** → attend validation
47
+
48
+ ### 5. Compound
49
+ - Consulte `CHANGELOG.md`, `DECISIONS.md`, `LEARNINGS.md` pour contexte
50
+ - Apprends des feedbacks de cette session
51
+ - Note les préférences exprimées pour les appliquer ensuite
52
+
53
+ ### 6. Document
54
+ - Met à jour `CHANGELOG.md` pour chaque feature/fix (obligatoire)
55
+ - Met à jour `LEARNINGS.md` si apprentissage important
56
+ - Met à jour `DECISIONS.md` si décision structurante
57
+ - Si ces fichiers n'existent pas → les créer avec les formats standards :
58
+ - CHANGELOG.md : [Keep a Changelog](https://keepachangelog.com/)
59
+ - DECISIONS.md : format ADR (Architecture Decision Records)
60
+ - LEARNINGS.md : format session avec contexte, décisions, leçons
61
+ - **STOP** → attend validation
62
+
63
+ ### 7. Git
64
+ - Exécute le workflow défini dans `git.md`
65
+ - **STOP** → attend validation avant de commiter
@@ -0,0 +1,47 @@
1
+ # Workflow Git
2
+
3
+ ## Règles absolues
4
+
5
+ > **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
6
+ > "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
7
+
8
+ 1. **JAMAIS push sur main**
9
+ 2. **JAMAIS commit sans branche** `feature/` ou `fix/`
10
+ 3. **JAMAIS branche sans issue GitHub**
11
+ 4. **JAMAIS merge sans PR**
12
+ 5. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
13
+
14
+ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
15
+
16
+ ## Process
17
+
18
+ ### Avant de coder
19
+ 1. Synchroniser avec le remote :
20
+ - Si sur `main` : `git pull origin main`
21
+ - Si sur une feature branch : `git fetch && git rebase origin/main`
22
+ 2. Créer une issue GitHub (titre + description)
23
+ 3. Créer une branche depuis main : `feature/xxx` ou `fix/xxx`
24
+ 4. `git checkout -b feature/ma-feature`
25
+
26
+ ### Commits
27
+ - Convention : **conventional commits**
28
+ - `feat:` nouvelle fonctionnalité
29
+ - `fix:` correction de bug
30
+ - `docs:` documentation
31
+ - `refactor:` refactoring
32
+ - `chore:` maintenance
33
+ - `test:` ajout/modification de tests
34
+ - Messages clairs et concis
35
+ - Un commit = un changement logique
36
+
37
+ ### Après validation
38
+ 1. `git add <fichiers>` (pas -A)
39
+ 2. `git commit -m "feat: description"`
40
+ 3. `git push -u origin <branche>`
41
+ 4. `gh pr create --fill`
42
+ 5. Attendre validation utilisateur
43
+ 6. `gh pr merge --merge --delete-branch`
44
+ 7. `git checkout main && git pull`
45
+
46
+ ### Tests
47
+ Les tests **DOIVENT** passer avant merge.
@@ -0,0 +1,65 @@
1
+ # Workflow Agent
2
+
3
+ > **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
4
+
5
+ > **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
6
+ > - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
7
+ > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
8
+ > - En cas de doute → STOP → demander à l'utilisateur
9
+
10
+ ## Étapes obligatoires
11
+
12
+ ### 0. Setup Git
13
+ - Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
14
+ - Si sur `main` → créer une branche AVANT toute modification
15
+ - Ne jamais rationaliser ("c'est juste un petit fix")
16
+
17
+ ### 1. Plan
18
+ - Explore le codebase (structure documentée dans `CLAUDE.md`)
19
+ - Propose un plan d'implémentation
20
+ - **STOP** → attend validation avant de coder
21
+
22
+ ### 2. Code
23
+ - Implémente selon le plan validé
24
+ - Petits commits logiques (conventions dans `git.md`)
25
+ - **STOP** → montre les modifications, attend validation
26
+
27
+ ### 3. Test
28
+ - Lance les tests (commande dans `CLAUDE.md`)
29
+ - Si fail → arrête et fixe CE test uniquement
30
+ - Si le test passe → relance la suite complète
31
+ - Max 5 itérations
32
+ - Si toujours fail → **STOP** → demande quoi faire
33
+
34
+ #### 3.1 Tests visuels (obligatoire si applicable)
35
+ - **Vérifie** si `.claude/rules/visual-test.md` existe
36
+ - Si oui → exécute `/screenshot` et compare `current/` vs `baseline/`
37
+ - Différence intentionnelle → mettre à jour `baseline/`
38
+ - Régression détectée → **STOP** → corriger avant de continuer
39
+
40
+ - Si tous les tests passent → **STOP** → attend validation
41
+
42
+ ### 4. Review
43
+ - Review ton propre code
44
+ - Vérifie : sécurité, performance, lisibilité
45
+ - Propose des améliorations si pertinent
46
+ - **STOP** → attend validation
47
+
48
+ ### 5. Compound
49
+ - Consulte `CHANGELOG.md`, `DECISIONS.md`, `LEARNINGS.md` pour contexte
50
+ - Apprends des feedbacks de cette session
51
+ - Note les préférences exprimées pour les appliquer ensuite
52
+
53
+ ### 6. Document
54
+ - Met à jour `CHANGELOG.md` pour chaque feature/fix (obligatoire)
55
+ - Met à jour `LEARNINGS.md` si apprentissage important
56
+ - Met à jour `DECISIONS.md` si décision structurante
57
+ - Si ces fichiers n'existent pas → les créer avec les formats standards :
58
+ - CHANGELOG.md : [Keep a Changelog](https://keepachangelog.com/)
59
+ - DECISIONS.md : format ADR (Architecture Decision Records)
60
+ - LEARNINGS.md : format session avec contexte, décisions, leçons
61
+ - **STOP** → attend validation
62
+
63
+ ### 7. Git
64
+ - Exécute le workflow défini dans `git.md`
65
+ - **STOP** → attend validation avant de commiter
File without changes
File without changes