A multi-agent orchestration system for structured, test-driven software development with AI assistance
The "GitHub Copilot Orchestra" pattern transformed how I build with AI agents. Instead of juggling context and constantly switching modes, the Orchestra pattern provides a structured workflow that coordinates specialized AI subagents through a complete AI development cycle for adding a feature or making a change: planning → implementation → review → commit.
The system solves a critical challenge in AI-assisted development: maintaining code quality and test coverage while moving quickly. By enforcing Test-Driven Development (TDD) conventions and implementing quality gates at every phase, you get the speed of AI coding combined with best practices in software engineering.
- 🎭 Multi-Agent Workflow - Conductor agent orchestrates specialized Planning, Implementation, and Code Review subagents, each optimized for their specific role.
- ✅ TDD Enforcement - Strict Test Driven Development: writing failing tests, seeing them fail, writing minimal code to pass, and verifying success before proceeding.
- 🔍 Quality Gates - Automated code review after each phase ensures standards are met before moving forward.
- 📋 Documentation Trail - Comprehensive plan files and phase completion records create an audit trail for reviewing all work completed.
- ⏸️ Mandatory Pause Points - Built-in stops for plan approval and phase commits keep you in control of the development process.
- 🔄 Iterative Cycles - Each implementation phase follows the complete cycle: implement → review → commit before proceeding to the next phase.
- 💎 Keeps Context Concise - The majority of the work is done in dedicated subagents, each with its own context window and dedciated prompt. This helps reduce hallucinations as the context window fills up.
The Orchestra system consists of four specialized agents:
Conductor.agent.md- Main orchestration agent that manages the complete development cycle.- Coordinates Planning, Implementation, and Code Review subagents.
- Generates the plan to be followed.
- Handles user interactions and mandatory pause points.
- Enforces the Planning → Implementation → Review → Commit cycle.
- Uses Claude Sonnet 4.5 by default.
planning-subagent.agent.md- Research and context gathering specialist.- Analyzes codebase structure and patterns.
- Identifies relevant files and functions.
- Returns structured findings to inform plan creation.
- Uses Claude Sonnet 4.5 by default.
implement-subagent.agent.md- Implementation specialist following TDD conventions.- Executes individual phases of the development plan.
- Writes failing tests first, then minimal code to pass.
- Works autonomously within phase boundaries.
- Uses Claude Haiku 4.5 by default for premium request efficiency.
code-review-subagent.agent.md- Quality assurance specialist.- Reviews uncommitted code changes using git to identify new code.
- Validates test coverage and code quality.
- Returns review results back to Conductor (
APPROVED/NEEDS_REVISION/FAILED). - Uses Claude Sonnet 4.5 by default.
Before using the GitHub Copilot Orchestra, ensure you have:
-
VS Code Insiders - Required for the custom chat modes feature that enables subagents and handing tasks off to them.
- Download from: https://code.visualstudio.com/insiders/
-
GitHub Copilot Subscription - Active subscription required for AI-powered agents
- Individual or Business plan
- GitHub Copilot Chat extension installed and enabled
-
Git - Version control is integral to the workflow
- Used for commit workflow at end of each phase
- Recommended: Basic familiarity with git commands
-
Clone or Download the Repository
git clone https://github.com/ShepAlderson/copilot-orchestra.git cd copilot-orchestraAlternatively, download the repository as a ZIP file and extract it to your desired location or just copy the contents of the agent files from the browser.
-
Verify Prerequisites
- Ensure the latest VSCode Insiders is installed and running.
- Confirm the GitHub Copilot Chat extension is active (check the chat icon in the sidebar).
- Verify your workspace is a git repository (run
git statusto confirm)- If not, you can use
git initif you have git installed.
- If not, you can use
The GitHub Copilot Orchestra uses custom chat modes in VSCode Insiders to enable the multi-agent workflow. Each .agent.md file defines a specialized AI agent.
-
Open VSCode Insiders in your workspace directory
cd /path/to/your/project code-insiders .
-
Locate Agent Files - The repository includes four
.agent.mdfiles in the root directory:Conductor.agent.mdplanning-subagent.agent.mdimplement-subagent.agent.mdcode-review-subagent.agent.md
-
Install the agent files
- Copy the
.agent.mdfiles to your project's root directory- Great for sharing among a team.
- Scoped to the individual project.
- Install the custom agents in your User Data for use in all workspaces
- Allows the custom agents to work in any project you open with VSCode Insiders.
- Copy files to the User Data location:
- Something like
/Users/username/Library/Application Support/Code - Insiders/User/promptson Mac, or the equivalent on your system
- Something like
- OR:
- Manual Setup Process:
- Click the chat mode dropdown at the bottom of the copilot chat.
- Click "Configure Custom Agents".
- Click "Create new custom agent" in the command dropdown at the top of VSCode.
- Select "User Data"
- Type the name of the file you're setting up. i.e.:
- Conductor
- planning-subagent
- implement-subagent
- code-review-subagent
- Copy and paste the context of the agent file from this repo into the file that opens in VSCode.
- Copy the
-
Create the Plans Directory
-
The Conductor agent generates documentation files to track progress. Create the
plans/directory (or the Conductor will make it when it writes out the first plan file):mkdir plans
-
This directory will store:
- Core task plan documents (
<task-name>-plan.md) - Phase completion summaries (
<task-name>-phase-<N>-complete.md) - Final task completion summaries (
<task-name>-complete.md)
- Core task plan documents (
-
No Additional Configuration Required - The agents will appear in the GitHub Copilot Chat interface automatically.
Once setup is complete, you can start using the Conductor agent:
Via Chat Mode Dropdown:
- Open GitHub Copilot Chat
- Click the agent dropdown at the bottom of the chat panel
- Select "Conductor" from the list of available modes
The Conductor agent follows a strict four-stage cycle for every development task:
- User Request - You describe what you want to build or change.
- Delegates Research -
Conductorinvokes theplanning-subagentto gather comprehensive context about your codebase. - Plan Creation -
Conductordrafts a multi-phase plan (typically 3-10 phases) with specific objectives, files to modify, and tests to write. - Plan Approval -
Conductorstops, allowing you review and approve the plan before any implementation begins. - Plan Documentation - Approved plan is saved to
plans/<task-name>-plan.md.
- Delegates Implementation -
Conductorinvokes theimplement-subagentwith the specific phase objective and requirements. - TDD Execution -
implement-subagentfollows strict Test-Driven Development:- Writes failing tests first.
- Run tests to confirm they fail.
- Writes minimal code to make the tests pass.
- Run tests to verify they pass.
- Apply linting and formatting.
- Phase Summary -
implement-subagentreports completion back to theConductor.
- Quality Check -
Conductorinvokes thecode-review-subagentto validate the implementation. - Review Analysis -
code-review-subagentexamines:- Test coverage and correctness.
- Code quality and best practices.
- Adherence to phase objectives.
- Status Decision:
- Returns to
Conductorwith:APPROVED- Proceed to commit step.NEEDS_REVISION- Return to implementation with specific feedback.FAILED- Stop and consult user for guidance.
- Returns to
- Phase Summary -
Conductorpresents what was accomplished, to the user. - Documentation - Phase completion file is saved to
plans/<task-name>-phase-<N>-complete.md. - Commit Message -
Conductorgenerates a properly formatted git commit message. - MANDATORY STOP - User makes the git commit and confirm readiness to continue.
The Implement -> Review -> Commit cycle repeats for each phase until the entire plan is complete, then the Conductor generates a final plan completion report.
sequenceDiagram
participant User
participant Conductor
participant Planning
participant Implement
participant Review
User->>Conductor: Request feature/change
Conductor->>Planning: Gather context
Planning-->>Conductor: Return findings
Conductor->>User: Present plan
User-->>Conductor: Approve plan
loop For each phase
Conductor->>Implement: Execute phase (TDD)
Implement-->>Conductor: Report completion
Conductor->>Review: Review implementation
Review-->>Conductor: Return status
alt Approved
Conductor->>User: Present summary & commit message
User-->>Conductor: Commit & continue
else Needs Revision
Conductor->>Implement: Revise with feedback
else Failed
Conductor->>User: Request guidance
end
end
Conductor->>User: Plan complete
Here's a realistic scenario demonstrating the complete workflow:
Initial Request:
I need to add JWT-based user authentication to my Express API.
Users should be able to register, login, and access protected routes.
1. Planning Phase
Conductordelegates toplanning-subagentto analyze your Express codebase.planning-subagentidentifies existing patterns, middleware structure, and testing setup.Conductorcreates a 5-phase plan:- User model and database schema.
- Registration endpoint with validation.
- Login endpoint with JWT generation.
- Authentication middleware.
- Integration and end-to-end tests.
2. You review and approve the plan
- The
Conductorcomes back to the user with the draft of the plan. At the bottom of the draft of the plan it may have "Open Questions". Provide answers like:Answers to open questions 1. Yes, use bcrypt for encrpyting passwords. 2. ...
3. Implementation -> Review -> Commit Cycle - Phase 1
Conductorinvokesimplement-subagentfor "User model and database schema".implement-subagent:- Writes failing tests for User model (validation, password hashing, etc.).
- Runs tests to see them fail.
- Implements User model with minimal code.
- Runs tests to verify they pass.
- Applies linting/formatting.
Conductorinvokescode-review-subagent.code-review-agentreturnsAPPROVED.Conductorpresents summary and commit message to user:feat: Add User model with password hashing - Create User schema with email and password fields - Implement bcrypt password hashing on save - Add email validation and uniqueness constraint - Write comprehensive User model tests- You make the commit and tell
Conductorto continue with "Proceed to next phase" in the chat.
4. Remaining Phases The cycle repeats for each remaining phase:
- Phase 2: Registration endpoint.
- Phase 3: Login endpoint.
- Phase 4: Auth middleware.
- Phase 5: Integration tests.
Each phase follows: Implementation → Review → Commit cycle.
5. Completion
- All phases complete.
Conductorgeneratesplans/user-authentication-complete.mdwith a full summary of what was accomplished.- Your feature is fully tested, reviewed, and committed in logical increments.
The Orchestra system creates documentation files to track progress and provide an audit trail. You may want to add your plans directory to your .gitignore if you don't want to commit them, or you can commit them as a historical record. If you do this, maybe move the plans that have been completed to plans/archived, just to keep things tidy
Created after the user approves the plan. It contains:
- Task overview and objectives.
- Complete phase breakdown with steps.
- Suggestions of files and functions to create or modify.
- Tests to write.
- Open questions and decisions for the User to answer.
- Useful in case the User or the
Conductorgets interrupted. You can always refer back to this and have theConductorpick up where it left off.
Example: plans/user-authentication-plan.md
Created after each phase commit, contains:
- Phase objective and summary.
- Files created/changed.
- Functions created/changed.
- Tests created/changed.
- Review status.
- Git commit message used.
- If you need to pick up the implementation cycle in the middle of a plan, due to interruption, you can tell the conductor to review the completed phase documents for context on where to start implementing again.
Example: plans/user-authentication-phase-1-complete.md
Created when all phases are done, contains:
- Overall summary of the work completed.
- All phases completed (checklist).
- Complete list of files modified.
- Key functions/classes added.
- Test coverage summary.
- Recommendations for next steps.
Example: plans/user-authentication-complete.md
Benefits (if committed with project):
- Audit Trail - Full history of what was built and why.
- Knowledge Transfer - New team members can understand implementation decisions.
- Project Documentation - Natural documentation of feature development.
- Review Process - Easy to review what changed in each phase.
-
Be Specific in Requests - Provide context about your tech stack, existing patterns, and constraints.
- Good: "Add JWT auth to my Express API using the existing PostgreSQL database. You can use the dev database connection string in the
.env-devfile." - Less ideal: "Add authentication."
- Good: "Add JWT auth to my Express API using the existing PostgreSQL database. You can use the dev database connection string in the
-
Review Plans Carefully - The planning phase is your chance to guide the implementation.
- Check that phases are appropriately scoped.
- Verify test requirements align with your standards.
- Ask questions about anything unclear.
-
Commit Frequently - Don't skip the commit step between phases.
- Each phase is designed to be independently committable.
- Smaller commits are easier to review and revert if needed.
- Creates a clear history of feature development.
- The
code-review-agentlooks for uncommitted code as a basis for what to review.
-
Trust the TDD Process - Testing first seems slow but catches issues early and provides clear guide rails for implementation via AI agent, even when those tests are written by the AI agent.
- Failing tests confirm you're testing the right behavior.
- Minimal code keeps implementations focused.
- Passing tests give confidence to proceed.
-
Pay Attention to Reviews - The
code-review-subagentcatches important issues- If status is
NEEDS_REVISION, the feedback is handed back to theConductorto start a newimplement-subagentto fix the issue. - Use
FAILEDstatus as a signal to reassess approach. TheConductorwill come back to the user and ask for input on what to do next.
- If status is
-
Leverage the Documentation - Phase completion files are valuable artifacts.
- Review them before making commits.
- Use them for PR descriptions and discussions.
-
Keep Phases Focused - Smaller phases complete faster and with fewer iterations.
- If a phase seems too large, ask Conductor to break it down.
- Target 1-3 files modified per phase when possible.
-
Provide Good Context - Help the
planning-subagentfind relevant code- Mention specific files or directories if you know them and attach them as explicit context in the AI chat.
- Reference existing patterns to follow.
- Call out any constraints or requirements upfront.
-
Use the Right Model - The default agent configurations are optimized for a cost/quality balance.
- Planning: Claude Sonnet 4.5 (project overview and collecting data for the plan)
- Implementation: Claude Haiku 4.5 (efficient implementation of tests and code)
- Review: Claude Sonnet 4.5 (thorough analysis and code review)
- You can customize these in the
.agent.mdfiles if you'd like to use different models. Just change the model at the top of the file. (VSCode should autocomplete models available. Just delete past the:and type:again and a dropdown select should appear.)
Each agent is defined in a .agent.md file that you can modify:
Adjust AI Model:
- Change to other models.
- Available models in VSCode Insiders, as of the Nov. 5th, 2025:
Auto (copilot)Claude Sonnet 4.5 (copilot)Claude Haiku 4.5 (copilot)Claude Sonnet 4 (copilot)Claude Sonnet 3.5 (copilot)GPT-5 (copilot)GPT-5-Codex (Preview) (copilot)GPT-5 mini (copilot)GPT-4.1 (copilot)GPT-4o (copilot)Grok Code Fast 1 (copilot)Gemini 2.5 Pro (copilot)
Modify Instructions:
- Edit the main section to change agent behavior, add new rules, or enforce project-specific conventions.
Add Custom Tools:
- Agents have access to various tools (file operations, terminal commands, etc.). The tool availability is managed by VS Code but you can provide guidance in instructions. You can also add MCP servers, if you use any. (I recommend getting
context7setup. It's mentioned in the subagent files, and you can add it to thetoolsin the subagent files once it's setup.)
You can create specialized subagents for your workflow:
- Create a new
.agent.mdfile (e.g.,database-migration-subagent.agent.md). - Define the agent's role and instructions using existing agents as templates.
- Update Conductor to invoke your new subagent where appropriate.
- Test the integration with a sample task.
Ideas for subagents:
- deployment-subagent - Specialized in deployment configurations.
- security-audit-subagent - Focused on security analysis.
- performance-optimization-subagent - Optimizes code performance.
- documentation-subagent - Generates comprehensive documentation.
MIT License
Copyright (c) 2025 Shep Alderson
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.