agent-doc-discipline
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and…
Adversarial pass over a diff or design: three reviewers on different models each try to break it — correctness, security, edge cases — findings merged by severity into a blocking verdict. For contested or high-risk changes.
Claude Code
$ npx -y skills add Yeachan-Heo/oh-my-claudecode --skill interrogate --agent claude-code
Codex
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a codex -y
Cursor
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a cursor -y
Gemini CLI
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a gemini-cli -y
GitHub Copilot
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a github-copilot -y
OpenCode
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a opencode -y
Windsurf
$ npx skills add Yeachan-Heo/oh-my-claudecode --skill interrogate -a windsurf -y
name: interrogate
description: "Adversarial pass over a diff or design: three reviewers on different models each try to break it — correctness, security, edge cases — findings merged by severity into a blocking verdict. For contested or high-risk changes."
aliases: []
metadata:
credits:
adversarial-panel: pstack
author: Lauren Tan
url: "https://github.com/cursor/plugins/tree/main/pstack"
port: pstack-claude
port-author: Michael Denyer
port-url: "https://github.com/michael-denyer/pstack-claude"Three independent reviewers try to break the work before it ships. Diversity is the mechanism: reviewers on different models or provider families find different classes of defects, and agreement across them is high-signal. This is an adversarial lane on top of `review`, not a replacement for it.
Name exactly what is under interrogation: the diff (default), a design doc, or an API contract. State the invariants the change must preserve; reviewers attack those first.
Spawn three reviewers in one message, in the background, each read-only:
find different defect classes, and agreement across them is high-signal. Read `team.roleRouting` from the project config (`.claude/omc.jsonc`) or the user config (`claude-omc/config.jsonc`; `omc config` prints the effective values) and collect up to three distinct provider families in canonical role order, filling any remaining seats from the default families — claude, codex, gemini — not already seated, and say which family each seat got. When no routing config exists, fall back to `OMC_TEAM_WORKTREE_MODE=detached omc team --no-decompose 1:claude,1:codex,1:gemini "<the framed target, the invariants, and one lens per seat>"`, or in-session `Task` dispatches to `oh-my-claudecode:code-reviewer` and `oh-my-claudecode:security-reviewer` on different models — the team command needs the task text; pass target, invariants, and lens allocation as that task
correctness, security and trust boundaries, or edge cases and failure modes
before Phase 3** — the team route starts workers asynchronously, and merging before they finish reports an empty panel; a worker that stalls past the stated interval is named as missing, not silently dropped. Keep worktrees and team state alive through judging, and run `omc team shutdown <team-name> --force` (the name the startup snapshot prints; --force skips the confirmation prompt) only in the final cleanup step after verification, as the arena skill sequences it
failing test, a repro script, or command output that shows the wrong behavior; for a design or plan, a prototype or a probe of the current tree — and to leave out anything it did not run. No findings is a valid result. Findings come back as `{severity: blocker|major|minor, claim, evidence, location}` where the evidence is the command and the output it printed — a finding without a run is dropped
You own the merge. Collect the panels' findings, re-run each finding's command yourself, and keep only what reproduces and breaks the invariants; merge findings that share a root cause, and rank the rest by severity. A claim two reviewers disagree on is a question for the code, not a vote — resolve it by reading or running. In the reply, say how many findings each reviewer produced and how many did not survive the rerun, so a clean panel reads as a result, not a silence.
work goes back to the author lane with the finding list; nothing merges.
models named, in the reply.
The verdict is advisory to `review` and to the human; it never merges or gates delivery on its own. When interrogation blocks, say what would change the verdict.
After the verdict is delivered, run `omc team shutdown <team-name> --force` (the name the startup snapshot printed) unconditionally — on pass, revise, block, and error paths alike. The panel's workers, tmux panes, team state, and detached worktrees must not outlive the interrogation. Keep the target checkout intact; only team-managed resources are cleaned.
verdict as missing; two reviewers still produce a verdict, one does not.
For Codex users: Check out oh-my-codex — the same orchestration experience for OpenAI Codex CLI. Liked OmC but found it a bit overkill? Try gajae-code.
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and…
Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode
Settle types and module shape before cross-boundary code — competing designs explored in parallel, compared on API surface and…
Periodic architecture survey — walks the module graph and reports ranked deepening candidates (shallow modules, hypothetical…
Run N parallel candidates at one brief and synthesize: rubric-first framing, isolated fan-out, a cross-judge on a different…
Shipyard's navigator — chart a foggy effort (destination unclear, questions not yet stateable) into a map of decision tickets on…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration