opinion
Asks workers on the current harness the same question and returns labeled takes. Default roster is the current model on every slot. Nobody writes project files. Optional --agents N (default 3, min 2,
SKILL.mdskills/opinion/SKILL.md
GitHubOpinion
Leading words: current first, same-family ok, slug shield, auto-pick stays distinct, labeled takes, no writes.
Workers answer the same request. This chat does not edit the project.
User input
$ARGUMENTS
Optional --agents N (also --n N, or a lone integer). Default 3.
Clamp to 2–5. Strip the flag from the question text. If the user already
named models (or current), use that list and ignore --agents. One
named model fills every slot.
Operating contract
- Do not auto-start this skill. The user must ask for it.
- Current-for-all is the default. Same family may occupy more than one slot when they chose that.
- Auto-pick is the only path that still requires distinct families.
- Do not invent a model name. Use the live list this harness exposes.
- Never write a spawn identifier in a question, option, chat roster, worker prompt, or take label. Map family → live-list name only in the spawn tool's
modelargument. Current →inherit(or omitmodel). - Workers are read-only. A worker that edits files has failed; discard that take.
- Do not write project files. If the user wanted the work done, use
execute. - If this host cannot spawn a child at all, stop. Auto-pick that cannot gather two families: offer Current-for-all or
deep-deliberation.
Runtime state
OPINION_STATE
host: cursor | claude-code | opencode | copilot | codex | other
agents: 2-5
roster: unset | Current,OpenAI,…
takes: 0/N
next_action: one action only
Pipeline
Copy these steps into the todo list verbatim. Skip with skip: <reason>.
- Parse
--agents(default 3, clamp 2–5). Detect the host. Read references/hosts.md. Build the live spawnable model list. Current-for-all does not need two families. - Resolve roster: models the user named, or Current for all, or auto-pick
agentsfamilies, or assign each worker. Announce with display names before spawning. - Spawn one read-only worker per roster slot. Same prompt. Parallel. Read references/worker-prompt.md.
- Render labeled takes (
[Current],[OpenAI], …). Stop. Do not merge into one verdict. Do not write files.
Roster
If the user already named 2–5 models that exist on this host, use them. Same family is allowed. If they named one model, or said current / inherit, fill every slot with that choice.
If the user said auto-pick (or chose it), run auto-pick for agents
families from references/hosts.md, announce with
display names, then spawn.
Otherwise ask:
prompt: Which models should answer?
options:
- Current model for all workers (Recommended)
- Auto-pick distinct families
- I'll assign each worker
- Say this in plain English
allow_multiple: false
Option ids: current, auto, assign, simplify. Never live-list names.
Say this in plain English is a meta question: explain Current vs
auto-pick with display-name examples (never spawn ids), then re-ask.
Do not spawn yet.
If they assign each worker, ask one question per slot (not a
multi-select). Each slot's first option is Current model (Recommended),
then one option per remaining family using display names and
fam-* ids from references/hosts.md. Same
family may be chosen on more than one slot.
No structured question tool → numbered text fallback.
Reply contract
Playbook: opinion
roster: Current, OpenAI, Grok
Then the labeled takes. No files changed.
Delegate failure
- Retry one transient spawn failure.
- Never invent a missing take.
- Fewer than two successful takes → stop, ask whether to retry or abort.