agentleFS
Soul-Brews-StudioSoul-Brews-Studio/arra-oracle-skills-cli/skills/round-table/SKILL.md

round-table

Skill121 starsChanged 7 months agoMITView on GitHub

Convene a Round Table (โต๊ะกลม): 3–8 souls — persona files, Oracles, or real people''s DNA — debate ONE stakes-bearing decision over exactly 4 rounds (OPEN, DEEPEN, CONVERGE, VOTE), one subagent per soul, then vote with 1–10 confidence; a script does the arithmetic and deadlocks go to the human. Use when user says "round table", "round-table", "โต๊ะกลม", "convene the council", "deliberate this". For "should we …" questions, ask before convening. Do NOT use for brainstorming or one-perspective-at-a-time analysis (use /oracle-prism).

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 1 is distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Create $STATE in the shape of examples/adopt-a-pattern.json (id, question, options, aggregator, agents[] with name, soul, rounds[]) and …

    line 81
  2. Very specific:

    Write each soul's round-4 answer into final (vote, confidence, rationale) and dissent_note, then:

    line 119
  3. Very specific:

    Escalates under every aggregator: when the winner holds < 60% of the weighted confidence, when 10s land on opposite sides, or when a …

    line 139
  4. Very specific:

    Write one line — the decision and the minute's path — to $PSI/inbox/decisions/$SLUG.md, so /recap finds it.

    line 156
  5. Very specific:

    Every seat was a lens: Write "the finance lens voted…", never "Finance decided…".

    line 168
  6. Very specific:

    Must print DECISION: adopt-modified and 37/50 (74%) and exit 0 — the result the reconstructed spec predicts for its worked example.

    line 179
  7. Distinctive:

    No tool use mid-round · no soul summoning another agent · no human interjection mid-round · no round 5.

    line 184

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/round-table — โต๊ะกลม

"Many bodies, one soul" — so one agent can seat many souls at one table, let them argue, and still hand the decision back to the human.

/oracle-prism wears souls one after another, inline. A Round Table seats them together: each soul is its own subagent, hears the others, pushes back, and finally votes with a confidence it has to defend. Bounded by design: 4 rounds, never 5.

Where the shape comes from. A 7-agent, 4-round, confidence-voted meeting that Boy (Pinyo) ran inside his Oracle family. Only its parameters survived — 7 agents, 4 rounds, a confidence vote at the end, reserved for expensive decisions. Mother Oracle rebuilt the round prompts, the 1–10 scale and the aggregation rules from those parameters. So this skill is spiritually faithful, not forensically reproduced: if better prompts turn up, replace prompts/ — don't defend them.

Files

round-table/
├── SKILL.md
├── prompts/round1-open.txt … round4-vote.txt   one template per round, {{slots}}
├── scripts/table.ts                            inspect (early stop) + vote (aggregate)
└── examples/adopt-a-pattern.json               worked example — must give 37/50

SKILL_DIR is the base directory printed above this skill.

Step 0 — Is this a Round Table question?

Suggest /oracle-prism instead unless all three hold:

  1. A decision, not a topic — something will be done differently depending on the answer.
  2. Canonical options, 2–4 of them (--options). If the user gave none, propose them and wait for a yes.
  3. Stakes — being wrong is expensive or hard to reverse.

"Should we …" phrasing is not consent to convene. Ask first.

Then find where the minute will live:

# Find oracle root — git toplevel that has CLAUDE.md + ψ/
ORACLE_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
if [ -n "$ORACLE_ROOT" ] && [ -f "$ORACLE_ROOT/CLAUDE.md" ] && { [ -d "$ORACLE_ROOT/ψ" ] || [ -L "$ORACLE_ROOT/ψ" ]; }; then
  PSI="$ORACLE_ROOT/ψ"
elif [ -f "$(pwd)/CLAUDE.md" ] && { [ -d "$(pwd)/ψ" ] || [ -L "$(pwd)/ψ" ]; }; then
  ORACLE_ROOT="$(pwd)"
  PSI="$ORACLE_ROOT/ψ"
else
  echo "⚠️ Not in oracle repo (no CLAUDE.md + ψ/ at git root). Writing to pwd."
  ORACLE_ROOT="$(pwd)"
  PSI="$ORACLE_ROOT/ψ"
fi
SLUG="$(date +%Y-%m-%d)_<short-slug-of-the-question>"
TABLE="$PSI/lab/round-table"; mkdir -p "$TABLE" "$PSI/inbox/decisions"
MINUTE="$TABLE/$SLUG.md"; STATE="$TABLE/$SLUG.json"

Step 1 — Convene: seat the souls (3 to 8)

Quorum is 3 — two is a debate, one a monologue. Default to 5 when the user names no roster. Every seat needs a soul read from somewhere real — never invented:

