mdma-cli 2.1.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/.claude/rules/mdma/{git.md → git-default.md} +9 -11
- package/README.md +37 -4
- package/bin/init.js +131 -17
- package/package.json +3 -2
- package/templates/git-default.md +45 -0
- package/templates/git-jira.md +44 -0
- package/templates/models.md +19 -0
- package/templates/style.md +42 -0
- package/templates/workflow-default.md +65 -0
- package/templates/workflow-jira.md +47 -0
- /package/.claude/rules/mdma/{workflow.md → workflow-default.md} +0 -0
|
@@ -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.
|
package/README.md
CHANGED
|
@@ -9,14 +9,47 @@ npx mdma-cli add
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Installs rules to `.claude/rules/mdma/`:
|
|
12
|
-
- `workflow.md` - agent workflow
|
|
13
|
-
- `git.md` - git conventions
|
|
14
|
-
- `style.md` - response style
|
|
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
|
+
```
|
|
30
|
+
|
|
31
|
+
## Commands
|
|
32
|
+
|
|
33
|
+
```bash
|
|
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
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Available components
|
|
41
|
+
|
|
42
|
+
**Workflows:**
|
|
43
|
+
- `default` - 7 steps (plan, code, test, review, compound, document, git)
|
|
44
|
+
- `jira` - 5 steps + JIRA REST API integration
|
|
45
|
+
|
|
46
|
+
**Git:**
|
|
47
|
+
- `default` - ask base branch, conditional GitHub issue, merge auto
|
|
48
|
+
- `jira` - ask base branch, milestone, Claude anonymity
|
|
16
49
|
|
|
17
50
|
## Update
|
|
18
51
|
|
|
19
|
-
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.
|
|
20
53
|
|
|
21
54
|
## License
|
|
22
55
|
|
package/bin/init.js
CHANGED
|
@@ -1,49 +1,163 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { copyFileSync, mkdirSync, rmSync, readdirSync } from 'fs';
|
|
3
|
+
import { copyFileSync, mkdirSync, rmSync, readdirSync, existsSync } from 'fs';
|
|
4
4
|
import { join, dirname } from 'path';
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
|
|
7
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
-
const
|
|
8
|
+
const PKG_ROOT = join(__dirname, '..');
|
|
9
|
+
const TEMPLATES_SRC = join(PKG_ROOT, 'templates');
|
|
9
10
|
const RULES_DEST = join(process.cwd(), '.claude', 'rules', 'mdma');
|
|
10
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
|
+
|
|
11
19
|
function showHelp() {
|
|
12
20
|
console.log('mdma-cli - Opinionated rules for code agents\n');
|
|
13
21
|
console.log('Usage:');
|
|
14
|
-
console.log(' npx mdma-cli add
|
|
15
|
-
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');
|
|
29
|
+
console.log('Examples:');
|
|
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');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function listOptions() {
|
|
36
|
+
console.log('mdma-cli - Available options\n');
|
|
37
|
+
|
|
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}`);
|
|
41
|
+
}
|
|
42
|
+
|
|
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}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
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}`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log('\nUsage: npx mdma-cli add [preset] or npx mdma-cli add --workflow=X --git=Y\n');
|
|
60
|
+
}
|
|
61
|
+
|
|
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
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return result;
|
|
16
76
|
}
|
|
17
77
|
|
|
18
|
-
function add() {
|
|
19
|
-
|
|
78
|
+
function add(args) {
|
|
79
|
+
const parsed = parseArgs(args);
|
|
20
80
|
|
|
21
|
-
|
|
81
|
+
let workflow, git;
|
|
82
|
+
|
|
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;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Validate files exist
|
|
103
|
+
const workflowFile = join(TEMPLATES_SRC, `workflow-${workflow}.md`);
|
|
104
|
+
const gitFile = join(TEMPLATES_SRC, `git-${git}.md`);
|
|
105
|
+
|
|
106
|
+
if (!existsSync(workflowFile)) {
|
|
107
|
+
console.error(`Error: workflow-${workflow}.md not found\n`);
|
|
108
|
+
listOptions();
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (!existsSync(gitFile)) {
|
|
113
|
+
console.error(`Error: git-${git}.md not found\n`);
|
|
114
|
+
listOptions();
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
console.log(`mdma-cli - Installing rules\n`);
|
|
119
|
+
console.log(` workflow: ${workflow}`);
|
|
120
|
+
console.log(` git: ${git}\n`);
|
|
121
|
+
|
|
122
|
+
// Remove existing and create fresh
|
|
22
123
|
rmSync(RULES_DEST, { recursive: true, force: true });
|
|
23
124
|
mkdirSync(RULES_DEST, { recursive: true });
|
|
24
125
|
|
|
25
|
-
// Copy
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
+
}
|
|
31
133
|
}
|
|
32
134
|
|
|
33
|
-
|
|
34
|
-
|
|
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`);
|
|
142
|
+
|
|
143
|
+
console.log(`\n4 file(s) installed to .claude/rules/mdma/\n`);
|
|
35
144
|
}
|
|
36
145
|
|
|
37
146
|
function main() {
|
|
38
|
-
const
|
|
147
|
+
const args = process.argv.slice(2);
|
|
148
|
+
const command = args[0];
|
|
39
149
|
|
|
40
150
|
switch (command) {
|
|
41
151
|
case 'add':
|
|
42
|
-
add();
|
|
152
|
+
add(args.slice(1));
|
|
153
|
+
break;
|
|
154
|
+
case 'list':
|
|
155
|
+
listOptions();
|
|
43
156
|
break;
|
|
44
157
|
case 'help':
|
|
45
158
|
case '--help':
|
|
46
159
|
case '-h':
|
|
160
|
+
case undefined:
|
|
47
161
|
showHelp();
|
|
48
162
|
break;
|
|
49
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",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"bin",
|
|
20
|
-
".claude/rules"
|
|
20
|
+
".claude/rules",
|
|
21
|
+
"templates"
|
|
21
22
|
],
|
|
22
23
|
"keywords": [
|
|
23
24
|
"claude",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Workflow Git
|
|
2
|
+
|
|
3
|
+
## Règles absolues
|
|
4
|
+
|
|
5
|
+
> **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
|
|
6
|
+
> "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
|
|
7
|
+
|
|
8
|
+
1. **JAMAIS push sur main**
|
|
9
|
+
2. **JAMAIS commit sans branche** `feature/` ou `fix/`
|
|
10
|
+
3. **JAMAIS merge sans PR**
|
|
11
|
+
4. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
|
|
12
|
+
|
|
13
|
+
Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
### Avant de coder
|
|
18
|
+
1. Demander à l'utilisateur s'il souhaite se baser sur `main/master` ou `develop/dev`
|
|
19
|
+
2. Synchroniser la branche de base choisie avec le remote
|
|
20
|
+
3. 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
|
|
23
|
+
|
|
24
|
+
### Commits
|
|
25
|
+
- Convention : **conventional commits**
|
|
26
|
+
- `feat:` nouvelle fonctionnalité
|
|
27
|
+
- `fix:` correction de bug
|
|
28
|
+
- `docs:` documentation
|
|
29
|
+
- `refactor:` refactoring
|
|
30
|
+
- `chore:` maintenance
|
|
31
|
+
- `test:` ajout/modification de tests
|
|
32
|
+
- Messages clairs et concis
|
|
33
|
+
- Un commit = un changement logique
|
|
34
|
+
|
|
35
|
+
### Après validation
|
|
36
|
+
1. `git add <fichiers>` (pas -A)
|
|
37
|
+
2. `git commit -m "type: description"`
|
|
38
|
+
3. `git push -u origin <branche>`
|
|
39
|
+
4. `gh pr create --fill`
|
|
40
|
+
5. Attendre validation utilisateur
|
|
41
|
+
6. `gh pr merge --merge --delete-branch`
|
|
42
|
+
7. `git checkout <branche-base> && git pull`
|
|
43
|
+
|
|
44
|
+
### Tests
|
|
45
|
+
Les tests **DOIVENT** passer avant merge.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Workflow Git
|
|
2
|
+
|
|
3
|
+
## Règles absolues
|
|
4
|
+
|
|
5
|
+
> **Anti-rationalisation** : Ces règles n'ont AUCUNE exception. "JAMAIS" signifie jamais.
|
|
6
|
+
> "C'est juste du gitignore" ou "c'est un petit fix" ne justifie PAS de contourner les règles.
|
|
7
|
+
|
|
8
|
+
1. **JAMAIS push sur main**
|
|
9
|
+
2. **JAMAIS commit sans branche** `feature/` ou `fix/`
|
|
10
|
+
3. **JAMAIS merge sans PR**
|
|
11
|
+
4. **JAMAIS `git add -A`** : commiter uniquement les fichiers modifiés intentionnellement
|
|
12
|
+
5. **JAMAIS cité** : ni dans les descriptions, titres, ou en tant qu'auteur. Tout est de l'utilisateur.
|
|
13
|
+
|
|
14
|
+
Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisateur.
|
|
15
|
+
|
|
16
|
+
## Process
|
|
17
|
+
|
|
18
|
+
### Avant de coder
|
|
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
|
|
23
|
+
|
|
24
|
+
### Commits
|
|
25
|
+
- Convention : **conventional commits**
|
|
26
|
+
- `feat:` nouvelle fonctionnalité
|
|
27
|
+
- `fix:` correction de bug
|
|
28
|
+
- `docs:` documentation
|
|
29
|
+
- `refactor:` refactoring
|
|
30
|
+
- `chore:` maintenance
|
|
31
|
+
- `test:` ajout/modification de tests
|
|
32
|
+
- Messages clairs et concis
|
|
33
|
+
- Un commit = un changement logique
|
|
34
|
+
|
|
35
|
+
### Après validation
|
|
36
|
+
1. `git add <fichiers>` (pas -A)
|
|
37
|
+
2. `git commit -m "type: description"`
|
|
38
|
+
3. `git push -u origin <branche>`
|
|
39
|
+
4. `gh pr create --fill` en assignant le milestone correspondant à la version du ticket. Si ce milestone n'existe pas, le créer.
|
|
40
|
+
5. Attendre validation utilisateur
|
|
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
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Workflow Agent
|
|
2
|
+
|
|
3
|
+
> **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
|
|
4
|
+
|
|
5
|
+
> **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
|
|
6
|
+
> - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
|
|
7
|
+
> - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
|
|
8
|
+
> - En cas de doute → STOP → demander à l'utilisateur
|
|
9
|
+
|
|
10
|
+
## Étapes obligatoires
|
|
11
|
+
|
|
12
|
+
### 0. Setup Git
|
|
13
|
+
- Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
|
|
14
|
+
- Si sur `main` → créer une branche AVANT toute modification
|
|
15
|
+
- Ne jamais rationaliser ("c'est juste un petit fix")
|
|
16
|
+
|
|
17
|
+
### 1. Plan
|
|
18
|
+
- Explore le codebase (structure documentée dans `CLAUDE.md`)
|
|
19
|
+
- Propose un plan d'implémentation
|
|
20
|
+
- **STOP** → attend validation avant de coder
|
|
21
|
+
|
|
22
|
+
### 2. Code
|
|
23
|
+
- Implémente selon le plan validé
|
|
24
|
+
- Petits commits logiques (conventions dans `git.md`)
|
|
25
|
+
- **STOP** → montre les modifications, attend validation
|
|
26
|
+
|
|
27
|
+
### 3. Test
|
|
28
|
+
- Lance les tests (commande dans `CLAUDE.md`)
|
|
29
|
+
- Si fail → arrête et fixe CE test uniquement
|
|
30
|
+
- Si le test passe → relance la suite complète
|
|
31
|
+
- Max 5 itérations
|
|
32
|
+
- Si toujours fail → **STOP** → demande quoi faire
|
|
33
|
+
|
|
34
|
+
#### 3.1 Tests visuels (obligatoire si applicable)
|
|
35
|
+
- **Vérifie** si `.claude/rules/visual-test.md` existe
|
|
36
|
+
- Si oui → exécute `/screenshot` et compare `current/` vs `baseline/`
|
|
37
|
+
- Différence intentionnelle → mettre à jour `baseline/`
|
|
38
|
+
- Régression détectée → **STOP** → corriger avant de continuer
|
|
39
|
+
|
|
40
|
+
- Si tous les tests passent → **STOP** → attend validation
|
|
41
|
+
|
|
42
|
+
### 4. Review
|
|
43
|
+
- Review ton propre code
|
|
44
|
+
- Vérifie : sécurité, performance, lisibilité
|
|
45
|
+
- Propose des améliorations si pertinent
|
|
46
|
+
- **STOP** → attend validation
|
|
47
|
+
|
|
48
|
+
### 5. Compound
|
|
49
|
+
- Consulte `CHANGELOG.md`, `DECISIONS.md`, `LEARNINGS.md` pour contexte
|
|
50
|
+
- Apprends des feedbacks de cette session
|
|
51
|
+
- Note les préférences exprimées pour les appliquer ensuite
|
|
52
|
+
|
|
53
|
+
### 6. Document
|
|
54
|
+
- Met à jour `CHANGELOG.md` pour chaque feature/fix (obligatoire)
|
|
55
|
+
- Met à jour `LEARNINGS.md` si apprentissage important
|
|
56
|
+
- Met à jour `DECISIONS.md` si décision structurante
|
|
57
|
+
- Si ces fichiers n'existent pas → les créer avec les formats standards :
|
|
58
|
+
- CHANGELOG.md : [Keep a Changelog](https://keepachangelog.com/)
|
|
59
|
+
- DECISIONS.md : format ADR (Architecture Decision Records)
|
|
60
|
+
- LEARNINGS.md : format session avec contexte, décisions, leçons
|
|
61
|
+
- **STOP** → attend validation
|
|
62
|
+
|
|
63
|
+
### 7. Git
|
|
64
|
+
- Exécute le workflow défini dans `git.md`
|
|
65
|
+
- **STOP** → attend validation avant de commiter
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Workflow Agent
|
|
2
|
+
|
|
3
|
+
> **Note** : Ce workflow est agnostique. Pour les commandes spécifiques (test, build, lint), consulte `CLAUDE.md` qui fait référence pour ce projet.
|
|
4
|
+
|
|
5
|
+
> **Règle de conformité** : Les règles définies ici et dans `git.md` sont ABSOLUES.
|
|
6
|
+
> - Ne jamais rationaliser ("c'est juste un petit fix", "c'est mineur")
|
|
7
|
+
> - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
|
|
8
|
+
> - En cas de doute → STOP → demander à l'utilisateur
|
|
9
|
+
|
|
10
|
+
## Étapes obligatoires
|
|
11
|
+
|
|
12
|
+
### 0. Setup Git
|
|
13
|
+
- Vérifie que tu n'es PAS sur `main` : `git branch --show-current`
|
|
14
|
+
- Si sur `main` → créer une branche AVANT toute modification
|
|
15
|
+
- Ne jamais rationaliser ("c'est juste un petit fix")
|
|
16
|
+
|
|
17
|
+
### 1. Plan
|
|
18
|
+
- Cherche dans .zshrc pour le token JIRA afin de l'utiliser en REST API avec CURL. Attention le token peut contenir des caractères spéciaux, en tenir compte dans le CURL.
|
|
19
|
+
- Cherche le contenu du ticket JIRA à traiter avec l'id donné dans le prompt
|
|
20
|
+
- Passe le statut du ticket JIRA à "In progress"
|
|
21
|
+
- Attribue le ticket à l'utilisateur
|
|
22
|
+
- Explore le codebase (structure documentée dans `CLAUDE.md`)
|
|
23
|
+
- Propose un plan d'implémentation
|
|
24
|
+
- **STOP** → attend validation avant de coder
|
|
25
|
+
|
|
26
|
+
### 2. Code
|
|
27
|
+
- Implémente selon le plan validé
|
|
28
|
+
- Petits commits logiques (conventions dans `git.md`)
|
|
29
|
+
- **STOP** → montre les modifications, attend validation
|
|
30
|
+
|
|
31
|
+
### 3. Test
|
|
32
|
+
- Lance les tests (commande dans `CLAUDE.md`)
|
|
33
|
+
- Si fail → arrête et fixe CE test uniquement
|
|
34
|
+
- Si le test passe → relance la suite complète
|
|
35
|
+
- Max 5 itérations
|
|
36
|
+
- Si toujours fail → **STOP** → demande quoi faire
|
|
37
|
+
|
|
38
|
+
### 4. Review
|
|
39
|
+
- Review ton propre code
|
|
40
|
+
- Vérifie : sécurité, performance, lisibilité
|
|
41
|
+
- Propose des améliorations si pertinent
|
|
42
|
+
- **STOP** → attend validation
|
|
43
|
+
|
|
44
|
+
### 5. Git
|
|
45
|
+
- Exécute le workflow défini dans `git.md`
|
|
46
|
+
- Passe le statut du ticket JIRA à "Testing"
|
|
47
|
+
- **STOP** → attend validation avant de commiter
|
|
File without changes
|