Decides one closed question by independent votes of fresh agents with different stances, and reports the majority with the dissent. Use when asked to let a council, a panel or several agents vote on a choice.
$npx -y skills add niksavis/handily --skill council --agent claude-code
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Council?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/niksavis-council)
---
name: council
description: Decides one closed question by independent votes of fresh agents with different stances, and reports the majority with the dissent. Use when asked to let a council, a panel or several agents vote on a choice.
---
<!-- Generated by `basicly skills-build` from skill.yaml. Do not edit; edit the source. -->
# Council
Decide one closed question by independent votes. This skill uses the `swarm` steps; read that skill first.
The script is `${CLAUDE_SKILL_DIR}/../swarm/scripts/swarm.py`, in the `swarm` skill folder beside this one. `DIR` is a new folder per council in the session scratchpad.
## Steps
1. **Ask one question.** Write the decision, 2 to 4 option labels and the facts with sources, as [the question guide](references/question.md) says. For an open question, run `swarm` on the goal with the lenses feasibility, spec and simplicity, and take its numbered decisions as the 2 to 4 labels. A closed question with no labels: ask the user for them.
2. **Pick voters.** Choose 3 stances from [stances](assets/stances.md), one voter each. Choose 5 when the decision is hard to undo.
3. **Vote.** Run the `swarm` steps Brief, Launch and Collect; the tally replaces the swarm Check. Each brief carries the question, the exact labels and the stance as its lens. No voter sees another vote. Rerun once each voter that is not run.
4. **Tally.** Run:
```sh
python3 -B ${CLAUDE_SKILL_DIR}/../swarm/scripts/swarm.py tally --voters user,safety,skeptic --options per-event,shards --dir DIR
```
Replace the voters, options and folder with yours. Exit 0 prints the decision and each dissenting vote with its reason. Exit 2 means no option has a majority of all voters; the user decides.
5. **Verify.** When the winning reason rests on a number or a root cause, run `falsify-first` on it with an agent that did not vote.
6. **Report.** Give the vote table, the decision, the strongest dissent, each voter that is not run, and how the decision can fail. State that each voter voted blind, without seeing another vote.
## Rules
- A vote that is not run or names an unknown label counts against every option; the script takes 3 or 5 voters and refuses any other count or a repeated label.
- When the options turn out wrong, change the question and vote again with fresh agents.