Arguments
| Argument | Default | Meaning |
|---|---|---|
mode | full | full includes recon and requirements; review starts from an existing plan |
plan / PLAN_FILE | PLAN.md | plan path, used for review, build and approval binding |
log / LOG_FILE | PLAN-REVIEW-LOG.md | append-only audit trail |
builder | claude | claude or opencode |
rounds / MAX_ROUNDS | 5 | maximum completed plan-review rounds |
MAX_FIX_ROUNDS | 2 | bounded build-fix rounds |
MAX_INSPECTION_ROUNDS | 2 | initial inspection plus one after fixes |
inspect | on | off is a logged explicit opt-out only |
research | proportionate | none, web, or explicitly opted-in deep |
reviewer_model, builder_model, inspector_model | OpenCode default | provider/model |
reviewer_variant, builder_variant, inspector_variant | none | sent as provider/model#variant |
PROOF_CMD | derived from the repo | exact verification command |
Example:
/openclaude-loop:openclaude-loop mode=review plan=docs/rfc.md builder=opencode rounds=3 reviewer_model=anthropic/claude-sonnet-5
Models
This matters for reading any verdict honestly.
- Claude Code — the orchestration host, your current session.
- OpenCode — an external coding-agent CLI. A program, not a model.
- The OpenCode model — whatever provider and model you configured for OpenCode.
So the independence of a review depends entirely on how you configured OpenCode. Point it at the same provider as your session and you get a second agent with a fresh context and no authorship bias — genuinely useful, but not a second provider. The plugin calls OpenCode the independent agent, the external reviewer or the second agent, and claims a cross-provider review only when the configured model demonstrably comes from a different provider.
Requested and observed models are recorded separately, and an unresolved default is reported as unresolved. If you name a model OpenCode does not have, the run stops. Nothing is ever silently substituted.
Testing the plugin itself
python scripts/validate.py # plugin metadata, skill structure, references
python -m unittest discover -s tests -v # 73 contract tests
claude plugin validate . # Claude Code manifest validation
The suite drives a fake OpenCode CLI and disposable git repositories, so it consumes no provider quota. Fixtures deliberately use repository paths containing spaces and non-ASCII characters.