Skip to main content

Agents

Status: πŸ§ͺ Beta

Agents are the core building block of Agent Teams. Each agent is a GitHub Copilot chat participant with a defined role, skills, routing rules, and optional context packs.


Creating an Agent​

Open the dashboard and navigate to Agent Manager β†’ Create Agent, or use the Quick Actions card on the home page.

The wizard guides you through 6 steps:

imagen

Step 0 β€” Identity​

FieldDescription
NameDisplay name shown in Copilot Chat
Rolerouter, orchestrator, worker, or aggregator (see Roles)
DescriptionWhat the agent does β€” shown in the chat participant list
DomainPrimary domain (e.g. frontend, backend, testing)
SubdomainOptional specialization within the domain (hidden for router and orchestrator)

Step 1 β€” Scope​

Note: This step is hidden for router agents β€” routers receive all @router messages and do not need scope filters.

Defines when this agent is activated by the @router.

FieldDescription
Expertise areasTopics the agent is proficient in (tag input)
IntentsAction verbs the agent responds to (e.g. write, review, fix)
TopicsSubject keywords that trigger routing (e.g. react, database)
File glob patternsFile paths that activate this agent, with a priority level per pattern
Exclude patternsFile paths to explicitly exclude from routing

Step 2 β€” Workflow & Tools​

FieldDescription
Workflow stepsOrdered list of steps the agent follows when handling a task
ToolsCapabilities the agent can use, each with an optional when condition
MCP Servers(Collapsible) MCP servers required by this agent. On sync they are merged (by id) into .vscode/mcp.json (Copilot) or .mcp.json (Claude). New entries are added; existing ones are never overwritten

Step 3 β€” Skills​

Note: This step is hidden for router agents β€” routers use dispatch tools (agent-teams-handoff, agent-teams-dispatch-parallel) rather than domain skills.

Browse and add skills from two sources:

  • Project skills β€” skills defined in your local skills.registry.yml
  • Community registry β€” install skills from the shared registry directly from this step

Each skill card shows its ID, category, security level, and recommended roles. Select the skills relevant to this agent's purpose.

Step 4 β€” Rules​

Note: Permissions and Constraints are hidden for router agents β€” their behavior is governed entirely by the dispatch tools.

SectionDescription
PermissionsWhat the agent is allowed to do
Constraints β€” AlwaysRules the agent must always follow
Constraints β€” NeverActions the agent must never take
Constraints β€” EscalateSituations where the agent should hand off to a human
Handoffs β€” Receives fromWhich agents can delegate to this one
Handoffs β€” Delegates toWhich agents this one can hand off to
Handoffs β€” Escalates toWhich agents or roles to escalate to when stuck
Engram(Worker agents only, requires Engram configured) Toggle Autonomous task context to enable direct dispatch β€” the worker recalls task context from Engram at session start and calls complete_subtask automatically when done

Step 5 β€” Output & Context​

Note: Max items and Never include are hidden for router agents β€” routers produce a dispatch action, not a structured text response.

FieldDescription
Output templateResponse format template
Output modeshort or detailed
Max itemsMaximum number of items to include in a list response
Never includeFields to omit from the agent's output
Context packsContext packs to embed in the agent spec (feeds the composition engine)
Sync targetsWhich AI tools to sync to: Claude Code, Codex, GitHub Copilot

A live preview of the agent configuration appears in the right sidebar throughout the wizard. Click Create when done β€” the agent spec is written to .agent-teams/agents/<id>.yml.


Managing Agents​

View All Agents​

Dashboard β†’ Agent Manager shows all loaded agents grouped by role (Router, Orchestrator, Worker). Click any agent to open it for editing.

Edit an Agent​

  1. Dashboard β†’ Agent Manager β†’ select agent β†’ Edit
  2. All 6 wizard steps are available for modification
  3. Save β€” changes are written back to the YAML spec file
imagen

Sync Agents to .github/agents/​

When agents are ready, sync them to generate the final markdown files used by GitHub Copilot:

  1. Dashboard home β†’ Sync Status card shows pending changes
  2. Click the Sync button to apply all changes
  3. The dashboard updates the stats card to reflect the new sync state

Preview before syncing: the Sync Status card shows a breakdown of which agents will be created, updated, or skipped before you commit.


