mdma-cli 3.0.0 → 4.1.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,60 @@
1
+ # Best Practices
2
+
3
+ ## Règle absolue
4
+
5
+ > **Toujours coder selon les best practices reconnues** pour chaque langage, framework ou librairie utilisé.
6
+
7
+ ## En cas de doute
8
+
9
+ Si plusieurs approches sont reconnues comme "best practice" :
10
+
11
+ 1. **STOP** - ne pas choisir arbitrairement
12
+ 2. Lister les options avec leurs avantages/inconvénients
13
+ 3. Demander à l'utilisateur quelle approche privilégier
14
+
15
+ ## Sources de référence
16
+
17
+ Par ordre de priorité :
18
+ 1. Documentation officielle du langage/framework
19
+ 2. Style guides officiels (Google, Airbnb, etc.)
20
+ 3. Conventions établies dans le projet existant
21
+
22
+ ## MCP recommandé
23
+
24
+ Le MCP **context7** permet de récupérer la documentation officielle à jour directement dans le contexte.
25
+
26
+ ### Configuration
27
+
28
+ Ajouter dans `.mcp.json` (project scope, partagé via git) :
29
+
30
+ ```json
31
+ {
32
+ "mcpServers": {
33
+ "context7": {
34
+ "command": "npx",
35
+ "args": ["-y", "@upstash/context7-mcp"]
36
+ }
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### Usage
42
+
43
+ Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour :
44
+ - "Implémente l'auth avec NextAuth, use context7"
45
+ - "Ajoute la validation Zod, use context7"
46
+
47
+ ### API Key (optionnel)
48
+
49
+ Pour des rate limits plus élevés, obtenir une clé gratuite sur [context7.com/dashboard](https://context7.com/dashboard) et ajouter :
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "context7": {
55
+ "command": "npx",
56
+ "args": ["-y", "@upstash/context7-mcp", "--api-key", "YOUR_API_KEY"]
57
+ }
58
+ }
59
+ }
60
+ ```
@@ -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,168 @@ 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', 'best-practices.md'];
13
+ const MCP_FILE = 'mcp.json';
14
+ const MCP_DEST = join(process.cwd(), '.mcp.json');
15
+
16
+ const PRESETS = {
17
+ default: { workflow: 'default', git: 'default' },
18
+ jira: { workflow: 'jira', git: 'jira' }
19
+ };
20
+
14
21
  function showHelp() {
15
22
  console.log('mdma-cli - Opinionated rules for code agents\n');
16
23
  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');
24
+ console.log(' npx mdma-cli add [preset] Install rules with preset');
25
+ console.log(' npx mdma-cli add --workflow=X --git=Y Install rules with custom mix');
26
+ console.log(' npx mdma-cli list List available options');
27
+ console.log(' npx mdma-cli help Show this help\n');
28
+ console.log('Presets:');
29
+ console.log(' default workflow-default + git-default (GitHub, merge auto)');
30
+ console.log(' jira workflow-jira + git-jira (JIRA integration, milestone)\n');
20
31
  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');
32
+ console.log(' npx mdma-cli add Install default preset');
33
+ console.log(' npx mdma-cli add jira Install jira preset');
34
+ console.log(' npx mdma-cli add --workflow=default --git=jira\n');
23
35
  }
24
36
 
