Structured multi-agent review loop. Catches what a single agent misses.
Session store: ~/.openclaw/workspace/reviews/
Process: Init session → spawn Opus reviewers → collect redlines → position on each → produce v2 → deliver
Run this check whenever you produce a substantial document. Score 1 point per signal present. If score ≥ 3, offer the review loop without being asked.
#SignalPoints1Has multiple interdependent components (failure in one affects others)12Involves schema changes, migrations, or index design13Irreversible or expensive to undo (data loss, structural rework)14Affects production systems, stored data, or external services15Introduces new abstractions, taxonomies, or data models16Has a defined sequence of steps where order matters17Contains security, access control, or permission logic18Will be acted on by code or agents without further human review19Document is longer than ~500 lines or covers 3+ distinct systems110Scott said "let's build this" or "implement this" at any point in the conversation1
Score 0–2 → skip. Simple doc, don't add noise.
Score 3–6 → offer. "This scores [N]/10 on complexity. Want me to run the review team on it before we act?"
Score 7–10 → strongly recommend. Don't just offer — make the case. "This scores [N]/10 on complexity — multiple interdependent systems, production consequences, hard to reverse. I'd strongly recommend running the review team before we act on this. Today's taxonomy strategy was a 10/10 and the review caught 14 issues including multiple production-breaking bugs."
StepAction0. Init sessionscripts/new-review.sh <slug> <path-to-doc>1. Choose reviewersRead references/review-types.md for the right bundle2. Spawn reviewerssessions_spawn with model=anthropic/claude-opus-4-6, mode=run — all in parallel3. WaitReviewers auto-announce. Do NOT poll.4. Save raw outputWrite each reviewer result to redlines/reviewer-{role}.md5. Synthesizescripts/synthesize.sh <session-dir> → writes redlines/combined.md6. PositionAGREE / DISAGREE / MODIFY on every redline → write positions.md7. Produce v2Write output/{slug}-v2.md incorporating accepted changes + rejected appendix8. Deliverscripts/cp-output.sh <session-name> <destination>
text
~/.openclaw/workspace/reviews/{YYYY-MM-DD}-{slug}/
├── input/
│ └── {original-filename} ← copy of doc being reviewed
├── redlines/
│ ├── reviewer-{role}.md ← raw output per reviewer
│ └── combined.md ← synthesize.sh output (sorted by severity)
├── positions.md ← farsight agree/disagree log
└── output/
└── {slug}-v2.md ← final document
Document TypeReviewer AReviewer BArchitecture / strategyTheory & data modelingImplementation & systemsPipeline / workflowSequencing & dependenciesFailure modes & opsSchema / migrationSQL correctness & constraintsPerformance & indexesSecurity designThreat modelingImplementation gapsMarketing / positioningMessage clarity & truthCompetitive exposureAPI / interface designConsistency & contractsConsumer experience
For full persona prompt templates → read references/reviewer-personas.md
For pre-configured bundles → read references/review-types.md
Spawn ALL reviewers simultaneously — parallel, not sequential. Independent reviewers find different issues.
Doc ScoreDefault ModelRationale7–10anthropic/claude-opus-4-6Deep reasoning required; subtle architectural flaws need Opus3–6anthropic/claude-sonnet-4-6Worth trying; structured prompts may close the gap
A/B testing note: If Sonnet misses a CRITICAL issue that Opus would have caught on a 3–6 doc, upgrade that doc type to Opus permanently. Track findings in references/model-notes.md as patterns emerge.
Key parameters for every reviewer spawn:
text
model: anthropic/claude-opus-4-6 ← or sonnet for 3-6 scored docs
mode: run
runTimeoutSeconds: 300
label: reviewer-{role}
The task field contains the full reviewer prompt from references/reviewer-personas.md plus the document content to review.
For EVERY redline, take an explicit position. No skipping.
PositionWhenRequirementAGREECritique is correct, change should be madeState what changesDISAGREEOriginal design is defensibleMust provide rationale — not just dismissalMODIFYIssue is real, suggested resolution is wrongPropose your alternative
All CRITICAL redlines default to AGREE unless strongly defensible.
At least 1 DISAGREE expected — if zero, you may be rubber-stamping.
Write positions to positions.md in the session directory.
output/{slug}-v2.mdA good review session produces:
text
**[REDLINE-{TYPE}-{NNN}]** {Section reference}
**Claim:** What the document says
**Challenge:** The specific objection or gap
**Severity:** CRITICAL | MAJOR | MINOR
**Suggested Resolution:** What should change
Full spec → read references/redline-format.md