mdma-cli 3.0.0 → 4.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.
@@ -7,8 +7,8 @@
7
7
 
8
8
  1. **JAMAIS push sur main**
9
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
10
+ 3. **JAMAIS merge sans PR**
11
+ 4. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
12
12
 
13
13
  Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
14
14
 
@@ -16,9 +16,10 @@ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisa
16
16
 
17
17
  ### Avant de coder
18
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
19
+ 2. Synchroniser la branche de base choisie avec le remote
20
+ 3. Si le projet utilise GitHub Issues, créer une issue (titre + description)
21
+ 4. Créer une branche depuis la base choisie : `feature/xxx` ou `fix/xxx`
22
+ 5. Checkout la nouvelle branche
22
23
 
23
24
  ### Commits
24
25
  - Convention : **conventional commits**
@@ -33,10 +34,12 @@ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisa
33
34
 
34
35
  ### Après validation
35
36
  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
+ 2. `git commit -m "type: description"`
37
38
  3. `git push -u origin <branche>`
38
39
  4. `gh pr create --fill`
39
- 7. `git checkout main && git pull`
40
+ 5. Attendre validation utilisateur
41
+ 6. `gh pr merge --merge --delete-branch`
42
+ 7. `git checkout <branche-base> && git pull`
40
43
 
41
44
  ### Tests
42
45
  Les tests **DOIVENT** passer avant merge.
package/README.md CHANGED
@@ -8,30 +8,48 @@ Opinionated rules for Claude Code agents.
8
8
  npx mdma-cli add
9
9
  ```
10
10
 
11
- Installs default rules to `.claude/rules/mdma/`:
12
- - `workflow.md` - agent workflow
13
- - `git.md` - git conventions
14
- - `style.md` - response style
11
+ Installs rules to `.claude/rules/mdma/`:
15
12
  - `models.md` - model selection by task complexity
13
+ - `style.md` - response style
14
+ - `workflow-default.md` - agent workflow (7 steps)
15
+ - `git-default.md` - git conventions
16
+
17
+ ## Presets
18
+
19
+ ```bash
20
+ npx mdma-cli add # default: GitHub workflow, merge auto
21
+ npx mdma-cli add jira # JIRA integration, milestone, anonymity
22
+ ```
23
+
24
+ ## Custom mix
25
+
26
+ ```bash
27
+ npx mdma-cli add --workflow=default --git=jira
28
+ npx mdma-cli add --workflow=jira --git=default
29
+ ```
16
30
 
17
31
  ## Commands
18
32
 
19
33
  ```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
