confab-cyclelisted
Install: claude install-skill Anselmoo/werkstoff
Run confab's bounded self-optimization loop: repeatedly find the
"constraint" domain (the one with the most urgent open findings), audit
it, and — in fix mode — apply or draft fixes, until the loop converges or
hits its pass cap. The pass cap, the reopen thrash-guard, the fixable-
domain gating, and the convergence check are all enforced by
`scripts/cycle_engine.py` and `scripts/lib/ledger.py`; this file only
describes how to drive that engine. If your own count of passes ever
disagrees with what the engine reports, trust the engine — it is the
source of truth, not your running tally.
## Setup (once per invocation)
1. Determine `repo_root`, `mode` (`"fix"` or `"propose"` — default
`"propose"` unless the user explicitly asked to apply fixes),
`max_passes` (default 5, never pass a value above 20 to the engine —
it will refuse), and `max_reopens` (default 3, never above 10).
2. Generate one `invocation_id` for this whole run (e.g.
`python3 -c "import uuid; print(uuid.uuid4())"`) and reuse it for every
symbol-index build this invocation needs — never build a fresh one per
pass or per domain. This is what makes the symbol-index snapshot
shared rather than rebuilt (rule: symbol-index-shared-per-invocation).
Resolve it now:
```
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/symbol_index_cli.py" resolve <repo_root> --invocation-id <invocation_id>
```
This is the "CLI wrapper the cycle skill points you at" that
`confab-assertion-audit` and `confab-cont