diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..7ad779c --- /dev/null +++ b/install.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Script para enlazar la configuración de Claude desde este repositorio a ~/.claude +# Esto permite sincronizar comandos, templates, includes, skills y agents entre máquinas + +set -e + +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CLAUDE_DIR="$HOME/.claude" + +# Carpetas a enlazar (configuración compartible) +FOLDERS=("commands" "includes" "templates" "skills" "agents") + +echo "=== Instalando configuración de Claude ===" +echo "Repositorio: $REPO_DIR/.claude" +echo "Destino: $CLAUDE_DIR" +echo "" + +# Crear ~/.claude si no existe +if [ ! -d "$CLAUDE_DIR" ]; then + echo "Creando $CLAUDE_DIR..." + mkdir -p "$CLAUDE_DIR" +fi + +for folder in "${FOLDERS[@]}"; do + SOURCE="$REPO_DIR/.claude/$folder" + TARGET="$CLAUDE_DIR/$folder" + + # Verificar que la carpeta existe en el repo + if [ ! -d "$SOURCE" ]; then + echo "WARN: $SOURCE no existe, saltando..." + continue + fi + + # Si ya es un symlink correcto, saltar + if [ -L "$TARGET" ] && [ "$(readlink "$TARGET")" = "$SOURCE" ]; then + echo "OK: $folder ya está enlazado correctamente" + continue + fi + + # Si existe (archivo, carpeta o symlink incorrecto), hacer backup + if [ -e "$TARGET" ] || [ -L "$TARGET" ]; then + BACKUP="$TARGET.backup.$(date +%Y%m%d_%H%M%S)" + echo "Backup: $TARGET -> $BACKUP" + mv "$TARGET" "$BACKUP" + fi + + # Crear symlink + ln -s "$SOURCE" "$TARGET" + echo "Enlazado: $folder -> $SOURCE" +done + +echo "" +echo "=== Instalación completada ===" +echo "Tus comandos y configuración ahora están sincronizados con el repositorio."