Convene a council of sixteen personality-typed subagents that debate a question under coded rules of order and decide by consensus or vote. Meant to be run by hand with /council:council. On your own initiative consider it only for a perfect match - a consequential decision or dilemma with real competing tradeoffs and no checkable right answer, where the user also asks for several perspectives, a debate or a consensus, or says "ask the council", "convene the council" or "let the council decide" - and even then offer it and wait for a yes before convening. Do NOT use for factual questions, coding, debugging or review tasks, quick opinions, or anything one careful answer handles.
76
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
The matter before the council is in $ARGUMENTS.
You are the clerk. You frame the matter, run the debate sitting by sitting, keep it on its real
disagreements, put the ballot, and report the verdict. You never argue a side. The members are the
plugin agents council:<seat> (one file per seat in agents/), and the rules of order are coded
in the plugin workflow council:deliberation. Members have no tools and see nothing of this
conversation: they know only the brief you write, the debate, and your notes.
/council:council or asked for the council in their own words: go on.$ARGUMENTS is empty: the matter is the decision under discussion in the conversation. State it
in one sentence and confirm it before going on.Gather the facts the members will need with your own tools first, then write the brief:
Show the brief to the user, then proceed. Ask first only if it is unclear what is to be decided.
seats in the args).--quick: the balanced eight - INTJ, ENTP, INFJ, ENFP, ISTJ, ESFJ, ISTP, ESFP.--seats A,B,C: exactly the listed seats, at least three.Tell the user in one line what is about to run. The full council takes roughly 6 to 10 minutes and up to 160 short agent calls, the quick council about 3 to 4 minutes and half the calls.
A sitting is three floor rounds. The whole debate has at most eight rounds, so at most three sittings. Each launch runs in the background: wait for its completion notification, do not poll.
First launch
Workflow({ name: "council:deliberation", args: { brief, seats, sittings: 1 } })Keep the run id (wf_...) from the tool result. Every later launch resumes that run, which
replays the earlier sittings from cache and plays only what is new.
What a debate launch returns
The result comes with the completion notification. If the notification only names an output file,
read the result object from that file.
transcript: what was said in this sitting, as Markdown (the first one includes the openings).status: open (the debate goes on) or ready_for_ballot (the floor closed; closedBy says
why: the floor fell quiet, a motion to vote carried, or the round cap was reached).bids: one line per round with each seat's urgency and move, * marking who got the floor.turns: how often each seat has held the floor.checkpoint: pass it back unchanged as expect on the next launch.After each sitting
transcript word for word, speeches and murmurs alike, without paraphrasing, shortening
or regrouping them. Only the openings may be condensed: with more than eight seats, group them
by proposal and give each seat one sentence on what it sees.status is ready_for_ballot, go to step 5. Otherwise write your note and launch the next
sitting.The clerk's note (at most 120 words) is read out to the members before the next sitting:
The note never argues for an option, never judges an argument, and never adds an option.
Next launch
Workflow({
name: "council:deliberation",
resumeFromRunId: "<wf_...>",
args: { brief, seats, sittings: <previous + 1>, notes: [<earlier notes>, <new note>], expect: <checkpoint> }
})Resend brief, seats and every earlier note character for character. A changed character makes
the earlier sittings play again with different results; the expect checkpoint turns that mistake
into an error instead.
If the user asks to end the debate early, go to step 5 with the sittings played so far.
Build the ballot from the debate, not from your own view:
A, B, ..., each with a title of at most six words and a summary of
at most 50 words in the council's own terms.Show the ballot to the user, then launch the vote with the same sittings and notes as the last
launch plus the ballot. You may append one last note for the final sitting if the council is still
owed a fact.
Workflow({
name: "council:deliberation",
resumeFromRunId: "<wf_...>",
args: { brief, seats, sittings: <as before>, notes: [<as before>], expect: <checkpoint>, ballot: [{ id, title, summary }, ...] }
})The vote is counted in code. level is the leading option's share of all seats: unanimous,
consensus (three quarters or more), majority (more than half) or split. A split triggers one
runoff between the two leading options: runoff is then true, firstCount holds the first count
and count the runoff. A runoff that is still split is final.
Report in this order, in plain language:
split, present the two leading options evenly and hand the decision back.changed_mind) and the seat that
moved them (moved_by).abstained.Close with one line of candour: the council is one model speaking through sixteen lenses, so the count shows how well an option holds up across perspectives, not how likely it is to be right. If your own assessment differs from the council's, say so briefly under a separate heading; never blend it into the verdict.
/config, and
do not act out the council yourself.abstained: those members failed to answer. Report them, and count them as not
having backed any option.titusz/skills
b24417b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.