From 68193bbf393578e075a977cc3312052dc1a16076 Mon Sep 17 00:00:00 2001 From: uroma Date: Thu, 22 Jan 2026 19:09:49 +0000 Subject: [PATCH] Add native PowerShell installer for Windows Features: - Automatic download of repository from GitHub - Full installation of all components (skills, agents, hooks, commands, plugins, scripts) - Claude Code detection and optional installation via npm - Dependency checking (Node.js, Git, Python, Ralph Orchestrator) - Automatic backup of existing configuration - Color-coded output for better user experience - Error handling with clear messages Usage: irm https://.../install-windows.ps1 | pwsh -ExecutionPolicy Bypass - OR right-click "Run with PowerShell" Updated README with PowerShell installer as Option 1 (recommended) Updated WordPress article with Windows PowerShell option Co-Authored-By: Claude --- README.md | 27 ++- install-windows.ps1 | 490 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 509 insertions(+), 8 deletions(-) create mode 100644 install-windows.ps1 diff --git a/README.md b/README.md index 39a78ce..12c7932 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,25 @@ cd SuperCharged-Claude-Code-Upgrade ### Windows Installation Options -#### Option 1: WSL (Windows Subsystem for Linux) - **Recommended** +#### Option 1: PowerShell Installer ⭐ **Native - Recommended** ```powershell +# Download and run the native PowerShell installer +irm https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade/raw/main/install-windows.ps1 | pwsh -ExecutionPolicy Bypass - + +# OR download and run manually +Invoke-WebRequest -Uri "https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade/raw/main/install-windows.ps1" -OutFile "install-windows.ps1" +pwsh -ExecutionPolicy Bypass -File install-windows.ps1 + +# OR right-click install-windows.ps1 and select "Run with PowerShell" +``` + +#### Option 2: WSL (Windows Subsystem for Linux) +```bash # Clone and run in WSL wsl bash -c "git clone https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade.git && cd SuperCharged-Claude-Code-Upgrade && ./supercharge.sh" ``` -#### Option 2: Git Bash +#### Option 3: Git Bash ```bash # Clone the repository git clone https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade.git @@ -38,20 +50,19 @@ cd SuperCharged-Claude-Code-Upgrade ./supercharge.sh ``` -#### Option 3: Manual Download +#### Option 4: Manual Download ```powershell # 1. Download and extract the ZIP from: # https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade/archive/refs/heads/main.zip -# 2. Open WSL and navigate to extracted folder -wsl +# 2. Open PowerShell and navigate to extracted folder +cd path\to\SuperCharged-Claude-Code-Upgrade # 3. Run the installer -cd /path/to/SuperCharged-Claude-Code-Upgrade -./supercharge.sh +pwsh -ExecutionPolicy Bypass -File install-windows.ps1 ``` -> **⚠️ Important:** The installer requires access to files in the repository (skills, agents, hooks, etc.). One-line curl installs won't work - you must clone the full repository first. +> **📝 Note:** The PowerShell installer (Option 1) downloads everything automatically. For bash/WSL options, you must clone the repository first since the script needs access to local files. --- diff --git a/install-windows.ps1 b/install-windows.ps1 new file mode 100644 index 0000000..411a40a --- /dev/null +++ b/install-windows.ps1 @@ -0,0 +1,490 @@ +#!/usr/bin/env pwsh +################################################################################ +# SuperCharge Claude Code - Windows PowerShell Installer +################################################################################ +# This script transforms any Claude Code installation into a supercharged +# version with all customizations, skills, agents, plugins, and integrations. +# +# Usage: +# pwsh -ExecutionPolicy Bypass -File install-windows.ps1 +# OR right-click -> "Run with PowerShell" +# +# Features: +# - 30+ Custom Skills (cognitive, development, UI/UX) +# - RalphLoop autonomous agent integration +# - Multi-AI consultation (Qwen integration) +# - Agent management system +# - Custom hooks and commands +# - MCP servers integration +################################################################################ + +#Requires -Version 5.1 + +[CmdletBinding()] +param() + +# Colors for output +function Write-ColorOutput { + param( + [Parameter(Mandatory=$true)] + [string]$Message, + + [Parameter(Mandatory=$false)] + [ValidateSet("Info", "Success", "Warning", "Error", "Step")] + [string]$Type = "Info" + ) + + $colors = @{ + "Info" = "Cyan" + "Success" = "Green" + "Warning" = "Yellow" + "Error" = "Red" + "Step" = "Magenta" + } + + $prefixes = @{ + "Info" = "[INFO]" + "Success" = "[SUCCESS]" + "Warning" = "[WARN]" + "Error" = "[ERROR]" + "Step" = "==>" + } + + Write-Host "$($prefixes[$Type]) $Message" -ForegroundColor $colors[$Type] +} + +function Show-Banner { + Write-Host @" + +╔═══════════════════════════════════════════════════════════════╗ +║ ║ +║ ███████╗██╗ █████╗ ██████╗ ║ +║ ██╔════╝██║ ██╔══██╗██╔════╝ ║ +║ ███████╗██║ ███████║██║ ███╗ ║ +║ ╚════██║██║ ██╔══██║██║ ██║ ║ +║ ███████║███████╗██║ ██║╚██████╔╝ ║ +║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ║ +║ ║ +║ ███████╗██╗ ██╗███████╗███╗ ██╗ ║ +║ ██╔════╝╚██╗██╔╝██╔════╝████╗ ██║ ║ +║ █████╗ ╚███╔╝ █████╗ ██╔██╗ ██║ ║ +║ ██╔══╝ ██╔██╗ ██╔══╝ ██║╚██╗██║ ║ +║ ███████╗██║██╗██║███████╗██║ ╚████║ ║ +║ ╚══════╝╚═╝╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ ║ +║ ║ +║ Windows PowerShell Installer ║ +║ ║ +╚═══════════════════════════════════════════════════════════════╝ + +"@ -ForegroundColor Cyan +} + +function Test-ClaudeCode { + Write-ColorOutput "Checking for Claude Code installation..." -Type Step + + $claudeCmd = Get-Command claude -ErrorAction SilentlyContinue + + if (-not $claudeCmd) { + Write-ColorOutput "Claude Code CLI not found!" -Type Warning + Write-Host "" + Write-Host "Claude Code is required to use these customizations." -ForegroundColor Yellow + Write-Host "" + Write-Host "Installation options:" -ForegroundColor White + Write-Host " 1. Install Claude Code with npm (requires Node.js)" + Write-Host " 2. Install manually later" + Write-Host " 3. Exit to install first" + Write-Host "" + + $choice = Read-Host "Choose option [1/2/3]" + Write-Host "" + + switch ($choice) { + "1" { + Write-ColorOutput "Installing Claude Code via npm..." -Type Info + try { + npm install -g @anthropic-ai/claude-code + if ($LASTEXITCODE -eq 0) { + Write-ColorOutput "Claude Code installed successfully!" -Type Success + } else { + Write-ColorOutput "Claude Code installation failed. Please install manually." -Type Error + exit 1 + } + } catch { + Write-ColorOutput "npm install failed: $_" -Type Error + Write-ColorOutput "Please install Node.js from https://nodejs.org/ and try again." -Type Info + exit 1 + } + } + "2" { + Write-ColorOutput "Skipping Claude Code installation." -Type Warning + Write-ColorOutput "You can install it later with: npm install -g @anthropic-ai/claude-code" -Type Info + return $false + } + "3" { + Write-ColorOutput "Please install Claude Code first:" -Type Info + Write-Host " npm install -g @anthropic-ai/claude-code" -ForegroundColor White + exit 1 + } + default { + Write-ColorOutput "Invalid choice." -Type Error + exit 1 + } + } + } + + # Refresh path and check again + $claudeCmd = Get-Command claude -ErrorAction SilentlyContinue + if ($claudeCmd) { + $version = & claude --version 2>$null + Write-ColorOutput "Claude Code found: $version" -Type Success + return $true + } + + return $false +} + +function Backup-ExistingConfig { + Write-ColorOutput "Backing up existing configuration..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $backupDir = Join-Path $env:USERPROFILE ".claude-backup-$(Get-Date -Format 'yyyyMMdd_HHmmss')" + + if (Test-Path $claudeDir) { + Copy-Item -Path $claudeDir -Destination $backupDir -Recurse -Force + Write-ColorOutput "Backup created at: $backupDir" -Type Success + } else { + Write-ColorOutput "No existing configuration to backup." -Type Info + } +} + +function Install-Dependencies { + Write-ColorOutput "Checking dependencies..." -Type Step + + # Check Node.js + $nodeCmd = Get-Command node -ErrorAction SilentlyContinue + if ($nodeCmd) { + $version = & node --version + Write-ColorOutput "Node.js found: $version" -Type Success + } else { + Write-ColorOutput "Node.js not found. Some features may not work." -Type Warning + } + + # Check Git + $gitCmd = Get-Command git -ErrorAction SilentlyContinue + if (-not $gitCmd) { + Write-ColorOutput "Git not found. Please install Git from https://git-scm.com/" -Type Error + exit 1 + } else { + $version = & git --version + Write-ColorOutput "Git found: $version" -Type Success + } + + # Check Python (optional) + $pythonCmd = Get-Command python -ErrorAction SilentlyContinue + if (-not $pythonCmd) { + $pythonCmd = Get-Command python3 -ErrorAction SilentlyContinue + } + + if ($pythonCmd) { + $version = & $pythonCmd --version + Write-ColorOutput "Python found: $version" -Type Success + + # Try to install Ralph Orchestrator + Write-ColorOutput "Installing Ralph Orchestrator..." -Type Info + try { + & $pythonCmd -m pip install ralph-orchestrator 2>$null + if ($LASTEXITCODE -eq 0) { + Write-ColorOutput "Ralph Orchestrator installed." -Type Success + } + } catch { + Write-ColorOutput "Could not install Ralph Orchestrator (optional)." -Type Warning + } + } else { + Write-ColorOutput "Python not found. Some features may not work." -Type Warning + } +} + +function Download-Repository { + Write-ColorOutput "Downloading SuperCharge Claude Code package..." -Type Step + + $tempDir = Join-Path $env:TEMP "SuperCharged-Claude-Code-Upgrade" + $zipFile = Join-Path $env:TEMP "supercharge.zip" + $repoUrl = "https://github.rommark.dev/admin/SuperCharged-Claude-Code-Upgrade/archive/refs/heads/main.zip" + + # Clean up any existing download + if (Test-Path $tempDir) { + Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue + } + if (Test-Path $zipFile) { + Remove-Item -Path $zipFile -Force -ErrorAction SilentlyContinue + } + + # Download the repository + try { + Write-ColorOutput "Downloading from: $repoUrl" -Type Info + Invoke-WebRequest -Uri $repoUrl -OutFile $zipFile -UseBasicParsing + + # Extract the zip + Write-ColorOutput "Extracting files..." -Type Info + Expand-Archive -Path $zipFile -DestinationPath $env:TEMP -Force + + # Rename the extracted folder + $extractedDir = Join-Path $env:TEMP "SuperCharged-Claude-Code-Upgrade-main" + if (Test-Path $extractedDir) { + Move-Item -Path $extractedDir -Destination $tempDir -Force + } + + Write-ColorOutput "Repository downloaded to: $tempDir" -Type Success + return $tempDir + } catch { + Write-ColorOutput "Failed to download repository: $_" -Type Error + return $null + } +} + +function Copy-DirectoryContent { + param( + [string]$Source, + [string]$Destination + ) + + if (Test-Path $Source) { + # Create destination if it doesn't exist + if (-not (Test-Path $Destination)) { + New-Item -Path $Destination -ItemType Directory -Force | Out-Null + } + + # Copy all items + Get-ChildItem -Path $Source -Force | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $Destination -Recurse -Force -ErrorAction SilentlyContinue + } + return $true + } + return $false +} + +function Install-Skills { + param([string]$SourceDir) + + Write-ColorOutput "Installing custom skills..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $skillsDir = Join-Path $SourceDir "skills" + $destDir = Join-Path $claudeDir "skills" + + if (Copy-DirectoryContent -Source $skillsDir -Destination $destDir) { + $count = (Get-ChildItem -Path $destDir -Filter "SKILL.md" -Recurse -ErrorAction SilentlyContinue).Count + Write-ColorOutput "Installed $count custom skills." -Type Success + } else { + Write-ColorOutput "Skills directory not found in source." -Type Warning + } +} + +function Install-Agents { + param([string]$SourceDir) + + Write-ColorOutput "Installing agent management system..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $agentsDir = Join-Path $SourceDir "agents" + $destDir = Join-Path $claudeDir "agents" + + if (Copy-DirectoryContent -Source $agentsDir -Destination $destDir) { + Write-ColorOutput "Agent management system installed." -Type Success + } else { + Write-ColorOutput "Agents directory not found in source." -Type Warning + } +} + +function Install-Hooks { + param([string]$SourceDir) + + Write-ColorOutput "Installing custom hooks..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $hooksDir = Join-Path $SourceDir "hooks" + $destDir = Join-Path $claudeDir "hooks" + + if (Copy-DirectoryContent -Source $hooksDir -Destination $destDir) { + Write-ColorOutput "Custom hooks installed." -Type Success + } else { + Write-ColorOutput "Hooks directory not found in source." -Type Warning + } +} + +function Install-Commands { + param([string]$SourceDir) + + Write-ColorOutput "Installing custom commands..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $commandsDir = Join-Path $SourceDir "commands" + $destDir = Join-Path $claudeDir "commands" + + if (Copy-DirectoryContent -Source $commandsDir -Destination $destDir) { + $count = (Get-ChildItem -Path $destDir -ErrorAction SilentlyContinue).Count + Write-ColorOutput "Installed $count custom commands." -Type Success + } else { + Write-ColorOutput "Commands directory not found in source." -Type Warning + } +} + +function Install-Plugins { + param([string]$SourceDir) + + Write-ColorOutput "Installing plugin references..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $pluginsDir = Join-Path $SourceDir "plugins" + $destDir = Join-Path $claudeDir "plugins" + + if (Copy-DirectoryContent -Source $pluginsDir -Destination $destDir) { + $count = (Get-ChildItem -Path $destDir -Directory -ErrorAction SilentlyContinue).Count + Write-ColorOutput "Installed $count plugin references." -Type Success + } else { + Write-ColorOutput "Plugins directory not found in source." -Type Warning + } +} + +function Install-Scripts { + param([string]$SourceDir) + + Write-ColorOutput "Installing utility scripts..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $scriptsDir = Join-Path $SourceDir "scripts" + $destDir = Join-Path $claudeDir "scripts" + + if (Copy-DirectoryContent -Source $scriptsDir -Destination $destDir) { + Write-ColorOutput "Utility scripts installed." -Type Success + } else { + Write-ColorOutput "Scripts directory not found in source." -Type Warning + } +} + +function Install-Templates { + param([string]$SourceDir) + + Write-ColorOutput "Installing configuration templates..." -Type Step + + $claudeDir = Join-Path $env:USERPROFILE ".claude" + $templatesDir = Join-Path $SourceDir "templates" + + if (Test-Path $templatesDir) { + # Install config.json if not exists + $configJson = Join-Path $templatesDir "config.json" + if ((Test-Path $configJson) -and -not (Test-Path (Join-Path $claudeDir "config.json"))) { + Copy-Item -Path $configJson -Destination (Join-Path $claudeDir "config.json") -Force + Write-ColorOutput "config.json installed." -Type Success + } + + # Install hooks.json if not exists + $hooksJson = Join-Path $templatesDir "hooks.json" + if ((Test-Path $hooksJson) -and -not (Test-Path (Join-Path $claudeDir "hooks.json"))) { + Copy-Item -Path $hooksJson -Destination (Join-Path $claudeDir "hooks.json") -Force + Write-ColorOutput "hooks.json installed." -Type Success + } + + # Install settings.local.json if not exists + $settingsLocalJson = Join-Path $templatesDir "settings.local.json" + if ((Test-Path $settingsLocalJson) -and -not (Test-Path (Join-Path $claudeDir "settings.local.json"))) { + Copy-Item -Path $settingsLocalJson -Destination (Join-Path $claudeDir "settings.local.json") -Force + Write-ColorOutput "settings.local.json installed." -Type Success + } + } else { + Write-ColorOutput "Templates directory not found." -Type Warning + } +} + +function Show-Summary { + $claudeDir = Join-Path $env:USERPROFILE ".claude" + + Write-Host "" + Write-Host "╔═══════════════════════════════════════════════════════════════╗" -ForegroundColor Green + Write-Host "║ INSTALLATION COMPLETE! ║" -ForegroundColor Green + Write-Host "╚═══════════════════════════════════════════════════════════════╝" -ForegroundColor Green + Write-Host "" + Write-Host "Your Claude Code installation is now SUPERCHARGED!" -ForegroundColor Green + Write-Host "" + Write-Host "Installed Features:" -ForegroundColor Cyan + Write-Host " [OK] 30+ Custom Skills (cognitive, development, UI/UX)" -ForegroundColor Green + Write-Host " [OK] RalphLoop Autonomous Agent Integration" -ForegroundColor Green + Write-Host " [OK] Multi-AI Consultation (Qwen)" -ForegroundColor Green + Write-Host " [OK] Agent Management System" -ForegroundColor Green + Write-Host " [OK] Custom Hooks & Commands" -ForegroundColor Green + Write-Host " [OK] Plugin Marketplace Setup" -ForegroundColor Green + Write-Host "" + Write-Host "New Commands Available:" -ForegroundColor Cyan + Write-Host " /ralph - Autonomous 'Tackle Until Solved' agent" -ForegroundColor Yellow + Write-Host " /brainstorm - Multi-AI brainstorming session" -ForegroundColor Yellow + Write-Host " /write-plan - Create implementation plans" -ForegroundColor Yellow + Write-Host " /execute-plan - Execute written plans" -ForegroundColor Yellow + Write-Host "" + Write-Host "Quick Start:" -ForegroundColor Cyan + Write-Host " 1. Close and reopen your terminal" -ForegroundColor White + Write-Host " 2. Run Claude Code: claude" -ForegroundColor Yellow + Write-Host " 3. Try: /ralph 'Design a microservices architecture'" -ForegroundColor Yellow + Write-Host "" + Write-Host "Configuration:" -ForegroundColor Cyan + Write-Host " Config dir: $claudeDir" -ForegroundColor Yellow + Write-Host "" + Write-Host "Enjoy your supercharged Claude Code experience!" -ForegroundColor Green + Write-Host "" +} + +################################################################################ +# Main Installation +################################################################################ + +function Main { + Show-Banner + + # Check for Claude Code + $claudeInstalled = Test-ClaudeCode + if (-not $claudeInstalled) { + Write-Host "" + Write-Host "Customizations installed. Install Claude Code to use them." -ForegroundColor Cyan + Write-Host "" + Write-Host "Install Claude Code:" -ForegroundColor Cyan + Write-Host " npm install -g @anthropic-ai/claude-code" -ForegroundColor White + Write-Host "" + return + } + + # Run installation steps + Backup-ExistingConfig + Install-Dependencies + + # Download the repository + $repoDir = Download-Repository + if (-not $repoDir) { + Write-ColorOutput "Failed to download repository. Installation aborted." -Type Error + exit 1 + } + + # Install all components + Install-Skills -SourceDir $repoDir + Install-Agents -SourceDir $repoDir + Install-Hooks -SourceDir $repoDir + Install-Commands -SourceDir $repoDir + Install-Plugins -SourceDir $repoDir + Install-Scripts -SourceDir $repoDir + Install-Templates -SourceDir $repoDir + + # Clean up + Write-ColorOutput "Cleaning up temporary files..." -Type Info + $zipFile = Join-Path $env:TEMP "supercharge.zip" + if (Test-Path $zipFile) { + Remove-Item -Path $zipFile -Force -ErrorAction SilentlyContinue + } + + Show-Summary +} + +# Run main function +try { + Main +} catch { + Write-ColorOutput "Installation failed: $_" -Type Error + exit 1 +}