mdma-cli 2.1.0 → 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.
package/README.md CHANGED
@@ -8,12 +8,27 @@ Opinionated rules for Claude Code agents.
8
8
  npx mdma-cli add
9
9
  ```
10
10
 
11
- Installs rules to `.claude/rules/mdma/`:
11
+ Installs default rules to `.claude/rules/mdma/`:
12
12
  - `workflow.md` - agent workflow
13
13
  - `git.md` - git conventions
14
14
  - `style.md` - response style
15
15
  - `models.md` - model selection by task complexity
16
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
27
+
28
+ Templates are project-specific rule sets. Use `npx mdma-cli list` to see available templates.
29
+
30
+ Common rules (`models.md`, `style.md`) are always included. Template-specific rules (`workflow.md`, `git.md`) can override defaults.
31
+
17
32
  ## Update
18
33
 
19
34
  Run `npx mdma-cli add` again. The `mdma/` folder is replaced with the latest rules. Your custom rules outside this folder are preserved.
package/bin/init.js CHANGED
@@ -1,45 +1,112 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { copyFileSync, mkdirSync, rmSync, readdirSync } 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', 'mdma');
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');
9
12
  const RULES_DEST = join(process.cwd(), '.claude', 'rules', 'mdma');
10
13
 
11
14
  function showHelp() {
12
15
  console.log('mdma-cli - Opinionated rules for code agents\n');
13
16
  console.log('Usage:');
14
- console.log(' npx mdma-cli add Install rules to .claude/rules/mdma/');
15
- console.log(' npx mdma-cli help Show this help\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');
16
23
  }
17
24
 
18
- function add() {
19
- console.log('mdma-cli - Installing rules\n');
25
+ function listTemplates() {
26
+ console.log('mdma-cli - Available templates\n');
27
+
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
+ }
41
+
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;
53
+ }
54
+
55
+ const files = readdirSync(srcDir).filter(f => f.endsWith('.md'));
56
+
57
+ for (const file of files) {
58
+ copyFileSync(join(srcDir, file), join(destDir, file));
59
+ console.log(` [ok] ${file}`);
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`);
20
78
 
21
79
  // Remove existing mdma rules folder
22
80
  rmSync(RULES_DEST, { recursive: true, force: true });
23
81
  mkdirSync(RULES_DEST, { recursive: true });
24
82
 
25
- // Copy all .md files from source
26
- const files = readdirSync(RULES_SRC).filter(f => f.endsWith('.md'));
83
+ let total = 0;
27
84
 
28
- for (const file of files) {
29
- copyFileSync(join(RULES_SRC, file), join(RULES_DEST, file));
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));
30
89
  console.log(` [ok] ${file}`);
90
+ total++;
31
91
  }
32
92
 
33
- console.log(`\n${files.length} file(s) installed to .claude/rules/mdma/`);
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/`);
34
97
  console.log('Edit them as needed.\n');
35
98
  }
36
99
 
37
100
  function main() {
38
101
  const command = process.argv[2];
102
+ const arg = process.argv[3];
39
103
 
40
104
  switch (command) {
41
105
  case 'add':
42
- add();
106
+ add(arg);
107
+ break;
108
+ case 'list':
109
+ listTemplates();
43
110
  break;
44
111
  case 'help':
45
112
  case '--help':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "2.1.0",
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