Agent skill

O2 Review Loop

by openobserve in 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.

AGPL-3.0Auto-check passedAgent Workflows

Install O2 Review Loop

skills CLI
$ npx skills add openobserve/openobserve --skill o2-loop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openobserve/openobserve o2-loop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openobserve/openobserve.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/o2-loop .claude/skills/o2-loop && rm -rf skills-src

Use ~/.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/

Facts

Skill name
o2-loop
GitHub stars
22k
Token cost
~3.7k tokens
SKILL.md length
1,972 words
Files
13 (incl. scripts)
Skills in repo
3
Repo updated
First seen
Licence
AGPL-3.0

At a glance

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.

  • Works in 8 steps: Outcome: agreed after N rounds, paused… → Change summary: from spec.md, a few… → Rounds: one line per round: backend,… → …
  • Implementing a confirmed plan with an independent review before you look at it
  • SKILL.md covers Preconditions, Ledger layout, Procedure and Ending the loop, plus 1 more section
  • Runs Python and Shell scripts from its folder; calls git, claude and codex

What it does

The main session only orchestrates: it discusses the plan with you, writes a spec, starts the `o2-coder` subagent, runs the reviewer, follows loop state and relays progress. It does not edit or review code itself. The coder implements the spec, runs the gates and answers each finding by fixing or disputing it, and it keeps its context across rounds. Each round's reviewer is a fresh process, either the Codex CLI or a sandboxed `claude -p`, that reviews the frozen WIP commit, verifies earlier findings and returns a verdict file.

The loop runs for up to five rounds and then asks you to rule on what remains. Commits stay local and nothing is pushed. A reviewer script picks the backend automatically, preferring Codex and falling back to sandboxed Claude with a warning, and a mode that uses both runs the two reviewers in parallel on the same commit, merges their verdicts and has each check the other's findings in the next round. The Claude backend relies on macOS `sandbox-exec`. State lives in a ledger outside the repository, and only one loop should run per checkout and branch, with separate worktrees for parallel sessions.

When your agent uses it

  • Implementing a confirmed plan with an independent review before you look at it
  • Getting a second opinion from Codex on each round of a change
  • Running a risky change through two reviewers

Example prompts

  • “Start the loop for the plan we just agreed.”
  • “Run o2-loop with both reviewers on this branch.”
  • “Start the review loop and keep going until the reviewer approves or you need my call.”

Requirements

  • Codex CLI, or `claude -p` with macOS `sandbox-exec` as the fallback reviewer
  • A Git repository and a confirmed plan
  • The `o2-coder` subagent definition in `.claude/agents/`

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Outcome: agreed after N rounds, paused after N rounds with K open items, or stopped after N rounds with K open items.
  2. Change summary: from spec.md, a few sentences.
  3. Rounds: one line per round: backend, verdict, new findings, what was fixed.
  4. Fixed: each finding fixed, with file and a one-line description.
  5. Disputed, partial, or deferred: each item the user has to rule on, with the reviewer's last note and the coder's last note side by side…
  6. Unverified edits: git status --short plus git log --oneline ..HEAD, or none. If not none, the outcome must not say agreed.
  7. Residual risk: what is not covered by tests or review, anything skipped.
  8. Files changed: git diff --stat HEAD and the WIP commits from git log --oneline ..HEAD.

What it can do on your machine

Read from SKILL.md and the folder at commit 1ea6f5a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 6 files in scripts/ (Python and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • claude
    • codex

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

O2 Review Loop loads about 3.7k tokens when it runs. Until then it costs about 170 tokens; SKILL.md has 1,972 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~170
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

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.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated 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); the scripts in this folder are not scanned.

SKILL.md

The full file from openobserve/openobserve at commit 1ea6f5a, republished under its AGPL-3.0 licence (© openobserve). 1,972 words, ~3,706 tokens.

Download SKILL.mdSave it as .claude/skills/o2-loop/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
o2-loop
description
Plan, implement, and review a change with separated roles. The main session discusses the plan with the user and writes a spec; an o2-coder subagent implements it and runs the gates; an independent reviewer process (Codex CLI, or a sandboxed claude -p when Codex is unavailable) reviews each round's WIP commit; the coder fixes or disputes every finding; up to 5 rounds, then the user is asked. The main session only orchestrates, watches, and relays progress. Use when the user says "start the loop", "o2-loop", "start the review loop", or when a confirmed plan is ready to be implemented and reviewed before the user looks at it. Makes local WIP commits, never pushes.

