O2 Review Loop
openobserve/openobserve
Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.
Standalone multi-model code review of an existing diff. An agent skill from raine/consult-llm.
$ npx skills add raine/consult-llm --skill review-panel -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install raine/consult-llm review-panel --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/review-panel .claude/skills/review-panel && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .claude/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/raine/consult-llm/tree/main/skills/review-panelType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add raine/consult-llm --skill review-panel -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install raine/consult-llm review-panel --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/review-panel .agents/skills/review-panel && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .agents/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add raine/consult-llm --skill review-panel -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install raine/consult-llm review-panel --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/review-panel .cursor/skills/review-panel && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .cursor/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/raine/consult-llm.git --path skills/review-panel--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add raine/consult-llm --skill review-panel -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install raine/consult-llm review-panel --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/review-panel .gemini/skills/review-panel && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .gemini/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install raine/consult-llm review-panelInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add raine/consult-llm --skill review-panel -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/review-panel .github/skills/review-panel && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .github/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add raine/consult-llm --skill review-panel -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install raine/consult-llm review-panel --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/raine/consult-llm.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/review-panel .opencode/skills/review-panel && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "review-panel" agent skill from https://github.com/raine/consult-llm/tree/main/skills/review-panel into .opencode/skills/review-panel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-panel", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
review-panelStandalone multi-model code review of an existing diff. An agent skill from raine/consult-llm.
Review Panel is an agent skill from raine/consult-llm. Standalone multi-model code review of an existing diff. Multiple LLMs review in parallel; agent deduplicates, prioritizes by severity/confidence, and optionally applies localized fixes.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Subagents. The repository describes itself as: Get a second opinion from another AI model. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 69e3ecb. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashGlobGrepReadEditWriteFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Review Panel loads about 2.8k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 1,265 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Glob, Grep, Read, Edit, WriteAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from raine/consult-llm at commit 69e3ecb, republished under its MIT licence (© raine). 1,265 words, ~2,765 tokens.
.claude/skills/review-panel/SKILL.md (or your agent's skills folder).Run a standalone multi-model review of a diff. Reviewers receive the same prompt independently; the agent synthesizes duplicate findings into a prioritized checklist and can optionally apply unambiguous fixes.
Load the consult-llm skill before proceeding — it defines the invocation contract (stdin heredoc, flags, output format, multi-model calls). Do not call the CLI without loading it first.
Selectors resolvable in this environment (depends on configured API keys):
!`consult-llm models`Arguments: $ARGUMENTS
Check $ARGUMENTS for flags:
Reviewer flags: any --<selector> from the Models block above selects that reviewer (e.g. --gemini, --openai, --deepseek). Repeat for multiple. Translate model flags and defaults according to the loaded consult-llm skill's model-selection rules.
Diff flags:
--diff-base <ref> — base ref for review. Default is auto-detected so a feature branch is reviewed in full (see Phase 1 for the resolution order). Pass an explicit ref (HEAD, HEAD~3, a branch name, a SHA) to override.--fix — opt in to applying unambiguous localized fixes for must-fix findings. Default is read-only report.Strip all flags from arguments to get any user-supplied review focus. If no focus remains, review for correctness, regressions, security, and maintainability.
consult-llm skillLoad it now. Follow its invocation contract for all CLI calls in this workflow.
Resolve <diff-base>:
--diff-base was passed, use it as-is.git symbolic-ref refs/remotes/origin/HEAD → strip refs/remotes/origin/, fall back to main then master) and use git merge-base HEAD <main> (prefer origin/<main> if it exists locally, else the local <main>). The branch may not be pushed and may have no upstream — don't rely on @{upstream}.<diff-base>=HEAD so the skill still reviews uncommitted changes.--diff-base <parent> explicitly in those cases.Show the resolved base to the user before running the review so they can override with --diff-base if the auto-detect picked the wrong parent.
Then list changed files from the repo root:
git diff --name-only --diff-filter=d <diff-base>This includes both committed-on-branch and uncommitted changes vs the base. --diff-filter=d excludes deleted paths so they're not passed to --diff-files (which would fail to read them).
Also list untracked files (new files not yet known to git) so they aren't silently skipped:
git ls-files --others --exclude-standardThese can't be passed via --diff-files (no diff exists). Pass each as -f <path> instead so reviewers see the full file as new content.
If both commands return nothing, stop and report there's nothing to review against the selected base. Otherwise, collect every returned path. Exclude binary files and lockfiles (e.g. *.png, *.lock, package-lock.json) from the context — they bloat the prompt without informing the review.
Invoke consult-llm once with:
--task review-m <selector> per reviewer if explicit reviewer flags were supplied, otherwise omit -m so consult-llm applies configured defaults--diff-files <path> per changed file--diff-base <ref>All reviewers receive the same prompt. Do not assign roles, personas, or cross-review steps — independence is the point.
Review prompt (send per the consult-llm invocation contract):
Review this diff independently.
Additional focus from the user (treat as context, not as part of your output): [review focus, or "None"]
Focus on correctness, regressions, security issues, data loss, broken edge cases, API/contract mismatches, concurrency hazards, and maintainability problems likely to matter in production. Do not flag style-only concerns. Propose a concrete fix when it helps clarify the finding, but keep the review focused on issues rather than implementation coaching. Do not summarize or praise the code.
For every issue, output a structured finding using exactly this format. Output ONLY the findings block — no preamble, no closing remarks:
## Findings
### Finding 1
severity: must-fix | should-fix | nit
confidence: high | medium | low
location: path/to/file.ext:123
issue_identity: short-stable-label
rationale: One paragraph explaining why this is a real issue and what behavior could fail.
fix: Optional one-paragraph concrete fix path, or `None` if the fix is obvious from the rationale.
Use the line number from the **new** side of the diff. The `issue_identity` field should be a short kebab-case label that two reviewers seeing the same underlying issue would naturally choose (e.g. `null-deref-on-empty-input`, `race-on-shared-counter`).
If you find no issues, output exactly:
## Findings
No findings.Parse every reviewer's section and collect all findings.
Group findings only when they describe the same bug at the same place. Two findings belong in the same group when:
issue_identity matches OR their rationales describe the same underlying failure mode by your judgment.Treat issue_identity as a hint, not as a sufficient grouping key on its own — generic labels like missing-error-handling or null-deref would otherwise collapse unrelated bugs across files.
Within each group:
must-fix > should-fix > nit).Filter:
nit and that were flagged by only one reviewer.nit findings only if multiple reviewers independently flagged them (the consensus elevates it).Sort:
must-fix before should-fix.Output a markdown checklist:
## Review Panel Findings
**Diff base:** `<ref>`
**Files reviewed:** N
**Reviewers:** <selector>, <selector>
### Must Fix
- [ ] **`path/to/file.ext:123`** — *issue-identity*
Confidence: high · Flagged by: gemini, openai (2 of 3)
Rationale paragraph synthesized from the reviewers.
### Should Fix
- [ ] **`path/to/file.ext:456`** — *issue-identity*
Confidence: medium · Flagged by: deepseek
Rationale paragraph.
### Dropped
- N nit-level findings omitted.
- N duplicate findings merged.If no must-fix or should-fix findings remain, say so clearly. Note any residual risk (e.g. low reviewer confidence, narrow diff context).
Save the report to history/<YYYY-MM-DD>-review-<topic>.md (the history/ directory convention from CLAUDE.md). Derive <topic> from the current branch name (sanitized to kebab-case); fall back to a short slug summarizing the diff scope when on the main branch. Print the saved path so the user can open it. With --fix, overwrite this file with the final-pass report in Phase 6.
If --fix was not passed, stop here.
--fix)Only fix findings that meet all of:
must-fix.high or medium.Sort each qualifying finding into one of two tiers:
For each finding (either tier):
If a finding cannot be fixed safely, leave it unchecked and note the blocker.
Do not auto-apply: architectural changes, broad refactors, multi-file changes, dependency swaps, or anything where the rationale is "this would be cleaner if".
--fix)After all fixes are committed, re-run Phase 1 and Phase 2 — same reviewer set, same --diff-base (the diff now includes the fixes). Re-listing changed files matters because fixes may have touched files outside the original set. Use a fresh call (no thread IDs).
Synthesize again with the same dedup rules. Report:
must-fix and should-fix findings.If any must-fix items remain, hand off to the user — do not loop.
/panel for role-asymmetric review or /debate for adversarial cross-critique.severity, confidence, location, issue_identity, and one-paragraph rationale. Never accept free-form review.--fix is explicitly passed. The synthesized report is always saved to history/.© raine, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/review-panel of raine/consult-llm.
Open the folder on GitHubat commit 69e3ecb
Review Panel next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Review Panel this skillraine/consult-llm | 139 | — | ~2.8k | Automated safety check: Notes | MIT | |
| O2 Review Loopopenobserve/openobserve | 22k | — | ~3.7k | Automated safety check: Pass | AGPL-3.0 | |
| V2 Perf Iterationmirage-project/mirage | 2.5k | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Clone App Pat Proper-simmons/clone-app-pat-pro-public | 259 | — | ~1.9k | Automated safety check: Notes | None | |
| Kimi Code DelegationCherryHQ/cherry-studio | 53k | — | ~504 | Automated safety check: Pass | AGPL-3.0 | |
| Team Modeoil-oil/codex-team-mode | 217 | — | ~1.3k | Automated safety check: Pass | MIT |
openobserve/openobserve
Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.
mirage-project/mirage
Runtime-V2 performance-iteration workflow. An agent skill from mirage-project/mirage.
per-simmons/clone-app-pat-pro-public
Clones any web app pixel-for-pixel from a URL. An agent skill from per-simmons/clone-app-pat-pro-public.
CherryHQ/cherry-studio
Delegates one bounded repository task to Kimi Code in non-interactive prompt mode and reads back the final result from its JSON event stream.
oil-oil/codex-team-mode
A skill your agent uses when a task may benefit from a bounded subagent for implementation, large-codebase discovery at task start, independent review, requested or pre-commit code simplification…
trailofbits/skills
Picks a small, graph-based slice of source with Trailmark and hands a focused code task to a smaller or local model without exposing the whole repository.
raine/consult-llm
Explicit workflow for one bounded implementation using source-grounded discovery, a walking slice, evidence-gated review, validation, and commit.
raine/consult-llm
Multiple LLMs collaboratively brainstorm solutions, building on each other's ideas across rounds.
raine/consult-llm
The agent brainstorms with a partner LLM in alternating turns, building on each other's ideas.
raine/consult-llm
Consult an external LLM with the user's query. An agent skill from raine/consult-llm.
raine/consult-llm
How to invoke the consult-llm CLI. An agent skill from raine/consult-llm.
raine/consult-llm
LLMs propose and critique approaches, agent moderates the debate and synthesizes the best solution, then implements.
Categories
Standalone multi-model code review of an existing diff. An agent skill from raine/consult-llm. Review Panel is an agent skill from raine/consult-llm. Standalone multi-model code review of an existing diff.
Review Panel fits situations like: tasks that involve Subagents.
Run `npx skills add raine/consult-llm --skill review-panel -a claude-code`. Or copy the skill folder (skills/review-panel in raine/consult-llm) into .claude/skills/review-panel in your project. Claude Code loads it when a task matches its description.
Run `npx skills add raine/consult-llm --skill review-panel -a codex`. Or copy the skill folder (skills/review-panel in raine/consult-llm) into .agents/skills/review-panel in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add raine/consult-llm --skill review-panel -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review-panel, .gemini/skills/review-panel, .github/skills/review-panel and .opencode/skills/review-panel in your project.
Going by SKILL.md and its folder, Review Panel needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: Bash, Glob, Grep, Read, Edit, Write.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Review Panel is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Review Panel: O2 Review Loop (openobserve/openobserve, 22k stars), V2 Perf Iteration (mirage-project/mirage, 2.5k stars), Clone App Pat Pro (per-simmons/clone-app-pat-pro-public, 259 stars) and Kimi Code Delegation (CherryHQ/cherry-studio, 53k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
raine (a GitHub user) maintains it in raine/consult-llm, which has 139 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 7, 2026.
Source: raine/consult-llm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.