Agent Roles​

RolePurpose
routerReceives all @router messages and delegates via agent-teams-handoff (single) or agent-teams-dispatch-parallel (multi-domain)
orchestratorCoordinates multi-step tasks across several worker agents within a domain
workerHandles a specific, focused domain task. Can optionally operate in autonomous mode (see engram.mode) to accept direct dispatch without a router or orchestrator
aggregatorCollects results from parallel orchestrators, detects conflicts, and returns a unified response

Using an Agent in Copilot Chat​

Each loaded agent registers as a dynamic chat participant:

@my-agent  What is the best way to structure this React component?

Use @router to let the extension automatically pick the most relevant agent based on your message and the current file:

@router  Help me write a unit test for this function.

The router scores agents by intent keywords, file path patterns, domain vocabulary, and role β€” then delegates to the top match.

imagen

Reference: Agent YAML Format​

The dashboard writes and reads this format automatically. You can also edit the file directly in VS Code β€” changes are picked up on the next sync or Reload Agents.

id: my-agent
name: My Agent
description: Short description of what this agent does
role: worker # router | orchestrator | worker | aggregator

skills:
- code_analysis
- file_operations

routing:
keywords:
- component
- react
- frontend
paths:
- src/components/**

context_packs:
- frontend-conventions

Fields​

FieldRequiredDescription
idβœ…Unique identifier (kebab-case)
nameβœ…Display name shown in Copilot Chat
descriptionβœ…What the agent does
roleβœ…router, orchestrator, worker, or aggregator
skillsβ€”List of skill IDs from the registry
routing.keywordsβ€”Words that trigger routing to this agent
routing.pathsβ€”Glob patterns for file-based routing
context_packsβ€”Context pack IDs to embed in responses
engram.modeβ€”default or autonomous. Applies to worker agents only. See Engram Autonomous Mode
mcpServersβ€”List of MCP server definitions to merge into the project MCP config on sync. See MCP Servers

Engram Autonomous Mode​

Worker agents can be configured to operate in autonomous mode when Engram is set up. This allows the worker to be dispatched directly β€” without going through a router or orchestrator β€” and manage its own task lifecycle.

id: my-worker
name: My Worker
role: worker
engram:
mode: autonomous

In this mode the worker:

  1. Recalls task context from Engram at session start:
    • If the chat contains [Handoff:{taskId}] β€” retrieves the full task details written by the dispatcher.
    • If the chat contains [Parallel:{taskId}] β€” retrieves its specific subtask instructions.
    • Otherwise, loads domain patterns only.
  2. Signals completion automatically β€” after persisting its result to Engram, calls complete_subtask to notify the aggregator.
  3. Receives the complete-subtask tool automatically β€” no manual tool configuration required.

When to use it: choose autonomous mode for workers that are dispatched directly via agent-teams-dispatch-parallel in multi-domain flows where no intermediate orchestrator is needed. For standard router β†’ orchestrator β†’ worker flows, the default mode is sufficient.

To enable it in the wizard, go to Step 4 β€” Rules and check Engram β†’ Autonomous task context (only visible when Engram is configured and the role is worker).


MCP Servers​

Agents can declare the MCP servers they depend on. When a team is synced, Agent Teams merges those servers into the project MCP configuration automatically β€” so every collaborator gets the right tools without manual setup.

id: my-worker
role: worker
mcpServers:
- id: my-mcp-server
command: npx -y my-mcp-server
args:
- --port
- "3000"
env:
API_KEY: "${MY_API_KEY}"

Merge behaviour:

  • Copilot target β†’ merged into .vscode/mcp.json under the servers key
  • Claude target β†’ merged into .mcp.json at project root under the mcpServers key
  • Merge key is id β€” if a server with that id already exists in the file it is never overwritten, so project-level overrides are always preserved

MCP Server fields​

FieldRequiredDescription
idβœ…Unique server identifier used as the merge key
commandβœ…Command to start the server (e.g. npx -y my-mcp-server)
argsβ€”List of command-line arguments
envβ€”Environment variables passed to the server process

To configure MCP servers in the wizard, open Step 2 β€” Workflow & Tools and expand the MCP Servers collapsible section.