Qe Court logo

Qe Court

Community
proffesor-for-testing
qe-court

Adversarial review court — a delivery (diff, PR, test suite, or artifact) is prosecuted by independent AI reviewers from different vendors, each with its own probe set, then a SHIP verdict must SURVIVE escalating deeper reviewers before it stands. Use when you want more than one reviewer's opinion on whether something is safe to ship: pre-merge gating, release go/no-go, catching a too-easy PASS, or any 'is this actually done?' decision where a shallow approval is a risk. Produces a signed court record with a three-valued verdict (SHIP / REMAND / BLOCK) and a human as final judge. Learns over time: reproduced charges and overturned SHIPs feed the QE flywheel.

Overview

Publisherproffesor-for-testing
Repositoryagentic-qe
Skill nameqe-court
Stars
480
Forks
92
Bundled files
5
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by proffesor-for-testing on GitHub. Read the source before you install it.

Installation

Install the Qe Court AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/proffesor-for-testing/agentic-qe.git /tmp/agentic-qe
mkdir -p .claude/skills
cp -r /tmp/agentic-qe/assets/skills/qe-court .claude/skills/qe-court
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Qe Court in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Qe Court on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Qe Court is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

QE-Court: Adversarial Review as a Verdict

Purpose

One reviewer — even a strong one — is one Einstein squinting at the chalkboard. QE-Court convenes independent adversaries from different vendors, with different roles and different probe sets, makes them attack the delivery, and then forces any SHIP verdict to survive an escalating deeper review before it stands. You stay in the loop as the final judge. Implements ADR-124; composes ADR-117..122.

The one rule that makes it a court and not a rubber stamp: a passing grade is the claim under attack, not the finish line. A shallow 91/100 SHIP that a deeper reviewer can overturn is a bug in the review, not a delivery that shipped.

When to convene the court

  • Pre-merge gate on a risky PR or diff
  • Release go/no-go ("deployment readiness with a jury")
  • You got a PASS that felt too easy and want it stress-tested
  • A test suite claims coverage you don't trust (does it kill mutants?)
  • Any high-stakes "is this actually done?" call

For a quick single-lens review, use /sherlock-review, /brutal-honesty-review, or /code-review instead — the court is for when one opinion isn't enough.

The court roster (composes existing skills/agents — do NOT reimplement critics)

RoleWhoJob
Defensewriter model (summarizer)States the case-FOR-ship from the evidence. Never grades.
Prosecutionqe-devils-advocate, brutal-honesty-review, sherlock-review, qe-security-scanner, qe-mutation-tester, codex exec reviewEach files CHARGES against the delivery, with its own probe set, blind to the others until filing.
Blind refutersrc/verification/adversarial-verifyTries to KILL weak charges (default-refuted-if-uncertain).
Jurytwo-gate LLM-judge (ADR-119), cross-modelWeighs surviving charges → verdict + (optional) score.
Deeper reviewerhigher effort/model tier of any prosecutorThe overturn round.
Judgeyou (the human)Sees the strongest case for AND against; rules.

⚠️ Do NOT run the reduced 3-dimension QCSD workflow as the court engine. It can falsely rate SHIP by skipping the security / mutation / defect lanes. Spawn the specialized qe-* prosecutors above, or you reproduce the exact false-SHIP the court exists to catch. (ADR-124; see qcsd-development-swarm.)

Model routing (configurable — this is the point of the court)

The court's guarantees come from who reviews, not just how. Routing is user-configurable in config.json under routing; the defaults below enforce the invariants. Every model call goes through AQE's provider layer (ADR-123), so budget caps and cost receipts apply automatically.

StepDefault provider / tierWhy
Defenseclaude-code (default) or cognitum-low (may equal writer)Cheap; states the case, never grades. Must differ in vendor from the jury
Prosecutor — devils-advocatecognitum-midGap/assumption hunting
Prosecutor — brutal-honestyclaude-code (Opus/Sonnet)Rigor lens, different family from jury
Prosecutor — sherlockcognitum-highDeductive/root-cause needs a strong model
Prosecutor — security-scannerSAST tool + cognitum-midDeterminism where possible
Prosecutor — mutationmutation tool + local/boosterTest-adequacy is mechanical
Prosecutor — codex-reviewcodex (ChatGPT sub)Cross-vendor GPT brain — true writer≠juror; ≈$0
Jury (two-gate judge)cognitum-high or Opus, provider ≠ writerMust not grade its own family's output
Deeper reviewerhighest tier / best-of-N @ higher effortEscalation must be stronger than the base panel

Provider menu (mix freely in routing): claude-code (Claude subscription), cognitum-{low,mid,high} (Cognitum's own multi-model tiers — one option, it routes internally), openrouter (use when you want many distinct models across vendors for breadth), codex (GPT via ChatGPT subscription), claude/openai/gemini (metered APIs), ollama (local). Cognitum and OpenRouter are separate options: Cognitum already resolves multiple models behind its tiers; OpenRouter is the lever when you explicitly want to name several different models.

Enforced invariants (defaults; do not weaken without reason):

  1. ≥2 distinct vendors across the panel — Claude / Cognitum / GPT-via-Codex — not just tiers.
  2. Jury provider ∉ {writer, defense} — no model grades its own or its writer's output. Vendor is compared coarsely: cognitum-low and cognitum-high are the same vendor, so pairing them across defense and jury is a violation, not a diverse panel.
  3. All calls routed through ProviderManager → ADR-123 budget cap + receipts.

Invariants 1–2 are machine-checked by validateCourtConfig() in referee.ts, which the court MUST call before seating a panel (see How to run it). The options block below binds directly to that check — minDistinctVendors and writerIsNeverJuror are read, not decorative.

The protocol

DELIVERY (diff / PR / test-suite / artifact)
   │  1. DEFENSE  — writer model states the case for shipping, from evidence only.
   │  2. PROSECUTION (parallel, blind) — N specialized reviewers, DIFFERENT vendors,
   │     each generates its OWN probe set and files CHARGES (finding + reproduction).
   │  3. KILL ROUND — blind refuters attack each charge; weak/unreproducible ones dropped.
   │  4. JURY — two-gate judge, cross-model, writer≠juror. 3-valued verdict.
   │     A numeric score is emitted ONLY if its rubric passed the ADR-122 ANOVA screen.
   │  5. OVERTURN ROUND — if verdict == SHIP, escalate ONE deeper reviewer. Loop-until-dry:
   │     SHIP only STANDS if K consecutive deeper rounds find nothing new. Surviving fatal → flip.
   │  6. SIGNED COURT RECORD — provenance-tier surviving charges (ADR-121), sign (ADR-118).
   ▼  HUMAN JUDGE (you) — rules SHIP / REMAND / BLOCK on the strongest case both ways.

Verdict states (three-valued — never a bare pass/fail)

VerdictMeaningTrigger
SHIPSurvived the overturn roundNo fatal charge survived K deeper rounds
REMANDFixable charges — back to authorNon-fatal charges survived; delivery is close
BLOCKA fatal charge survived≥1 fatal charge reproduced and not refuted

Self-learning — the court feeds the flywheel (ADR-124 M0.B)

A verdict is not the end; it is training signal. After each court run:

  1. Sign the court record → a flywheel receipt. Use the ADR-118 signer (src/learning/qe-flywheel/receipt.ts createSigner / platform-signer.ts, persisted via receipt-store.ts). The verdict + surviving charges are the body.
  2. Each reproduced, surviving charge → a qe_pattern (ADR-110) at provenance tier oracle:test-exec (ADR-121 — it reproduced, so it is oracle-grade). Killed/refuted charges are NOT stored as positives (noise control).
  3. An overturned SHIP is the highest-value signal there is — persist {shallow: SHIP, true: BLOCK|REMAND, charge} as a discriminator training pair for the frozen anchor (ADR-117) and two-gate judge (ADR-119). This is what makes the court harder to fool over time.
  4. Retrieval-augment the next panel: seed each prosecutor's probe set with the HNSW-nearest prior charges for similar deliveries (qe_pattern_embeddings).

All writes are appends to existing stores — never destructive to memory.db.

Improvement over time (ADR-124 M0.C)

  • Probe-set promotion: track each probe's historical mutant-kill rate; promote high-kill probes, retire dead ones (stored under a qe-court/probes namespace).
  • DoE-gated scoring: emit a numeric score ONLY if its rubric passes the ADR-122 ANOVA screen (it must actually discriminate). Otherwise report the verdict class + charges, no number — never a noise "91/100".
  • Learnable overturn depth K: start K=2; learn per-domain the depth at which new charges stop appearing (the empirical loop-until-dry tail).

Anti-collusion invariants (enforce these or it isn't a court)

  1. Writer ≠ any juror. 2. Prosecutors file blind. 3. Overturn is asymmetric (SHIP must survive escalation; BLOCK needs one surviving fatal charge). 4. No un-validated scores.

How to run it (today)

QE-Court is an orchestration skill: the driving agent convenes the court by composing existing agents/skills — there is no monolithic binary yet (a thin aqe court CLI wrapper is planned as ADR-124 Phase 1; the hosted /v1/qe/verdict is Phase 2). To run a court now:

  1. Read config.json for the panel + routing + overturnDepth, then validate the panel before seating it — this step is not optional:

    ts
    import { validateCourtConfig } from 'agentic-qe/skills/qe-court/referee';
    const violations = validateCourtConfig(config);   // [] == valid
    if (violations.length) throw new Error(`Cannot convene: ${violations.join(', ')}`);

    A non-empty result means the panel cannot render a trustworthy verdict (colluding jury, too few vendors, no jury at all). ABORT the court and tell the user which invariant failed — do not proceed with a degraded panel and do not silently re-route around it. A court that convenes an invalid panel produces exactly the false SHIP it exists to catch.

  2. Spawn the prosecutors in one message, in parallel (Task/Agent, run_in_background: true), each with its routed provider; run codex exec review for the cross-vendor lens via Bash.

  3. Collect charges → run the blind-refuter kill round (adversarial-verify).

  4. Jury (two-gate judge) → verdict. If SHIP, run the overturn loop to overturnDepth.

  5. Emit the signed court record; persist learning per the section above.

  6. Present the strongest case FOR and AGAINST to the human judge.

Output: the court record

Markdown: the delivery under review, the Defense case, each prosecutor's surviving charges (provenance-tiered, with the vendor that filed them), the kill-round casualties, the jury verdict, the overturn transcript, and the signed verdict block. Durable, attestable evidence — the "jury waiting for everything you ship."

Trust tier

Tier 3 (verified). The court's falsifiable invariants are enforced by the published agentic-qe/skills/qe-court/referee entrypoint and covered by a consumer-runnable aqe-court-referee self-test <oracle> suite that the acceptance eval (evals/qe-court.yaml, command-eval mode) runs through the aqe eval CLI — 15/15 green as of 2026-07-29. That suite now validates the shipped config.json itself, so a routing edit that seats a colluding panel fails in CI rather than in a user's court (issue #576). The keystone oracle: a seeded mutant a shallow panel rated SHIP is overturned to BLOCK when the overturn round is active, and MUST regress to SHIP at overturnDepth: 0 — proving the mechanic carries its weight. Run it yourself: aqe eval run --skill qe-court --model cognitum-low.

Related

  • Reference implementation of ADR-124; hosted sibling is /v1/qe/verdict (Cognitum, planned).
  • Prosecutors: /brutal-honesty-review, /sherlock-review, qe-devils-advocate agent, codex exec review.
  • Verification core: src/verification/adversarial-verify. Signer: src/learning/qe-flywheel/receipt.ts.
  • Jury/rigor: ADR-117 (frozen anchor), ADR-119 (two-gate judge), ADR-121 (provenance), ADR-122 (DoE).
  • Contrast: /code-review, /pr-review (single-lens); qcsd-cicd-swarm (phase gate, not adversarial court).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Qe Court AI skill do?

Adversarial review court — a delivery (diff, PR, test suite, or artifact) is prosecuted by independent AI reviewers from different vendors, each with its own probe set, then a SHIP verdict must SURVIVE escalating deeper reviewers before it stands. Use when you want more than one reviewer's opinion on whether something is safe to ship: pre-merge gating, release go/no-go, catching a too-easy PASS, or any 'is this actually done?' decision where a shallow approval is a risk. Produces a signed court record with a three-valued verdict (SHIP / REMAND / BLOCK) and a human as final judge. Learns ove...

Why use Qe Court on TypingMind?

Because you install it once and use it with any model. Qe Court is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Qe Court in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/proffesor-for-testing/agentic-qe/tree/main/assets/skills/qe-court. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Qe Court?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Qe Court?

As many as you like. As long as a model supports skills, you can use Qe Court with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Qe Court AI skill free?

Yes. It is published on GitHub by proffesor-for-testing under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