fix(mcp): wire run_powershell and MCP server for Windows/Scoop environment

- Add .mcp.json at project root (correct location for claude mcp add)
- Add mcp_env.toml: project-scoped PATH/env config for subprocess execution
- shell_runner.py: load mcp_env.toml, add stdin=DEVNULL to fix git hang
- mcp_server.py: call mcp_client.configure() at startup (fix ACCESS DENIED)
- conductor skill files: enforce run_powershell over Bash, tool use hierarchy
- CLAUDE.md: document Bash unreliability on Windows, run_powershell preference
This commit is contained in:
2026-02-28 15:00:05 -05:00
parent 60396f03f8
commit c428e4331a
7 changed files with 125 additions and 18 deletions

View File

@@ -24,11 +24,14 @@ Follow this EXACTLY per `conductor/workflow.md`:
Edit `plan.md`: change `[ ]``[~]` for the current task.
### 2. Research Phase (High-Signal)
Before touching code, use context-efficient tools:
- `py_get_code_outline` or `py_get_skeleton` (via MCP tools) to map architecture
- `get_git_diff` to understand recent changes
- `Grep`/`Glob` to locate symbols
- Only `Read` full files after identifying specific target ranges
Before touching code, use context-efficient tools IN THIS ORDER:
1. `py_get_code_outline` — FIRST call on any Python file. Maps functions/classes with line ranges.
2. `py_get_skeleton` — signatures + docstrings only, no bodies
3. `get_git_diff` — understand recent changes before modifying touched files
4. `Grep`/`Glob` — cross-file symbol search
5. `Read` (targeted, offset+limit only) — ONLY after outline identifies specific ranges
**NEVER** call `Read` on a full Python file >50 lines without a prior `py_get_code_outline` call.
### 3. Write Failing Tests (Red Phase — TDD)
**DELEGATE to Tier 3 Worker** — do NOT write tests yourself:
@@ -48,6 +51,7 @@ Run tests. Confirm they PASS. This is the Green phase.
With passing tests as safety net, refactor if needed. Rerun tests.
### 6. Verify Coverage
Use `run_powershell` MCP tool (not Bash — Bash is a mingw sandbox on Windows):
```powershell
uv run pytest --cov=. --cov-report=term-missing {TEST_FILE}
```