BLOCKER 1 (bootstrap.py): Replace bash dirname/while loop in _claude_settings() with a cross-platform python3 -c one-liner using pathlib.Path.parents. The bash loop broke on Windows because root is 'C:\' not '/'. Python pathlib handles all OS path separators correctly. BLOCKER 2 (setup.sh): Add OS detection (IS_WINDOWS via OSTYPE/uname). On Windows (Git Bash/MSYS2/Cygwin), skip the sudo ln -sf symlink step and print manual PATH-extension instructions for PowerShell, CMD, and Git Bash. Also make venv activation OS-aware (Scripts/activate on Windows, bin/activate elsewhere). BLOCKER 3 (setup.py): New cross-platform Python installer at repo root. Does everything setup.sh does — create venv, install editable, verify entry points, seed secrets dir, .env, registry, bootstrap branch identity files — and works natively on Windows without Git Bash. Uses sys.executable (no python3 vs python ambiguity), pathlib throughout, and prints PATH instructions on Windows instead of attempting symlink creation. Closes #261. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apps
Application layer for CLI.
cli.py— Entry point. Auto-discovers and routes commands to modules.modules/— Business logic and orchestration. One module per command.handlers/— Implementation details. Called by modules, never by CLI directly.plugins/— Scheduled tasks and extensions.