mdma-cli 4.1.1 → 4.3.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.
@@ -25,19 +25,16 @@ Le MCP **context7** permet de récupérer la documentation officielle à jour di
25
25
 
26
26
  ### Configuration
27
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
- }
28
+ **mdma-cli** configure automatiquement context7 en scope user lors de `npx mdma-cli add`.
29
+
30
+ Configuration manuelle si nécessaire :
31
+
32
+ ```bash
33
+ claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp
39
34
  ```
40
35
 
36
+ > **Scope user** : context7 est disponible pour tous vos projets, sans polluer les `.mcp.json` individuels.
37
+
41
38
  ### Usage
42
39
 
43
40
  Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour :
@@ -46,15 +43,8 @@ Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour
46
43
 
47
44
  ### API Key (optionnel)
48
45
 
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
- }
46
+ Pour des rate limits plus élevés, obtenir une clé gratuite sur [context7.com/dashboard](https://context7.com/dashboard) :
47
+
48
+ ```bash
49
+ claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
60
50
  ```
@@ -34,7 +34,7 @@ Si tu envisages de transgresser une règle → **STOP** → demande à l'utilisa
34
34
 
35
35
  ### Après validation
36
36
  1. `git add <fichiers>` (pas -A)
37
- 2. `git commit -m "type: description"`
37
+ 2. `git commit -m "XXX: description"`. Remplacer XXX par le prefix de conventionnal commits qui correspond le mieux au sujet traité (voir ### Commits)
38
38
  3. `git push -u origin <branche>`
39
39
  4. `gh pr create --fill`
40
40
  5. Attendre validation utilisateur
package/README.md CHANGED
@@ -21,6 +21,26 @@ npx mdma-cli add # default: GitHub workflow, merge auto
21
21
  npx mdma-cli add jira # JIRA integration, milestone, anonymity
22
22
  ```
23
23
 
24
+ ### Configuration JIRA
25
+
26
+ **Variables globales** (`.zshrc` ou `.bashrc`) :
27
+
28
+ ```bash
29
+ export ARTE_ATLASSIAN_ROOT_URL="https://mycompany.atlassian.net" # ou URL on-premise
30
+ export ARTE_ATLASSIAN_USER_EMAIL="user@email.com"
31
+ export ARTE_ATLASSIAN_API_TOKEN="your-api-token"
32
+ ```
33
+
34
+ **Variable projet** (dans `CLAUDE.md` ou `.env`) :
35
+
36
+ ```bash
37
+ export ARTE_ATLASSIAN_PROJECT_NAME="PROJ" # clé du projet JIRA
38
+ ```
39
+
40
+ Créer un token : [Atlassian API tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
41
+
42
+ **Fallback MCP** : si l'API échoue, le workflow propose d'utiliser `@anthropic/atlassian-mcp-server`.
43
+
24
44
  ## Custom mix
25
45
 
26
46
  ```bash
package/bin/init.js CHANGED
@@ -3,6 +3,7 @@
3
3
  import { copyFileSync, mkdirSync, rmSync, readdirSync, existsSync, readFileSync, appendFileSync } from 'fs';
4
4
  import { join, dirname } from 'path';
5
5
  import { fileURLToPath } from 'url';
6
+ import { execSync } from 'child_process';
6
7
 
7
8
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
9
  const PKG_ROOT = join(__dirname, '..');
@@ -10,8 +11,6 @@ const TEMPLATES_SRC = join(PKG_ROOT, 'templates');
10
11
  const RULES_DEST = join(process.cwd(), '.claude', 'rules', 'mdma');
11
12
 
12
13
  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
14
 
16
15
  const PRESETS = {
17
16
  default: { workflow: 'default', git: 'default' },
@@ -81,6 +80,32 @@ function updateGitExclude() {
81
80
  return true;
82
81
  }
83
82
 
83
+ function setupContext7() {
84
+ try {
85
+ // Check if context7 is already configured
86
+ const result = execSync('claude mcp list', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
87
+ if (result.includes('context7')) {
88
+ return 'already';
89
+ }
90
+ } catch {
91
+ // claude command not found or error - try to add anyway
92
+ }
93
+
94
+ try {
95
+ execSync('claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp', {
96
+ encoding: 'utf-8',
97
+ stdio: ['pipe', 'pipe', 'pipe']
98
+ });
99
+ return true;
100
+ } catch (error) {
101
+ // Check if error is because it already exists
102
+ if (error.message && error.message.includes('already exists')) {
103
+ return 'already';
104
+ }
105
+ return false;
106
+ }
107
+ }
108
+
84
109
  function parseArgs(args) {
85
110
  const result = { preset: null, workflow: null, git: null };
86
111
 
@@ -162,13 +187,6 @@ function add(args) {
162
187
  copyFileSync(gitFile, join(RULES_DEST, `git-${git}.md`));
163
188
  console.log(` [ok] git-${git}.md`);
164
189
 
165
- // Copy MCP config to project root
166
- const mcpSrc = join(TEMPLATES_SRC, MCP_FILE);
167
- if (existsSync(mcpSrc)) {
168
- copyFileSync(mcpSrc, MCP_DEST);
169
- console.log(` [ok] .mcp.json (project root)`);
170
- }
171
-
172
190
  // Update .git/info/exclude
173
191
  const excludeResult = updateGitExclude();
174
192
  if (excludeResult === true) {
@@ -179,8 +197,18 @@ function add(args) {
179
197
  console.log(` [skip] .git/info/exclude (not a git repo)`);
180
198
  }
181
199
 
182
- console.log(`\n5 file(s) installed to .claude/rules/mdma/`);
183
- console.log(`1 file(s) installed to project root (.mcp.json)\n`);
200
+ // Setup context7 MCP (user scope)
201
+ const context7Result = setupContext7();
202
+ if (context7Result === true) {
203
+ console.log(` [ok] context7 MCP (user scope)`);
204
+ } else if (context7Result === 'already') {
205
+ console.log(` [skip] context7 MCP (already configured)`);
206
+ } else {
207
+ console.log(` [warn] context7 MCP (claude CLI not found)`);
208
+ console.log(` Run manually: claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp`);
209
+ }
210
+
211
+ console.log(`\n5 file(s) installed to .claude/rules/mdma/\n`);
184
212
  }
185
213
 
186
214
  function main() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdma-cli",
3
- "version": "4.1.1",
3
+ "version": "4.3.0",
4
4
  "description": "Rules opinionated pour agents de code",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -25,19 +25,16 @@ Le MCP **context7** permet de récupérer la documentation officielle à jour di
25
25
 
26
26
  ### Configuration
27
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
- }
28
+ **mdma-cli** configure automatiquement context7 en scope user lors de `npx mdma-cli add`.
29
+
30
+ Configuration manuelle si nécessaire :
31
+
32
+ ```bash
33
+ claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp
39
34
  ```
40
35
 
36
+ > **Scope user** : context7 est disponible pour tous vos projets, sans polluer les `.mcp.json` individuels.
37
+
41
38
  ### Usage
42
39
 
43
40
  Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour :
@@ -46,15 +43,8 @@ Inclure `use context7` dans le prompt pour que l'agent récupère la doc à jour
46
43
 
47
44
  ### API Key (optionnel)
48
45
 
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
- }
46
+ Pour des rate limits plus élevés, obtenir une clé gratuite sur [context7.com/dashboard](https://context7.com/dashboard) :
47
+
48
+ ```bash
49
+ claude mcp add context7 --scope user -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
60
50
  ```
@@ -7,6 +7,44 @@
7
7
  > - Ne jamais faire d'exception, quelle que soit la taille ou nature du changement
8
8
  > - En cas de doute → STOP → demander à l'utilisateur
9
9
 
10
+ ## Configuration JIRA
11
+
12
+ ### Variables globales (`.zshrc` ou `.bashrc`)
13
+
14
+ ```bash
15
+ export ARTE_ATLASSIAN_ROOT_URL="https://mycompany.atlassian.net" # ou URL on-premise
16
+ export ARTE_ATLASSIAN_USER_EMAIL="user@email.com"
17
+ export ARTE_ATLASSIAN_API_TOKEN="your-api-token"
18
+ ```
19
+
20
+ ### Variable projet (`CLAUDE.md` du projet)
21
+
22
+ ```markdown
23
+ ## JIRA
24
+ - **Projet** : `PROJ` (clé JIRA)
25
+ ```
26
+
27
+ Ou via variable d'environnement projet :
28
+ ```bash
29
+ export ARTE_ATLASSIAN_PROJECT_NAME="PROJ"
30
+ ```
31
+
32
+ ### Utilisation API
33
+
34
+ ```bash
35
+ # Exemple de requête JIRA
36
+ curl -s -u "$ARTE_ATLASSIAN_USER_EMAIL:$ARTE_ATLASSIAN_API_TOKEN" \
37
+ "$ARTE_ATLASSIAN_ROOT_URL/rest/api/3/issue/PROJ-123"
38
+ ```
39
+
40
+ ### Fallback
41
+
42
+ Si l'API REST échoue (erreurs réseau, permissions), utiliser le MCP Atlassian :
43
+
44
+ ```bash
45
+ claude mcp add atlassian -- npx -y @anthropic/atlassian-mcp-server
46
+ ```
47
+
10
48
  ## Étapes obligatoires
11
49
 
12
50
  ### 0. Setup Git
@@ -15,7 +53,7 @@
15
53
  - Ne jamais rationaliser ("c'est juste un petit fix")
16
54
 
17
55
  ### 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.
56
+ - Utilise les variables `$ARTE_ATLASSIAN_*` pour les appels API JIRA (voir Configuration ci-dessus)
19
57
  - Cherche le contenu du ticket JIRA à traiter avec l'id donné dans le prompt
20
58
  - Passe le statut du ticket JIRA à "In progress"
21
59
  - Attribue le ticket à l'utilisateur
@@ -1,8 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "context7": {
4
- "command": "npx",
5
- "args": ["-y", "@upstash/context7-mcp"]
6
- }
7
- }
8
- }