Files
claudetools/.grok/skills/windows-bash/SKILL.md
Mike Swanson 446a6c1b1c sync: auto-sync from GURU-5070 at 2026-06-02 20:40:54
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-02 20:40:54
2026-06-02 20:40:58 -07:00

2.7 KiB

name, description
name description
windows-bash On Windows (especially in PowerShell-based AI tool sessions like this Grok TUI), ensure the `bash` command resolves to Git for Windows / MSYS bash (required by the ClaudeTools harness) instead of the WSL stub. Use when you see WSL errors, when running vault.sh/sync.sh/hooks, when "bash --version" shows non-MSYS, or on any "bash" invocation for .claude/scripts or hooks. Triggers on "bash issue", "map bash", "Git Bash", "WSL stub", "ensure-git-bash".

Windows Bash Mapping Skill (Grok Native)

Core rule for this repo on Windows: The ClaudeTools harness (.claude/scripts/*.sh, hooks, vault.sh, sync.sh, etc.) requires the Git for Windows/MSYS bash (version like "5.2.37(1)-release (x86_64-pc-msys)", supports /d/claudetools paths, etc.).

Plain bash in PowerShell often resolves to the useless WSL stub in WindowsApps\.

The Fix (run this early)

$gitBin = "C:\Program Files\Git\bin"
$gitUsrBin = "C:\Program Files\Git\usr\bin"
if ((Test-Path $gitBin) -and ((Get-Command bash -ErrorAction SilentlyContinue).Source -notlike '*Git*bin*bash.exe')) {
    $env:Path = "$gitBin;$gitUsrBin;" + ($env:Path -replace [regex]::Escape("$gitBin;"), '' -replace [regex]::Escape("$gitUsrBin;"), '')
}

After this:

  • Get-Command bashC:\Program Files\Git\bin\bash.exe
  • bash --version shows the correct MSYS one.
  • You can use plain bash .claude/scripts/vault.sh list etc.

Project Helper Script

Source the reusable one (always safe/idempotent):

. .claude/scripts/ensure-git-bash.ps1

See the script for the exact code and comments. It is also referenced from the user's PowerShell profile so new sessions auto-fix.

In This Session / Tool Context

  • If a command needs bash, start by sourcing the helper or running the snippet above.
  • For one-off critical calls (e.g. vault), you can also use the full explicit path: "C:\Program Files\Git\bin\bash.exe" .claude/scripts/vault.sh get-field ...
  • Git Bash terminals (launched directly) already have the right bash.
  • For writing .claude/current-mode etc.: use relative paths or forward slashes only (/d/claudetools/...). The block-backslash-winpath.sh hook protects this.
  • SSH: always C:\Windows\System32\OpenSSH\ssh.exe (system), never Git for Windows SSH.
  • See .claude/memory/feedback_windows_bash_mapping.md and the Windows section in the root CLAUDE.md for the full documented fix.

This skill ensures you (Grok) remember and apply the mapping automatically on Windows sessions in this repo. The knowledge is also in the shared ClaudeTools memory system (.claude/memory/) and CLAUDE.md so it works for both Claude Code and Grok drivers.