ha-inlite

Home Assistant integration for in-lite
git clone https://git.stephank.nl/ha-inlite
Log | Files | Refs | README | LICENSE | ZIP

SKILL.md (3704B)


      1 ---
      2 name: github-multi-account
      3 description: Detect and set up account-locked gh aliases for multi-account GitHub. The AI reads this skill, detects accounts, asks the user which is personal/work, and runs the setup automatically.
      4 confidence: high
      5 source: https://github.com/tamirdresher/squad-skills/tree/main/plugins/github-multi-account
      6 author: tamirdresher
      7 ---
      8 
      9 # GitHub Multi-Account — AI-Driven Setup
     10 
     11 ## When to Activate
     12 When the user has multiple GitHub accounts (check with `gh auth status`). If you see 2+ accounts listed, this skill applies.
     13 
     14 ## What to Do (as the AI agent)
     15 
     16 ### Step 1: Detect accounts
     17 Run: `gh auth status`
     18 Look for multiple accounts. Note which usernames are listed.
     19 
     20 ### Step 2: Ask the user
     21 Ask: "I see you have multiple GitHub accounts: {list them}. Which one is your personal account and which is your work/EMU account?"
     22 
     23 ### Step 3: Run the setup automatically
     24 Once the user confirms, do ALL of this for them:
     25 
     26 ```powershell
     27 # 1. Define the functions
     28 $personal = "THEIR_PERSONAL_USERNAME"
     29 $work = "THEIR_WORK_USERNAME"
     30 
     31 # 2. Add to PowerShell profile
     32 $profilePath = $PROFILE.CurrentUserAllHosts
     33 if (!(Test-Path $profilePath)) { New-Item -Path $profilePath -Force | Out-Null }
     34 $existing = Get-Content $profilePath -Raw -ErrorAction SilentlyContinue
     35 if ($existing -notmatch "gh-personal") {
     36     $block = @"
     37 
     38 # === GitHub Multi-Account Aliases ===
     39 function gh-personal { gh auth switch --user $personal 2>`$null | Out-Null; gh @args }
     40 function gh-work { gh auth switch --user $work 2>`$null | Out-Null; gh @args }
     41 Set-Alias ghp gh-personal
     42 Set-Alias ghw gh-work
     43 "@
     44     Add-Content -Path $profilePath -Value $block
     45 }
     46 
     47 # 3. Create CMD wrappers
     48 $binDir = Join-Path $env:USERPROFILE ".squad\bin"
     49 if (!(Test-Path $binDir)) { New-Item -ItemType Directory -Path $binDir -Force | Out-Null }
     50 "@echo off`ngh auth switch --user $personal >nul 2>&1`ngh %*" | Out-File "$binDir\ghp.cmd" -Encoding ascii
     51 "@echo off`ngh auth switch --user $work >nul 2>&1`ngh %*" | Out-File "$binDir\ghw.cmd" -Encoding ascii
     52 
     53 # 4. Add to PATH
     54 $userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
     55 if ($userPath -notmatch [regex]::Escape($binDir)) {
     56     [Environment]::SetEnvironmentVariable("PATH", "$binDir;$userPath", "User")
     57     $env:PATH = "$binDir;$env:PATH"
     58 }
     59 
     60 # 5. Load in current session
     61 function gh-personal { gh auth switch --user $personal 2>$null | Out-Null; gh @args }
     62 function gh-work { gh auth switch --user $work 2>$null | Out-Null; gh @args }
     63 Set-Alias ghp gh-personal
     64 Set-Alias ghw gh-work
     65 ```
     66 
     67 ### Step 4: Verify for the user
     68 Run these and show the results:
     69 ```powershell
     70 ghp api user --jq '.login'   # should show personal username
     71 ghw api user --jq '.login'   # should show work username
     72 ```
     73 
     74 ### Step 5: Tell the user
     75 "All set! From now on use `ghp` for personal repos and `ghw` for work repos. I'll use them too."
     76 
     77 ## After Setup — Usage Rules
     78 
     79 1. **NEVER** use bare `gh` for repo operations — always `ghp` or `ghw`
     80 2. **NEVER** manually `gh auth switch` — the aliases handle it
     81 3. Determine alias by repo owner:
     82    - Personal account repos → `ghp` / `gh-personal`
     83    - Work/EMU account repos → `ghw` / `gh-work`
     84 
     85 ## Repo-Specific Account Binding
     86 
     87 This repo (`bradygaster/squad`) is bound to the **bradygaster** (personal) account.
     88 All `gh` operations in this repo MUST use `ghp` / `gh-personal`.
     89 
     90 ## For Squad Agents
     91 At the TOP of any script touching GitHub, define:
     92 ```powershell
     93 function gh-personal { gh auth switch --user bradygaster 2>$null | Out-Null; gh @args }
     94 function gh-work { gh auth switch --user bradyg_microsoft 2>$null | Out-Null; gh @args }
     95 ```