CtrlK
BlogDocsLog inGet started
Tessl Logo

panel-majority-vote

Runs 3 isolated reviewer sub-agents and consolidates a PASS/BLOCK verdict by majority. Use when the user requests an independent review of code changes, pull requests, design documents, or release notes.

100

Quality

100%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Skill: Panel majority vote

Inputs / Outputs

Inputs: <runRoot>, <panelKey> (filesystem-safe), question text, artifact list. Panel dir default: <runRoot>/panel/.

FilePath
Prompt payload (optional)<panelDir>/<panelKey>-panel-prompt.md
Raw reviewer outputs<panelDir>/<panelKey>-reviewer-outputs.md
Consolidated report<panelDir>/<panelKey>.md

Procedure

  1. Validate scope — every artifact path is under <runRoot> and the list is sufficient to answer the question.

  2. Spawn 3 reviewers in parallel — start three isolated subagents with identical prompts. Spawn 3 reviewers using runSubagent with identical prompts; each reviewer receives the same question, artifact list, and constraints but runs in isolation. Required reviewer output sections (no others): VERDICT: PASS | BLOCK, MUST-FIX:, SHOULD-FIX:, QUESTIONS:, TEST IDEAS:, CONFIDENCE: low | med | high.

  3. Persist outputs — write <panelDir>/<panelKey>-reviewer-outputs.md with a header (run root, panel key, question, artifacts) and each reviewer output verbatim, separated.

  4. Consolidate — parse each reviewer output for its VERDICT: line and count PASS votes. Overall verdict = PASS if pass_count ≥ 2; otherwise BLOCK. Deduplicate MUST-FIX: and SHOULD-FIX: items and annotate each item with (N/3 reviewers).

# count PASS/BLOCK from combined outputs
pass_count=$(grep -o "VERDICT: PASS" panel/run123-reviewer-outputs.md | wc -l)
block_count=$(grep -o "VERDICT: BLOCK" panel/run123-reviewer-outputs.md | wc -l)
verdict=$([ "$pass_count" -ge 2 ] && echo PASS || echo BLOCK)

# emit a minimal JSON summary using jq (install jq if needed)
jq -n --arg panel_key "run123-panel" --arg verdict "$verdict" --argjson pass_count $pass_count --argjson block_count $block_count '{panel_key:$panel_key, verdict:$verdict, pass_count:$pass_count, block_count:$block_count}' > panel/run123-summary.json
  1. Write report — create <panelDir>/<panelKey>.md with the minimal structure below and reference the generated summary.
  • Title: Panel <panelKey> — Verdict: PASS | BLOCK (pass_count/block_count)
  • Highlights: top deduplicated MUST-FIX and SHOULD-FIX items
  • Evidence: paths to reviewer outputs and panel/run123-summary.json
  1. Print summary — overall verdict + vote tally + report path.

  2. Log (⛔ hard gate) — call the observability-logging skill with panel_key, verdict, pass_count, block_count, must_fix, should_fix, reviewer_model, weighted, attempt, tracker_issue, artifacts_count, report_path for verification.

Notes

  • On BLOCK: change the underlying work and re-run; do not re-word the question.
  • After 3 consecutive BLOCKs on the same panel key: create a dispute record per team-lead-reference § Dispute Protocol.
  • Model selection: use the same model for all 3 reviewers. See team-lead-reference for model routing.

Related Resources

ResourcePurpose
panel-report.template.mdReport template for step 5
REFERENCE.mdWeighted consensus variant and weighting details
observability-logging skillPanel logging command (step 7)
team-lead-reference skillModel routing and dispute protocol
Repository
monkilabs/opencastle
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.