o2-loop

Four roles, kept apart on purpose:

rolewhodoes
orchestratorthis sessiondiscusses the plan with the user, writes spec.md, spawns the coder, runs the reviewer, follows loop-state.py, relays progress and verdicts, writes the report
codero2-coder subagent (.claude/agents/o2-coder.md)implements the spec, runs the gates, answers findings; continued across rounds with SendMessage so it keeps its context, or respawned from the ledger when that tool is unavailable
reviewera fresh process per round: Codex CLI, or claude -p in a sandboxreviews the frozen WIP commit, verifies earlier findings, returns verdict.json
useryouconfirms the plan, watches the progress stream, rules on deferred or disputed items, does the final review

The orchestrator does not edit code and does not review code. If it finds itself doing either, it is breaking the loop.

Preconditions

  • The plan was discussed with the user and confirmed.
  • A reviewer backend is reachable. review.sh picks one (--backend auto, the default): Codex when its CLI is present (codex on PATH or bundled in ChatGPT.app), otherwise a sandboxed claude -p with a loud warning. Pass --backend claude only when the user asks. --backend both runs Codex and Claude on the same commit in parallel and merges their verdicts: request_changes if either says so, findings numbered CX<round>-<n> and CL<round>-<n> (near-duplicates merged and marked with both sources), and every finding goes to both reviewers in the next round so each verifies the other's. Use it when the user asks for a cross-check or when the change is risky enough to pay for two reviews (roughly the cost of a Claude round plus a Codex round, wall time of the slower one). The Claude backend needs macOS sandbox-exec; --unsandboxed overrides only when the user says so. If no backend exists, stop and tell the user.
  • The ledger lives outside the repo at ~/.claude/o2-loop/<repo>/<branch-slug>/; the scripts derive it. Nothing from it is ever committed.
  • One loop per checkout and branch at a time. Two sessions working on the same repository each use their own git worktree; the loop does not lock anything.

Ledger layout

~/.claude/o2-loop/<repo>/<branch-slug>/
  spec.md                        orchestrator: the confirmed plan the coder implements and the reviewer checks against
  round-N/evidence.md            coder: gates run, results, what was fixed this round
  round-N/coder.log              coder: one line per step, written live
  round-N/commit, backend        review.sh: the WIP commit reviewed and by which backend
  round-N/progress.log           review.sh: one line per reviewer action, written live
  round-N/verdict.json           review.sh: the reviewer's structured verdict
  round-N/coder-response.json    coder: fix / dispute / partial / defer per finding
  round-N/also/<repo name>/      review.sh and that repository's coder: commit, path, diff.patch, delta.patch, evidence.md, coder.log, coder-response.json
  round-N/prompt.md, diff.patch, delta.patch, candidates.md, events.jsonl, reviewer.err   review.sh
  round-N/codex/, round-N/claude/  review.sh (--backend both): each reviewer's own prompt, events, verdict and stderr; round-N/verdict.json is the merge
  report.md                      orchestrator: written when the loop ends

Scripts, all under <skill dir>/scripts/ (this SKILL.md's directory):

  • review.sh --round N [--backend auto|codex|claude|both] [--also <checkout> ...]: freezes the tree (and every --also checkout) as wip(o2-loop): round N, runs one reviewer round in disposable worktrees (two reviewers in parallel with both), writes verdict.json. Exit 0 approve, 10 request_changes, 1 failure. --help lists every flag.
  • loop-state.py [--cap 5]: reads the ledger and prints ACTION: with the single next step. Run it after every step; do not decide the next step yourself.
  • selftest.py: regression cases for the state machine and the verdict merge; run it after editing either script.

Procedure

0. Spec. Write <ledger>/spec.md: what the change does, what it must not do, the files or areas it touches, the tests that should cover it, and any constraints from the discussion. One page at most. For a change that spans repositories (openobserve plus o2-enterprise, say), the spec opens with a Contract section, the part every repository must agree on: function and type signatures, feature gates, wire formats, the shared branch name (paired PRs need the same branch name in both repos). Then one section per repository with its own checkout path. Tell the user the loop is starting and which backend review.sh --help would pick.

1. Spawn the coder. Agent with subagent_type: o2-coder, run_in_background: true. The brief is only: the ledger path, "round 1", and "read spec.md". Agent definitions load at session start, so if the harness answers that o2-coder is not found, spawn general-purpose instead with the body of .claude/agents/o2-coder.md prepended to the same brief; the rules are identical, only the packaging differs. Do not paste the discussion; the spec is the contract. Before spawning, start a Monitor on <ledger>/round-1/coder.log (create it with touch first) so the coder's steps land in the chat:

bash
L=<ledger>/round-N/coder.log; while IFS= read -r line; do echo "$line"; case "$line" in *" question: "*|*" step: finished"*) pkill -f "^tail -n 0 -f $L"; break ;; esac; done < <(tail -n 0 -f "$L")

The watcher ends only on the coder's fixed last line step: finished or on a question: line; a looser pattern such as done matches ordinary step lines ("edits done; running fmt") and ends the watch early. If it does end early, start it again with the same command. The pkill sits before the break on purpose: Monitor runs the command in the user's login shell, and zsh waits for the <(tail ...) process after the loop, so a pkill placed after the loop never runs there and the watch hangs until its timeout; bash does not wait, and the form above works in both. When the coder reports back, post its summary to the user in one short paragraph. If it wrote a question: line, take the question to the user, answer it via SendMessage to the coder, and continue.

1b. Paired repositories. One coder per repository, spawned the same way with its own checkout path in the brief, each writing to its own ledger slot (round-N/evidence.md and coder.log for the primary repository; round-N/also/<repo name>/evidence.md, coder.log, coder-response.json for a paired one, where <repo name> is the checkout directory's name as review.sh derives it). Run them in parallel only when the contract in the spec is settled; when one side depends on an interface the other side has not written yet, run that side first and the dependent side after it reports. Coders never spawn agents themselves: splitting work is the orchestrator's job. Use real sibling checkouts for the paired repositories, not .claude/worktrees/ paths, which other sessions may overwrite. One Monitor per coder.log.

2. Review. Run loop-state.py; it should say review. Start a Monitor on <ledger>/round-N/progress.log (touch it first):

bash
L=<ledger>/round-N/progress.log; while IFS= read -r line; do echo "$line"; case "$line" in *" done: "*|*" error: "*) pkill -f "^tail -n 0 -f $L"; break ;; esac; done < <(tail -n 0 -f "$L")

then run review.sh --round N in the background. The watcher's shape matters: reading through a process substitution lets the loop see every line, the anchored pkill inside the loop ends the tail before the break (zsh would otherwise wait for it forever, see step 1), and a plain tail | while never returns at all. Add --also <checkout> for every paired repository so one reviewer sees all sides and can report contract mismatches (the schema's repo field on each finding says which side it belongs to). Tell the user round N started and which backend. Relay the monitor lines as they come, in the user's language. On exit 1, read progress.log and reviewer.err, fix the cause if it is ours (missing evidence, no changes vs base, auth), rerun once, else stop and report.

3. Relay the verdict before anything else. As soon as review.sh returns, post: backend, verdict, every finding as one line (id, severity, file:line, title, and with both which reviewers reported it), and each prior finding's status. With both, say when the two reviewers disagreed on a prior finding; the merge keeps it open if either did. The user sees what the reviewer said before seeing what the coder does about it.

4. Hand the findings to the coder. Run loop-state.py; it says respond, or cap when the round cap is already reached with a non-approving verdict, in which case go to step 5 before the coder does any more work. SendMessage to the same coder agent: the path of round-N/verdict.json, "round N+1", and, only if the verdict is approve and the remaining findings are low, "defer the lows". When SendMessage is unavailable in the session (the harness reports it disabled), spawn a fresh o2-coder instead with the same brief plus the checkout path and "read spec.md, every earlier round's evidence.md and coder-response.json, then the verdict"; the ledger carries the context, so the fresh coder loses nothing the reviewer saw. A verdict with no findings and no still_open prior finding needs no coder at all: loop-state.py treats it as answered. With paired repositories, message every coder; each answers the findings whose repo is its own and ignores the rest, and loop-state.py merges the responses. Start a Monitor on round-(N+1)/coder.log first. When the coder reports, post its per-finding decisions to the user (id, action, reason).

5. Decide by the state machine. Run loop-state.py and do exactly what ACTION says:

  • agreed: go to Ending the loop.
  • next: go to step 2 with round N+1.
  • cap: write an interim report.md (outcome paused after N rounds with K open items), then AskUserQuestion: continue for up to 3 more rounds, or stop and hand over. Show the open items. On continue, rerun loop-state.py --cap N+3 and go on; on stop, finish with outcome stopped after N rounds with K open items.
  • respond, evidence, review: something is missing; do that step.

