- Fix Copilot format conflation: split CLI vs cloud/IDE in Step 3, clean copilot template to CLI-only fields, add body length limit (30k) - Add missing CC fields to Step 2: disallowedTools, skills, color, initialPrompt, background - Fix Gotchas: add WaitForMcpServers to unavailable tools list, add ExitPlanMode plan-mode carve-out - Make 'Use proactively' conditional (was unconditional directive) - Clarify audit invocation to 'Invoke kyberforge:agent-audit skill directly' - Add 'Would the agent get this wrong?' heuristic to Improve Step 4 - Add agent-audit co-install prerequisite check - Add pre-audit manual checklist to validate/close step - Add references/scripts.md for new-agent.sh conventions - Fix sources.md: remove template/script files from Contributing files (templates can't carry YAML provenance without leaking into user files), add 3 missing research slugs with (none) contributing files - Add context7-github-en-copilot to deployment-modes.md source_keys - Update README.md and references/README.md with new scripts.md entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0147vXtL5sP6vorDdqXGJJU9
2.9 KiB
source_keys
| source_keys | ||||||
|---|---|---|---|---|---|---|
|
Agent Deployment Modes
Agent definitions deploy at three scopes and behave differently at each. The scope determines which fields are honoured, where files must live, and what identifiers users invoke.
Scope hierarchy and precedence
| Scope | Claude Code path | Copilot CLI path | Who it affects |
|---|---|---|---|
| User | ~/.claude/agents/ |
~/.copilot/agents/ |
All sessions for this user |
| Project | .claude/agents/ |
.github/agents/ or .copilot/agents/ |
This repo only |
| Plugin | <plugin>/agents/ |
<plugin>/agents/ |
Sessions with the plugin installed |
When the same agent name appears at multiple scopes, user scope wins over project scope wins over plugin scope in Claude Code. In Copilot CLI, repo-level agents override enterprise and org-level; home-directory (user) agents override repo-level on name collision.
Plugin scope restrictions
Plugin agents (agents shipped inside a plugin's agents/ directory) have fewer capabilities than project or user agents:
Claude Code — silently ignored for plugin agents:
hooks— per-agent event handlers; copy the agent to.claude/agents/to use thesemcpServers— inline MCP server definitions; not available in plugin contextpermissionMode— silently ignored; the parent session's permission mode applies
Copilot CLI — unsupported or ignored:
mcp-servers— cloud agents only; ignored in VS Code and most IDEsmetadata— key-value annotations; ignored in VS Code
Scoped identifiers (Claude Code plugin agents only)
Plugin agents in subdirectories get compound identifiers:
plugins/my-plugin/agents/review/security.md → my-plugin:review:security
Users must invoke with @agent-my-plugin:review:security. Keep agents flat in agents/ to avoid this — subdirectory nesting is rarely worth the UX cost.
At project and user scope, subdirectory path does not affect the agent's name.
Cache isolation
When a plugin is installed, its directory is copied to a cache. Any path that leaves the agent's plugin directory breaks post-install. Agent definition files must be self-contained — they cannot reference scripts, templates, or shared files outside the plugin.
Agents at project or user scope are read directly from disk; cache isolation does not apply.
Copilot CLI path conventions
| Scope | Expected path | Notes |
|---|---|---|
| User | ~/.copilot/agents/<name>.agent.md |
Home directory |
| Project | .github/agents/<name>.agent.md |
Standard; also .copilot/agents/ |
| Plugin | <plugin>/agents/<name>.agent.md |
Inside plugin root |
The .agent.md extension is mandatory — Copilot CLI does not pick up plain .md files in the agents/ directory.