bmad-plus 0.1.1 → 0.2.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,80 @@
1
+ # 🚀 Guide de déploiement — Universal Backup Agent
2
+
3
+ ## Méthode 1 : Intégration BMAD (recommandée)
4
+
5
+ ### Étape 1 — Copier l'agent
6
+ Copier `agent/backup-agent.md` dans le dossier agents de votre projet BMAD :
7
+ ```
8
+ votre-projet/
9
+ ├── _bmad/
10
+ │ └── agents/
11
+ │ └── backup-agent.md ← copier ici
12
+ ```
13
+
14
+ ### Étape 2 — Déclarer dans le manifest
15
+ Ajouter cette ligne dans `_bmad_config/agent-manifest.csv` :
16
+ ```csv
17
+ backup-agent,Universal Backup Manager,backup,Gère les sauvegardes ZIP horodatées du projet,_bmad/agents/backup-agent.md
18
+ ```
19
+
20
+ ### Étape 3 — Ajouter le workflow Gemini
21
+ Copier `templates/backup-workflow.md` dans :
22
+ ```
23
+ votre-projet/.agent/workflows/backup-project.md
24
+ ```
25
+ **Important :** Remplacer `%PROJECT_ROOT%` par le chemin réel du projet.
26
+
27
+ ---
28
+
29
+ ## Méthode 2 : Standalone (sans BMAD)
30
+
31
+ ### Option A — Workflow Gemini uniquement
32
+ 1. Créer `.agent/workflows/` dans votre projet
33
+ 2. Copier `templates/backup-workflow.md` → `.agent/workflows/backup-project.md`
34
+ 3. Remplacer `%PROJECT_ROOT%` par le chemin réel
35
+ 4. Utiliser avec `/backup-project`
36
+
37
+ ### Option B — Commande directe
38
+ Coller cette commande dans votre terminal :
39
+
40
+ **Windows :**
41
+ ```powershell
42
+ $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
43
+ $projectRoot = "C:\chemin\vers\votre\projet"
44
+ $projectName = Split-Path $projectRoot -Leaf
45
+ $backupDir = "$projectRoot\backups"
46
+ if (!(Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir -Force }
47
+ Get-ChildItem $projectRoot -Exclude "backups","node_modules",".git","vendor","__pycache__" |
48
+ Compress-Archive -DestinationPath "$backupDir\${projectName}_backup_$timestamp.zip" -Force
49
+ ```
50
+
51
+ **Linux/Mac :**
52
+ ```bash
53
+ TIMESTAMP=$(date +%Y%m%d_%H%M%S)
54
+ PROJECT_ROOT="/chemin/vers/votre/projet"
55
+ PROJECT_NAME=$(basename "$PROJECT_ROOT")
56
+ mkdir -p "$PROJECT_ROOT/backups"
57
+ cd "$PROJECT_ROOT" && zip -r "backups/${PROJECT_NAME}_backup_$TIMESTAMP.zip" . \
58
+ -x "backups/*" "node_modules/*" ".git/*" "vendor/*" "__pycache__/*"
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 📁 Exclusions par défaut
64
+
65
+ | Dossier/Pattern | Raison |
66
+ |----------------|--------|
67
+ | `backups/` | Éviter la récursion |
68
+ | `node_modules/` | Dépendances, se réinstallent avec `npm install` |
69
+ | `.git/` | Historique Git, lourd et inutile dans un backup |
70
+ | `vendor/` | Dépendances PHP/Composer |
71
+ | `__pycache__/` | Cache Python compilé |
72
+ | `*.backup_*` | Anciens fichiers de backup individuels |
73
+
74
+ ## 🔧 Personnalisation
75
+
76
+ Pour exclure d'autres dossiers, ajoutez-les à la liste `Exclude` :
77
+ ```powershell
78
+ # Exemple: exclure aussi "storage" et "tmp"
79
+ Get-ChildItem $projectRoot -Exclude "backups","node_modules",".git","vendor","__pycache__","storage","tmp"
80
+ ```
@@ -0,0 +1,58 @@
1
+ # 🗂️ Universal Project Backup Agent
2
+
3
+ Agent BMAD universel pour créer des backups ZIP horodatés de n'importe quel projet web.
4
+
5
+ ## 📁 Structure
6
+
7
+ ```
8
+ Universal Backup Agent/
9
+ ├── agent/
10
+ │ └── backup-agent.md # Agent BMAD
11
+ ├── templates/
12
+ │ └── backup-workflow.md # Workflow Gemini prêt à copier
13
+ ├── README.md # Ce fichier
14
+ └── DEPLOYMENT.md # Guide de déploiement
15
+ ```
16
+
17
+ ## 🚀 Utilisation rapide
18
+
19
+ ### Commande slash
20
+ ```
21
+ /backup-project
22
+ ```
23
+
24
+ ### Commande manuelle (PowerShell)
25
+ ```powershell
26
+ $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
27
+ $projectRoot = "CHEMIN_DU_PROJET"
28
+ $backupDir = "$projectRoot\backups"
29
+ if (!(Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir -Force }
30
+ Get-ChildItem $projectRoot -Exclude "backups","node_modules",".git","vendor","__pycache__","*.backup_*" |
31
+ Compress-Archive -DestinationPath "$backupDir\backup_$timestamp.zip" -Force
32
+ ```
33
+
34
+ ### Commande manuelle (Bash/Linux)
35
+ ```bash
36
+ TIMESTAMP=$(date +%Y%m%d_%H%M%S)
37
+ PROJECT_ROOT="CHEMIN_DU_PROJET"
38
+ mkdir -p "$PROJECT_ROOT/backups"
39
+ cd "$PROJECT_ROOT" && zip -r "backups/backup_$TIMESTAMP.zip" . \
40
+ -x "backups/*" "node_modules/*" ".git/*" "vendor/*" "__pycache__/*" "*.backup_*"
41
+ ```
42
+
43
+ ## ⚙️ Fonctionnalités
44
+
45
+ - **Horodatage automatique** : chaque backup est nommé avec date + heure
46
+ - **Exclusions intelligentes** : ignore `node_modules`, `.git`, `vendor`, `backups/`, `__pycache__`
47
+ - **Multi-plateforme** : PowerShell (Windows) et Bash (Linux/Mac)
48
+ - **Compatible BMAD** : intégrable comme agent dans le framework BMAD
49
+ - **Workflow Gemini** : fichier `.md` prêt à copier dans `.agent/workflows/`
50
+
51
+ ## 📋 Projets compatibles
52
+
53
+ Fonctionne avec tout type de projet :
54
+ - PHP / Laravel / Symfony
55
+ - Node.js / Next.js / Vite
56
+ - Python / Django / Flask
57
+ - HTML/CSS/JS statique
58
+ - WordPress / CMS
@@ -0,0 +1,71 @@
1
+ # Agent: Universal Backup Manager
2
+
3
+ ## Persona
4
+ Tu es un agent spécialisé dans la sauvegarde et la restauration de projets. Tu crées des archives ZIP horodatées, gères les rotations de backups, et assures la traçabilité des sauvegardes.
5
+
6
+ ## Activation
7
+ 1. Identifier le dossier racine du projet
8
+ 2. Déterminer le système d'exploitation (Windows/Linux/Mac)
9
+ 3. Vérifier l'existence du dossier `backups/`
10
+ 4. Exécuter la sauvegarde
11
+
12
+ ## Menu
13
+
14
+ ### 1. `/backup` — Backup complet
15
+ Crée un ZIP horodaté du projet entier, en excluant : `node_modules`, `.git`, `vendor`, `backups/`, `__pycache__`, `*.backup_*`, `dist/node_modules`.
16
+
17
+ **PowerShell (Windows) :**
18
+ ```powershell
19
+ $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
20
+ $projectRoot = "%PROJECT_ROOT%"
21
+ $projectName = Split-Path $projectRoot -Leaf
22
+ $backupDir = "$projectRoot\backups"
23
+ if (!(Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir -Force }
24
+ Get-ChildItem $projectRoot -Exclude "backups","node_modules",".git","vendor","__pycache__","*.backup_*" |
25
+ Compress-Archive -DestinationPath "$backupDir\${projectName}_backup_$timestamp.zip" -Force
26
+ $size = (Get-Item "$backupDir\${projectName}_backup_$timestamp.zip").Length / 1MB
27
+ Write-Output "✅ Backup: ${projectName}_backup_$timestamp.zip ($([math]::Round($size,2)) MB)"
28
+ ```
29
+
30
+ **Bash (Linux/Mac) :**
31
+ ```bash
32
+ TIMESTAMP=$(date +%Y%m%d_%H%M%S)
33
+ PROJECT_ROOT="%PROJECT_ROOT%"
34
+ PROJECT_NAME=$(basename "$PROJECT_ROOT")
35
+ mkdir -p "$PROJECT_ROOT/backups"
36
+ cd "$PROJECT_ROOT" && zip -r "backups/${PROJECT_NAME}_backup_$TIMESTAMP.zip" . \
37
+ -x "backups/*" "node_modules/*" ".git/*" "vendor/*" "__pycache__/*" "*.backup_*"
38
+ echo "✅ Backup: ${PROJECT_NAME}_backup_$TIMESTAMP.zip"
39
+ ```
40
+
41
+ ### 2. `/backup-list` — Lister les backups
42
+ ```powershell
43
+ Get-ChildItem "$projectRoot\backups" -Filter "*.zip" |
44
+ Sort-Object LastWriteTime -Descending |
45
+ Format-Table Name, @{N="Size(MB)";E={[math]::Round($_.Length/1MB,2)}}, LastWriteTime -AutoSize
46
+ ```
47
+
48
+ ### 3. `/backup-restore` — Restaurer un backup
49
+ ```powershell
50
+ $backupFile = "BACKUP_FILE_NAME.zip"
51
+ $restoreDir = "$projectRoot\restore_$((Get-Date).ToString('yyyyMMdd_HHmmss'))"
52
+ Expand-Archive -Path "$projectRoot\backups\$backupFile" -DestinationPath $restoreDir -Force
53
+ Write-Output "✅ Restored to: $restoreDir"
54
+ ```
55
+
56
+ ### 4. `/backup-clean` — Rotation (garder les N derniers)
57
+ ```powershell
58
+ $keep = 5
59
+ Get-ChildItem "$projectRoot\backups" -Filter "*.zip" |
60
+ Sort-Object LastWriteTime -Descending |
61
+ Select-Object -Skip $keep |
62
+ Remove-Item -Force
63
+ Write-Output "✅ Kept last $keep backups, removed older ones"
64
+ ```
65
+
66
+ ## Règles
67
+ 1. **Toujours demander confirmation** avant de supprimer des backups
68
+ 2. **Toujours afficher** la taille du ZIP créé
69
+ 3. **Toujours exclure** les dossiers volumineux non essentiels
70
+ 4. **Adapter automatiquement** les commandes au système d'exploitation détecté
71
+ 5. **Remplacer `%PROJECT_ROOT%`** par le chemin réel du projet
@@ -0,0 +1,45 @@
1
+ name: universal-backup
2
+ version: 1.0.0
3
+ title: "Universal Backup"
4
+ description: "Backup ZIP horodaté multi-plateforme avec exclusions intelligentes"
5
+ author: Laurent ROCHETTA AI
6
+ icon: "🗂️"
7
+ tags: [backup, zip, devops, utilities]
8
+ triggers:
9
+ - "backup"
10
+ - "backup project"
11
+ - "create backup"
12
+ - "save project"
13
+ - "zip project"
14
+ requires:
15
+ tools: []
16
+ scripts: []
17
+ commands:
18
+ - id: backup
19
+ name: "Create Backup"
20
+ description: "Crée un backup ZIP horodaté"
21
+ - id: list
22
+ name: "List Backups"
23
+ description: "Liste les backups existants"
24
+ - id: restore
25
+ name: "Restore Backup"
26
+ description: "Restaure un backup"
27
+ - id: clean
28
+ name: "Clean Backups"
29
+ description: "Supprime les vieux backups"
30
+ platforms:
31
+ bmad:
32
+ target: "_bmad/core/agents/"
33
+ file: "backup-agent.md"
34
+ claude:
35
+ target: ".claude/skills/"
36
+ skillName: "backup"
37
+ gemini:
38
+ target: ".agent/workflows/"
39
+ file: "backup-project.md"
40
+ opencode:
41
+ target: ".opencode/agents/"
42
+ file: "backup-agent.md"
43
+ codex:
44
+ target: ".codex/agents/"
45
+ file: "backup-agent.md"
@@ -0,0 +1,51 @@
1
+ ---
2
+ description: Create a full ZIP backup of the current project
3
+ ---
4
+
5
+ # Backup Project
6
+
7
+ Creates a timestamped ZIP archive of the entire project in a `backups/` folder at the project root.
8
+
9
+ ## Auto-detect
10
+
11
+ The agent should:
12
+ 1. Detect the project root from the active workspace
13
+ 2. Detect the OS (PowerShell for Windows, Bash for Linux/Mac)
14
+ 3. Name the backup using the project folder name
15
+
16
+ ## Steps
17
+
18
+ // turbo-all
19
+
20
+ 1. Create the backup ZIP archive:
21
+
22
+ ### Windows (PowerShell)
23
+ ```powershell
24
+ $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
25
+ $projectRoot = "%PROJECT_ROOT%"
26
+ $projectName = Split-Path $projectRoot -Leaf
27
+ $backupDir = "$projectRoot\backups"
28
+ if (!(Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir -Force }
29
+ Get-ChildItem $projectRoot -Exclude "backups","node_modules",".git","vendor","__pycache__","*.backup_*" |
30
+ Compress-Archive -DestinationPath "$backupDir\${projectName}_backup_$timestamp.zip" -Force
31
+ $size = (Get-Item "$backupDir\${projectName}_backup_$timestamp.zip").Length / 1MB
32
+ Write-Output "Backup: ${projectName}_backup_$timestamp.zip ($([math]::Round($size,2)) MB)"
33
+ ```
34
+
35
+ ### Linux/Mac (Bash)
36
+ ```bash
37
+ TIMESTAMP=$(date +%Y%m%d_%H%M%S)
38
+ PROJECT_ROOT="%PROJECT_ROOT%"
39
+ PROJECT_NAME=$(basename "$PROJECT_ROOT")
40
+ mkdir -p "$PROJECT_ROOT/backups"
41
+ cd "$PROJECT_ROOT" && zip -r "backups/${PROJECT_NAME}_backup_$TIMESTAMP.zip" . \
42
+ -x "backups/*" "node_modules/*" ".git/*" "vendor/*" "__pycache__/*" "*.backup_*"
43
+ ```
44
+
45
+ 2. Confirm the backup was created and report the file name and size.
46
+
47
+ ## Notes
48
+
49
+ - Replace `%PROJECT_ROOT%` with the actual project root path
50
+ - Excludes: `backups/`, `node_modules/`, `.git/`, `vendor/`, `__pycache__/`, `*.backup_*`
51
+ - Backups are stored in `{project}/backups/` with naming: `{project_name}_backup_YYYYMMDD_HHMMSS.zip`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-plus",
4
- "version": "0.1.1",
4
+ "version": "0.2.0",
5
5
  "description": "BMAD+ — Augmented AI-Driven Development Framework with multi-role agents, autopilot, and parallel execution",
6
6
  "keywords": [
7
7
  "bmad",
@@ -27,6 +27,7 @@
27
27
  "tools",
28
28
  "src/bmad-plus",
29
29
  "osint-agent-package",
30
+ "oveanet-pack",
30
31
  "readme-international",
31
32
  "CHANGELOG.md"
32
33
  ],
@@ -47,6 +47,33 @@ const PACKS = {
47
47
  agents: [],
48
48
  skills: [],
49
49
  },
50
+ seo: {
51
+ name: 'SEO Audit 360',
52
+ icon: '🔍',
53
+ description: '9-category audit for search engines + AI engines (by Oveanet)',
54
+ required: false,
55
+ agents: [],
56
+ skills: [],
57
+ oveanetAgent: 'seo-audit-360',
58
+ },
59
+ backup: {
60
+ name: 'Universal Backup',
61
+ icon: '🗂️',
62
+ description: 'Timestamped ZIP backup with smart exclusions (by Oveanet)',
63
+ required: false,
64
+ agents: [],
65
+ skills: [],
66
+ oveanetAgent: 'universal-backup',
67
+ },
68
+ animated: {
69
+ name: 'Animated Website',
70
+ icon: '🎬',
71
+ description: 'Luxury scroll-driven website from video (by Oveanet)',
72
+ required: false,
73
+ agents: [],
74
+ skills: [],
75
+ oveanetAgent: 'animated-website',
76
+ },
50
77
  };
51
78
 
52
79
  // IDE configurations
@@ -273,6 +300,16 @@ module.exports = {
273
300
  copiedSkills++;
274
301
  }
275
302
  }
303
+
304
+ // Copy Oveanet agent pack (SEO, Backup, Animated Website)
305
+ if (pack.oveanetAgent) {
306
+ const oveanetSrc = path.join(__dirname, '..', '..', '..', 'oveanet-pack', pack.oveanetAgent);
307
+ const oveanetDest = path.join(targetAgentsDir, pack.oveanetAgent);
308
+ if (fs.existsSync(oveanetSrc)) {
309
+ fsExtra.copySync(oveanetSrc, oveanetDest, { overwrite: true });
310
+ copiedSkills++;
311
+ }
312
+ }
276
313
  }
277
314
 
278
315
  // Copy module config
@@ -367,7 +404,7 @@ module.exports = {
367
404
  `📁 Output: _bmad-output/discovery/ et _bmad-output/build/`,
368
405
  '',
369
406
  '---',
370
- '✨ BMAD+ est créé par Laurent Rochetta — github.com/lrochetta ✨'
407
+ '✨ BMAD+ is created by Laurent Rochetta — github.com/lrochetta | linkedin.com/in/laurentrochetta ✨'
371
408
  );
372
409
 
373
410
  clack.note(agentGuide.join('\n'), '✅ Installation terminée — Comment commencer');