loop-state.py judges the last round that has a verdict, so a prepared next round (its coder.log or evidence.md) never hides agreed or cap. Agreement, as it computes it: the last verdict is approve, no finding with original severity critical, high, or medium is open, every open low is answered with defer, the coder's open_items is empty, and HEAD equals the reviewed commit with a clean tree. Any edit after an approve invalidates it and needs another round.

Show full SKILL.md (509 more words)Show less

Ending the loop

Write <ledger>/report.md with, in this order:

  1. Outcome: agreed after N rounds, paused after N rounds with K open items, or stopped after N rounds with K open items.
  2. Change summary: from spec.md, a few sentences.
  3. Rounds: one line per round: backend, verdict, new findings, what was fixed.
  4. Fixed: each finding fixed, with file and a one-line description.
  5. Disputed, partial, or deferred: each item the user has to rule on, with the reviewer's last note and the coder's last note side by side. Present even when empty.
  6. Unverified edits: git status --short plus git log --oneline <last reviewed commit>..HEAD, or none. If not none, the outcome must not say agreed.
  7. Residual risk: what is not covered by tests or review, anything skipped.
  8. Files changed: git diff --stat <merge-base> HEAD and the WIP commits from git log --oneline <merge-base>..HEAD.

Then PushNotification with the outcome line and the number of items for the user, and in the chat: the outcome line, the items to rule on, a link to report.md, the number of WIP commits, and stop. Do not push or open a PR. Squash the WIP commits into one properly worded commit only when the user, after their review, says so:

bash
git reset --soft <merge-base> && git commit

Rules that override convenience

  • The orchestrator never edits the change and never reviews it; the coder never commits; the reviewer never writes. Each role's value comes from not doing the others' work.
  • The reviewer sees only the ledger and the frozen commit. Never paste the discussion or this session's reasoning into evidence, spec, or responses to steer it.
  • The Claude backend runs inside a disposable worktree under a deny-by-default seatbelt (no MCP servers, no Write/Edit, no web tools), with candidates from a separate code-review pre-run that the reviewer must confirm before adopting. Its pre-approved Bash commands include git, grep, sed, awk, find, python3 and bash; the seatbelt, not the allow list, is what keeps writes inside temp directories. On a host without sandbox-exec, --unsandboxed lets the loop run in a reduced mode: the reviewer gets no Bash, no ledger access and no pre-run, so the harness's working-directory confinement of Read/Grep/Glob is the wall; patches are inlined in the prompt (200 KB each, 600 KB in total) and paired worktrees stay readable. On macOS with sandbox-exec the flag changes nothing. Codex is preferred because it is a different vendor's model; when the Claude backend reviews, say so in the report and pass --model so the reviewer differs from the coder's model.
  • Never lower the reviewer's effort or budget to get an approve. The defaults (Codex high, Claude 15 dollars per round) are the loop; the flags exist for debugging.
  • A round that already has a verdict.json cannot be rerun; a redo takes the next round number.
  • Never amend, reset, or rebase a WIP commit while the loop runs; later rounds diff against them.
  • Never edit the skill's own scripts while a round is running.
  • If the user interrupts, leave the ledger as is and say which round it stopped in.

© openobserve, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files (scripts) in .claude/skills/o2-loop of openobserve/openobserve.

  • SKILL.md
  • prompts/backend-claude-nosandbox.md
  • prompts/backend-claude.md
  • prompts/backend-codex.md
  • prompts/review.md
  • prompts/verify.md
  • schema/review.json
  • scripts/candidates.py
  • scripts/loop-state.py
  • scripts/merge-verdicts.py
  • scripts/progress.py
  • scripts/review.sh
  • scripts/selftest.py

Open the folder on GitHubat commit 1ea6f5a

Compare with similar skills

O2 Review Loop 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.

O2 Review Loop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
O2 Review Loop this skillopenobserve/openobserve22k—~3.7kAutomated safety check: PassAGPL-3.0
Clawteamwin4r/ClawTeam-OpenClaw1.5k—~3.1kAutomated safety check: PassMIT
Subagent-Driven DevelopmentHoangNguyen0403/agent-skills-standard570—~852Automated safety check: PassMIT
Qwen Code Team CoordinatorQwenLM/qwen-code28k—~994Automated safety check: PassApache-2.0
Agenthubalirezarezvani/claude-skills28k—~2kAutomated safety check: PassMIT
Simplifytellahq/opensession392—~834Automated safety check: PassMIT

