№ 0093Skill
sol-loop: GPT plans, Muse Spark builds
sol-loop pairs a GPT planner on a Codex subscription with Muse Spark in opencode as executor, which returns evidence and diffs for each atomic spec; the author says over 99% of tokens run on Muse.
# sol-loop
[](LICENSE)





**Sol plans. Muse builds. You keep the 20 EUR subscription.**
GPT xhigh on your Codex subscription emits one atomic SPEC per turn. Muse Spark in opencode does all the reading, editing, and testing, then returns EVIDENCE. Sol decides the next step. Over 99 percent of tokens run on Muse.
```bash
git clone https://github.com/LucasDuys/sol-loop.git && ./sol-loop/install.sh
```
```bash
cd your-repo
sol-loop --goal GOAL.md --allow allow.txt
```
No auth needed to start: mock mode works immediately, live mode lights up after `codex auth login`. The installer links the skill plus both agents into opencode and puts `sol-loop` on your PATH.
---
## How it works
```mermaid
flowchart LR
G["GOAL.md + allow.txt"] --> S["Sol planner<br/>GPT xhigh, subscription"]
S -->|"SPEC: task, files,<br/>steps, checks"| M["Muse executor<br/>opencode subagent"]
M -->|"EVIDENCE + diff"| R{"Router<br/>allow-list check"}
R -->|"pass"| S
R -->|"reject"| M
S -->|"DONE: cites<br/>check output"| D["Done"]
```
1. **Sol outputs `SPEC:`** with NEXT_TASK, FILES, STEPS, DONE_WHEN, FORBIDDEN. Or `QUESTION:`, `DONE:`, `BLOCKED:`, verbatim. Sol never sees your files, only goal plus evidence plus allow list.
2. **Muse executes inside FILES only** and returns `EVIDENCE:` with CHANGED, CHECKS, STATE, NEXT. Full harness: allow-list contract, skills on demand, MCP docs, browser verify.
3. **Router code enforces the boundary.** Diffs outside the allow list are rejected before they reach Sol. Nothing is DONE without raw command output. Summary prose does not count.
Contracts in [`SKILL.md`](SKILL.md) and [`references/scopes.md`](references/scopes.md). Prompts in [`agents/`](agents). Ported from the Kenward agent prompt standard: determinism beats instruction, pre-resolve before reasoning, every rule ships with an eval case.
---
## Measured 


ChatForm
Tgmlabs