Skip to main content
skill CX Codex

setup · szarkans — Claude Code skill: what it does, how to install

Guides you through connecting external judge models and generating configuration files for the multi plugin.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add szarkans/multi --skill setup -a claude-code
Open on GitHub

What setup does

This skill prepares review backends for the multi plugin. It triggers probe.sh to inspect local AI CLIs, active sessions, and environment variables. The script detects setups for Codex, OpenCode, Gemini, or endpoints like OpenRouter, 9router, and Moonshot, along with tools like Kilo Code and Antigravity.

All parameters live in $MULTI_HOME/config.toml (defaults to ~/.config/multi), while sensitive API keys stay isolated in providers.env. The skill guides model selection either using defaults or live web research. Without at least one non-Claude reviewer configured, /multi:code-review will refuse to run.

What it helps with

  • connect external LLM backends for multi-model reviews
  • generate the initial config.toml and isolate keys in providers.env
  • inspect installed AI CLIs and active sessions via probe.sh
  • pick default and fallback models for OpenRouter or OpenCode

Example prompts for the agent

  • run multi setup to check available backends
  • connect OpenRouter as a reviewer model
  • configure review judges in config.toml

How to install setup

1Skills CLI (Vercel)

npx skills add szarkans/multi --skill setup -a claude-code

2Manually: put the files in place

~/.claude/skills/setup/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/setup/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about setup

How to install setup in Claude Code?

Run npx skills add szarkans/multi --skill setup -a claude-code.

What does the setup skill do?

It detects installed CLIs via probe.sh, creates the initial $MULTI_HOME/config.toml configuration, and links judge models like Codex or Gemini.

Why does multi require an external backend?

The /multi:code-review tool refuses to execute without at least one non-Claude reviewer, because the workflow relies on comparing independent evaluations.

Source text

SKILL.md · MIT
---
name: setup
description: >-
  Walks a user through connecting the judge models this plugin can use — Codex,
  OpenCode, OpenRouter (or any compatible endpoint: 9router, z.ai, Moonshot),
  Gemini — and through picking models, including "research current models for
  me". Use for "multi setup", "set up multi", "configure judges/reviewers/
  backends", "connect 9router", "change/pick models", "onboarding", or whenever
  a probe shows missing backends and the user needs to know what to do about it.
allowed-tools: Bash, Read, Grep, Glob, WebSearch, WebFetch
argument-hint: "[nothing needed — just run it]"
---

# Connect the judges

!`"${CLAUDE_SKILL_DIR}/../../scripts/probe.sh"`

`$SCRIPTS` is whatever the probe printed as `scripts-dir:`. The probe already
ran above — read it, do not run it again. It detected everything detectable:
which CLIs are installed, who is logged in, which keys exist, whether the
OpenCode paid channel is available, whether `kilo-available:` was printed (offer
Kilo Code, `references/kilo.md`), whether `agy-available:` was printed (offer
the Antigravity CLI, `references/agy.md`), and what other AI CLIs live on this
machine. **Never ask the user about anything the probe already answered.**

**On any host other than Claude Code** the line above is plain text, nothing
ran. Your first step is then to run the probe yourself and read its output as
if it were printed here: `<dir of this SKILL.md>/../../scripts/probe.sh` — the
plugin's `scripts/probe.sh`, two directories above the *real* file (resolve
symlinks first: `realpath` of this SKILL.md, then `../../scripts/probe.sh`).

If the line above reads `Shell substitution failed` instead of probe output,
the session is in a git worktree whose shell gate refused the header; the
plugin is fine. Run `"${CLAUDE_SKILL_DIR}/../../scripts/probe.sh"` yourself,
as one plain command with nothing but the path, and read `scripts-dir:` from
that.

The user here is not assumed technical. No jargon, no walls of text, one step
at a time, and never make them feel behind for not having done this already.

## First contact: what this is, in three sentences

Only when little or nothing is connected yet (Claude alone, or one backend).
Returning users with a working lineup skip straight to fixing gaps.

> This plugin asks several different AI models to look at the same thing
> instead of just one — when they agree it's a real signal, and when they
> disagree, that disagreement is exactly what one model alone can never show
> you. You'll use it mostly as `/multi:code-review` (several models review
> your changes before a PR), `/multi:ask` (one question, several independent
> answers), and `/multi:check-if-done` (is this actually finished?).
> Claude is already connected; each backend below adds an independent
> reviewer, most at no extra cost.

## Show them the one file, before anything else

Right after first contact (and for a returning user, whenever they ask to
change models, endpoints or who reviews), put the config in front of them. It
is theirs to edit, and the whole point is that they can. In words, then the
file:

