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.
- package/README.md +2 -1
- package/oveanet-pack/animated-website/DEPLOYMENT.md +104 -0
- package/oveanet-pack/animated-website/README.md +63 -0
- package/oveanet-pack/animated-website/agent/animated-website-agent.md +325 -0
- package/oveanet-pack/animated-website/agent.yaml +63 -0
- package/oveanet-pack/animated-website/templates/animated-website-workflow.md +55 -0
- package/oveanet-pack/seo-audit-360/DEPLOYMENT.md +115 -0
- package/oveanet-pack/seo-audit-360/README.md +60 -0
- package/oveanet-pack/seo-audit-360/agent/seo-geo-360-auditor.md +441 -0
- package/oveanet-pack/seo-audit-360/agent.yaml +71 -0
- package/oveanet-pack/seo-audit-360/checklist.md +140 -0
- package/oveanet-pack/seo-audit-360/pagespeed-playbook.md +320 -0
- package/oveanet-pack/seo-audit-360/templates/llms.txt +73 -0
- package/oveanet-pack/seo-audit-360/templates/robots.txt +38 -0
- package/oveanet-pack/seo-audit-360/templates/schema-templates.json +116 -0
- package/oveanet-pack/universal-backup/DEPLOYMENT.md +80 -0
- package/oveanet-pack/universal-backup/README.md +58 -0
- package/oveanet-pack/universal-backup/agent/backup-agent.md +71 -0
- package/oveanet-pack/universal-backup/agent.yaml +45 -0
- package/oveanet-pack/universal-backup/templates/backup-workflow.md +51 -0
- package/package.json +2 -1
- package/tools/cli/commands/install.js +38 -1
|
@@ -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.
|
|
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+
|
|
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');
|