- Split CODING_GUIDELINES.md into 19 indexed standards files under .claude/standards/ - 9 from CODING_GUIDELINES (conventions, powershell, security, api, git, gururmm) - 10 from session log tribal knowledge (syncro, ssh, gitea, python, client, gururmm) - Add .claude/standards/index.yml for cheap relevance-based lookup - Add /inject-standards command: load targeted standards per task instead of full guidelines - Add /shape-spec command: pre-implementation spec for GuruRMM features (plan.md, shape.md, references.md, standards.md) with mandatory out-of-scope gate - Add docs/tech-stack.md and docs/mission.md for ClaudeTools API - Add projects/msp-tools/guru-rmm/docs/tech-stack.md and mission.md for GuruRMM - Update CLAUDE.md commands table with /inject-standards and /shape-spec Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.3 KiB
name, description, applies-to
| name | description | applies-to |
|---|---|---|
| windows-openssh | Use system OpenSSH (bare `ssh`); never Git for Windows SSH; the backslash hook blocks full Windows paths | all |
SSH on Windows
Use the system OpenSSH client
The correct SSH binary on Windows is the system-installed OpenSSH at:
C:\Windows\System32\OpenSSH\ssh.exe
Do not use Git for Windows SSH (C:\Program Files\Git\usr\bin\ssh.exe). The system OpenSSH has proper Windows integration, correct key handling, and is the version that works with the Windows OpenSSH registry for key agent.
Use bare ssh, not the full path
The pre-bash-backslash hook at .claude/hooks/pre-bash-backslash.sh blocks any Bash command that contains Windows-style backslash paths (e.g., C:\Windows\System32\OpenSSH\ssh.exe). This hook exists to prevent accidental backslash path usage in Git Bash, which interprets \ as escape sequences.
The system OpenSSH is on PATH in Git Bash, so use the bare command:
# Correct — uses system OpenSSH via PATH
ssh guru@172.16.3.30 "sudo /opt/gururmm/build-server.sh"
ssh -i C:/Users/guru/.ssh/id_ed25519 guru@172.16.3.30 "command"
# Wrong — full backslash path blocked by hook
C:\Windows\System32\OpenSSH\ssh.exe guru@172.16.3.30 "command"
Note: forward-slash paths are fine in Git Bash:
# This works (forward slashes)
"C:/Windows/System32/OpenSSH/ssh.exe" guru@172.16.3.30 "command"
# But bare ssh is simpler and preferred
Key file paths
SSH keys are stored in C:/Users/guru/.ssh/ — use forward slashes when specifying -i:
ssh -i C:/Users/guru/.ssh/id_ed25519 guru@172.16.3.30 "command"
Known servers
| Host | IP | User | Auth |
|---|---|---|---|
| Saturn / GuruRMM server | 172.16.3.30 | guru | SSH key (id_ed25519) |
| Pluto / build server | 172.16.3.36 | Administrator | Password (vault) |
| Jupiter / Unraid | 172.16.3.20 | root | Password (vault) |
For password auth (Pluto), use paramiko in Python when interactive stdin is not available — sshpass is not installed in the Git Bash environment.
PuTTY tools
For servers requiring interactive key acceptance or PuTTY-specific features (IX server):
pscp.exefor file transferplink.exefor commands
Both are in C:/Program Files/PuTTY/ — use forward slashes or quote with double quotes when calling from Git Bash.