Interact with the multi-agent council system: list / create / show / prompts (steward) / contribute (member). Guards against misrouting: refuses to contribute when you aren't a member, have already contributed, or weren't routed a prompt.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add ryanjkelly/harnery --skill harn-council --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Harn Council?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ryanjkelly-harn-council)More formats (shields.io, HTML) on the badges page.
---
name: harn-council
description: "Interact with the multi-agent council system: list / create / show / prompts (steward) / contribute (member). Guards against misrouting: refuses to contribute when you aren't a member, have already contributed, or weren't routed a prompt."
---
<!-- harnery:generated harn-council v=c14915c5; machine-owned; regenerated by `harn init`, removed by `harn deinit`. Edit the harnery template, not this file. -->
A council convenes several agents to deliberate a hard or contested decision
over structured rounds. This skill wraps the `harn council` surface with the
guardrails a router needs when passing prompts between agents. It's asymmetric on
purpose: it does the most for **contributors** (refusing a misrouted prompt) and
the least for **stewards**.
Every mode starts by running `harn agents whoami --json` and, when an id is given,
`harn council show <id> --json`, so the logic works against typed data, not text.
## Modes
- **No argument** → list councils you're a member of; surface what waits on you.
- **`create <objective>`** → open the web member-picker with the objective filled.
- **`contribute <id>`** → the guarded contribution flow (below).
- **`prompts <id>`** → steward: draft each pending member's routing prompt.
- **`show <id>`** → render council state verbatim.
## List (no arg)
```bash
harn agents whoami --json
harn council list --mine --json
```
One section per council you're a member of: id + objective, round N (open /
collected) with N/M contributors, and your status (awaiting prompt / prompt ready
/ already contributed) with the next command to run. Stop after listing; don't
auto-route into contribute.
## Create (`create <objective>`)
The web UI is the member + steward picker; don't create from the CLI (that skips
the steward choice). Emit the link with the objective URL-encoded:
```
http://localhost:4276/councils/new?objective=<encoded>
```
If the dev server isn't up, start it with `harn web up`.
## Contribute (`contribute <id>`): the guarded flow
Run these checks in order; refuse with a specific reason if any fails.
1. **Membership.** If your `whoami` name isn't in `manifest.members`, refuse.
The router likely meant a different agent's session.
2. **Already contributed.** If you're in `current_round_contributors`, refuse.
Wait for the steward to advance the round.
3. **Prompt routing.** Find your entry in `current_round_prompts`. If none is
drafted for you, refuse (the steward must write one first). If the routed body
carries a `<!-- council-route … member: <name> -->` header naming a *different*
agent, refuse: the wrong prompt was pasted into your session.
4. **Compose** per your prompt (read `manifest.target_doc` in full if set; strip
the route header before treating the body as instructions).
5. **Submit:**
```bash
harn council contribute <id> --message "<status-line>" --file <path>
```
Use `--file` when you edited a target doc (captures the post-edit state);
`--message` for a prose-only contribution. If the prompt asks for a
substantive/trivial classification, end with the literal `<substantive>` or
`<trivial>` angle-bracket tag on the final line (the exit-criterion parser keys
on it). When in doubt, lean `<trivial>`.
## Prompts (`prompts <id>`): steward
1. **Authority.** If your `whoami` name ≠ the council's `steward`, stop.
2. **Plan the round** from the target doc + prior rounds. Round 1 must include a
completeness critic. Assign one member the explicit charge: "What important
thing is NOT in this document at all (a missing dimension, not a flaw in what's
written)?" Lens-scoped reviewers reliably miss whole absent dimensions.
3. **Draft + write** one prompt per member missing from `current_round_prompts`:
```bash
harn council prompt <id> agent-<Name> --message "..." # or --file <path>
```
The CLI auto-prepends the `<!-- council-route … -->` header; never write it by
hand. Every prompt must instruct the member to end with the literal
`<substantive>` / `<trivial>` tag.
## Refusal style
Lead with what you are versus what the council expects, cite the structural fact
that triggered the refusal (member list, contributors, prompt absence, route
mismatch), and offer the right next step. Don't propose a workaround that bypasses
the guard.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!