34
+ npx mdma-cli add [preset] # Install rules
35
+ npx mdma-cli add --workflow=X --git=Y # Custom mix
36
+ npx mdma-cli list # List available options
37
+ npx mdma-cli help # Show help
24
38
  ```
25
39
 
26
- ## Templates
40
+ ## Available components
27
41
 
28
- Templates are project-specific rule sets. Use `npx mdma-cli list` to see available templates.
42
+ **Workflows:**
43
+ - `default` - 7 steps (plan, code, test, review, compound, document, git)
44
+ - `jira` - 5 steps + JIRA REST API integration
29
45
 
30
- Common rules (`models.md`, `style.md`) are always included. Template-specific rules (`workflow.md`, `git.md`) can override defaults.
46
+ **Git:**
47
+ - `default` - ask base branch, conditional GitHub issue, merge auto
48
+ - `jira` - ask base branch, milestone, Claude anonymity
31
49
 
32
50
  ## Update
33
51
 
34
- Run `npx mdma-cli add` again. The `mdma/` folder is replaced with the latest rules. Your custom rules outside this folder are preserved.
52
+ Run `npx mdma-cli add` again. The `mdma/` folder is replaced with the latest rules.
35
53
 
36
54
  ## License
37
55
 
package/bin/init.js CHANGED
@@ -6,111 +6,158 @@ import { fileURLToPath } from 'url';
6
6
 
7
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
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
+ const TEMPLATES_SRC = join(PKG_ROOT, 'templates');
12
10
  const RULES_DEST = join(process.cwd(), '.claude', 'rules', 'mdma');
13
11
 
12
+ const CORE_FILES = ['models.md', 'style.md'];
13
+
14
+ const PRESETS = {
15
+ default: { workflow: 'default', git: 'default' },
16
+ jira: { workflow: 'jira', git: 'jira' }
17
+ };
18
+
14
19
  function showHelp() {
15
20
  console.log('mdma-cli - Opinionated rules for code agents\n');
16
21
  console.log('Usage:');
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');
22
+ console.log(' npx mdma-cli add [preset] Install rules with preset');
23
+ console.log(' npx mdma-cli add --workflow=X --git=Y Install rules with custom mix');
24
+ console.log(' npx mdma-cli list List available options');
25
+ console.log(' npx mdma-cli help Show this help\n');
26
+ console.log('Presets:');
27
+ console.log(' default workflow-default + git-default (GitHub, merge auto)');
28
+ console.log(' jira workflow-jira + git-jira (JIRA integration, milestone)\n');
20
29
  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');
30
+ console.log(' npx mdma-cli add Install default preset');
31
+ console.log(' npx mdma-cli add jira Install jira preset');
32
+ console.log(' npx mdma-cli add --workflow=default --git=jira\n');
23
33
  }
24
34
 
25
- function listTemplates() {
26
- console.log('mdma-cli - Available templates\n');
35
+ function listOptions() {
36
+ console.log('mdma-cli - Available options\n');
27
37
 
28
- if (!existsSync(TEMPLATES_DIR)) {
29
- console.log(' (no templates found)\n');
30
- return;
38
+ console.log('Presets:');
39
+ for (const [name, config] of Object.entries(PRESETS)) {
40
+ console.log(` ${name.padEnd(10)} → workflow-${config.workflow} + git-${config.git}`);
31
41
  }
32
42
 
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;
43
+ console.log('\nWorkflows:');
44
+ const workflows = readdirSync(TEMPLATES_SRC)
45
+ .filter(f => f.startsWith('workflow-') && f.endsWith('.md'))
46
+ .map(f => f.replace('workflow-', '').replace('.md', ''));
47
+ for (const w of workflows) {
48
+ console.log(` ${w}`);
40
49
  }
41
50
 
42
- console.log(' default (built-in)');
43
- for (const template of templates) {
44
- console.log(` ${template}`);
51
+ console.log('\nGit:');
52
+ const gits = readdirSync(TEMPLATES_SRC)
53
+ .filter(f => f.startsWith('git-') && f.endsWith('.md'))
54
+ .map(f => f.replace('git-', '').replace('.md', ''));
55
+ for (const g of gits) {
56
+ console.log(` ${g}`);
45
57
  }
46
- console.log(`\nUsage: npx mdma-cli add <template>\n`);
58
+
59
+ console.log('\nUsage: npx mdma-cli add [preset] or npx mdma-cli add --workflow=X --git=Y\n');
47
60
  }
48
61
 
49
- function copyMdFiles(srcDir, destDir, label) {
50
- if (!existsSync(srcDir)) {
51
- console.log(` [skip] ${label} (not found)`);
52
- return 0;
62
+ function parseArgs(args) {
63
+ const result = { preset: null, workflow: null, git: null };
64
+
65
+ for (const arg of args) {
66
+ if (arg.startsWith('--workflow=')) {
67
+ result.workflow = arg.split('=')[1];
68
+ } else if (arg.startsWith('--git=')) {
69
+ result.git = arg.split('=')[1];
70
+ } else if (!arg.startsWith('-')) {
71
+ result.preset = arg;
72
+ }
53
73
  }
54
74
 
55
- const files = readdirSync(srcDir).filter(f => f.endsWith('.md'));
75
+ return result;
76
+ }
77
+
78
+ function add(args) {
79
+ const parsed = parseArgs(args);
80
+
81
+ let workflow, git;
56
82
 
57
- for (const file of files) {
58
- copyFileSync(join(srcDir, file), join(destDir, file));
59
- console.log(` [ok] ${file}`);
83
+ if (parsed.workflow || parsed.git) {
84
+ // Custom mix
85
+ workflow = parsed.workflow || 'default';
86
+ git = parsed.git || 'default';
87
+ } else {
88
+ // Preset
89
+ const presetName = parsed.preset || 'default';
90
+ const preset = PRESETS[presetName];
91
+
92
+ if (!preset) {
93
+ console.error(`Error: Unknown preset "${presetName}"\n`);
94
+ listOptions();
95
+ process.exit(1);
96
+ }
97
+
98
+ workflow = preset.workflow;
99
+ git = preset.git;
60
100
  }
61
101
 
62
- return files.length;
63
- }
102
+ // Validate files exist
103
+ const workflowFile = join(TEMPLATES_SRC, `workflow-${workflow}.md`);
104
+ const gitFile = join(TEMPLATES_SRC, `git-${git}.md`);
64
105
 
65
- function add(templateName) {
66
- const isDefault = !templateName || templateName === 'default';
67
- const templateDir = isDefault ? RULES_DEFAULT : join(TEMPLATES_DIR, templateName);
106
+ if (!existsSync(workflowFile)) {
107
+ console.error(`Error: workflow-${workflow}.md not found\n`);
108
+ listOptions();
109
+ process.exit(1);
110
+ }
68
111
 
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();
112
+ if (!existsSync(gitFile)) {
113
+ console.error(`Error: git-${git}.md not found\n`);
114
+ listOptions();
74
115
  process.exit(1);
75
116
  }
76
117
 
77
- console.log(`mdma-cli - Installing ${isDefault ? 'default' : templateName} rules\n`);
118
+ console.log(`mdma-cli - Installing rules\n`);
119
+ console.log(` workflow: ${workflow}`);
120
+ console.log(` git: ${git}\n`);
78
121
 
79
- // Remove existing mdma rules folder
122
+ // Remove existing and create fresh
80
123
  rmSync(RULES_DEST, { recursive: true, force: true });
81
124
  mkdirSync(RULES_DEST, { recursive: true });
82
125
 
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++;
126
+ // Copy core files
127
+ for (const file of CORE_FILES) {
128
+ const src = join(TEMPLATES_SRC, file);
129
+ if (existsSync(src)) {
130
+ copyFileSync(src, join(RULES_DEST, file));
131
+ console.log(` [ok] ${file}`);
132
+ }
91
133
  }
92
134
 
93
- // Copy template-specific rules (may override common)
94
- total += copyMdFiles(templateDir, RULES_DEST, templateName || 'default');
135
+ // Copy workflow
136
+ copyFileSync(workflowFile, join(RULES_DEST, `workflow-${workflow}.md`));
137
+ console.log(` [ok] workflow-${workflow}.md`);
138
+
139
+ // Copy git
140
+ copyFileSync(gitFile, join(RULES_DEST, `git-${git}.md`));
141
+ console.log(` [ok] git-${git}.md`);
95
142
 
96
- console.log(`\n${total} file(s) installed to .claude/rules/mdma/`);
97
- console.log('Edit them as needed.\n');
143
+ console.log(`\n4 file(s) installed to .claude/rules/mdma/\n`);
98
144
  }
99
145
 
100
146
  function main() {
101
- const command = process.argv[2];
102
- const arg = process.argv[3];
147
+ const args = process.argv.slice(2);
148
+ const command = args[0];
103
149
 
104
150
  switch (command) {
105
151
  case 'add':
106
- add(arg);
152
+ add(args.slice(1));
107
153
  break;
108
154
  case 'list':
109
- listTemplates();
155
+ listOptions();
110
156
  break;
111
157
  case 'help':
112
158
  case '--help':
113
159
  case '-h':
160
+ case undefined:
114
161
  showHelp();
115
162
  break;
116
163
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "Rules opinionated pour agents de code",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  "files": [
19
19
  "bin",
20
20
  ".claude/rules",
21
- "project-templates"
21
+ "templates"
22
22
  ],
23
23
  "keywords": [
24
24
  "claude",
@@ -7,21 +7,19 @@
7
7
 
8
8
  1. **JAMAIS push sur main**
9
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
10
+ 3. **JAMAIS merge sans PR**
11
+ 4. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
13
12
 
14
13
  Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
15
14
 
16
15
  ## Process
17
16
 
18
17
  ### 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`
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. Si le projet utilise GitHub Issues, créer une issue (titre + description)
21
+ 4. Créer une branche depuis la base choisie : `feature/xxx` ou `fix/xxx`
22
+ 5. Checkout la nouvelle branche
25
23
 
