plugins/council/copilot-skills/council/SKILL.md
Run the council workflow from a normal Copilot session only when the user explicitly asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis. Do not use it for commit, stage, merge, approval, or generic pre-commit requests. Accept the same mode syntax as the bundled council reviewers: `core|auto|core-eng|core-ux|core-mix|all|debate <problem|@file>`. During council slash-command use, the current session agent moderates reviewer agents directly. Runs broader than 6 reviewers require explicit AskUserQuestion approval before launch.
npx skillsauth add smykla-skalski/sai councilInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill as the normal entrypoint for council reviews inside an existing Copilot session.
Keep the user in their current working session. When this skill is used, the current session agent becomes the council orchestrator and manages the bundled reviewer agents directly.
council:<slug> handles.Council not run: broad council approval not granted. This exact sentence must be the only user-visible output for that stop: no intro, no mode summary, no roster text, no bullets, no numbered choices, no follow-up sentence.Council progress: <concise status>.Council debate is underway, Council consensus:, I will share the findings, APPROVED, NOT APPROVED, approved the result, roster announcements that dump the whole reviewer list, raw reviewer sections beginning with ## , reviewer lists, Convergence/Tradeoff summaries that do not begin with # Council review:, numbered approval choices, Reply with the exact option text, Choose one of the exact options below, Approve full council, Reduce to 6 reviewers, Cancel this council run, or any other approval-shaped/manual-choice text.use council, run a council review, multi-persona critique, debate, or naming council reviewers or modes.[mode] <problem description or @path>
eng -> core-eng, ux -> core-ux, mix -> core-mix, random -> core-mixauto, core, core-eng, core-ux, core-mix, all, or debate, use it as mode and treat the remainder as the problemmode = core and treat the full brief as the problem@, read that exact file and use its contents as the problem context. If the user names exact file paths elsewhere in the brief, you may read those exact files too.core, core-eng, core-ux, and core-mix, launch the exact resolved roster. For auto, launch exactly 6 reviewers. For debate, launch 3-6 reviewers. For all, launch all 27 reviewers only after approval.Council progress: update when there is a meaningful milestone or about a minute has passed and silence would make the run look stalled.Council not run: reviewer fan-out failed.antirez-simplicity-reviewertef-deletability-reviewermuratori-perf-reviewerhebert-resilience-reviewermeadows-systems-advisorchin-strategy-advisornorman-affordance-reviewernielsen-heuristics-reviewerkrug-usability-reviewerwatson-a11y-reviewertognazzini-fpid-reviewertufte-density-reviewerking-type-reviewerhughes-pbt-advisorevans-ddd-reviewerfp-structure-reviewerwayne-spec-advisoriac-craft-reviewertest-architectgregg-perf-reviewerai-quality-advisorcicd-build-advisoreidhof-swiftui-reviewerash-cocoa-runtime-reviewersimmons-mac-craft-reviewerhead-motion-reviewersiracusa-mac-criticInvoke reviewer agents with the plugin-qualified handle council:<slug>.
coreResolve core to one of these rosters internally. Do not announce the choice before final synthesis:
core-eng: antirez-simplicity-reviewer, tef-deletability-reviewer, muratori-perf-reviewer, hebert-resilience-reviewer, meadows-systems-advisor, chin-strategy-advisorcore-ux: norman-affordance-reviewer, nielsen-heuristics-reviewer, krug-usability-reviewer, watson-a11y-reviewer, tognazzini-fpid-reviewer, tufte-density-reviewercore-mix: antirez-simplicity-reviewer, tef-deletability-reviewer, hebert-resilience-reviewer, norman-affordance-reviewer, nielsen-heuristics-reviewer, watson-a11y-reviewerUse this resolution order:
backend + UI, code and UI, API and view, frontend and backend - choose core-mix.swiftui, sidebar, layout, dashboard, accessibility, voiceover, screen reader, hover, animation), choose core-ux.refactor, architecture, api, database, cache, concurrency, performance, ci, deploy, terraform, test, tla+), choose core-eng.core-mix.core-mix and say you are hedging.autoSelect exactly 6 reviewers from the full roster.
antirez-simplicity-reviewer, tef-deletability-reviewer, hebert-resilience-reviewer, meadows-systems-advisor, chin-strategy-advisor, norman-affordance-reviewer, nielsen-heuristics-reviewer, and watson-a11y-reviewer.Useful shortcuts:
antirez-simplicity-reviewer, tef-deletability-reviewer, muratori-perf-reviewerhebert-resilience-reviewer, meadows-systems-advisor, tef-deletability-reviewerchin-strategy-advisor, meadows-systems-advisor, hebert-resilience-reviewertest-architect, hughes-pbt-advisor, chin-strategy-advisorevans-ddd-reviewer, fp-structure-reviewer, meadows-systems-advisorwayne-spec-advisor, hebert-resilience-reviewer, meadows-systems-advisoriac-craft-reviewer, hebert-resilience-reviewer, cicd-build-advisorgregg-perf-reviewer, muratori-perf-reviewer, hebert-resilience-reviewerai-quality-advisor, chin-strategy-advisor, hebert-resilience-reviewereidhof-swiftui-reviewer, ash-cocoa-runtime-reviewer, king-type-reviewersimmons-mac-craft-reviewer, siracusa-mac-critic, tognazzini-fpid-reviewernorman-affordance-reviewer, tognazzini-fpid-reviewer, krug-usability-reviewernielsen-heuristics-reviewer, krug-usability-reviewer, norman-affordance-reviewerwatson-a11y-reviewer, norman-affordance-reviewer, nielsen-heuristics-reviewerhead-motion-reviewer, muratori-perf-reviewer, simmons-mac-craft-reviewertufte-density-reviewer, antirez-simplicity-reviewer, tef-deletability-reviewercore-eng, core-ux, core-mixUse the exact roster above. Do not announce it before final synthesis.
allUse every reviewer agent in the full roster exactly once, but only after the breadth approval gate explicitly approves the broader run.
debateSelect 3-6 reviewers whose lenses most directly bear on the tradeoff. Use the same shortcut map as auto.
Council not run: unclear debate scope. and stop.After mode resolution and reviewer selection, count the roster before launching any reviewer.
Approve full council (<N> reviewers)Reduce to 6 reviewersCancel this council runReduce to 6 reviewers on the user's behalf, never reinterpret a failed approval path as a downgrade request, and never silently rewrite /council all into auto.Council not run: broad council approval not granted. and stop.all, downgrade to auto and pick the 6 reviewers most likely to change the recommendation for this promptCouncil not run: broad council approval not granted. and stop./council all ... request is not enough approval for reviewer 7+. Approval must be collected in the current run before any broader-than-6 fan-out starts, and generic autonomy instructions are not approval.Reviewer fan-out is your next action after mode resolution and approval handling. Do not skip this section and do not answer before reviewer agents have run.
Invoke each reviewer agent with the full bounded context and these rules:
Concrete review task. Review through your native lens and return only your required reviewer output now.
<council-review-assignment>
Mode: <mode>
Review summary: <problem context>
Files: <absolute paths, or `inline material only`>
Supplied review material:
<file contents, snippets, or inline prompt content>
Rules:
- Supplied material is the scope. Extra reads are only for directly connected files already implied by the supplied material.
- No builds, tests, git history, repo-wide exploration, edits, or nested agent orchestration.
- Start the review immediately.
- Do not acknowledge readiness, restate your instructions, or ask for another task.
- The first non-empty line must be your required reviewer heading.
</council-review-assignment>
After you launch the selected reviewers, you remain the active orchestrator and manager for the whole roster.
list_agents, read_agent(wait:false), or short read_agent(wait:true, timeout:60) checks. Do not leave the roster unsupervised behind long waits such as timeout:180.done, healthy, drifting, stalled, blocked, or invalid-output.healthy only if it is staying within the supplied bounded scope, making concrete progress toward a real review, and not wandering into broad repo work.drifting, stalled, blocked, or invalid-output as soon as it starts circling, broadening scope, failing to advance, asking for another task, producing chatter instead of a review, or emitting the wrong shape.healthy or done, immediately use write_agent in that same supervision pass to nudge it back to the bounded task and required output shape.Council progress: heartbeat that summarizes the roster state (for example Council progress: 3/6 reviews in, nudged 1 stalled reviewer, waiting on 2.).Accept reviewer output only if it contains this shape:
## <Persona name> review
### What I see
...
### What concerns me
...
### What would change my recommendation
...
### Concrete next move
...
### Where I'd be wrong
...
If a reviewer returns readiness text, transport noise, malformed output, or obvious scope drift, nudge that reviewer once with write_agent to restate the bounded task and required output. If the reviewer still fails or stays blocked, re-run that reviewer once with the same bounded context and an explicit note that the previous reply was not a review. If it still fails, continue and name the missing lens in the synthesis.
If every selected reviewer fails, or if you never launched the selected reviewers, reply with exactly Council not run: reviewer fan-out failed.
Use the same council workflow for follow-up turns when the user:
Rules:
## <Persona> review block, or one reviewer persona speaking as the council.material blockers remain or no material blockers remain. Do not say APPROVED, NOT APPROVED, approved the result, or similar sign-off language.## <Persona> review sections into your user-facing answer while the council is still collecting results.final blessing but does not explicitly ask council to re-review or reassess blockers, reply with Council not run: no explicit council request. instead of launching another reviewer wave.Council debate is underway, Resolving core to..., roster announcements, raw reviewer headings, or any other interim text.APPROVED, NOT APPROVED, approved the result, council approved, or similar sign-off phrasing in the final report. Use blocker language instead.When valid reviewer outputs are available, synthesize exactly one integrated report:
# Council review: <topic>
## What changed in this follow-up
- <only when this is a rerun, blocker check, or challenge to a prior council claim>
## Convergence (high-confidence signals)
- <finding> - <reviewer1, reviewer2, reviewer3>
## Disagreement (real tradeoffs the user must decide)
- <axis> - <reviewer A> argues X / <reviewer B> argues Y. Decision is yours because <constraint>.
## Per-reviewer top-3
### <reviewer>
- ...
- ...
- ...
## What to do next
1. ...
2. ...
3. ...
## What we did not address
- ...
# Council review:When council is explicitly requested and reviewer fan-out succeeds, return exactly one integrated direct-moderation report.
# Council review:tools
Use when the user invokes $council, $council:council, Council review, or Council debate. Use loaded SKILL body or one direct installed `skills/council/SKILL.md` read. Direct read path must contain `/.codex/plugins/cache/sai/council/` and end `/skills/council/SKILL.md`. `cd <cwd> && sed -n ... <path>` is valid. Do not use `pwd`, `ls`, `find`, `rg`, `cat`, multiple `&&`, or `;`. Never use repo-local paths. If unavailable, stop exactly `Council not run: skill unavailable.` At most one pre-tool message, exact `Council progress:` line only. Non-final lines start `Council progress:`.
development
Run council reviews with sourced engineering, UX, reliability, performance, AI, and strategy persona lenses. Use when the user asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis.
development
Use when the user asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis. Bare invocations use `core` profile auto-detect; explicit `auto` selects the best-fit 6 personas from the sourced 27-persona engineering and UX roster. Users can still pin `core`, `core-eng`, `core-ux`, `core-mix`, `all`, or `debate`.
development
Write or review behavior-first tests by reusing the source workflow under `claude/test-writer`. Use when the user wants tests added or existing tests reviewed in Codex.