25
- function listTemplates() {
26
- console.log('mdma-cli - Available templates\n');
37
+ function listOptions() {
38
+ console.log('mdma-cli - Available options\n');
27
39
 
28
- if (!existsSync(TEMPLATES_DIR)) {
29
- console.log(' (no templates found)\n');
30
- return;
40
+ console.log('Presets:');
41
+ for (const [name, config] of Object.entries(PRESETS)) {
42
+ console.log(` ${name.padEnd(10)} → workflow-${config.workflow} + git-${config.git}`);
31
43
  }
32
44
 
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;
45
+ console.log('\nWorkflows:');
46
+ const workflows = readdirSync(TEMPLATES_SRC)
47
+ .filter(f => f.startsWith('workflow-') && f.endsWith('.md'))
48
+ .map(f => f.replace('workflow-', '').replace('.md', ''));
49
+ for (const w of workflows) {
50
+ console.log(` ${w}`);
40
51
  }
41
52
 
42
- console.log(' default (built-in)');
43
- for (const template of templates) {
44
- console.log(` ${template}`);
53
+ console.log('\nGit:');
54
+ const gits = readdirSync(TEMPLATES_SRC)
55
+ .filter(f => f.startsWith('git-') && f.endsWith('.md'))
56
+ .map(f => f.replace('git-', '').replace('.md', ''));
57
+ for (const g of gits) {
58
+ console.log(` ${g}`);
45
59
  }
46
- console.log(`\nUsage: npx mdma-cli add <template>\n`);
60
+
61
+ console.log('\nUsage: npx mdma-cli add [preset] or npx mdma-cli add --workflow=X --git=Y\n');
47
62
  }
48
63
 
49
- function copyMdFiles(srcDir, destDir, label) {
50
- if (!existsSync(srcDir)) {
51
- console.log(` [skip] ${label} (not found)`);
52
- return 0;
64
+ function parseArgs(args) {
65
+ const result = { preset: null, workflow: null, git: null };
66
+
67
+ for (const arg of args) {
68
+ if (arg.startsWith('--workflow=')) {
69
+ result.workflow = arg.split('=')[1];
70
+ } else if (arg.startsWith('--git=')) {
71
+ result.git = arg.split('=')[1];
72
+ } else if (!arg.startsWith('-')) {
73
+ result.preset = arg;
74
+ }
53
75
  }
54
76
 
55
- const files = readdirSync(srcDir).filter(f => f.endsWith('.md'));
77
+ return result;
78
+ }
79
+
80
+ function add(args) {
81
+ const parsed = parseArgs(args);
82
+
83
+ let workflow, git;
84
+
85
+ if (parsed.workflow || parsed.git) {
86
+ // Custom mix
87
+ workflow = parsed.workflow || 'default';
88
+ git = parsed.git || 'default';
89
+ } else {
90
+ // Preset
91
+ const presetName = parsed.preset || 'default';
92
+ const preset = PRESETS[presetName];
56
93
 
57
- for (const file of files) {
58
- copyFileSync(join(srcDir, file), join(destDir, file));
59
- console.log(` [ok] ${file}`);
94
+ if (!preset) {
95
+ console.error(`Error: Unknown preset "${presetName}"\n`);
96
+ listOptions();
97
+ process.exit(1);
98
+ }
99
+
100
+ workflow = preset.workflow;
101
+ git = preset.git;
60
102
  }
61
103
 
62
- return files.length;
63
- }
104
+ // Validate files exist
105
+ const workflowFile = join(TEMPLATES_SRC, `workflow-${workflow}.md`);
106
+ const gitFile = join(TEMPLATES_SRC, `git-${git}.md`);
64
107
 
65
- function add(templateName) {
66
- const isDefault = !templateName || templateName === 'default';
67
- const templateDir = isDefault ? RULES_DEFAULT : join(TEMPLATES_DIR, templateName);
108
+ if (!existsSync(workflowFile)) {
109
+ console.error(`Error: workflow-${workflow}.md not found\n`);
110
+ listOptions();
111
+ process.exit(1);
112
+ }
68
113
 
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();
114
+ if (!existsSync(gitFile)) {
115
+ console.error(`Error: git-${git}.md not found\n`);
116
+ listOptions();
74
117
  process.exit(1);
75
118
  }
76
119
 
77
- console.log(`mdma-cli - Installing ${isDefault ? 'default' : templateName} rules\n`);
120
+ console.log(`mdma-cli - Installing rules\n`);
121
+ console.log(` workflow: ${workflow}`);
122
+ console.log(` git: ${git}\n`);
78
123
 
79
- // Remove existing mdma rules folder
124
+ // Remove existing and create fresh
80
125
  rmSync(RULES_DEST, { recursive: true, force: true });
81
126
  mkdirSync(RULES_DEST, { recursive: true });
82
127
 
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++;
128
+ // Copy core files
129
+ for (const file of CORE_FILES) {
130
+ const src = join(TEMPLATES_SRC, file);
131
+ if (existsSync(src)) {
132
+ copyFileSync(src, join(RULES_DEST, file));
133
+ console.log(` [ok] ${file}`);
134
+ }
91
135
  }
92
136
 
93
- // Copy template-specific rules (may override common)
94
- total += copyMdFiles(templateDir, RULES_DEST, templateName || 'default');
137
+ // Copy workflow
138
+ copyFileSync(workflowFile, join(RULES_DEST, `workflow-${workflow}.md`));
139
+ console.log(` [ok] workflow-${workflow}.md`);
140
+
141
+ // Copy git
142
+ copyFileSync(gitFile, join(RULES_DEST, `git-${git}.md`));
143
+ console.log(` [ok] git-${git}.md`);
144
+
145
+ // Copy MCP config to project root
146
+ const mcpSrc = join(TEMPLATES_SRC, MCP_FILE);
147
+ if (existsSync(mcpSrc)) {
148
+ copyFileSync(mcpSrc, MCP_DEST);
149
+ console.log(` [ok] .mcp.json (project root)`);
150
+ }
95
151
 
96
- console.log(`\n${total} file(s) installed to .claude/rules/mdma/`);
97
- console.log('Edit them as needed.\n');
152
+ console.log(`\n5 file(s) installed to .claude/rules/mdma/`);
153
+ console.log(`1 file(s) installed to project root (.mcp.json)\n`);
98
154
  }
99
155
 
100
156
  function main() {
101
- const command = process.argv[2];
102
- const arg = process.argv[3];
157
+ const args = process.argv.slice(2);
158
+ const command = args[0];
103
159
 
104
160
  switch (command) {
105
161
  case 'add':
106
- add(arg);
162
+ add(args.slice(1));
107
163
  break;
108
164
  case 'list':
109
- listTemplates();
165
+ listOptions();
110
166
  break;
111
167
  case 'help':
112
168
  case '--help':
113
169
  case '-h':
170
+ case undefined:
114
171
  showHelp();
115
172
  break;
116
173
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "3.0.0",
3
+ "version": "4.1.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",
@@ -0,0 +1,60 @@
1
+ # Best Practices
2
+
3
+ ## Règle absolue
4
+
5
+ > **Toujours coder selon les best practices reconnues** pour chaque langage, framework ou librairie utilisé.
6
+
7
+ ## En cas de doute
8
+
9
+ Si plusieurs approches sont reconnues comme "best practice" :
10
+
11
+ 1. **STOP** - ne pas choisir arbitrairement
12
+ 2. Lister les options avec leurs avantages/inconvénients
13
+ 3. Demander à l'utilisateur quelle approche privilégier
14
+
15
+ ## Sources de référence
16
+
17
+ Par ordre de priorité :
18
+ 1. Documentation officielle du langage/framework
19
+ 2. Style guides officiels (Google, Airbnb, etc.)
20
+ 3. Conventions établies dans le projet existant
21
+
22
+ ## MCP recommandé
23
+
24
+ Le MCP **context7** permet de récupérer la documentation officielle à jour directement dans le contexte.
25
+
26
+ ### Configuration
27
+
28
+ Ajouter dans `.mcp.json` (project scope, partagé via git) :
29
+
30
+ ```json
31
+ {
32
+ "mcpServers": {
33
+ "context7": {
34
+ "command": "npx",
35
+ "args": ["-y", "@upstash/context7-mcp"]
36
+ }
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### Usage
42
+
43
+ Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour :
44
+ - "Implémente l'auth avec NextAuth, use context7"
45
+ - "Ajoute la validation Zod, use context7"
46
+
47
+ ### API Key (optionnel)
48
+
49
+ Pour des rate limits plus élevés, obtenir une clé gratuite sur [context7.com/dashboard](https://context7.com/dashboard) et ajouter :
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "context7": {
55
+ "command": "npx",
56
+ "args": ["-y", "@upstash/context7-mcp", "--api-key", "YOUR_API_KEY"]
57
+ }
58
+ }
59
+ }
60
+ ```
@@ -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,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": ["-y", "@upstash/context7-mcp"]
6
+ }
7
+ }
8
+ }
@@ -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