26
24
  ### Commits
27
25
  - Convention : **conventional commits**
@@ -36,12 +34,12 @@ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisa
36
34
 
37
35
  ### Après validation
38
36
  1. `git add <fichiers>` (pas -A)
39
- 2. `git commit -m "feat: description"`
37
+ 2. `git commit -m "type: description"`
40
38
  3. `git push -u origin <branche>`
41
39
  4. `gh pr create --fill`
42
40
  5. Attendre validation utilisateur
43
41
  6. `gh pr merge --merge --delete-branch`
44
- 7. `git checkout main && git pull`
42
+ 7. `git checkout <branche-base> && git pull`
45
43
 
46
44
  ### Tests
47
45
  Les tests **DOIVENT** passer avant merge.
@@ -9,18 +9,17 @@
9
9
  2. **JAMAIS commit sans branche** `feature/` ou `fix/`
10
10
  3. **JAMAIS merge sans PR**
11
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.
12
+ 5. **JAMAIS cité** : ni dans les descriptions, titres, ou en tant qu'auteur. Tout est de l'utilisateur.
13
13
 
14
14
  Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
15
15
 
16
16
  ## Process
17
17
 
18
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`
19
+ 1. Demander à l'utilisateur s'il souhaite se baser sur `main/master` ou `develop/dev`
20
+ 2. Synchroniser la branche de base choisie avec le remote
21
+ 3. Créer une branche depuis la base choisie : `feature/xxx` ou `fix/xxx`
22
+ 4. Checkout la nouvelle branche
24
23
 
25
24
  ### Commits
26
25
  - Convention : **conventional commits**
@@ -35,8 +34,11 @@ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisa
35
34
 
36
35
  ### Après validation
37
36
  1. `git add <fichiers>` (pas -A)
38
- 2. `git commit -m "feat: description"`
37
+ 2. `git commit -m "type: description"`
39
38
  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.
39
+ 4. `gh pr create --fill` en assignant le milestone correspondant à la version du ticket. Si ce milestone n'existe pas, le créer.
41
40
  5. Attendre validation utilisateur
42
- 6. `git checkout main && git pull`
41
+ 6. `git checkout <branche-base> && git pull`
42
+
43
+ ### Tests
44
+ Les tests **DOIVENT** passer avant merge.
@@ -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.
@@ -0,0 +1,42 @@
1
+ # Style de réponse
2
+
3
+ ## Profil
4
+ - **Niveau** : Senior
5
+ - **Style** : Détaillé
6
+
7
+ ## Comment répondre
8
+
9
+ - Réponses détaillées avec contexte
10
+ - Explique les choix importants
11
+ - Propose des alternatives quand pertinent
12
+ - Va droit au but, pas de fioritures inutiles
13
+
14
+ ## Autonomie
15
+
16
+ - **Demande TOUJOURS avant d'agir**
17
+ - Ne fais rien sans validation explicite
18
+ - Expose le plan, attend "ok", puis agis
19
+
20
+ ## À éviter
21
+
22
+ - **Obséquiosité** : pas de "Excellent choix!", "Très bonne question!", "C'est une super idée!"
23
+ - Pas de compliments excessifs
24
+ - Pas de formules de politesse superflues
25
+ - Pas d'emojis (sauf si demandé)
26
+
27
+ ## Principes de dev
28
+
29
+ - **DRY** : Don't Repeat Yourself
30
+ - **YAGNI** : You Ain't Gonna Need It
31
+ - **KISS** : Keep It Simple, Stupid
32
+
33
+ ## Contraintes
34
+
35
+ ### Ne jamais faire
36
+ - Commiter sur main directement
37
+ - Over-engineering
38
+ - Ajouter des features non demandées
39
+
40
+ ### Toujours faire
41
+ - Respecter le workflow défini dans `workflow.md` et `git.md`
42
+ - Garder les solutions simples
@@ -15,10 +15,10 @@
15
15
  - Ne jamais rationaliser ("c'est juste un petit fix")
16
16
 
17
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
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, en tenir compte dans le CURL.
19
+ - Cherche le contenu du ticket JIRA à traiter avec l'id donné dans le prompt
20
20
  - Passe le statut du ticket JIRA à "In progress"
21
- - Attribut le à moi-même
21
+ - Attribue le ticket à l'utilisateur
22
22
  - Explore le codebase (structure documentée dans `CLAUDE.md`)
23
23
  - Propose un plan d'implémentation
24
24
  - **STOP** → attend validation avant de coder
@@ -29,7 +29,7 @@
29
29
  - **STOP** → montre les modifications, attend validation
30
30
 
31
31
  ### 3. Test
32
- - Lance les tests(commande dans `CLAUDE.md`)
32
+ - Lance les tests (commande dans `CLAUDE.md`)
33
33
  - Si fail → arrête et fixe CE test uniquement
34
34
  - Si le test passe → relance la suite complète
35
35
  - Max 5 itérations
@@ -43,5 +43,5 @@
43
43
 
44
44
  ### 5. Git
45
45
  - Exécute le workflow défini dans `git.md`
46
- - **STOP** → attend validation avant de commiter
47
46
  - Passe le statut du ticket JIRA à "Testing"
47
+ - **STOP** → attend validation avant de commiter
@@ -1,47 +0,0 @@
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.
@@ -1,65 +0,0 @@
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
@@ -1,47 +0,0 @@
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.
@@ -1,65 +0,0 @@
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