mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-06-28 01:53:40 +02:00
fix(bmad-init): symlinker .claude/skills + commands séparément (pas .claude entier)
Bug: bmad-init-project.sh symlinkait .claude/ EN ENTIER. Or Claude Code a besoin
d'un .claude réel (settings.local.json, worktrees/) — le symlink échouait donc
silencieusement ("existe déjà, ignoré"), et les skills BMAD n'arrivaient JAMAIS
côté Claude Code. Conséquence: BMAD 6.9 + customisations .toml inactifs dans les
projets via Claude Code (seul Codex/.agents fonctionnait, lui étant symlinkable).
Fix:
- .agents/ reste un symlink complet (Codex n'y écrit pas)
- .claude/ reste un dossier RÉEL ; on symlinke seulement .claude/skills et
.claude/commands vers la base centralisée → à jour sans écraser les fichiers
propres à Claude Code
- ajout de custom/ + scripts/ aux modules _bmad symlinkés (resolver de customisation)
Validé: resolve_customization.py résout désormais les overrides (.toml gates MCP +
capitalisation) depuis .claude/skills dans RL799_V2 et app-alexandrie.
This commit is contained in:
@@ -38,7 +38,7 @@ echo "→ Initialisation BMAD pour : $PROJECT_ROOT"
|
||||
|
||||
# ─── Modules à symlinkter dans _bmad/ ────────────────────────────────────────
|
||||
|
||||
BMAD_MODULES=(core bmm cis tea _config)
|
||||
BMAD_MODULES=(core bmm cis tea _config custom scripts)
|
||||
|
||||
mkdir -p "$PROJECT_ROOT/_bmad"
|
||||
|
||||
@@ -78,24 +78,46 @@ else
|
||||
echo " ✓ _memory initialisé depuis la base"
|
||||
fi
|
||||
|
||||
# ─── .agents/ et .claude/ : symlinks à la racine du projet ──────────────────
|
||||
# ─── .agents/ : symlink complet (Codex n'écrit pas dans ce dossier) ─────────
|
||||
|
||||
for dir in .agents .claude; do
|
||||
TARGET="$PROJECT_ROOT/$dir"
|
||||
SOURCE="$BMAD_BASE/$dir"
|
||||
AGENTS_TARGET="$PROJECT_ROOT/.agents"
|
||||
AGENTS_SOURCE="$BMAD_BASE/.agents"
|
||||
|
||||
if [[ ! -d "$AGENTS_SOURCE" ]]; then
|
||||
echo " ⚠ '.agents' absent de la base, ignoré."
|
||||
elif [[ -L "$AGENTS_TARGET" ]]; then
|
||||
echo " ~ symlink déjà présent : .agents"
|
||||
elif [[ -d "$AGENTS_TARGET" ]]; then
|
||||
echo " ⚠ '.agents' existe déjà (dossier réel), ignoré. Merge manuel requis."
|
||||
else
|
||||
ln -s "$AGENTS_SOURCE" "$AGENTS_TARGET"
|
||||
echo " ✓ symlink créé : .agents → $AGENTS_SOURCE"
|
||||
fi
|
||||
|
||||
# ─── .claude/ : dossier RÉEL (Claude Code y écrit settings.local, worktrees) ──
|
||||
# On ne symlinke PAS .claude en entier (le symlink échouerait car le dossier réel
|
||||
# est nécessaire). On symlinke uniquement les sous-dossiers fournis par BMAD
|
||||
# (skills/, commands/) pour qu'ils restent centralisés et à jour, sans toucher
|
||||
# aux fichiers propres à Claude Code.
|
||||
|
||||
mkdir -p "$PROJECT_ROOT/.claude"
|
||||
|
||||
for sub in skills commands; do
|
||||
TARGET="$PROJECT_ROOT/.claude/$sub"
|
||||
SOURCE="$BMAD_BASE/.claude/$sub"
|
||||
|
||||
if [[ ! -d "$SOURCE" ]]; then
|
||||
echo " ⚠ '$dir' absent de la base, ignoré."
|
||||
echo " ⚠ '.claude/$sub' absent de la base, ignoré."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -L "$TARGET" ]]; then
|
||||
echo " ~ symlink déjà présent : $dir"
|
||||
echo " ~ symlink déjà présent : .claude/$sub"
|
||||
elif [[ -d "$TARGET" ]]; then
|
||||
echo " ⚠ '$dir' existe déjà (dossier réel), ignoré. Merge manuel requis."
|
||||
echo " ⚠ '.claude/$sub' existe déjà (dossier réel), non écrasé. Remplacer manuellement par un symlink si voulu."
|
||||
else
|
||||
ln -s "$SOURCE" "$TARGET"
|
||||
echo " ✓ symlink créé : $dir → $SOURCE"
|
||||
echo " ✓ symlink créé : .claude/$sub → $SOURCE"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -121,7 +143,9 @@ for module in "${BMAD_MODULES[@]}"; do
|
||||
done
|
||||
echo " │ └── _memory/ (local)"
|
||||
echo " ├── .agents/ → symlink (centralisé)"
|
||||
echo " ├── .claude/ → symlink (centralisé)"
|
||||
echo " ├── .claude/ (local — Claude Code y écrit)"
|
||||
echo " │ ├── skills/ → symlink (centralisé)"
|
||||
echo " │ └── commands/ → symlink (centralisé)"
|
||||
echo " └── _bmad-output/ (local)"
|
||||
echo ""
|
||||
echo "✓ Prêt."
|
||||
|
||||
Reference in New Issue
Block a user