# AuraOffice skills for Claude Code, Codex and Grok. # # irm https://auraoffice.org/skills/install.ps1 | iex every skill # & ([scriptblock]::Create((irm https://auraoffice.org/skills/install.ps1))) aurapage just the ones named # # Names: aurapage auradeck auratrack # # A skill is a folder, and each assistant reads the same layout from its own # folder. This installs each skill into every assistant found in your user # folder: .claude\skills, .codex\skills and .grok\skills. An existing copy of the # same skill is replaced. To install somewhere else, set AURAOFFICE_SKILLS_DIRS # to a semicolon-separated list of skills folders. # # The AuraTrack skill works through auratrack-cli, so installing it also puts # auratrack-cli 0.2.0 in %LOCALAPPDATA%\AuraOffice\bin, checked against # the hash below, and adds that folder to your PATH. The skill holds no # credentials: you sign in once with `auratrack-cli login`. $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' $Base = 'https://auraoffice.org' $CliVersion = '0.2.0' $CliName = 'auratrack-cli-0.2.0-windows-x64.exe' $CliSha256 = '73c8612d09463f20638821b83b9161c42efd4e6400a5f9fc7bc5b847bafbbb97' $Folders = @{ 'aurapage' = 'aurapage-skill'; 'auradeck' = 'auradeck-skill'; 'auratrack' = 'auratrack-tasks' } $Wanted = @() if ($args.Count -eq 0) { $Wanted = @('aurapage', 'auradeck', 'auratrack') } else { foreach ($name in $args) { $slug = ($name -replace '-skill$', '' -replace '-tasks$', '').ToLower() if (-not $Folders.ContainsKey($slug)) { throw "No skill called '$name'; the skills are aurapage auradeck auratrack" } $Wanted += $slug } } $Targets = @() if ($env:AURAOFFICE_SKILLS_DIRS) { $Targets = $env:AURAOFFICE_SKILLS_DIRS -split ';' | Where-Object { $_ } } else { foreach ($assistant in '.claude', '.codex', '.grok') { $home_ = Join-Path $env:USERPROFILE $assistant if (Test-Path $home_ -PathType Container) { $Targets += (Join-Path $home_ 'skills') } } } if ($Targets.Count -eq 0) { throw 'Found no Claude Code (.claude), Codex (.codex) or Grok (.grok) in your user folder. Install one first, or set AURAOFFICE_SKILLS_DIRS.' } $Work = Join-Path ([IO.Path]::GetTempPath()) ('auraoffice-skills-' + [guid]::NewGuid()) New-Item -ItemType Directory -Path $Work | Out-Null try { foreach ($slug in $Wanted) { $folder = $Folders[$slug] $zip = Join-Path $Work "$slug.zip" Invoke-WebRequest -UseBasicParsing -Uri "$Base/skills/$slug.zip" -OutFile $zip $unpacked = Join-Path $Work $slug Expand-Archive -Path $zip -DestinationPath $unpacked -Force if (-not (Test-Path (Join-Path $unpacked "$folder\SKILL.md"))) { throw "$slug.zip did not hold $folder\SKILL.md" } foreach ($dir in $Targets) { New-Item -ItemType Directory -Path $dir -Force | Out-Null $dest = Join-Path $dir $folder if (Test-Path $dest) { Remove-Item -Recurse -Force $dest } Copy-Item -Recurse (Join-Path $unpacked $folder) $dest } Write-Host "installed $folder" } Write-Host (" into: " + ($Targets -join ', ')) if ($Wanted -contains 'auratrack') { $have = $null $existing = Get-Command auratrack-cli -ErrorAction SilentlyContinue if ($existing) { $have = ((& $existing.Source --version) -split ' ')[1] } if ($have -and ([version]$have -ge [version]$CliVersion)) { Write-Host "auratrack-cli $have is already installed" } else { $bin = Join-Path $env:LOCALAPPDATA 'AuraOffice\bin' New-Item -ItemType Directory -Path $bin -Force | Out-Null $download = Join-Path $Work 'auratrack-cli.exe' Invoke-WebRequest -UseBasicParsing -Uri "$Base/releases/$CliName" -OutFile $download if ((Get-FileHash $download -Algorithm SHA256).Hash.ToLower() -ne $CliSha256) { throw 'auratrack-cli did not match its published hash; nothing was installed' } Copy-Item $download (Join-Path $bin 'auratrack-cli.exe') -Force Write-Host "installed auratrack-cli $CliVersion in $bin" $userPath = [Environment]::GetEnvironmentVariable('Path', 'User') if (-not $userPath) { $userPath = '' } if (-not (($userPath -split ';') -contains $bin)) { [Environment]::SetEnvironmentVariable('Path', (($userPath.TrimEnd(';') + ';' + $bin).TrimStart(';')), 'User') Write-Host ' added it to your PATH; open a new terminal to use it' } } Write-Host 'Sign in to AuraTrack once, in your own terminal: auratrack-cli login' } Write-Host 'Start a new session in your assistant to pick up the skills.' } finally { Remove-Item -Recurse -Force $Work -ErrorAction SilentlyContinue }