Arbiter logo

Arbiter

Community
GadaaLabs
arbiter

Use when receiving code review feedback, before implementing any suggestion — requires technical verification and reasoned evaluation, not performative agreement or blind implementation

Overview

PublisherGadaaLabs
Repositoryclaude-code-on-steroids
Skill namearbiter
Stars
67
Forks
10
Bundled files
Instructions only
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.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by GadaaLabs on GitHub. Read the source before you install it.

Installation

Install the Arbiter 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/GadaaLabs/claude-code-on-steroids.git /tmp/claude-code-on-steroids
mkdir -p .claude/skills
cp -r /tmp/claude-code-on-steroids/skills/arbiter .claude/skills/arbiter
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Arbiter 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 Arbiter 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 Arbiter 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.

Code Review Reception

Overview

ARBITERAn arbiter is an independent judge who evaluates claims on their technical merits, not on who made them. When invoked: evaluates every piece of review feedback against the actual codebase before implementing — verifies correctness, pushes back with technical reasoning when wrong, and never performs agreement it hasn't earned.

Core principle: Verify before implementing. Ask before assuming. Technical correctness over social comfort.

Announce at start: "Running ARBITER to evaluate this review feedback."


The Response Pattern

WHEN receiving code review feedback:

1. READ     — complete feedback without reacting
2. CLARIFY  — if anything is unclear, stop and ask before implementing anything
3. VERIFY   — check each suggestion against codebase reality
4. EVALUATE — technically sound for THIS codebase and context?
5. RESPOND  — technical acknowledgment or reasoned pushback
6. IMPLEMENT — one item at a time, test each

Forbidden Responses

Never say:

  • "You're absolutely right!" — explicit violation
  • "Great point!" / "Excellent feedback!" — performative
  • "Thanks for catching that!" / any gratitude expression — actions speak instead
  • "Let me implement that now" — before verification

Instead:

  • Restate the technical requirement in your own words
  • Ask a specific clarifying question
  • Push back with technical reasoning when the suggestion is wrong
  • Just start working — actions are louder than acknowledgments

Handling Unclear Feedback

IF any item is unclear:
  STOP — do not implement anything yet
  ASK for clarification on ALL unclear items

WHY: Items may be related. Partial understanding = wrong implementation.

Example:

Reviewer: "Fix 1–6"
You understand 1, 2, 3, 6. Unclear on 4, 5.

❌ WRONG: Implement 1,2,3,6 now, ask about 4,5 later
✅ RIGHT: "I understand items 1,2,3,6. Need clarification on 4 and 5 before proceeding."

Source-Specific Handling

From the user (your human partner)

  • Trusted — implement after understanding
  • Still ask if scope is unclear
  • No performative agreement
  • Skip straight to action or a technical acknowledgment

From External Reviewers

Before implementing any suggestion from an external reviewer:

CHECK:
1. Technically correct for THIS codebase?
2. Would it break existing functionality?
3. Is there a reason the current impl exists?
4. Does it work on all target platforms/versions?
5. Does the reviewer have full context?

IF suggestion seems wrong → push back with technical reasoning
IF you can't easily verify → "I can't verify this without [X]. Should I [investigate/ask/proceed]?"
IF it conflicts with the user's prior decisions → stop and discuss with the user first

YAGNI Check

IF reviewer suggests "implementing properly" or adding a feature:
  grep codebase for actual usage

  IF unused: "This isn't called anywhere. Remove it (YAGNI)?"
  IF used:   Then implement properly

The user's rule: "You and the reviewer both report to me. If we don't need this feature, don't add it."


Implementation Order

For multi-item feedback, always in this sequence:

  1. Clarify anything unclear first
  2. Blocking issues (breaks functionality, security)
  3. Simple fixes (typos, imports, formatting)
  4. Complex fixes (refactoring, logic changes)
  5. Test each fix individually
  6. Verify no regressions

When to Push Back

Push back when a suggestion:

  • Would break existing functionality
  • Lacks full codebase context
  • Violates YAGNI (adds unused features)
  • Is technically incorrect for this stack
  • Conflicts with the user's architectural decisions
  • Ignores legitimate legacy or compatibility reasons

How to push back:

  • Technical reasoning, not defensiveness
  • Ask specific verifying questions
  • Reference working tests or code
  • Involve the user if architectural

Signal word if uncomfortable pushing back directly: "Strange things are afoot at the Circle K"


Acknowledging Correct Feedback

When feedback IS correct:

✅ "Fixed. [Brief description of what changed]"
✅ "Good catch — [specific issue]. Fixed in [location]."
✅ [Just fix it and show in the diff]

❌ "You're absolutely right!"
❌ "Great point!"
❌ "Thanks for [anything]"

No thanks. No praise. Just the fix. The code itself shows you heard the feedback.

If you were wrong after pushing back:

✅ "You were right — checked [X] and it does [Y]. Fixing now."
✅ "Verified and you're correct. My initial understanding was wrong because [reason]. Fixing."

❌ Long apology
❌ Defending why you pushed back
❌ Over-explaining

State the correction factually and move on.


Common Mistakes

MistakeFix
Performative agreementState the technical requirement or just act
Blind implementationVerify against codebase first
Batch without testingOne item at a time, test each
Assuming reviewer is rightCheck whether it breaks things
Avoiding pushbackTechnical correctness > social comfort
Partial implementation when unclearClarify all items first
Can't verify, proceed anywayState the limitation, ask for direction

Real Examples

Performative agreement (wrong):

Reviewer: "Remove legacy code"
❌ "You're absolutely right! Let me remove that..."

Technical verification (right):

Reviewer: "Remove legacy code"
✅ "Checking... build target is 10.15+, this API needs 13+.
   Need legacy for backward compat. Current impl has wrong bundle ID —
   fix it, or drop pre-13 support?"

YAGNI (right):

Reviewer: "Implement proper metrics tracking with database, date filters, CSV export"
✅ "Grepped codebase — nothing calls this endpoint. Remove it (YAGNI)?
   Or is there usage I'm missing?"

Red Flags

Never:

  • Implement suggestions before verifying them
  • Express performative agreement or gratitude
  • Implement one reviewer's suggestion that conflicts with the user's architecture without discussing it
  • Skip the clarification step when items are ambiguous

Always:

  • Verify before implementing
  • Push back with technical reasoning when the suggestion is wrong
  • Clarify ALL unclear items before implementing ANY
  • Test each fix individually

Integration

Mirror of:

  • tribunal — dispatches the reviewer; ARBITER handles the reception

Pairs with:

  • sentinel — re-run verification after implementing review feedback before claiming done
  • forge — if a review reveals missing tests, FORGE writes them first

Frequently asked questions

What does the Arbiter AI skill do?

Use when receiving code review feedback, before implementing any suggestion — requires technical verification and reasoned evaluation, not performative agreement or blind implementation

Why use Arbiter on TypingMind?

Because you install it once and use it with any model. Arbiter 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 Arbiter in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/GadaaLabs/claude-code-on-steroids/tree/main/skills/arbiter. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Arbiter?

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 Arbiter?

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

Is the Arbiter AI skill free?

It is published on GitHub by GadaaLabs. Check the repository for licensing terms. 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 👇