Skip to content
Back to skills

Tribunal

ASecurity

Run one neutral prompt independently across every discovered model from selected CLI providers, then compare all answers and failures. Use for naming, short judgment questions, sanity checks, and cross-model test matrices; never use it to execute coding work.

  • 22 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
researchgo

Works with

  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add lev-os/agents --skill tribunal --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tribunal?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tribunal
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lev-os-tribunal/badge)](https://www.skillsdirectory.com/skills/lev-os-tribunal)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tribunal
description: "Run one neutral prompt independently across every discovered model from selected CLI providers, then compare all answers and failures. Use for naming, short judgment questions, sanity checks, and cross-model test matrices; never use it to execute coding work."
---

# Tribunal

Collect independent opinions, not implementation. Run the same short prompt
across the full reachable model roster for the selected providers, preserve the
raw matrix, and summarize convergence without hiding dissent or failed cells.

Read [references/cli-runners.md](references/cli-runners.md) before dispatch. It
defines detection, model discovery, cache provenance, and current headless
invocations.

## 1. Frame One Question

Write a neutral prompt under 200 words. Include the necessary context without
stating a preferred answer. Ask every model for the same compact shape:

```json
{"answer":"candidate or decision","reason":"one short reason"}
```

Do not rephrase per model. Do not ask models to coordinate.

## 2. Resolve the Full Roster

Run `bin/detect-runners --json`. Use `--refresh` when the caller asks for live
state or the cached provenance is stale.

- If the caller names providers or models, use exactly those selections.
- If the caller gives only a provider count `N`, choose `N` installed runners
  with non-empty rosters in stable detector order and disclose the choices.
- If providers are selected without models, dispatch every model returned for
  each provider. Do not sample weakest/middle/strongest and do not apply a budget
  tier.
- If neither providers nor `N` are named, default to three installed runners and
  every model from each. Prefer Claude, Codex, and a Google-capable runner when
  available so small and frontier models are both represented.
- Treat OpenCode and Pi as aggregate catalogs. Select them automatically only
  when needed to fill the requested `N`; when explicitly selected, honor their
  complete discovered roster.
- If an installed runner cannot enumerate models, emit an unavailable roster row
  unless the caller supplied explicit model IDs. Never guess completeness.

## 3. Dispatch in Parallel

Create one process per `(runner, model)` cell with the identical prompt. Use the
read-only or no-tools invocation from the runner reference. Give every cell its
own output and log file. Launch independent cells concurrently when the host can
track them safely.

Tribunal does not edit files, execute implementation tasks, or verify code. Route
that work to `$coder` instead.

## 4. Collect Every Outcome

Wait for every cell to finish or time out. Record runner, model, answer, reason,
status, and error for every cell. Never drop failed adapters or show only the
first successful answer.

Present:

1. The complete model-by-model answer matrix.
2. Exact answer counts with explicit denominators.
3. A provider-balanced view so a provider exposing more model variants does not
   silently dominate the conclusion.
4. Dissent, unavailable rosters, timeouts, and parse failures.

Classify the result as unanimous, convergent, split, or divergent. Treat
convergence as evidence, not automatic truth.

## Optional Fusion

Only when the caller asks for fusion, anonymize the collected answers and run a
separate synthesizer after the raw matrix is complete. Label synthesis as an LLM
interpretation and keep all source answers visible. Exact normalization, counts,
failures, and provenance remain deterministic.

Files in this skill

  • SKILL.md3.4 KB
  • bin/detect-runners10.4 KB
  • references/cli-runners.md3.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…