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.
- package/{project-templates/arte-player/git.md → .claude/rules/mdma/git-default.md} +10 -7
- package/README.md +30 -12
- package/bin/init.js +107 -60
- package/package.json +2 -2
- package/{.claude/rules/mdma/default/git.md → templates/git-default.md} +9 -11
- package/{project-templates/ARTE-Video-Player/git.md → templates/git-jira.md} +11 -9
- package/templates/models.md +19 -0
- package/templates/style.md +42 -0
- package/{project-templates/ARTE-Video-Player/workflow.md → templates/workflow-jira.md} +5 -5
- package/project-templates/developpement.ai/git.md +0 -47
- package/project-templates/developpement.ai/workflow.md +0 -65
- package/project-templates/patria/git.md +0 -47
- package/project-templates/patria/workflow.md +0 -65
- /package/.claude/rules/mdma/{default/workflow.md → workflow-default.md} +0 -0
- /package/{project-templates/arte-player/workflow.md → templates/workflow-default.md} +0 -0
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
1. **JAMAIS push sur main**
|
|
9
9
|
2. **JAMAIS commit sans branche** `feature/` ou `fix/`
|
|
10
|
-
|
|
11
|
-
|
|
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.
|
|
21
|
-
4.
|
|
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 "
|
|
37
|
+
2. `git commit -m "type: description"`
|
|
37
38
|
3. `git push -u origin <branche>`
|
|
38
39
|
4. `gh pr create --fill`
|
|
39
|
-
|
|
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
|
|
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
|
|
21
|
-
npx mdma-cli add
|
|
22
|
-
npx mdma-cli list
|
|
23
|
-
npx mdma-cli 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
|
-
##
|
|
40
|
+
## Available components
|
|
27
41
|
|
|
28
|
-
|
|
42
|
+
**Workflows:**
|
|
43
|
+
- `default` - 7 steps (plan, code, test, review, compound, document, git)
|
|
44
|
+
- `jira` - 5 steps + JIRA REST API integration
|
|
29
45
|
|
|
30
|
-
|
|
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.
|
|
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
|
|
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 [
|
|
18
|
-
console.log(' npx mdma-cli
|
|
19
|
-
console.log(' npx mdma-cli
|
|
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
|
|
22
|
-
console.log(' npx mdma-cli add
|
|
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
|
|
26
|
-
console.log('mdma-cli - Available
|
|
35
|
+
function listOptions() {
|
|
36
|
+
console.log('mdma-cli - Available options\n');
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
console.log(
|
|
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('
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
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
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function add(args) {
|
|
79
|
+
const parsed = parseArgs(args);
|
|
80
|
+
|
|
81
|
+
let workflow, git;
|
|
56
82
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
106
|
+
if (!existsSync(workflowFile)) {
|
|
107
|
+
console.error(`Error: workflow-${workflow}.md not found\n`);
|
|
108
|
+
listOptions();
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
68
111
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
|
118
|
+
console.log(`mdma-cli - Installing rules\n`);
|
|
119
|
+
console.log(` workflow: ${workflow}`);
|
|
120
|
+
console.log(` git: ${git}\n`);
|
|
78
121
|
|
|
79
|
-
// Remove existing
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
|
94
|
-
|
|
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(`\
|
|
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
|
|
102
|
-
const
|
|
147
|
+
const args = process.argv.slice(2);
|
|
148
|
+
const command = args[0];
|
|
103
149
|
|
|
104
150
|
switch (command) {
|
|
105
151
|
case 'add':
|
|
106
|
-
add(
|
|
152
|
+
add(args.slice(1));
|
|
107
153
|
break;
|
|
108
154
|
case 'list':
|
|
109
|
-
|
|
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
|
+
"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
|
-
"
|
|
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
|
|
11
|
-
4. **JAMAIS
|
|
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.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 "
|
|
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
|
|
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
|
|
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.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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 "
|
|
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
|
|
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
|
|
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
|
|
19
|
-
- Cherche le contenu du ticket JIRA à traiter avec l'id donné dans le prompt
|
|
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
|
-
-
|
|
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
|
|
File without changes
|
|
File without changes
|