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:
movq
2026-04-29 21:03:09 -05:00
parent e4fa47f8b7
commit 6362a7cf88
22 changed files with 487 additions and 184 deletions

View File

@@ -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.