# Local Council Execution

Runs a local council when no external AI providers are configured.

- Repository: https://github.com/hex/claude-council (916 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add hex/claude-council --skill local-council-execution -g -a claude-code -y`
Codex: `npx skills add hex/claude-council --skill local-council-execution -g -a codex -y`
Cursor: `npx skills add hex/claude-council --skill local-council-execution -g -a cursor -y`
Gemini CLI: `npx skills add hex/claude-council --skill local-council-execution -g -a gemini-cli -y`

## Description

Runs a local council when no external AI providers are configured. Spawns N independent Claude subagents (one per role, blind to each other) that each answer the question from a single assigned lens, then synthesizes their perspectives. Invoked by the ask command via --local, or when the user accepts the local-council offer after no providers are found. This is a same-model (Claude-only) panel, not a cross-vendor council.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Local Council Execution

When no external providers are configured, convene a council of independent
Claude subagents instead. Each member answers from one role, blind to the
others; you then synthesize the spread of perspectives.

**Read this first, the honest framing is not optional.** Every member is
Claude. They share priors and training, so *agreement between them is weak
signal*, not validation. The value here is **independent angles and blind-spot
coverage**, not consensus. The output you produce MUST make this explicit and
MUST NOT present member agreement as if it were cross-vendor corroboration.

## Step 0: Confirm this is a local-council context (guard)

A local council is the **fallback** for when no real providers exist, it is not
a default way to "use the council". Only proceed if one of these holds:

1. The user explicitly passed `--local`, or
2. There are no configured providers and the user accepted the local-council
   offer.

If you reached this skill any other way, verify providers are actually absent
before spawning anything:

```bash
bash ${CLAUDE_PLUGIN_ROOT}/scripts/query-council.sh --list-default 2>&1 | head -1
```

If that lists one or more providers and the user did **not** ask for `--local`,
**STOP**, do not spawn local members. Run the standard cross-vendor flow
(`council-execution`) so the real providers answer, since same-model role-play is
strictly weaker than the cross-vendor council the user can actually get.

## Step 1: Resolve the roles

Source the libs once:

```bash
source ${CLAUDE_PLUGIN_ROOT}/scripts/lib/prompts.sh
source ${CLAUDE_PLUGIN_ROOT}/scripts/lib/roles.sh
```

**If the user passed `--roles`**, it already says both which lenses and how many
members, use it directly and skip the size question:

```bash
local_council_roles "<--roles value>"
```

**Otherwise, ask the user how many members to convene**, then resolve that many:

The rest: https://github.com/hex/claude-council/blob/HEAD/skills/local-council-execution/SKILL.md
