OpenClaude Loop

v 0.1.*

Arguments

ArgumentDefaultMeaning
modefullfull includes recon and requirements; review starts from an existing plan
plan / PLAN_FILEPLAN.mdplan path, used for review, build and approval binding
log / LOG_FILEPLAN-REVIEW-LOG.mdappend-only audit trail
builderclaudeclaude or opencode
rounds / MAX_ROUNDS5maximum completed plan-review rounds
MAX_FIX_ROUNDS2bounded build-fix rounds
MAX_INSPECTION_ROUNDS2initial inspection plus one after fixes
inspectonoff is a logged explicit opt-out only
researchproportionatenone, web, or explicitly opted-in deep
reviewer_model, builder_model, inspector_modelOpenCode defaultprovider/model
reviewer_variant, builder_variant, inspector_variantnonesent as provider/model#variant
PROOF_CMDderived from the repoexact 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.