Outsider — Quick Opinion From Another Agent
Purpose
Get a fast opinion from an agent CLI running outside this session. One reviewer, no synthesis step
— a sanity check, not an exhaustive review. Use
when you want a board.
The value is structural: the responder shares none of this conversation's context and runs in its
own process, usually on a different model family. Which vendor answers is incidental, which is why
this skill resolves the agent instead of naming one.
When to Use
- "ask codex", "ask claude", "what would another agent say", "get an outside opinion"
- , ,
- A quick external sanity check on an approach or decision
- An independent review of the current code changes
Requirements
or
must be on PATH — both ship with GNU coreutils. Stock macOS has
neither;
provides
. Without one the script skips instead
of running an agent CLI unbounded, because a hung agent would hang the caller's turn.
reports it when it is missing.
Agent Selection
The script picks the agent. Always pass
--host <the agent you are>
—
,
,
, or
— so it never asks you to review your own work. Add
only when
the user named one; that overrides everything, host included.
bash
bash <skill-dir>/scripts/run-outsider.sh list --host claude
prints what is installed and what would be selected, and spends nothing.
Default order is
, minus the host. A missing CLI is a skip, not a
failure: the script prints why and exits 0. Callers can treat this leg as droppable.
No model or reasoning level is set by default — the chosen agent runs on whatever it is already
configured to use. To pin one, or to change the preference order, edit
~/.config/edloidas/outsider/config
(
,
,
,
); the same names work as environment variables
and override the file.
has the full registry, the config keys with examples,
and how to add an agent.
Ask Mode
-
Prepare a focused question with context. Extract only the relevant code or plan excerpt —
don't dump the conversation. Keep it under 2000 words.
-
Resolve the temp directory (once per session):
bash
bash <skill-dir>/scripts/resolve-tmp.sh
Use the output as
. Pick a run id
once too — a session identifier the host already
exposes, or the current
— and reuse the same literal string for every file in
this run so concurrent runs don't overwrite each other.
-
Write the question with a file-write tool, not a Bash heredoc — heredocs with markdown
headers trip some hosts' shell security heuristics. Write to
<TMP>/outsider-<ID>-question.md
:
## Question
<clear, specific question>
## Context
<relevant code, plan excerpt, or description>
-
Run it:
bash
bash <skill-dir>/scripts/run-outsider.sh ask --host claude <TMP>/outsider-<ID>-question.md
Custom preamble
Both modes prepend a prompt file to whatever you pipe them —
for ask,
references/review-prompt.md
for review. A caller with its own prompt for the responder passes
to swap it:
bash
bash <skill-dir>/scripts/run-outsider.sh ask --host claude \
--preamble <caller-skill-dir>/references/its-own-prompt.md <TMP>/outsider-<ID>-question.md
The preamble replaces the default entirely, so it has to carry the responder's whole brief —
including its output shape.
uses this for its outside board seat.
Review Mode
Pick the scope first:
| Flag | When |
|---|
| Staged, unstaged, or untracked changes exist (the default) |
| On a feature branch, review against the base |
| Review one commit |
Review takes 3–10 minutes. Pass
so the script's own timer fires first and can print its
timeout message, and set the surrounding command timeout to the highest value the host allows:
bash
bash <skill-dir>/scripts/run-outsider.sh review --host claude --uncommitted 540
Presenting Output
The first line of the output is
.
Always say which agent answered —
the response is not interpretable without it.
- Lead with "Codex's take:", "From pi:", and so on, using the agent the script actually ran
- Don't blindly adopt the findings — evaluate them with your own context
- Highlight agreements; flag disagreements and explain which side you land on and why
- The responder only ever saw what you piped it. Discount findings that are really requests for
context it could not see
- Empty output or an error line means it had nothing to offer — say so and move on
Edge Cases
- No agent installed, or only the host is — the script says so and exits 0. Don't retry.
- Timeout — the script prints a timeout message. Note it and proceed without.
- No binary — the script skips rather than running an agent unbounded, and
says which tool is missing. Report that to the user and proceed without an outside
opinion; do not retry.
- Large context — keep ask mode under 2000 words. For large changes use review mode, which
extracts the diff itself.
Notes for Callers
This skill stays model-invocable on every host. The predecessor
skill set
disable-model-invocation: true
only because calling Claude from Claude was recursive; selection
now handles that structurally, so there is nothing left to suppress.
Other skills invoke this one as a skill, not by script path — a repo-relative path only resolves
inside one checkout.
runs its outside board seat through this skill, passing its own seat prompt as
the preamble. That was the last duplicate runner in the collection; there is now one implementation
of "call an agent CLI that is not the host".