127 lines
3.2 KiB
Markdown
127 lines
3.2 KiB
Markdown
# Windows Environment Rules
|
|
|
|
## Execution Environment
|
|
- You are running on Microsoft Windows.
|
|
- The default shell is PowerShell (pwsh or Windows PowerShell), NOT bash.
|
|
- Generate PowerShell commands unless explicitly asked otherwise.
|
|
- Never use bash syntax, zsh syntax, or Linux-only commands.
|
|
- Never assume WSL, Git Bash, Cygwin, or MSYS2 are available.
|
|
- Never assume a Unix environment.
|
|
|
|
## Command Syntax
|
|
- Use PowerShell syntax.
|
|
- Use backslashes (\) for Windows paths unless a tool explicitly requires forward slashes.
|
|
- Quote paths that may contain spaces.
|
|
- Prefer:
|
|
Get-ChildItem
|
|
Get-Content
|
|
Set-Content
|
|
Copy-Item
|
|
Move-Item
|
|
Remove-Item
|
|
New-Item
|
|
Test-Path
|
|
Resolve-Path
|
|
instead of:
|
|
ls
|
|
cat
|
|
cp
|
|
mv
|
|
rm
|
|
touch
|
|
|
|
- Use:
|
|
Get-ChildItem -Force
|
|
instead of:
|
|
ls -la
|
|
|
|
- Use:
|
|
Select-String
|
|
instead of:
|
|
grep
|
|
|
|
- Use:
|
|
Get-Process
|
|
instead of:
|
|
ps
|
|
|
|
- Use:
|
|
Get-Command
|
|
instead of:
|
|
which
|
|
|
|
- Use:
|
|
Get-Location
|
|
instead of:
|
|
pwd
|
|
|
|
## PowerShell Best Practices
|
|
- Prefer PowerShell cmdlets over legacy CMD commands.
|
|
- Do not use cmd.exe syntax unless specifically requested.
|
|
- Do not use && or || if compatibility with Windows PowerShell 5.1 matters. Instead use proper PowerShell conditionals.
|
|
- Assume UTF-8 when writing files if possible.
|
|
- Use `$env:VARIABLE` for environment variables.
|
|
- Do not use `$VARIABLE` for environment variables.
|
|
- Exit codes are available in `$LASTEXITCODE`.
|
|
|
|
## File System
|
|
- Windows paths are case-insensitive.
|
|
- Drives may be C:, D:, etc.
|
|
- Do not assume `/tmp`; use `$env:TEMP`.
|
|
- Do not assume `/home`; use `$HOME`.
|
|
- Do not assume `/usr/bin`.
|
|
- Do not assume `/etc`.
|
|
- Do not use `/dev/null`; use `$null` or `Out-Null` where appropriate.
|
|
|
|
## Development Tools
|
|
Assume these may exist, but verify before relying on them:
|
|
- git
|
|
- node
|
|
- npm
|
|
- pnpm
|
|
- python
|
|
- dotnet
|
|
- cargo
|
|
- go
|
|
|
|
When using a tool, first verify it exists if required.
|
|
|
|
## Package Managers
|
|
Windows package managers may include:
|
|
- winget
|
|
- chocolatey (choco)
|
|
- scoop
|
|
|
|
Do not suggest apt, yum, dnf, pacman, apk, or brew unless explicitly requested.
|
|
|
|
## VS Code
|
|
- Assume work is being performed inside Visual Studio Code.
|
|
- Paths should be compatible with Windows.
|
|
- Use relative paths when possible.
|
|
|
|
## Scripts
|
|
When writing scripts:
|
|
- Default to PowerShell (.ps1).
|
|
- Only write Bash scripts when explicitly requested.
|
|
|
|
## Safety
|
|
- Never assume administrator privileges.
|
|
- Mention when a command requires elevation.
|
|
- Avoid destructive commands unless explicitly requested.
|
|
- Explain commands before suggesting system-wide changes.
|
|
|
|
## Platform Detection
|
|
Unless the user explicitly states otherwise, always assume:
|
|
- Operating System: Windows 10/11
|
|
- Shell: PowerShell
|
|
- Terminal encoding: UTF-8
|
|
- Filesystem: NTFS
|
|
- Path separator: '\'
|
|
|
|
## General Behavior
|
|
- Do not provide Linux commands alongside Windows commands unless the user requests cross-platform instructions.
|
|
- If documentation commonly uses bash, translate examples into PowerShell.
|
|
- When installing software, prefer `winget` if available.
|
|
- Before suggesting platform-specific fixes, ensure they apply to Windows.
|
|
- Never assume POSIX utilities are installed.
|
|
- Prefer native Windows solutions over third-party Unix compatibility layers. |