setup
Skill24 starsChanged 9 days agoMITView on GitHub
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.
- Reads credentials
191 other projects use a version of this.
Adopted by
Most recently taken up by
- hydra-db/hydradb-claude-codetheir own version, first seen Nov 8, 2026
- WALKERKILLER/Look-Tongji-Notestheir own version, first seen Nov 8, 2026
- steerlabs/opensteertheir own version, first seen Nov 8, 2026
- ansvisor/ansvisortheir own version, first seen Nov 8, 2026
- dsifry/metaswarmtheir own version, first seen Nov 8, 2026
- anombyte93/prd-taskmastertheir own version, first seen Nov 8, 2026
Used with
Projects with it also use add-voice-transcription, add-discord and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
juancruzmunozalbeloSkilladd-voice-transcription
Add voice message transcription to NanoClaw using OpenAI's Whisper API. Automatically transcribes WhatsApp voice notes so the agent can read and respond to them.
Also in 5 projects that use this
MicrosoftSkilladd-discord
Add Discord bot channel integration via Chat SDK.
Also in 11 projects that use this
MicrosoftSkilladd-slack
Add Slack channel integration via Chat SDK.
Also in 11 projects that use this
juancruzmunozalbeloSkilladd-telegram-swarm
Add Agent Swarm (Teams) support to Telegram. Each subagent gets its own bot identity in the group. Requires Telegram channel to be set up first (use /add-telegram). Triggers on "agent swarm", "agent teams telegram", "telegram swarm", "bot pool".
Also in 7 projects that use this
- +8 more from microsoft
Other versions191 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 191
- anthropics/knowledge-work-plugins★ 35ksame name
- garrytan/gbrain★ 32ksame name
- gavrielc/nanoclaw★ 31ksame name
- nanocoai/nanoclaw★ 31ksame name
- qwibitai/nanoclaw★ 31ksame name
- Q00/ouroboros★ 6.3ksame name
- pytorch/executorch★ 5.2ksame name
- agenticnotetaking/arscontexta★ 3.5ksame name
- aws/agent-toolkit-for-aws★ 3.4ksame name
- spotify/portal-ai-plugins★ 2.8ksame name
181 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adhdSkill
- askSkill
- check-if-doneSkill
- code-reviewSkill
- runeSkill
- skillSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 2 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 170 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
If the line above reads Shell substitution failed instead of probe output, the session is in a git worktree whose shell gate refused the …
- Distinctive: line 48
Only when little or nothing is connected yet (the host model alone, or one backend).
- Very specific: line 72
If the probe printed config: built-in default, there is no file yet.
- Very specific: line 121
If the probe printed config: BROKEN, fix that first: nothing runs on a broken config, and it names the key and the reason.
- Very specific: line 124
If the probe listed other-ai-clis, you may mention them in one sentence as detected-but-not-yet-supported.
- Distinctive: line 129
When a backend is connected but the model choice is the question (free vs paid, which pin, which fallbacks) — or the user asks "which …
- Very specific: line 141
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 …
“Common” is measured: kept by at least 6 in 10 of the 170 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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.
Your host's name for this skill. The probe prints host:. Claude Code:
/multi:setup · Codex: $multi:setup · OpenCode: @multi-setup or
/multi-setup · omp: /multi-setup. Other multi skills follow the same
pattern.
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 (the host model 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 the code-review skill (several models review your changes before a PR), the ask skill (one question, several independent answers), and the check-if-done skill (is this actually finished?). The host model 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'sconfig: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, inproviders.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 reviewer from another family (without one, the code-review skill 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:
- Sane default — keep what the probe picked; say in one line what that is and what it costs (usually: free, weaker, can flake).
- "Research it for me" — read
references/model-research.mdand follow it: live catalogue + web search (your own model knowledge is stale), propose a pick, write it intoconfig.tomlonly 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 statusThis 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: <host model>, Codex, OpenRouter (endpoint: 9router)
Not yet: OpenCode / Kilo Code (free extra reviewers), Gemini (free extra reviewer)
The code-review skill works — you have reviewers from another family. 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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

