
Amplicode Install
Find installed IntelliJ IDEA and GigaIDE paths on Windows so Amplicode or Spring tooling can be installed into the right IDE without manual hunting.
Install
npx skills add https://github.com/amplicode/spring-skills --skill amplicode-installWhat is this skill?
- PowerShell script scans Windows for IntelliJ IDEA Ultimate and Community editions
- Detects GigaIDE installations alongside JetBrains products
- Emits a UTF-8 JSON array of IDE candidates on stdout for downstream install steps
- Uses bounded timeouts and depth limits so directory walks do not hang the agent
- Skips reparse points and continues safely when individual probes time out
Adoption & trust: 1 installs on skills.sh; 54 GitHub stars; trending (+100% hot-view momentum).
Recommended Skills
Java Springbootgithub/awesome-copilot
Java Spring Bootpluginagentmarketplace/custom-plugin-java
Java Docsgithub/awesome-copilot
Kotlin Springbootgithub/awesome-copilot
Create Spring Boot Java Projectgithub/awesome-copilot
Java Refactoring Extract Methodgithub/awesome-copilot
Journey fit
Primary fit
Developers wire up Java/Spring IDE extensions during the build phase when the local toolchain is configured. IDE detection is an integration step that connects agent-assisted setup to existing JetBrains and GigaIDE installations.
SKILL.md
READMESKILL.md - Amplicode Install
# Detects locally installed IntelliJ IDEA (Ultimate/Community) and GigaIDE installations on Windows. # Prints a JSON array of candidates on stdout. Empty array if nothing found. # # Usage: pwsh detect-ides.ps1 (or powershell -ExecutionPolicy Bypass -File detect-ides.ps1) [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $ErrorActionPreference = 'Continue' # ---------- bounded helpers ---------- # Runs a self-contained scriptblock with a wall-clock timeout. # The scriptblock runs in a separate runspace and does not share caller variables. function Invoke-WithTimeout { param( [Parameter(Mandatory)][scriptblock]$ScriptBlock, [int]$TimeoutMs = 5000 ) $ps = [System.Management.Automation.PowerShell]::Create() $null = $ps.AddScript($ScriptBlock.ToString()) $async = $ps.BeginInvoke() if ($async.AsyncWaitHandle.WaitOne($TimeoutMs)) { try { return ,($ps.EndInvoke($async)) } finally { $ps.Dispose() } } # Clean up in the background so detection can continue after timeout. [System.Threading.ThreadPool]::QueueUserWorkItem({ param($p) try { $p.Stop() } catch {} try { $p.Dispose() } catch {} }, $ps) | Out-Null throw [System.TimeoutException]::new("Operation timed out after $TimeoutMs ms") } # Finds product-info.json files with bounded depth, time, and directory count. # Reparse points are skipped. function Find-ProductInfoFiles { param( [string]$Root, [int]$MaxDepth = 4, [int]$TimeoutMs = 8000, [int]$MaxDirs = 20000 ) $results = New-Object System.Collections.Generic.List[string] if ([string]::IsNullOrEmpty($Root) -or -not (Test-Path -LiteralPath $Root)) { return $results } $sw = [System.Diagnostics.Stopwatch]::StartNew() $dirCount = 0 $queue = New-Object System.Collections.Generic.Queue[object] $queue.Enqueue([pscustomobject]@{ Path = $Root; Depth = 0 }) while ($queue.Count -gt 0) { if ($sw.ElapsedMilliseconds -gt $TimeoutMs) { break } if ($dirCount -ge $MaxDirs) { break } $node = $queue.Dequeue() $dirCount++ $pi = Join-Path $node.Path 'product-info.json' if (Test-Path -LiteralPath $pi -PathType Leaf) { $results.Add($pi) } if ($node.Depth -ge $MaxDepth) { continue } $children = $null try { $children = Get-ChildItem -LiteralPath $node.Path -Directory -Force -ErrorAction SilentlyContinue } catch { $children = $null } if (-not $children) { continue } foreach ($child in $children) { if ($child.Attributes -band [System.IO.FileAttributes]::ReparsePoint) { continue } $queue.Enqueue([pscustomobject]@{ Path = $child.FullName; Depth = $node.Depth + 1 }) } } return $results } # ---------- search roots ---------- $searchRoots = @() if ($env:LOCALAPPDATA) { $searchRoots += "$env:LOCALAPPDATA\Programs" $searchRoots += "$env:LOCALAPPDATA\JetBrains\Toolbox\apps" } $searchRoots += "C:\Program Files\JetBrains" $searchRoots += "C:\Program Files (x86)\JetBrains" # ---------- find product-info.json files ---------- $piPaths = New-Object System.Collections.Generic.HashSet[string] foreach ($root in $searchRoots) { if (-not (Test-Path -LiteralPath $root)) { continue } foreach ($f in (Find-ProductInfoFiles -Root $root -MaxDepth 6 -TimeoutMs 10000)) { $null = $piPaths.Add($f) } } # Fallback: inspect top-level directories on fixed drives. # Recursion is limited to IDE-looking directories. $skipTop = @('Windows', 'Windows.old', '$Recycle.Bin', 'System Volume Information', 'PerfLogs', 'Recovery', 'Boot', 'EFI', 'MSOCache', 'OneDriveTemp') $ideNamePattern = '(?i)^(idea|intellij|giga|jetbrains|amplicode|toolbox)' # Inspect standard Program Files locations for IDEs installed under vendor folders. # Other drives are h