> Everything multi does is set in one file, `$MULTI_HOME/config.toml` (default `~/.config/multi`, or `$XDG_CONFIG_HOME/multi`; the probe's `config:` line names the file):
> which reviewers exist, which models each one tries in order, and which set
> runs by default. Keys are the one thing kept out of it, in
> `providers.env`, so you can share the config without sharing a key.

If the probe printed `config: built-in default`, there is no file yet. Run
`$SCRIPTS/setup.sh init` — it writes the default with a comment on every
field — and **show the user the file it wrote** (`cat` it, trimmed to the
backends and profiles, without the long comment header). Then say in one
sentence what the default does: *"right now a review runs Codex, OpenCode and
OpenRouter — the last one only once it has a key."* If a file already exists,
show that one instead.

They keep the default or change it; either way they now know where the knob
is. Every later step in this skill that "writes a model" or "adds an
endpoint" is an edit to this file, and you say so each time.

## One question, only about what the probe can't see

The probe knows what's installed. It cannot know what accounts the user has
or what they're willing to pay. Ask **one** question covering only the
missing backends, shaped like this (adjust to the actual gaps):

> To pick what to connect, tell me:
> - Do you have a ChatGPT subscription? (unlocks GPT as a reviewer, no extra cost)
> - Are you okay creating one free account + API key? (unlocks many model
>   families at once via OpenRouter or a compatible service)
> - Or keep it strictly free-and-local for now? (OpenCode's free models)

Then recommend an order — the fewest steps to reach **at least one non-Claude
reviewer** (without one, `/multi:code-review` refuses to run; with one it
works, and each further backend makes it stronger). Typical value order:
Codex if they have the subscription, otherwise an OpenRouter-style key,
OpenCode as the free floor, Gemini as a free extra.

## Connect each chosen backend

Work through the user's picks **one at a time** — give one step, wait for
them to do it, then the next. Never paste four install blocks in one message.

For each backend, read its reference file first and follow it:

- **Codex (GPT)** — `references/codex.md`
- **OpenCode** — `references/opencode.md`
- **Kilo Code** — `references/kilo.md`
- **OpenRouter / 9router / z.ai / any compatible endpoint** — `references/openrouter.md`
- **Gemini** — `references/gemini.md`
- **Antigravity (agy)** — `references/agy.md`

Everything of this plugin lives under `$MULTI_HOME/` (default `~/.config/multi`): `config.toml` for
backends, models, endpoints, profiles and timeouts (read `references/config.md`
before editing it), `providers.env` for keys only. If the probe printed
`models-config: LEGACY`, the old opencode list file is no longer read — carry
its models into `[backends.opencode]` in `config.toml` and delete the file.
If the probe printed `config: BROKEN`, fix that first: nothing runs on a broken
config, and it names the key and the reason.

If the probe listed `other-ai-clis`, you may mention them in one sentence as
detected-but-not-yet-supported. Do not improvise support for them.

## Picking models

When a backend is connected but the model choice is the question (free vs
paid, which pin, which fallbacks) — or the user asks "which models should I
use" — offer the fork:

1. **Sane default** — keep what the probe picked; say in one line what that
   is and what it costs (usually: free, weaker, can flake).
2. **"Research it for me"** — read `references/model-research.md` and follow
   it: live catalogue + web search (your own model knowledge is stale),
   propose a pick, write it into `config.toml` only after the user approves.

## Keys never touch this chat

Not a preference — a key that reaches this conversation is a leaked key: it
is in the transcript, and if it also reached a command line it is in shell
history and was visible in `ps`. So `setup.sh set <NAME>` is given **without**
a value and run **by the user, in their own terminal**: it prompts, reads the
key without echoing, and writes it out of sight. If a key lands in the chat
anyway, say plainly it should be rotated at the provider — deleting a message
does not un-leak it.

Keys live in `$MULTI_HOME/providers.env`, permission `600` (owner-only).
On Windows/MSYS and some mounts `chmod` silently does nothing; `setup.sh`
checks afterwards and warns when that happened — if it warned, repeat the
warning to the user instead of claiming the file is protected.

## Finish: show where things stand

Run:
```
$SCRIPTS/setup.sh status
```

This one actually verifies keys over the network (the probe above does not).
Report one short block — who's connected, and what each missing one would add:

```
Connected: Claude, Codex, OpenRouter (endpoint: 9router)
Not yet:   OpenCode / Kilo Code (free extra reviewers), Gemini (free extra reviewer)

/multi:code-review works — you have non-Claude reviewers. Each missing
backend is one more independent opinion, most at no extra cost.
```

Be honest about degradation, not alarming: missing backends are a normal
starting state, not a broken install. Then stop — this skill's only job is
getting the judges connected, not running a review.

© szarkans · MIT · szarkans/multi

Similar skills

All skills for Agent setup: memory, context, orchestration →

setup by other authors comes first.

setup Alireza Rezvani Sets up an autoresearch experiment by collecting its target file, evaluation command, metric, and optimization direction. Use it before starting an optimization loop. 1,480installs setup aws This skill kicks off the connection setup for AWS DevOps Agent and AWS Security Agent. Reach for it when MCP tools go missing or you are wiring the toolkit up for the first time. CX Codex +1 1,500installs setup marketcalls Sets up a Python backtesting environment with VectorBT and OpenAlgo. It configures the virtual environment, installs dependencies, and prepares .env. CX Codex +1 2,000installs setup assistant-ui This skill guides assistant-ui project creation, setup in an existing app, and runtime selection. Use it when starting a chat UI or wiring one to a backend. CX Codex +1 6,100installs setup aladicf Scans project files and asks UX questions to capture audience, brand personality, and UI defaults into .better-web-ui.md. CX Codex +1 605installs setup-matt-pocock-skills Matt Pocock This skill configures a repository for Matt Pocock's engineering skills by setting its issue tracker, triage labels, and domain docs layout. Run it before using the other skills. 1,052,851installs ask-matt Matt Pocock Routes you to the right Matt Pocock skill or flow for the task at hand. Use it when you need a starting point for a feature, prototype, incoming issue, or hard bug. 766,587installs to-tickets Matt Pocock Turns a plan, spec, or conversation into small end-to-end tickets with explicit blockers. Use it to agree on the work breakdown before tickets go to a tracker. 711,230installs writing-plans Jesse Vincent This skill turns requirements for a multi-step task into an implementation plan before code changes begin. It helps when another engineer needs exact files, interfaces, and checks. CX Codex 282,859installs caveman-review JuliusBrussee Turns code review comments into one line per finding: location, problem, fix. Useful when a diff or PR needs a fast pass without the filler. CX Codex +1 411,800installs caveman-compress JuliusBrussee Compresses CLAUDE.md, todo lists, and other prose files into a shorter format while retaining a readable backup. CX Codex +1 411,500installs

From the same set6

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor