Files
SuperCharged-Claude-Code-Up…/supercharge.sh
uroma 1caa7002ed Add optional Claude Code installation with Z.AI API support
Features:
- New install-claude-code.sh script for automated Claude Code installation
- Z.AI API integration (GLM models: glm-4.5-air, glm-4.7)
- Automated and manual installation modes
- Supercharge.sh now offers to install Claude Code if not present
- Updated README with comprehensive Claude Code installation guide

Z.AI Models:
- glm-4.5-air: Fast, efficient model (Haiku class)
- glm-4.7: Powerful model (Sonnet/Opus class)

Documentation: https://docs.z.ai/devpack/tool/claude
2026-01-22 15:46:05 +00:00

491 lines
17 KiB
Bash
Executable File

#!/bin/bash
################################################################################
# SuperCharge Claude Code - Ultimate Installation Script
################################################################################
# This script transforms any Claude Code installation into a supercharged
# version with all customizations, skills, agents, plugins, and integrations.
#
# Features:
# - 30+ Custom Skills (cognitive, development, UI/UX, brainstorming)
# - RalphLoop autonomous agent integration
# - Multi-AI consultation (Qwen integration)
# - Agent management system with sync capabilities
# - Custom hooks for session management
# - MCP servers integration
# - Plugin marketplace setup
# - Optional Claude Code installation with Z.AI API support
#
# Usage: ./supercharge.sh [options]
# --skip-deps Skip dependency installation
# --dev-mode Development mode (verbose output)
#
# For Claude Code installation: ./install-claude-code.sh [options]
# --auto Automatic installation with API key prompt (default)
# --manual Show manual installation steps only
# --skip-install Skip Claude Code installation, just configure API
################################################################################
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# Script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Claude config directory
CLAUDE_DIR="${HOME}/.claude"
# Backup directory
BACKUP_DIR="${HOME}/.claude-backup-$(date +%Y%m%d_%H%M%S)"
# Flags
SKIP_DEPS=false
DEV_MODE=false
################################################################################
# Helper Functions
################################################################################
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
log_step() {
echo -e "${CYAN}${BOLD}==>${NC} ${BOLD}$1${NC}"
}
print_banner() {
echo -e "${CYAN}${BOLD}"
cat << "EOF"
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ ███████╗██╗ █████╗ ██████╗ ║
║ ██╔════╝██║ ██╔══██╗██╔════╝ ║
║ ███████╗██║ ███████║██║ ███╗ ║
║ ╚════██║██║ ██╔══██║██║ ██║ ║
║ ███████║███████╗██║ ██║╚██████╔╝ ║
║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ║
║ ║
║ ███████╗██╗ ██╗███████╗███╗ ██╗ ║
║ ██╔════╝╚██╗██╔╝██╔════╝████╗ ██║ ║
║ █████╗ ╚███╔╝ █████╗ ██╔██╗ ██║ ║
║ ██╔══╝ ██╔██╗ ██╔══╝ ██║╚██╗██║ ║
║ ███████╗██║██╗██║███████╗██║ ╚████║ ║
║ ╚══════╝╚═╝╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ ║
║ ║
║ Ultimate Installation Script ║
║ ║
╚═══════════════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"
}
check_claude_code() {
log_step "Checking for Claude Code installation..."
if ! command -v claude &> /dev/null; then
log_warn "Claude Code CLI not found!"
echo ""
echo -e "${YELLOW}Claude Code is required to use these customizations.${NC}"
echo ""
echo "Options:"
echo " 1. Install Claude Code with Z.AI API support (recommended)"
echo " 2. Install manually later"
echo " 3. Exit to install first"
echo ""
read -p "Choose option [1/2/3]: " -n 1 -r choice
echo ""
case $choice in
1)
log_info "Running Claude Code installer..."
bash "$SCRIPT_DIR/install-claude-code.sh" --auto
if ! command -v claude &> /dev/null; then
log_error "Claude Code installation failed. Please install manually."
exit 1
fi
log_success "Claude Code installed successfully"
;;
2)
log_warn "Skipping Claude Code installation"
log_info "You can install it later with: ./install-claude-code.sh"
return 1
;;
3)
log_info "Please install Claude Code first:"
echo " npm install -g @anthropic-ai/claude-code"
echo " Or run: ./install-claude-code.sh"
exit 1
;;
*)
log_error "Invalid choice"
exit 1
;;
esac
fi
log_success "Claude Code found: $(claude --version 2>/dev/null || echo 'installed')"
return 0
}
backup_existing_config() {
log_step "Backing up existing configuration..."
if [ -d "$CLAUDE_DIR" ]; then
mkdir -p "$BACKUP_DIR"
cp -r "$CLAUDE_DIR" "$BACKUP_DIR/"
log_success "Backup created at: $BACKUP_DIR"
else
log_info "No existing configuration to backup"
fi
}
install_dependencies() {
if [ "$SKIP_DEPS" = true ]; then
log_warn "Skipping dependency installation"
return
fi
log_step "Checking and installing dependencies..."
# Check Python 3
if ! command -v python3 &> /dev/null; then
log_warn "Python 3 not found. Some features may not work."
else
log_success "Python 3 found: $(python3 --version)"
fi
# Check Node.js
if ! command -v node &> /dev/null; then
log_warn "Node.js not found. Some features may not work."
else
log_success "Node.js found: $(node --version)"
fi
# Check Git
if ! command -v git &> /dev/null; then
log_error "Git not found. Please install Git first."
exit 1
else
log_success "Git found: $(git --version)"
fi
# Install Ralph Orchestrator if not present
if ! command -v ralph &> /dev/null; then
log_info "Installing Ralph Orchestrator..."
if command -v pip3 &> /dev/null; then
pip3 install ralph-orchestrator 2>/dev/null || log_warn "Failed to install Ralph Orchestrator"
else
log_warn "pip3 not found. Skipping Ralph Orchestrator installation."
fi
else
log_success "Ralph Orchestrator found"
fi
}
install_skills() {
log_step "Installing custom skills..."
mkdir -p "$CLAUDE_DIR/skills"
# Copy all skills
if [ -d "$SCRIPT_DIR/skills" ]; then
cp -r "$SCRIPT_DIR/skills/"* "$CLAUDE_DIR/skills/" 2>/dev/null || true
local skill_count=$(find "$SCRIPT_DIR/skills" -name "SKILL.md" | wc -l)
log_success "Installed $skill_count custom skills"
else
log_warn "Skills directory not found"
fi
}
install_agents() {
log_step "Installing agent management system..."
mkdir -p "$CLAUDE_DIR/agents"
if [ -d "$SCRIPT_DIR/agents" ]; then
cp -r "$SCRIPT_DIR/agents/"* "$CLAUDE_DIR/agents/" 2>/dev/null || true
log_success "Agent management system installed"
# Make scripts executable
find "$CLAUDE_DIR/agents" -name "*.sh" -exec chmod +x {} \;
else
log_warn "Agents directory not found"
fi
}
install_hooks() {
log_step "Installing custom hooks..."
mkdir -p "$CLAUDE_DIR/hooks"
if [ -d "$SCRIPT_DIR/hooks" ]; then
cp -r "$SCRIPT_DIR/hooks/"* "$CLAUDE_DIR/hooks/" 2>/dev/null || true
# Make hook scripts executable
find "$CLAUDE_DIR/hooks" -name "*.sh" -exec chmod +x {} \;
log_success "Custom hooks installed"
else
log_warn "Hooks directory not found"
fi
# Install hooks.json if it doesn't exist
if [ -f "$SCRIPT_DIR/templates/hooks.json" ] && [ ! -f "$CLAUDE_DIR/hooks.json" ]; then
cp "$SCRIPT_DIR/templates/hooks.json" "$CLAUDE_DIR/hooks.json"
log_success "Hooks configuration installed"
fi
}
install_commands() {
log_step "Installing custom commands..."
mkdir -p "$CLAUDE_DIR/commands"
if [ -d "$SCRIPT_DIR/commands" ]; then
cp -r "$SCRIPT_DIR/commands/"* "$CLAUDE_DIR/commands/" 2>/dev/null || true
local cmd_count=$(ls -1 "$SCRIPT_DIR/commands" 2>/dev/null | wc -l)
log_success "Installed $cmd_count custom commands"
else
log_warn "Commands directory not found"
fi
}
install_plugins() {
log_step "Installing plugin references..."
mkdir -p "$CLAUDE_DIR/plugins"
if [ -d "$SCRIPT_DIR/plugins" ]; then
cp -r "$SCRIPT_DIR/plugins/"* "$CLAUDE_DIR/plugins/" 2>/dev/null || true
local plugin_count=$(find "$SCRIPT_DIR/plugins" -type d -mindepth 1 | wc -l)
log_success "Installed $plugin_count plugin references"
else
log_warn "Plugins directory not found"
fi
}
install_binaries() {
log_step "Installing custom binaries..."
mkdir -p "$HOME/.local/bin"
if [ -f "$SCRIPT_DIR/bin/ralphloop" ]; then
cp "$SCRIPT_DIR/bin/ralphloop" "$HOME/.local/bin/"
chmod +x "$HOME/.local/bin/ralphloop"
# Add to PATH if not already there
if ! echo "$PATH" | grep -q "$HOME/.local/bin"; then
echo "" >> "$HOME/.bashrc"
echo "# SuperCharge Claude Code - Add local bin to PATH" >> "$HOME/.bashrc"
echo "export PATH=\"\$HOME/.local/bin:\$PATH\"" >> "$HOME/.bashrc"
log_info "Added ~/.local/bin to PATH in .bashrc"
fi
log_success "RalphLoop wrapper installed"
else
log_warn "RalphLoop binary not found"
fi
}
install_scripts() {
log_step "Installing utility scripts..."
mkdir -p "$CLAUDE_DIR/scripts"
if [ -d "$SCRIPT_DIR/scripts" ]; then
cp -r "$SCRIPT_DIR/scripts/"* "$CLAUDE_DIR/scripts/" 2>/dev/null || true
# Make scripts executable
find "$CLAUDE_DIR/scripts" -name "*.sh" -exec chmod +x {} \;
log_success "Utility scripts installed"
else
log_warn "Scripts directory not found"
fi
}
install_config_templates() {
log_step "Installing configuration templates..."
if [ -d "$SCRIPT_DIR/templates" ]; then
# Install config.json if not exists
if [ -f "$SCRIPT_DIR/templates/config.json" ] && [ ! -f "$CLAUDE_DIR/config.json" ]; then
cp "$SCRIPT_DIR/templates/config.json" "$CLAUDE_DIR/config.json"
log_success "config.json installed"
fi
# Merge settings.json
if [ -f "$SCRIPT_DIR/templates/settings.json" ]; then
if [ -f "$CLAUDE_DIR/settings.json" ]; then
# Merge existing settings with template
local temp_file=$(mktemp)
python3 -c "
import json
import sys
try:
with open('$CLAUDE_DIR/settings.json', 'r') as f:
existing = json.load(f)
except:
existing = {}
try:
with open('$SCRIPT_DIR/templates/settings.json', 'r') as f:
template = json.load(f)
except:
template = {}
# Merge: template values take precedence for keys that exist in template
for key in template:
if key != 'permissions': # Don't override permissions
existing[key] = template[key]
with open('$temp_file', 'w') as f:
json.dump(existing, f, indent=2)
" 2>/dev/null || cp "$SCRIPT_DIR/templates/settings.json" "$temp_file"
mv "$temp_file" "$CLAUDE_DIR/settings.json"
else
cp "$SCRIPT_DIR/templates/settings.json" "$CLAUDE_DIR/settings.json"
fi
log_success "settings.json configured"
fi
# Install settings.local.json if not exists
if [ -f "$SCRIPT_DIR/templates/settings.local.json" ] && [ ! -f "$CLAUDE_DIR/settings.local.json" ]; then
cp "$SCRIPT_DIR/templates/settings.local.json" "$CLAUDE_DIR/settings.local.json"
log_success "settings.local.json installed"
fi
fi
}
sync_agents() {
log_step "Syncing agents from repository..."
if [ -f "$CLAUDE_DIR/scripts/sync-agents.sh" ]; then
bash "$CLAUDE_DIR/scripts/sync-agents.sh" 2>/dev/null || log_warn "Agent sync completed with warnings"
log_success "Agent sync completed"
else
log_warn "sync-agents.sh not found"
fi
}
print_summary() {
echo ""
echo -e "${GREEN}${BOLD}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}${BOLD}║ INSTALLATION COMPLETE! ║${NC}"
echo -e "${GREEN}${BOLD}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${BOLD}Your Claude Code installation is now SUPERCHARGED!${NC}"
echo ""
echo -e "${CYAN}Installed Features:${NC}"
echo -e " ${GREEN}${NC} 30+ Custom Skills (cognitive, development, UI/UX)"
echo -e " ${GREEN}${NC} RalphLoop Autonomous Agent Integration"
echo -e " ${GREEN}${NC} Multi-AI Consultation (Qwen)"
echo -e " ${GREEN}${NC} Agent Management System"
echo -e " ${GREEN}${NC} Custom Hooks & Commands"
echo -e " ${GREEN}${NC} Plugin Marketplace Setup"
echo ""
echo -e "${CYAN}New Commands Available:${NC}"
echo -e " ${YELLOW}/ralph${NC} - Autonomous \"Tackle Until Solved\" agent"
echo -e " ${YELLOW}/brainstorm${NC} - Multi-AI brainstorming session"
echo -e " ${YELLOW}/write-plan${NC} - Create implementation plans"
echo -e " ${YELLOW}/execute-plan${NC} - Execute written plans"
echo ""
echo -e "${CYAN}Quick Start:${NC}"
echo -e " 1. Restart your terminal or run: ${YELLOW}source ~/.bashrc${NC}"
echo -e " 2. Run Claude Code: ${YELLOW}claude${NC}"
echo -e " 3. Try: ${YELLOW}/ralph \"Design a microservices architecture\"${NC}"
echo ""
echo -e "${CYAN}Configuration:${NC}"
echo -e " Config dir: ${YELLOW}$CLAUDE_DIR${NC}"
echo -e " Backup: ${YELLOW}$BACKUP_DIR${NC}"
echo ""
echo -e "${CYAN}Optional Configuration:${NC}"
echo -e " ${YELLOW}export RALPH_AGENT=claude${NC} # Set Ralph agent"
echo -e " ${YELLOW}export RALPH_MAX_ITERATIONS=100${NC} # Set max iterations"
echo -e " ${YELLOW}export QWEN_CONSULT_MODE=always${NC} # Qwen consultation mode"
echo ""
echo -e "${GREEN}${BOLD}Enjoy your supercharged Claude Code experience!${NC}"
echo ""
}
################################################################################
# Main Installation
################################################################################
main() {
print_banner
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--skip-deps)
SKIP_DEPS=true
shift
;;
--dev-mode)
DEV_MODE=true
set -x
shift
;;
-h|--help)
echo "Usage: $0 [options]"
echo " --skip-deps Skip dependency installation"
echo " --dev-mode Development mode (verbose output)"
exit 0
;;
*)
log_error "Unknown option: $1"
exit 1
;;
esac
done
# Run installation steps
if ! check_claude_code; then
log_info "Customizations installed. Install Claude Code to use them."
echo ""
echo -e "${CYAN}Install Claude Code:${NC}"
echo " npm install -g @anthropic-ai/claude-code"
echo " Or run: ./install-claude-code.sh"
echo ""
exit 0
fi
backup_existing_config
install_dependencies
install_skills
install_agents
install_hooks
install_commands
install_plugins
install_binaries
install_scripts
install_config_templates
sync_agents
print_summary
}
# Run main function
main "$@"