Similar skills

  • Clawteam

    win4r/ClawTeam-OpenClaw

    Multi-agent swarm orchestration. An agent skill from win4r/ClawTeam-OpenClaw.

    1.5k GitHub stars~3.1k tokensUpdated 3 mo ago
    Agent WorkflowsAuto-check passed
  • Subagent-Driven Development

    HoangNguyen0403/agent-skills-standard

    Runs a multi-task implementation plan by sending each task to a fresh implementer subagent, reviewing it independently, then reviewing the whole branch.

    570 GitHub stars~852 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Leads a small team of Qwen Code teammates: read-only investigators work in parallel, then one writer pinned to a git worktree makes the changes.

    28k GitHub stars~994 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Agenthub

    alirezarezvani/claude-skills

    Multi-agent collaboration plugin that spawns N parallel subagents competing on the same task via git worktree isolation.

    28k GitHub stars~2k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Simplify

    tellahq/opensession

    Clean up the changed code without changing behavior — review the diff for reuse, simplification, efficiency, and altitude cleanups via 4 parallel agents, then apply the fixes

    392 GitHub stars~834 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • ClawTeam Multi-Agent Swarm

    win4r/ClawTeam-OpenClaw

    Launches a swarm of specialist Hermes agents in git-worktree-isolated tmux windows with a kanban board and file-based inboxes, using built-in templates like hedge-fund and code-review.

    1.5k GitHub starsUsed in 1 repo~2.9k tokens
    Agent WorkflowsAuto-check passed

More from openobserve/openobserve

  • A playbook for fixing ESLint and TypeScript errors in the OpenObserve web frontend, with rule-by-rule guidance and typing conventions.

    22k GitHub stars~5.1k tokensUpdated today
    Auto-check passed
  • OpenObserve PR Brief

    openobserve/openobserve

    Produces a read-only morning brief of your open pull requests across the openobserve GitHub org, with a next step for each and a reminder for idle ones.

    22k GitHub stars~1.8k tokensUpdated today
    Auto-check passed

Works with

Questions about O2 Review Loop

What does O2 Review Loop do?

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. The main session only orchestrates: it discusses the plan with you, writes a spec, starts the `o2-coder` subagent, runs the reviewer, follows loop state and relays progress. It does not edit or review code itself.

When should I use O2 Review Loop?

O2 Review Loop fits situations like: implementing a confirmed plan with an independent review before you look at it; getting a second opinion from Codex on each round of a change; running a risky change through two reviewers.

How do I install O2 Review Loop in Claude Code?

Run `npx skills add openobserve/openobserve --skill o2-loop -a claude-code`. Or copy the skill folder (.claude/skills/o2-loop in openobserve/openobserve) into .claude/skills/o2-loop in your project. Claude Code loads it when a task matches its description.

How do I install O2 Review Loop in Codex?

Run `npx skills add openobserve/openobserve --skill o2-loop -a codex`. Or copy the skill folder (.claude/skills/o2-loop in openobserve/openobserve) into .agents/skills/o2-loop in your project. Codex loads it when a task matches its description.

Can I use O2 Review Loop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openobserve/openobserve --skill o2-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/o2-loop, .gemini/skills/o2-loop, .github/skills/o2-loop and .opencode/skills/o2-loop in your project.

What does O2 Review Loop need to run?

Going by SKILL.md and its folder, O2 Review Loop needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (git, claude and codex). Our summary lists: Codex CLI, or `claude -p` with macOS `sandbox-exec` as the fallback reviewer; A Git repository and a confirmed plan; The `o2-coder` subagent definition in `.claude/agents/`.

Does O2 Review Loop access the network?

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.

Is O2 Review Loop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does O2 Review Loop use?

O2 Review Loop is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does O2 Review Loop use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to O2 Review Loop?

Skills that share tags, products or a category with O2 Review Loop: Clawteam (win4r/ClawTeam-OpenClaw, 1.5k stars), Subagent-Driven Development (HoangNguyen0403/agent-skills-standard, 570 stars), Qwen Code Team Coordinator (QwenLM/qwen-code, 28k stars) and Agenthub (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains O2 Review Loop?

openobserve (a GitHub organization) maintains it in openobserve/openobserve, which has 22,281 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.

Source: openobserve/openobserve on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.