| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # claude-mods installer for Windows
- # Creates symlinks to Claude Code directories (requires admin or developer mode)
- $ErrorActionPreference = "Stop"
- $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
- $ClaudeDir = Join-Path $env:USERPROFILE ".claude"
- Write-Host "Installing claude-mods..." -ForegroundColor Cyan
- Write-Host "Source: $ScriptDir"
- Write-Host "Target: $ClaudeDir"
- Write-Host ""
- # Create Claude directories if they don't exist
- $dirs = @("commands", "skills", "agents")
- foreach ($dir in $dirs) {
- $path = Join-Path $ClaudeDir $dir
- if (!(Test-Path $path)) {
- New-Item -ItemType Directory -Path $path -Force | Out-Null
- }
- }
- # Install commands
- Write-Host "Installing commands..." -ForegroundColor Yellow
- $commandsDir = Join-Path $ScriptDir "commands"
- if (Test-Path $commandsDir) {
- Get-ChildItem -Path $commandsDir -Directory | ForEach-Object {
- $cmdName = $_.Name
- $cmdFile = Join-Path $_.FullName "$cmdName.md"
- if (Test-Path $cmdFile) {
- $target = Join-Path $ClaudeDir "commands\$cmdName.md"
- if (Test-Path $target) {
- Write-Host " Updating: $cmdName.md"
- Remove-Item $target -Force
- } else {
- Write-Host " Installing: $cmdName.md"
- }
- # Try symlink first, fall back to copy
- try {
- New-Item -ItemType SymbolicLink -Path $target -Target $cmdFile -Force | Out-Null
- } catch {
- Copy-Item $cmdFile $target -Force
- Write-Host " (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
- }
- }
- }
- }
- # Install skills
- Write-Host "Installing skills..." -ForegroundColor Yellow
- $skillsDir = Join-Path $ScriptDir "skills"
- if (Test-Path $skillsDir) {
- Get-ChildItem -Path $skillsDir -Directory | ForEach-Object {
- $skillName = $_.Name
- $target = Join-Path $ClaudeDir "skills\$skillName"
- if (Test-Path $target) {
- Write-Host " Updating: $skillName"
- Remove-Item $target -Recurse -Force
- } else {
- Write-Host " Installing: $skillName"
- }
- # Try symlink first, fall back to copy
- try {
- New-Item -ItemType SymbolicLink -Path $target -Target $_.FullName -Force | Out-Null
- } catch {
- Copy-Item $_.FullName $target -Recurse -Force
- Write-Host " (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
- }
- }
- }
- # Install agents
- Write-Host "Installing agents..." -ForegroundColor Yellow
- $agentsDir = Join-Path $ScriptDir "agents"
- if (Test-Path $agentsDir) {
- Get-ChildItem -Path $agentsDir -Filter "*.md" | ForEach-Object {
- $agentName = $_.Name
- $target = Join-Path $ClaudeDir "agents\$agentName"
- if (Test-Path $target) {
- Write-Host " Updating: $agentName"
- Remove-Item $target -Force
- } else {
- Write-Host " Installing: $agentName"
- }
- # Try symlink first, fall back to copy
- try {
- New-Item -ItemType SymbolicLink -Path $target -Target $_.FullName -Force | Out-Null
- } catch {
- Copy-Item $_.FullName $target -Force
- Write-Host " (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
- }
- }
- }
- Write-Host ""
- Write-Host "Installation complete!" -ForegroundColor Green
- Write-Host ""
- Write-Host "Installed to:"
- Write-Host " Commands: $ClaudeDir\commands\"
- Write-Host " Skills: $ClaudeDir\skills\"
- Write-Host " Agents: $ClaudeDir\agents\"
|