skills/run-council/SKILL.md
Thinking-lens stress-test on a recommendation.
npx skillsauth add kenoxa/spine run-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.
Sequences after run-advise. Receives advise-synthesis.md + {source_artifact_path} by path. Dispatches 5 thinking-lens advisors (Standard tier via @advisor). Chairman (@synthesizer + council-synthesis.md ref) resolves all conflicts and emits council-synthesis.md.
Session: Inherit calling skill's session ID. When standalone, generate per SPINE.md.
Phase Trace: per phase-audit.md table format. Log at intake, batch, peer-review, chairman, output. Include dispatch count.
Subagent references (backticked): dispatch to subagent — do NOT Read into mainthread.
| # | Phase | Type | Agent | Reference |
|---|-------|------|-------|-----------|
| 1 | Intake | mainthread | — | — |
| 2 | Batch | C (5 agents) | @advisor (×5, one per lens) | references/council-dispatch.md |
| 3 | Peer Review | mainthread + C (5 agents) | @advisor (×5) | references/council-peer-review.md |
| 4 | Chairman | C (1 agent) | @synthesizer | references/council-synthesis.md |
| 5 | Output | mainthread | — | — |
Accept from caller:
{advise_synthesis_path} (default: .scratch/<session>/advise-synthesis.md) — path to run-advise output{source_artifact_path} — path to the original decision object (frame artifact, discuss artifact, or intake)Skip condition (evaluate before dispatching):
Read {advise_synthesis_path}. Check BOTH conditions:
[DIVERGENCE] or [CONFLICT] tags anywhere in {advise_synthesis_path}blast_radius.transitive field in {source_artifact_path} is empty or absentNote: condition 2 is satisfied by absence — if the field does not exist, treat it as empty.
If BOTH conditions hold: write .scratch/<session>/council-synthesis.md with all required output fields:
Input status: N/A — ratified (skip condition met; no advisor dispatches)
Convergence Zones: N/A — ratified
Genuine Disagreements: N/A — ratified
Collective Blind Spots: N/A — ratified
Single Directional Recommendation: advise-synthesis recommendation ratified — no divergence or transitive blast radius detected. Council dispatch skipped.
Confidence: E2 (skip condition verified by reading advise-synthesis; no divergence detected)
Falsification: N/A — ratified
Delta from advise-synthesis: N/A — ratified
Then STOP. Do not proceed to Batch.
If either condition fails: proceed with full dispatch.
Exit: dispatch context assembled with {advise_synthesis_path} and {source_artifact_path} confirmed to exist. Pass both as paths — do not inline-extract content.
Dispatch in parallel — one @advisor per lens. Each advisor receives:
{advise_synthesis_path} by path{source_artifact_path} by pathoutput_path: .scratch/<session>/council-advisor-{lens-slug}.mdLenses, files, and slugs:
| Lens | Slug | Lens file | Output file |
|------|------|-----------|-------------|
| Contrarian | contrarian | references/council-lens-contrarian.md | council-advisor-contrarian.md |
| First Principles | first-principles | references/council-lens-first-principles.md | council-advisor-first-principles.md |
| Expansionist | expansionist | references/council-lens-expansionist.md | council-advisor-expansionist.md |
| Outsider | outsider | references/council-lens-outsider.md | council-advisor-outsider.md |
| Executor | executor | references/council-lens-executor.md | council-advisor-executor.md |
Cap: 5 dispatches. Wait for all 5 to complete before proceeding.
skills/run-council/scripts/anonymize-advisors.sh .scratch/<session>/ — outputs council-advisor-anon-{A–E}.md + council-anon-map.json in the session directory. Fail if any of the 5 batch outputs from Phase 2 are missing.@advisor per lens via references/council-peer-review.md. Each receives:
{anon_dir}: .scratch/<session>/ (session directory containing the anonymized outputs)output_path: .scratch/<session>/council-peer-{lens-slug}.mdCap: 5 dispatches.
Sequential @synthesizer dispatch via references/council-synthesis.md. Receives:
.scratch/<session>/.scratch/<session>/{anon_map_path}: .scratch/<session>/council-anon-map.json{advise_synthesis_path}{source_artifact_path}output_path: .scratch/<session>/council-synthesis.mdRetry once on empty output; halt and surface error on second failure.
Return council_artifact (path to .scratch/<session>/council-synthesis.md) to caller (do-design).
council_artifact to caller.{advise_synthesis_path} is a mandatory precondition@consultant for advisor dispatches — @consultant is hard-pinned Frontier/opus; use @advisor (Standard/sonnet)council-synthesis.md{anon_dir}), not file contentscouncil-anon-map.json written with all 5 slug→letter mappings [E3]council-synthesis.md Input status field present (advisor files confirmed or gaps reported) [E3]council-synthesis.md written with: Convergence Zones, Genuine Disagreements, Collective Blind Spots, Single Directional Recommendation, Confidence, Falsification, Delta from advise-synthesis [E3]tools
Use when: 'create a worktree', 'git worktree', 'parallel branch'.
tools
Use when: 'session state', 'resume work', 'worktree session'.
development
Use when: 'goal prompt'.
data-ai
Git conflict resolver for prepared merge briefs. Use when a merge, sync, or land operation has conflicts and the caller provides a self-contained brief.