shareAI-lab / shareAI-lab/learn-claude-code

Windows 11 support: changes needed for all agent files

Open
#65 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation feedback
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


Step 1 — Create the .env file

⚠️ Windows hides file extensions by default.
If you rename .env.example in File Explorer it may silently become env.txt instead of .env.
The agent will fail with KeyError: '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 the shell=True shorthand)
  • -NoProfile makes 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.