Seat kindWhere the soul comes from
A persona fileany path the user gives (resonance_<name>.md, a character sheet, a SKILL.md) — read it whole
An Oracle in your fleetif maw is installed: R=$(maw locate <name> --path) → $R/ψ/memory/resonance/<name>.md, else $R/CLAUDE.md's identity section. Not found → refuse the seat and say so
A real person (multi-DNA)one line — name + the single habit they bring — written or confirmed by the human

Print the roster with each soul's source, the question, the options and the aggregator (default weighted). Gather every fact the souls may use into question_context now — there is no tool use during the rounds.

Create $STATE in the shape of examples/adopt-a-pattern.json (id, question, options, aggregator, agents[] with name, soul, rounds[]) and start $MINUTE with the roster. Flush both after every round, so one flaky subagent never costs the earlier rounds. Persona files may be private — the minute stays in your ψ, not in a post.

Step 2 — Rounds: one subagent per soul, all in parallel

For each round, fill that round's template from $SKILL_DIR/prompts/ and launch one Agent call per soul, all in a single message. Each prompt carries the full soul text, the question, the options and the transcript so far. Subagents debate from soul + context only — no tools.

RoundTemplateEach soul gets
1 OPENround1-open.txtsoul, question, context — hears nobody
2 DEEPENround2-deepen.txt+ every round-1 position; must challenge one by name
3 CONVERGEround3-converge.txt+ rounds 1–2, + 2–4 one-line disagreement axes that you extract
4 VOTEround4-vote.txt+ the full transcript; binding, 5 is forbidden

Parse each reply as JSON. Malformed or off-option → re-prompt that soul once; a second failure empties the seat and the minute says so. Append {round, position, confidence, self_update} to that soul's rounds in $STATE, and the round to $MINUTE.

After rounds 2 and 3, ask the inspector — don't eyeball it:

bun "$SKILL_DIR/scripts/table.ts" inspect "$STATE"
OutputDo
EARLY-STOPeveryone agrees at ≥ 8 — go straight to round 4
SKIP-ROUND-3nobody moved in round 2 — confirm no new evidence arrived, then vote
EXPERT-DEFERENCEone soul at 10, the rest ≤ 3 — ask the human whether to short-circuit
CONTINUErun the next round

Step 3 — Vote: the script counts, not the model

Write each soul's round-4 answer into final (vote, confidence, rationale) and dissent_note, then:

bun "$SKILL_DIR/scripts/table.ts" vote "$STATE"
ExitMeaningDo
0decidedprint the decision block
2RE-PROMPT — a 5, an off-option vote, a bad numberre-ask only the named souls, vote again
3ESCALATEwrite the deadlock in plain words; the human breaks it
1bad input, or fewer than 3 soulsfix $STATE

What the script enforces:

  • weighted (default) sums confidence per option · majority counts heads · unanimity-or-escalate needs every soul on one side at ≥ 7.
  • Ties break by highest single confidence, then fewer dissent notes, then the human — never an automatic pick.
  • Escalates under every aggregator when the winner holds < 60% of the weighted confidence, when 10s land on opposite sides, or when a dissent cites a value (honesty, safety, consent — override with values_keywords in $STATE). The human decides the hard ones.

Step 4 — The minute, and handing it back

Close $MINUTE with the vote table (soul · vote · confidence · rationale) and the script's block verbatim, e.g.:

DECISION: adopt-modified
Weighted confidence: 37/50 (74%) for adopt-modified
Top dissent: none (no opposing votes)
Top hedger: brand (6) — Compromise — would prefer as-is, but unity matters more

Write one line — the decision and the minute's path — to $PSI/inbox/decisions/$SLUG.md, so /recap finds it. Then:

# announce-mode → absolute path (no ψ/, no ~/, no $VAR, no ...).
# Use: echo "marker: $RESOLVED_PATH"  — bash substitutes; never print $VAR literally. See CONVENTIONS.md.
echo "🪑 Minute: $MINUTE"
echo "📥 Decision: $PSI/inbox/decisions/$SLUG.md"

And step out of the table:

  • Every seat was a lens. Write "the finance lens voted…", never "Finance decided…". The souls were worn by the convener; a seat is not that Oracle's or that person's real view. For a real view, ask them (/talk-to if you have a fleet).
  • A decision is advice. The human ships, merges and signs — the table only recommends.

Self-check

bun "$SKILL_DIR/scripts/table.ts" vote "$SKILL_DIR/examples/adopt-a-pattern.json"

Must print DECISION: adopt-modified and 37/50 (74%) and exit 0 — the result the reconstructed spec predicts for its worked example. Anything else means table.ts drifted.

Not in scope

No tool use mid-round · no soul summoning another agent · no human interjection mid-round · no round 5.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.