Introduction
My council of experts is three (or more) AI personas designed to argue from specific perspectives such as application security, and software development and software architecture.
The idea is that when you use, for example, Claude Code or some other coding agent to generate a development plan, the council will receive the plan and debate it amongst themselves. The output from the council is returned to the coding agent, and the plan can be updated if needed.
Each AI Persona is just a prompt, created to assume the role of the expert they represent — complete with specific knowledge, priorities, and evaluation criteria relevant to their domain of expertise.
The reason I created the council was not specifically for development, it was to discuss and debate ideas. Before I would open a few tabs where the AI was prompted to become a certain type of Expert, then I would just copy the output from each AI to every tab. Time consuming yes, but it did work. Eventually I decided to convert the process into a program.
The remaining article will discuss implementation details and future improvements. The code be found here.
The Problem Space
Coding agents today are excellent at creating development plans, especially Opus 4.5. However, they can’t anticipate everything and Opus is not an expert in software architecture, software optimization and so on.
It can also be difficult for the human in the loop, to design and plan for everything upfront. Having a council of experts, primed to critique and debate from a given point of view, can increase the quality of your development plan.
The end result is a multi-perspective analysis, which has been beneficial.
How the Council of Experts Works
Assuming we are working with a coding agent, you first instruct your agent to develop a plan. Once the plan is created, the agent will execute the council program and referencing the plan.
The council will debate up to N rounds, default three. During debate round one, each expert will parse the plan and provide their analysis to the group. The prompt for the debating rounds is defined as the following:
## Discussion Context
Original question: {prompt}
{proposals_context}
## Your Task (Turn {current_turn})
Review the proposals and debate above. You must choose ONE of these actions:
1. **REVISE** - Update your own proposal based on others' input
2. **AGREE** - Fully endorse another agent's proposal (specify which agent)
3. **CONCERN** - Raise a new concern that hasn't been addressed
Choose based on:
- If you see merit in another's proposal that addresses your concerns better, AGREE with them
- If you want to incorporate feedback or respond to concerns, REVISE your proposal
- If you see an unaddressed issue, raise a CONCERN
Return your response as JSON with this structure: