#!/bin/bash ############################################################################## # INSTALL.sh - Orto Skills Suite Installation # # Copia l'intera cartella orto-suite/ in ~/.openclaw/skills/ # # Usage: # ./INSTALL.sh # # Output: # - Copia orto-suite/ → ~/.openclaw/skills/orto-suite/ # - Verifica 9 skill + 8 references # - Symlink references risolti automaticamente # - Ready for use ############################################################################## set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SOURCE_DIR="$SCRIPT_DIR/orto-suite" TARGET_DIR="$HOME/.openclaw/skills/orto-suite" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log() { echo -e "${BLUE}[$(date +'%H:%M:%S')]${NC} $1" } error() { echo -e "${RED}[ERROR]${NC} $1" >&2 } success() { echo -e "${GREEN}[✓]${NC} $1" } warning() { echo -e "${YELLOW}[⚠]${NC} $1" } # ============================================================================ log "=== Orto Skills Suite Installation ===" # Verifica source directory esiste if [ ! -d "$SOURCE_DIR" ]; then error "Source directory not found: $SOURCE_DIR" exit 1 fi success "Source directory found: $SOURCE_DIR" # Crea target directory se non esiste mkdir -p "$(dirname "$TARGET_DIR")" # Se target esiste già, chiedi conferma if [ -d "$TARGET_DIR" ]; then warning "Target directory already exists: $TARGET_DIR" read -p "Overwrite? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then log "Backing up existing installation..." BACKUP_DIR="$TARGET_DIR.backup.$(date +%s)" mv "$TARGET_DIR" "$BACKUP_DIR" success "Backup saved: $BACKUP_DIR" else log "Installation cancelled" exit 0 fi fi # Copia orto-suite log "Copying orto-suite to $TARGET_DIR..." cp -r "$SOURCE_DIR" "$TARGET_DIR" success "Copied successfully" # Verifica installation log "Verifying installation..." # Count skill directories SKILL_COUNT=$(find "$TARGET_DIR" -maxdepth 1 -name "orto-*" -type d | wc -l) log "Found $SKILL_COUNT skill directories" if [ "$SKILL_COUNT" -lt 9 ]; then error "Expected 9 skills, found $SKILL_COUNT" exit 1 fi # Verifica SKILL.md files SKILL_MD_COUNT=$(find "$TARGET_DIR" -maxdepth 2 -name "SKILL.md" -type f | wc -l) log "Found $SKILL_MD_COUNT SKILL.md files" if [ "$SKILL_MD_COUNT" -lt 9 ]; then error "Expected 9 SKILL.md files, found $SKILL_MD_COUNT" exit 1 fi # Verifica references if [ ! -d "$TARGET_DIR/references" ]; then error "References directory not found" exit 1 fi REF_COUNT=$(find "$TARGET_DIR/references" -maxdepth 1 -name "*.md" -type f | wc -l) log "Found $REF_COUNT reference files" success "Installation verified" # ============================================================================ echo "" echo "╔════════════════════════════════════════════════════════════╗" echo "║ ✅ INSTALLATION COMPLETED SUCCESSFULLY ║" echo "╚════════════════════════════════════════════════════════════╝" success "Skills installed: $SKILL_COUNT" success "Installation directory: $TARGET_DIR" echo "" echo "=== INSTALLED SKILLS ===" find "$TARGET_DIR" -maxdepth 2 -name "SKILL.md" -type f | sort | while read skillmd; do skilldir=$(dirname "$skillmd") skillname=$(basename "$skilldir") echo " ✓ $skillname" done echo "" echo "=== NEXT STEPS ===" echo "1. Create your first garden:" echo " openclaw invoke $TARGET_DIR/orto-init/SKILL.md --id orto_mytown_001 ..." echo "" echo "2. Run onboarding:" echo " openclaw invoke $TARGET_DIR/orto-onboarding/SKILL.md --orto-id orto_mytown_001" echo "" echo "3. Generate full plan:" echo " openclaw invoke $TARGET_DIR/orto-orchestratore/SKILL.md --orto-id orto_mytown_001" exit 0