microagent-create
PROPOSE-ONLY — mine this host's recent Claude Code transcripts for work that keeps recurring and keeps returning bulk into…
Assess a proposal through independent technical, product, risk, and dissenting lenses, then synthesize a decision without mutating unless explicitly requested.
Claude Code
$ npx -y skills add automagik-dev/genie --skill council --agent claude-code
Codex
$ npx skills add automagik-dev/genie --skill council -a codex -y
Cursor
$ npx skills add automagik-dev/genie --skill council -a cursor -y
Gemini CLI
$ npx skills add automagik-dev/genie --skill council -a gemini-cli -y
GitHub Copilot
$ npx skills add automagik-dev/genie --skill council -a github-copilot -y
OpenCode
$ npx skills add automagik-dev/genie --skill council -a opencode -y
Windsurf
$ npx skills add automagik-dev/genie --skill council -a windsurf -y
name: council description: "Assess a proposal through independent technical, product, risk, and dissenting lenses, then synthesize a decision without mutating unless explicitly requested." category: routing mutates: none
Use a council when a consequential decision benefits from independent scrutiny. The council assesses; it does not edit files, change configuration, or execute the plan unless the user explicitly asks for that.
The council is a saved workflow, not a procedure this skill performs inline. The single source of truth is `.claude/workflows/council.js` in the genie repository's canonical workflow catalog (see `.claude/workflows/README.md` there); this skill is its front door. On a runtime that runs saved workflows, run the script at `<repository root>/.claude/workflows/council.js` when that file exists, otherwise `~/.claude/workflows/council.js` (delivered by `genie install` / `genie update`); give the runtime that explicit script path, never a bare name — both scopes now carry these names and the order a name resolves in is undocumented. When the runtime refuses that path as outside what the session may load, read the same file and pass its full text as the runtime's inline script, never a bare name, and name the file that ran inline beside the relayed result. Pass the decision as a string or `{decision, constraints?, evidence?, unknowns?}`, and relay the returned `report` unchanged; lenses that returned nothing are listed under `notConvened` and were never averaged in. On a runtime without a workflow surface, dispatch the lenses below by hand with the same brief; the roster and both response shapes are the workflow's and must not diverge from it.
Choose the lenses the decision needs from the set below, sized to its stakes: Dissent is always included, and at least one other lens supplies independent evidence. Send each chosen lens to its own subagent through the runtime's native delegation surface, in parallel where supported. Every lens receives the same decision statement, constraints, evidence, and explicit unknowns — and nothing else. The session transcript, the emerging consensus, and another lens's answer stay outside the brief, because a lens that reads the room returns an echo instead of evidence. Lenses that run on one model family through one runtime are role-separated, not independent; say so when reporting, alongside the lenses that did not answer.
Verdict: support | support-with-conditions | oppose | insufficient-evidence Confidence: low | medium | high Key evidence: - ... Risks or objections: - ... Required conditions: - ... Unknowns: - ...
A dissenting finding is preserved verbatim in the dissenting lens's own words and attributed to it. It is never paraphrased into agreement, folded into the consensus line, or deleted because the majority disagrees.
Decision: proceed | proceed-with-conditions | revise | stop | gather-evidence Consensus: <where the lenses agree> Dissent: <minority positions, attributed by lens> Conditions: <concrete prerequisites> Evidence gaps: <unknowns that could change the decision> Next action: <one bounded next step>
The synthesizer integrates; it does not assess. It writes its own reading of the decision before the consensus line, so the summary is not an echo of the loudest lens, and it introduces no finding traceable to no lens report. Agreement between lenses is signal: repeated findings are counted, not compressed away as overlap. Explain how conflicts were resolved. If evidence is insufficient, say so rather than manufacturing consensus. End after the assessment unless mutation was explicitly authorized.
Wishes in, PRs out. CLI agent that interviews you, plans the work, dispatches parallel agents in isolated worktrees, and reviews code before you see it.
PROPOSE-ONLY — mine this host's recent Claude Code transcripts for work that keeps recurring and keeps returning bulk into…
ROUTING RULE — when the question asks where something lives, how something works, what handles X, or how Y flows through a…
Write or revise a Genie skill so it survives the shipped contract — frontmatter, house size, starter card, and runtime-neutral…
Explore an ambiguous idea with the user, settle scope and success criteria, and produce an independently reviewed design for wish.
Clean up the prose, code or interface already in scope — protect its meaning, voice and behaviour, remove what only adds reading…
Audit documentation and developer experience against the live product — drift, onboarding, error messages — and write or fix docs…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.