shareAI-lab / shareAI-lab/learn-claude-code
Windows 11 support: changes needed for all agent files
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 12.4k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 6
Description
Resolved problem to use on Windows computer.
My guide covers all changes required to run the full learn-claude-code agent series
(s01 – s12 + s_full) on Windows 11 with the Anthropic API.
The original repo targets Linux/macOS. Four categories of changes are needed on Windows:
1. .env file — correct naming (Windows hides extensions by default)
2. Environment vars — MODEL_ID must be set
3. bash tool — all 12 agent files use subprocess; must point to PowerShell
4. System prompt — Claude must know it is on Windows to write correct shell commands
Prerequisites
- Python 3.10 or later
pip install -r requirements.txt- An Anthropic API key — get one at https://console.anthropic.com
Step 1 — Create the .env file
⚠️ Windows hides file extensions by default.
If you rename.env.examplein File Explorer it may silently becomeenv.txtinstead of.env.
The agent will fail withKeyError: 'MODEL_ID'if the file is named incorrectly.
Recommended: use PowerShell to copy and verify:
Copy-Item .env.example .env
Get-ChildItem -Name # confirm the file is named exactly .env (not env.txt)
If you see env.txt, rename it:
Rename-Item env.txt .env
To show extensions permanently in File Explorer:
View → Show → File name extensions ✓
Step 2 — Edit .env
Open .env and set these two required variables:
ANTHROPIC_API_KEY=sk-ant-your-real-key-here
MODEL_ID=claude-haiku-4-5
Available models (choose one):
| Model | Speed | Cost | Good for |
|---|---|---|---|
claude-haiku-4-5 |
Fastest | Lowest | Learning, testing all sessions |
claude-sonnet-4-5 |
Balanced | Medium | Recommended for real tasks |
claude-opus-4-5 |
Slowest | Highest | Most capable, complex sessions |
No other changes to .env are needed for the Anthropic API.
Step 3 — Change run_bash() in all agent files
This is the most important Windows change. Every agent file in agents/ contains a
run_bash() function that calls a shell via subprocess. The original code uses
["bash", "-c", command] which does not exist on Windows.
Replace the function in each of the 12 agent files (s01 through s12 and s_full):
Original code (Linux/macOS):
def run_bash(command: str) -> str:
dangerous = ["rm -rf /", "sudo", "shutdown", "reboot", "> /dev/"]
if any(d in command for d in dangerous):
return "Error: Dangerous command blocked"
try:
r = subprocess.run(command, shell=True, cwd=os.getcwd(),
capture_output=True, text=True, timeout=120)
out = (r.stdout + r.stderr).strip()
return out[:50000] if out else "(no output)"
except subprocess.TimeoutExpired:
return "Error: Timeout (120s)"
Replace with (Windows 11):
def run_bash(command: str) -> str:
dangerous = [
"rm -rf /", "sudo", "shutdown", "reboot", "> /dev/", # Linux patterns
"Format-Volume", "Remove-Item -Recurse C:\\", # Windows patterns
"del /f /s /q C:\\",
]
if any(d in command for d in dangerous):
return "Error: Dangerous command blocked"
try:
r = subprocess.run(
["powershell", "-NoProfile", "-Command", command],
cwd=os.getcwd(),
capture_output=True, text=True, timeout=120,
)
out = (r.stdout + r.stderr).strip()
return out[:50000] if out else "(no output)"
except subprocess.TimeoutExpired:
return "Error: Timeout (120s)"
Key differences:
["powershell", "-NoProfile", "-Command", command]replaces["bash", "-c", command]
(or theshell=Trueshorthand)-NoProfilemakes startup faster by skipping user profile scripts- Added Windows-specific dangerous command patterns
Step 4 — Update the system prompt in all agent files
Each agent file contains a SYSTEM string near the top. Without telling Claude it is on
Windows, it will write Linux commands (ls, cat, grep, mkdir -p, etc.) that fail
under PowerShell.
Find (varies slightly per file):
SYSTEM = """You are a helpful assistant with access to a bash tool.
..."""
Add one line at the top of the system prompt:
SYSTEM = """You are a helpful assistant with access to a bash tool.
You are running on Windows 11. Use PowerShell syntax for all shell commands.
Use Get-ChildItem instead of ls, Copy-Item instead of cp, Remove-Item instead of rm,
New-Item -ItemType Directory instead of mkdir, Get-Content instead of cat, and so on.
..."""
This single addition prevents the majority of Windows-related tool failures across all
sessions.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the run_bash() functions and SYSTEM strings in agents/s01 through s12 and s_full, then review .env.example and the required MODEL_ID setting. Verify the Windows 11 setup with PowerShell, including .env naming, PowerShell command execution, dangerous-command blocking, and Windows-aware prompts across every agent file.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- powershell, python
- Domain
- cli, devtools, operating-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100