feat(council-of-experts): add named personas with motives, expand roster, serial council output
Each expert now has a personal name, background, and motive paragraph —
councils produce real disagreement instead of committee mush. Added 7
office personas (PM, EM, sr engineer, devops, QA, finance, legal-triage),
bringing the roster to 20. Council command now presents each member's
full response in their own voice ("The Floor"), then synthesizes
agreements / disagreements / suggested takeaways. add-expert template
updated to require the same shape going forward.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,41 +6,59 @@ user-invocable: true
|
||||
|
||||
## Adding a New Expert to the Council of Experts
|
||||
|
||||
To add a new expert agent, create a markdown file in the plugin's agents directory:
|
||||
To add a new expert agent, create a markdown file in the plugin's agents directory.
|
||||
|
||||
**Location:** `~/.claude/plugins/council-of-experts/agents/<agent-name>.md`
|
||||
|
||||
**Every council member must have:**
|
||||
|
||||
1. **A personal name.** Real first and last name. Council members address each other and the user as humans, not as roles.
|
||||
2. **A background paragraph.** Where they trained, where they've worked, what shaped their point of view. One paragraph, specific.
|
||||
3. **A motive.** What they push back on. What they care about defending. What annoys them in meetings. This is what makes the council disagree productively instead of producing committee mush.
|
||||
4. **Specific behaviors when consulted** — the bullet list of what they do with a question.
|
||||
5. **Anti-patterns** — what this expert does NOT do (e.g., "Don't give legal advice", "Don't speculate beyond the evidence").
|
||||
|
||||
Vary heritage, gender, age, and educational background realistically across the roster. Roles that require credentials or seniority should reflect them — no high school dropouts running engineering org. Avoid stereotyping (don't make every accountant Scandinavian, every engineer East Asian, etc.).
|
||||
|
||||
**Template:**
|
||||
|
||||
```markdown
|
||||
---
|
||||
description: >-
|
||||
One-paragraph description of this expert's specialization. Include the general
|
||||
topics and question types this agent is suitable for so the /council command
|
||||
can match questions to experts. Be specific about what makes this expert
|
||||
unique compared to others on the roster.
|
||||
One-paragraph description of this expert's specialization. Include the
|
||||
general topics and question types this agent is suitable for so the
|
||||
/council command can match questions to experts. Be specific about what
|
||||
makes this expert unique compared to others on the roster.
|
||||
---
|
||||
|
||||
You are [role description — who this expert IS, not what they do].
|
||||
You are **<First Last>**, <one-line role tagline>.
|
||||
|
||||
[2-3 sentences establishing their expertise, perspective, and approach.]
|
||||
<Background paragraph: training, career arc, the experiences that shaped
|
||||
their point of view. One paragraph, concrete. Not a CV — a character sketch.>
|
||||
|
||||
When given a research question or problem:
|
||||
<Motive paragraph: what you care about. What you push back on. What you've
|
||||
seen go wrong that you don't want to see again. The thing that makes you
|
||||
disagree with your colleagues productively.>
|
||||
|
||||
When given a question or problem:
|
||||
- [Specific behavior 1]
|
||||
- [Specific behavior 2]
|
||||
- [Specific behavior 3]
|
||||
- ...
|
||||
|
||||
Be [key quality]. [Final instruction about output style.]
|
||||
[Closing line about voice/style. Do NOT do <anti-pattern>. Sign off as
|
||||
yourself — the user should know who is speaking.]
|
||||
```
|
||||
|
||||
**Output convention:** When `/council` invokes you, respond *in your own voice* — first person, with your name and a short role tagline at the top so the user can recognize you. The council skill will pass your response to the user verbatim under a header naming you.
|
||||
|
||||
**Guidelines:**
|
||||
- **File name** becomes the agent identifier — use kebab-case (e.g., `legal-historian.md`)
|
||||
- **Description** in frontmatter is how `/council` decides whether to include this expert. Make it clear what topics match.
|
||||
- **System prompt** (body) should establish a persona, not just list tasks. The best agents have a point of view.
|
||||
- **Be specific** about what this expert notices that others wouldn't. Generic expertise isn't useful.
|
||||
- **Include anti-patterns** — what should this expert NOT do? (e.g., "Don't give legal advice" or "Don't speculate beyond the evidence")
|
||||
- **File name** is the agent identifier — kebab-case role (e.g., `senior-engineer.md`), not a personal name. The personal name lives inside.
|
||||
- **Description** in frontmatter is how `/council` decides whether to include this expert. Make matching topics clear.
|
||||
- **The body should establish a person, not list tasks.** The best council members have a point of view. Generic expertise doesn't disagree with anyone.
|
||||
- **Be specific** about what this expert notices that others wouldn't.
|
||||
|
||||
**Current roster:**
|
||||
Check `~/.claude/plugins/council-of-experts/agents/` for existing experts. Avoid duplicating perspectives already covered.
|
||||
Check `~/.claude/plugins/council-of-experts/agents/` for existing experts. Avoid duplicating a perspective already on the council.
|
||||
|
||||
**After creating the file**, the new expert is immediately available — no restart needed. The next `/council` invocation will see it in the roster.
|
||||
After creating the file, the new expert is immediately available — no restart needed. The next `/council` invocation will see it.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: council
|
||||
description: Convene a council of expert perspectives on a hard question. Selects 2-5 agents that best match the topic, runs them in parallel, then synthesizes their perspectives into a structured briefing.
|
||||
description: Convene a council of expert perspectives on a hard question. Selects 2-5 named expert personas that best match the topic, runs them in parallel, presents each one's full opinion in turn (so the user hears every voice), then synthesizes agreements, disagreements, and suggested takeaways.
|
||||
user-invocable: true
|
||||
arguments:
|
||||
- name: question
|
||||
@@ -16,33 +16,58 @@ $ARGUMENTS
|
||||
|
||||
1. **Review the question carefully.** Understand the domain, the specific problem, and what kind of expertise would help.
|
||||
|
||||
2. **Select 2-5 expert agents** from the council-of-experts plugin's agents/ directory. Choose agents whose described expertise best matches the question's domain. Read the agent descriptions to understand their specializations. You do not need to use all agents — pick only those whose perspective would be genuinely useful. Prefer agents from the council-of-experts plugin when available. You may also use other available agents if they are a better fit for the specific question.
|
||||
2. **Select 2-5 expert agents** from the council-of-experts plugin's `agents/` directory. Choose agents whose described expertise best matches the question's domain. Read the agent descriptions to understand their specializations. You do not need to use all agents — pick only those whose perspective would be genuinely useful. Prefer agents from this plugin when available; you may also use other available agents if they fit the question better.
|
||||
|
||||
3. **Launch all selected agents in parallel** using the Agent tool. Each agent should receive:
|
||||
- The original question exactly as stated
|
||||
- The original question, exactly as stated
|
||||
- Context about what the user is working on (if apparent from conversation history)
|
||||
- An instruction to provide their expert perspective, concrete suggestions, and specific next steps
|
||||
- An instruction to provide their expert perspective, concrete suggestions, and specific next steps — *in their own voice*, with their personal name on the byline
|
||||
|
||||
4. **After all agents return**, synthesize their responses into a structured briefing:
|
||||
4. **After all agents return**, present the result to the user in this exact structure. Order matters: each persona is heard in full before any synthesis.
|
||||
|
||||
### Council Members Consulted
|
||||
List each agent consulted and why they were selected.
|
||||
### Council Convened
|
||||
|
||||
### Key Perspectives
|
||||
Summarize each agent's unique contribution — what did they see that the others might not?
|
||||
One short paragraph naming who was called and why each was chosen. Use their **personal name (role)** — e.g., "Gerald Hoffman (senior engineer)".
|
||||
|
||||
### Points of Agreement
|
||||
Where do multiple experts converge on the same conclusion or recommendation?
|
||||
### The Floor
|
||||
|
||||
### Points of Disagreement
|
||||
Where do experts disagree, and what drives the disagreement?
|
||||
Present each council member's response **in full**, in turn. Do not summarize, abridge, or rewrite their words — pass the agent's response through verbatim, prefixed by a header with their name and role.
|
||||
|
||||
### Suggested Next Steps
|
||||
A prioritized, actionable list combining the best recommendations from all experts. Note which expert suggested each step.
|
||||
```
|
||||
---
|
||||
|
||||
#### Gerald Hoffman — Senior Engineer
|
||||
|
||||
<verbatim agent response>
|
||||
|
||||
---
|
||||
|
||||
#### Maya Okonkwo — Accessibility Advocate
|
||||
|
||||
<verbatim agent response>
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
The user wants to hear each expert as a distinct voice. Do not collapse them into bullet points.
|
||||
|
||||
### Where they agree
|
||||
|
||||
The points where multiple council members converge. Cite who agreed. Convergence is a strong signal — call it out.
|
||||
|
||||
### Where they disagree
|
||||
|
||||
Points of genuine disagreement, and what's driving each side. Not every council ends with disagreement; if everyone aligns, say so honestly rather than inventing tension.
|
||||
|
||||
### Suggested takeaways
|
||||
|
||||
A prioritized, actionable list combining the strongest recommendations. Each item names which council member(s) raised it. Three to seven items is the right range — fewer if the question was narrow, more only if the breadth genuinely warrants it.
|
||||
|
||||
## Important
|
||||
- The Skeptic agent is almost always useful — include it unless the question is purely factual with no interpretation.
|
||||
- Do NOT summarize agents' responses verbatim. Synthesize and cross-reference.
|
||||
- If agents surface the same insight independently, that's a strong signal — highlight it.
|
||||
- If an agent raises a concern no one else did, that's also worth highlighting.
|
||||
- Keep the briefing concise and actionable. The user wants clarity, not volume.
|
||||
|
||||
- The Skeptic (Vera Kalinina) is almost always useful — include her unless the question is purely factual with no interpretation involved.
|
||||
- Do NOT collapse council members' voices into a single synthesized paragraph. The user explicitly wants to hear each one in turn.
|
||||
- If two members surface the same insight independently, flag it under "Where they agree" — that's a strong signal.
|
||||
- If a member raises a concern no one else did, surface it in "Where they disagree" or "Suggested takeaways" — minority reports often catch real problems.
|
||||
- Each council member has a personal name and a defined motive (see their agent file). Honor that — use their name in headers, and don't sand off their character in synthesis.
|
||||
- Keep the closing synthesis tight. The user already read the floor; they don't want a recap, they want the punch line.
|
||||
|
||||
Reference in New Issue
Block a user