Add scripts/install.ps1 — PowerShell port of install.sh
Native cmdlet equivalent of install.sh: same behavior (copy each skills/<name>/ into ~\.claude\skills\<name>\, skip if SKILL.md is missing, support $env:CLAUDE_SKILLS_DIR override and -Names filter). Removes bash dependency on Windows — no need to invoke git-bash from pwsh, mirrors the existing build.sh / build.ps1 pair. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
46
scripts/install.ps1
Normal file
46
scripts/install.ps1
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Install skills/<name>/ into ~\.claude\skills\<name>\ (or $env:CLAUDE_SKILLS_DIR)
|
||||||
|
# Usage: install.ps1 [-Names <name1>,<name2>] (no args = all)
|
||||||
|
#
|
||||||
|
# PowerShell port of install.sh — same behavior, native cmdlets, no bash dependency.
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[string[]]$Names = @()
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
$root = Split-Path -Parent $PSScriptRoot
|
||||||
|
$src = Join-Path $root 'skills'
|
||||||
|
|
||||||
|
if ($env:CLAUDE_SKILLS_DIR) {
|
||||||
|
$target = $env:CLAUDE_SKILLS_DIR
|
||||||
|
} else {
|
||||||
|
$target = Join-Path $env:USERPROFILE '.claude\skills'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path $target)) {
|
||||||
|
New-Item -ItemType Directory -Force -Path $target | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Names.Count -eq 0) {
|
||||||
|
$Names = Get-ChildItem -Path $src -Directory | Sort-Object Name | Select-Object -ExpandProperty Name
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($name in $Names) {
|
||||||
|
$srcDir = Join-Path $src $name
|
||||||
|
$dstDir = Join-Path $target $name
|
||||||
|
if (-not (Test-Path $srcDir -PathType Container)) {
|
||||||
|
Write-Warning "skip: $name (not found in skills/)"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (-not (Test-Path (Join-Path $srcDir 'SKILL.md'))) {
|
||||||
|
Write-Warning "skip: $name (missing SKILL.md)"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (Test-Path $dstDir) {
|
||||||
|
Remove-Item -Recurse -Force $dstDir
|
||||||
|
}
|
||||||
|
Copy-Item -Recurse $srcDir $dstDir
|
||||||
|
Write-Host "installed: $name -> $dstDir"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user