/fstack-counselors
A council of three models on one question. Each counselor answers independently, then the answers get compared and resolved into one definitive recommendation — with each counselor's opinion summarized, especially where they disagree.
When to use
- A decision is big enough that one model's opinion is not enough.
- Architecture choices, tricky trade-offs, "should we do X or Y" questions.
- You want a second opinion on a plan, a diff, or a design before committing to it.
Steps
- Turn the question into one self-contained brief: the question, the relevant context (files, constraints, what was already tried), and the answer format you want. Every counselor gets this exact brief and nothing else.
- Pick the council: the 3 most capable models available in this environment. Tell the user who is on the council before dispatching. If the environment cannot mix models, run 3 independent sessions of the best one — independent runs still surface disagreement. If the environment cannot run independent agents at all, say so and answer directly. Never fake a council.
- Set the effort level. If the user asked for one, use it. If they did not, default to medium / balanced reasoning — good thinking without the full cost and latency. Raise it to the highest level only when the user says so or the question is clearly high-stakes.
- Dispatch the same brief to each counselor, in parallel and read-only. No counselor sees another's answer.
- Read all three answers. Map where they agree and where they disagree.
- Deliver the result in two parts:
- The verdict. One definitive answer. When the counselors disagree, pick a side and say why — do not average.
- The council. One summary per counselor, 2 to 3 lines each, model named. Flag every disagreement and how the verdict resolves it. A 2–1 split is reported as 2–1.
- Stop. Acting on the verdict is a separate decision. If the user wants to build, suggest
/fstack-plan or /fstack-build.
Must NOT
- Let counselors see each other's answers before giving their own. Independence is the whole point.
- Average disagreement into mush. "All approaches have merit" is not a verdict.
- Hide dissent. If one counselor disagrees, the user hears about it and why.
- Let counselors change files. The council reads and opines; it never writes.
- Convene the council for trivial questions. Three models on "what should I name this variable" is waste.
Example
User: /fstack-counselors should we move auth from server sessions to JWTs?
Agent: "Council: [the 3 strongest models available here]. Sending each the same brief: your auth code, the scaling constraint you mentioned, and the question. Back in a few minutes."
(three independent answers come back)
Agent: "Verdict: keep server sessions. The council split 2–1.
Counselor 1 — keep sessions. Your app is server-rendered with one backend; JWTs add revocation problems and solve a distribution problem you do not have.
Counselor 2 — keep sessions, same core reason. Adds: if the API later needs tokens, mint short-lived ones from the session rather than switching wholesale.
Counselor 3 — move to JWTs, arguing for the future multi-service case. I sided against because that case is hypothetical and the revocation cost is immediate.
Want this turned into a note in the plan, or leave it as a decision?"
Credit
This distills the council-of-advisors pattern from counselors by Aaron Francis. His CLI fans a prompt out to locally installed agent CLIs; this skill uses whatever your environment already has. If the counselors CLI is installed, it is a fine way to run the fan-out.
1---2name: fstack-counselors3description: Ask the same question to the 3 most capable models available and synthesize their independent answers into one verdict. Use for decisions big enough to want more than one opinion.4---56# /fstack-counselors78A council of three models on one question. Each counselor answers independently, then the answers get compared and resolved into one definitive recommendation — with each counselor's opinion summarized, especially where they disagree.910## When to use1112- A decision is big enough that one model's opinion is not enough.13- Architecture choices, tricky trade-offs, "should we do X or Y" questions.14- You want a second opinion on a plan, a diff, or a design before committing to it.1516## Steps17181. Turn the question into one **self-contained brief**: the question, the relevant context (files, constraints, what was already tried), and the answer format you want. Every counselor gets this exact brief and nothing else.192. Pick the council: the **3 most capable models available** in this environment. Tell the user who is on the council before dispatching. If the environment cannot mix models, run 3 independent sessions of the best one — independent runs still surface disagreement. If the environment cannot run independent agents at all, say so and answer directly. Never fake a council.203. Set the effort level. If the user asked for one, use it. If they did not, default to **medium / balanced** reasoning — good thinking without the full cost and latency. Raise it to the highest level only when the user says so or the question is clearly high-stakes.214. Dispatch the same brief to each counselor, **in parallel and read-only**. No counselor sees another's answer.225. Read all three answers. Map where they agree and where they disagree.236. Deliver the result in two parts:24 - **The verdict.** One definitive answer. When the counselors disagree, pick a side and say why — do not average.25 - **The council.** One summary per counselor, 2 to 3 lines each, model named. Flag every disagreement and how the verdict resolves it. A 2–1 split is reported as 2–1.267. **Stop.** Acting on the verdict is a separate decision. If the user wants to build, suggest `/fstack-plan` or `/fstack-build`.2728## Must NOT2930- Let counselors see each other's answers before giving their own. Independence is the whole point.31- Average disagreement into mush. "All approaches have merit" is not a verdict.32- Hide dissent. If one counselor disagrees, the user hears about it and why.33- Let counselors change files. The council reads and opines; it never writes.34- Convene the council for trivial questions. Three models on "what should I name this variable" is waste.3536## Example3738> User: `/fstack-counselors` should we move auth from server sessions to JWTs?39>40> Agent: "Council: [the 3 strongest models available here]. Sending each the same brief: your auth code, the scaling constraint you mentioned, and the question. Back in a few minutes."41>42> *(three independent answers come back)*43>44> Agent: "**Verdict: keep server sessions.** The council split 2–1.45>46> **Counselor 1** — keep sessions. Your app is server-rendered with one backend; JWTs add revocation problems and solve a distribution problem you do not have.47>48> **Counselor 2** — keep sessions, same core reason. Adds: if the API later needs tokens, mint short-lived ones from the session rather than switching wholesale.49>50> **Counselor 3** — move to JWTs, arguing for the future multi-service case. I sided against because that case is hypothetical and the revocation cost is immediate.51>52> Want this turned into a note in the plan, or leave it as a decision?"5354## Credit5556This distills the council-of-advisors pattern from [counselors](https://github.com/aarondfrancis/fstack-counselors) by Aaron Francis. His CLI fans a prompt out to locally installed agent CLIs; this skill uses whatever your environment already has. If the `counselors` CLI is installed, it is a fine way to run the fan-out.