Customization Selector
This skill helps you decide which GitHub Copilot customization option to use for your specific needs.
When to use this skill
- User asks "what type of customization should I create?"
- User wants to understand differences between instructions, prompts, agents, and skills
- User needs to choose the right approach for a new customization
- User asks "should I use a prompt or an instruction file?"
Quick Decision Flowchart
What do you want to achieve?
│
├─► Define coding standards/rules that apply automatically?
│ └─► Use CUSTOM INSTRUCTIONS (.instructions.md)
│
├─► Create a reusable task template (e.g., "generate tests")?
│ └─► Use PROMPT FILES (.prompt.md)
│
├─► Create a specialized AI persona with specific tools?
│ └─► Use CUSTOM AGENTS (.agent.md)
│
├─► Build portable capabilities with scripts/resources?
│ └─► Use AGENT SKILLS (SKILL.md)
│
├─► Automate actions at agent lifecycle points?
│ └─► Use HOOKS (.github/hooks/*.json)
│
├─► Connect external services or APIs?
│ └─► Use MCP SERVERS (mcp.json)
│
└─► Install pre-packaged customizations?
└─► Use AGENT PLUGINS (preview)
Decision Matrix
| Feature |
Instructions |
Prompt Files |
Custom Agents |
Agent Skills |
Hooks |
MCP |
Plugins |
Tool Sets |
| File Extension |
.instructions.md |
.prompt.md |
.agent.md |
SKILL.md |
.json |
.json / YAML frontmatter |
plugin.json |
.jsonc |
| Location |
.github/instructions/ |
.github/prompts/ |
.github/agents/ |
.github/skills/<name>/ |
.github/hooks/ |
.vscode/mcp.json, agent mcp-servers, plugin .mcp.json |
plugin root |
tool-set file via VS Code |
| Triggers |
Auto (always or via glob) |
Manual (/name) |
Manual (switch agent) |
Auto (when relevant) |
Lifecycle events |
Tool/resource/prompt invocation |
Install/enable plugin |
Tool selection or #toolset |
| Can include scripts? |
No |
No |
No |
Yes |
Yes |
Server-dependent |
Yes |
No |
| Can specify tools? |
No |
Yes |
Yes |
No |
N/A |
Provides tools |
Bundles tools via agents/MCP |
Groups tools |
| Can specify model? |
No |
Yes |
Yes |
No |
N/A |
No |
Via bundled prompts/agents |
No |
| Portable across tools? |
VS Code/GitHub |
VS Code |
Partial |
Open standard |
Partial |
MCP standard |
Cross-tool (preview) |
VS Code |
| Status |
Stable |
Stable |
Stable (1.106+) |
Stable |
Preview |
Stable/Preview features |
Preview |
Stable/Preview |
Detailed Guidance
Use Custom Instructions when
Perfect for:
- Enforcing coding standards across all requests
- Setting language/framework conventions (e.g., "always use TypeScript strict mode")
- Defining commit message or PR description guidelines
- Applying rules to specific file types via
applyTo glob patterns
- Sharing team coding practices in version control
File types:
| File |
Location |
Behavior |
copilot-instructions.md |
.github/ |
Applies to all requests |
*.instructions.md |
.github/instructions/ (or .claude/rules/, user profile) |
Conditional via applyTo (paths for .claude/rules) |
AGENTS.md |
Root or subfolders |
Multi-agent compatible (chat.useAgentsMdFile) |
CLAUDE.md |
Root, .claude/, or ~/.claude/ |
Claude-compatible (chat.useClaudeMdFile) |
Example use cases:
- "Always use functional React components"
- "Follow PEP 8 for Python files"
- "Include JSDoc comments for all public functions"
- "Use conventional commits format"
Use Prompt Files when
Perfect for:
- Creating reusable workflows (e.g.,
/create-react-form, /security-review)
- Scaffolding components, API routes, or modules
- Generating tests with consistent patterns
- Running the same task repeatedly with variations
- Need to specify tools and agent for a specific task
Key features:
- Invoked with
/promptName in chat
- Can specify
agent, tools, and model in frontmatter
- Support variables like
${selection}, ${file}, ${input:name}
- Can reference instruction files for consistent guidelines
Example use cases:
/create-component - Generate a new React component with tests
/code-review - Perform a security-focused code review
/api-route - Scaffold a new API endpoint
/migration-plan - Generate a database migration strategy
Use Custom Agents when
Perfect for:
- Creating specialized AI personas (planner, reviewer, architect)
- Restricting available tools (e.g., read-only for planning)
- Defining sequential workflows with handoffs
- Different tasks need different tool configurations
- Using a specific model for certain tasks
Key features:
- Define
tools list to control what the agent can do
- Use
handoffs for guided multi-step workflows
- Specify
model for optimal performance per task (single string or prioritized array)
- Set
user-invocable: false for subagent-only agents
- Set
disable-model-invocation: true to prevent automatic invocation
- Define agent-scoped
hooks for lifecycle automation (preview)
- Add
mcp-servers for GitHub Copilot cloud agents when the agent needs private or task-specific external tools
- Use
tools to limit built-in tools, tool aliases, MCP tools (server/tool), or full MCP servers (server/*)
Example agents:
- Planner - Read-only tools, generates implementation plans
- Reviewer - Focus on security vulnerabilities and code quality
- Architect - Design patterns and system architecture decisions
- Implementer - Full editing capabilities for coding tasks
Use Agent Skills when
Perfect for:
- Creating capabilities that work across VS Code, CLI, and coding agent
- Need to include scripts, examples, or resources
- Building specialized testing/debugging/deployment workflows
- Sharing capabilities with the community
- Want progressive loading (only loaded when relevant)
Key features:
- Open standard at agentskills.io
- Three-level loading: discovery → instructions → resources
- Can include scripts, templates, and example files
- Works across GitHub Copilot in VS Code, CLI, and coding agent
- Recognized project locations:
.github/skills/, .claude/skills/, .agents/skills/
- Recognized user locations:
~/.copilot/skills/, ~/.claude/skills/, ~/.agents/skills/
- Customize via
chat.agentSkillsLocations
Example skills:
webapp-testing - Testing workflows with test templates
github-actions-debug - Debug CI/CD workflows with log analysis
api-documentation - Generate OpenAPI specs with examples
database-migrations - Migration scripts with rollback templates
Use Hooks when
Perfect for:
- Enforcing security policies (block dangerous commands before execution)
- Automating code quality (run formatters/linters after edits)
- Creating audit trails (log all tool invocations)
- Injecting project context into sessions
- Controlling tool approvals programmatically
Key features:
- Eight lifecycle events:
SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, SubagentStart, SubagentStop, Stop
- JSON-based configuration in
.github/hooks/*.json
- Can also be scoped to individual agents via frontmatter
- Deterministic execution (runs regardless of prompt)
- Hooks can block, allow, or require approval for tool execution
Example hooks:
- Block
rm -rf and DROP TABLE commands
- Auto-format with Prettier after every file edit
- Log every tool invocation for compliance
- Inject environment info at session start
Use Agent Plugins when (Preview)
Perfect for:
- Installing pre-packaged customization bundles from marketplaces
- Sharing complete workflows (agents + skills + prompts + hooks) as a single package
- Discovering community-contributed customizations
- Extending Copilot without manual file management
Key features:
- Bundles of slash commands, skills, agents, hooks, and MCP servers
- Discoverable via plugin marketplaces
- Installed plugins appear alongside local customizations
- Can add private repositories as custom marketplaces
- Plugin MCP servers use top-level
mcpServers
- Plugin hooks run alongside workspace and user hooks; for
PreToolUse, the most restrictive decision wins
- Workspace recommendations can point teams to approved plugin marketplaces and enabled plugins
Use MCP Servers when
Perfect for:
- Connecting agents to external APIs, databases, browsers, internal tools, or SaaS systems
- Exposing tools, resources, prompts, or MCP Apps to Copilot
- Reusing the same external tool integration across prompts, agents, and plugin bundles
- Giving GitHub Copilot cloud agents access to repository-approved external tools
Key features:
- VS Code workspace config uses
.vscode/mcp.json with top-level servers
- GitHub Copilot custom agents use
mcp-servers in .agent.md frontmatter
- Agent plugins use
.mcp.json or plugin.json with top-level mcpServers
- Tools can be referenced as
<server>/<tool> or <server>/*
- Local stdio servers can use
sandboxEnabled: true on macOS/Linux
Use MCP instead of a skill when:
- The agent needs live data or actions outside the repository
- The integration must expose callable tools, not just instructions
- Secrets or runtime configuration are required
Use Tool Sets when
Perfect for:
- Grouping read-only research tools for planning and review workflows
- Grouping selected MCP tools so users do not enable a full server by accident
- Making repeated tool selections easier in prompts and custom agents
- Staying under the practical tool limit by enabling only relevant tool groups
Key features:
- Tool sets can include built-in tools, MCP tools, and extension tools
- Referenced in prompts with
#toolset-name
- Appear as collapsible groups in the tools picker
- Useful alongside explicit
tools lists in .prompt.md and .agent.md files
Use Organization or Enterprise Customizations when
Perfect for:
- Shared defaults across many repositories
- Governance rules that should not be copied manually into every repo
- Organization-wide custom agents or instructions
- Standard plugin marketplaces or approved tool policies
Key features:
- Organization instructions and custom agents can be discovered alongside local files when enabled by settings/admin policy
- Repository-level agents with the same name override organization/enterprise-level agents
- Enterprise or organization agents can live in a
.github-private repository for GitHub Copilot cloud agent scenarios
- Keep repository customizations focused on local project behavior and treat org/enterprise assets as the default layer
How They Work Together
┌─────────────────────────────────────────────────────────────┐
│ CUSTOM AGENT │
│ (defines persona, tools, model, hooks) │
│ ├── Can reference: Custom Instructions │
│ └── Can be triggered by: Prompt Files (via agent field) │
├─────────────────────────────────────────────────────────────┤
│ PROMPT FILE │
│ (defines reusable task template) │
│ ├── Can specify: agent, tools, model │
│ └── Can reference: Instructions via Markdown links │
├─────────────────────────────────────────────────────────────┤
│ CUSTOM INSTRUCTIONS │
│ (always applied guidelines, foundation layer) │
├─────────────────────────────────────────────────────────────┤
│ AGENT SKILLS │
│ (portable capabilities, auto-loaded when relevant) │
│ └── Works independently, loaded based on task context │
├─────────────────────────────────────────────────────────────┤
│ HOOKS │
│ (deterministic lifecycle automation) │
│ └── Runs at lifecycle events, enforces policies │
├─────────────────────────────────────────────────────────────┤
│ MCP SERVERS │
│ (external tools, resources, prompts, and apps) │
│ └── Tools can be limited via agent/prompt/tool-set config│
├─────────────────────────────────────────────────────────────┤
│ AGENT PLUGINS + TOOL SETS │
│ (distribution + reusable tool grouping) │
│ └── Plugins bundle primitives; tool sets group tools │
└─────────────────────────────────────────────────────────────┘
Recommended Folder Structure
.github/
├── copilot-instructions.md # Global project instructions
├── instructions/
│ ├── python.instructions.md # Python-specific (applyTo: **/*.py)
│ ├── typescript.instructions.md
│ └── security.instructions.md # Security guidelines
├── prompts/
│ ├── create-component.prompt.md
│ ├── code-review.prompt.md
│ └── generate-tests.prompt.md
├── agents/
│ ├── planner.agent.md # Read-only planning agent
│ ├── reviewer.agent.md # Code review agent
│ └── implementer.agent.md # Full coding agent
├── skills/
│ ├── webapp-testing/
│ │ ├── SKILL.md
│ │ └── test-template.js
│ └── debugging/
│ └── SKILL.md
└── hooks/
├── security.json # Block dangerous commands
└── formatting.json # Auto-format after edits
.vscode/
└── mcp.example.json # Inert MCP example; copy to mcp.json to enable
.github/
├── plugin/
│ └── plugin.example.json # Inert plugin manifest example
└── toolsets/
└── toolsets.example.jsonc # Inert tool-set example
Common Combinations
Planning → Implementation Workflow
- Agent:
planner.agent.md with read-only tools
- Handoff: Button to switch to implementation agent
- Instructions: Shared coding standards apply to both
Consistent Test Generation
- Skill:
webapp-testing with test templates and utilities
- Prompt:
/generate-tests that references the skill patterns
- Instructions: Test naming conventions and coverage requirements
Security-First Development
- Instructions: Security guidelines applied globally
- Agent:
security-reviewer.agent.md for dedicated reviews
- Prompt:
/security-audit for on-demand security checks
External Tool Integration
- MCP:
.vscode/mcp.json or agent mcp-servers exposes a trusted external tool
- Tool set: Groups only the required MCP tools
- Agent: Restricts
tools to read, search, and selected MCP tools
Packaged Team Workflow
- Plugin: Bundles agents, skills, prompts, hooks, and MCP servers
- Organization setting: Recommends the plugin marketplace or enabled plugin
- Repository override: Adds repo-specific instructions or agent variants
Version Requirements
| Feature |
Minimum VS Code Version |
Setting |
copilot-instructions.md |
1.95 |
github.copilot.chat.codeGeneration.useInstructionFiles |
*.instructions.md |
1.99 |
Auto-discovered |
| Prompt files |
1.99 |
Auto-discovered |
AGENTS.md |
1.102 |
chat.useAgentsMdFile |
Custom agents (.agent.md) |
1.106 |
Auto-discovered |
Nested AGENTS.md |
1.105 |
chat.useNestedAgentsMdFiles (experimental) |
CLAUDE.md |
1.105+ |
chat.useClaudeMdFile |
| Agent Skills |
1.108 |
chat.useAgentSkills |
| Parent-repo discovery (monorepo) |
1.108+ |
chat.useCustomizationsInParentRepositories |
| MCP servers |
1.102+ |
chat.mcp.enabled / chat.mcp.access |
| MCP sandboxing |
Preview |
sandboxEnabled in mcp.json |
| Tool sets |
1.108+ |
Configure with Chat: Configure Tool Sets |
| Organization instructions |
1.108+ |
github.copilot.chat.organizationInstructions.enabled |
| Organization custom agents |
1.107+ |
github.copilot.chat.organizationCustomAgents.enabled |
| Hooks |
Preview |
chat.useCustomAgentHooks (for agent-scoped) |
| Agent plugins |
Preview |
chat.plugins.enabled |
References
Source: trsdn/github-copilot-agent — distributed by TomeVault.
1---2name: copilot-customization-selector3description: Help decide which GitHub Copilot customization to use (instructions, prompts, agents, or skills). Use this skill when users ask which customization type to create, want to understand the differences, or need guidance choosing between .instructions.md, .prompt.md, .agent.md, or SKILL.md files. Use when this capability is needed.4---56# Customization Selector78This skill helps you decide which GitHub Copilot customization option to use for your specific needs.910## When to use this skill1112- User asks "what type of customization should I create?"13- User wants to understand differences between instructions, prompts, agents, and skills14- User needs to choose the right approach for a new customization15- User asks "should I use a prompt or an instruction file?"1617## Quick Decision Flowchart1819```20What do you want to achieve?21│22├─► Define coding standards/rules that apply automatically?23│ └─► Use CUSTOM INSTRUCTIONS (.instructions.md)24│25├─► Create a reusable task template (e.g., "generate tests")?26│ └─► Use PROMPT FILES (.prompt.md)27│28├─► Create a specialized AI persona with specific tools?29│ └─► Use CUSTOM AGENTS (.agent.md)30│31├─► Build portable capabilities with scripts/resources?32│ └─► Use AGENT SKILLS (SKILL.md)33│34├─► Automate actions at agent lifecycle points?35│ └─► Use HOOKS (.github/hooks/*.json)36│37├─► Connect external services or APIs?38│ └─► Use MCP SERVERS (mcp.json)39│40└─► Install pre-packaged customizations?41 └─► Use AGENT PLUGINS (preview)42```4344## Decision Matrix4546| Feature | Instructions | Prompt Files | Custom Agents | Agent Skills | Hooks | MCP | Plugins | Tool Sets |47|---------|--------------|--------------|---------------|--------------|-------|-----|---------|-----------|48| **File Extension** | `.instructions.md` | `.prompt.md` | `.agent.md` | `SKILL.md` | `.json` | `.json` / YAML frontmatter | `plugin.json` | `.jsonc` |49| **Location** | `.github/instructions/` | `.github/prompts/` | `.github/agents/` | `.github/skills/<name>/` | `.github/hooks/` | `.vscode/mcp.json`, agent `mcp-servers`, plugin `.mcp.json` | plugin root | tool-set file via VS Code |50| **Triggers** | Auto (always or via glob) | Manual (`/name`) | Manual (switch agent) | Auto (when relevant) | Lifecycle events | Tool/resource/prompt invocation | Install/enable plugin | Tool selection or `#toolset` |51| **Can include scripts?** | No | No | No | Yes | Yes | Server-dependent | Yes | No |52| **Can specify tools?** | No | Yes | Yes | No | N/A | Provides tools | Bundles tools via agents/MCP | Groups tools |53| **Can specify model?** | No | Yes | Yes | No | N/A | No | Via bundled prompts/agents | No |54| **Portable across tools?** | VS Code/GitHub | VS Code | Partial | Open standard | Partial | MCP standard | Cross-tool (preview) | VS Code |55| **Status** | Stable | Stable | Stable (1.106+) | Stable | Preview | Stable/Preview features | Preview | Stable/Preview |5657## Detailed Guidance5859### Use Custom Instructions when6061**Perfect for:**6263- Enforcing coding standards across all requests64- Setting language/framework conventions (e.g., "always use TypeScript strict mode")65- Defining commit message or PR description guidelines66- Applying rules to specific file types via `applyTo` glob patterns67- Sharing team coding practices in version control6869**File types:**7071| File | Location | Behavior |72|------|----------|----------|73| `copilot-instructions.md` | `.github/` | Applies to all requests |74| `*.instructions.md` | `.github/instructions/` (or `.claude/rules/`, user profile) | Conditional via `applyTo` (`paths` for `.claude/rules`) |75| `AGENTS.md` | Root or subfolders | Multi-agent compatible (`chat.useAgentsMdFile`) |76| `CLAUDE.md` | Root, `.claude/`, or `~/.claude/` | Claude-compatible (`chat.useClaudeMdFile`) |7778**Example use cases:**7980- "Always use functional React components"81- "Follow PEP 8 for Python files"82- "Include JSDoc comments for all public functions"83- "Use conventional commits format"8485---8687### Use Prompt Files when8889**Perfect for:**9091- Creating reusable workflows (e.g., `/create-react-form`, `/security-review`)92- Scaffolding components, API routes, or modules93- Generating tests with consistent patterns94- Running the same task repeatedly with variations95- Need to specify tools and agent for a specific task9697**Key features:**9899- Invoked with `/promptName` in chat100- Can specify `agent`, `tools`, and `model` in frontmatter101- Support variables like `${selection}`, `${file}`, `${input:name}`102- Can reference instruction files for consistent guidelines103104**Example use cases:**105106- `/create-component` - Generate a new React component with tests107- `/code-review` - Perform a security-focused code review108- `/api-route` - Scaffold a new API endpoint109- `/migration-plan` - Generate a database migration strategy110111---112113### Use Custom Agents when114115**Perfect for:**116117- Creating specialized AI personas (planner, reviewer, architect)118- Restricting available tools (e.g., read-only for planning)119- Defining sequential workflows with **handoffs**120- Different tasks need different tool configurations121- Using a specific model for certain tasks122123**Key features:**124125- Define `tools` list to control what the agent can do126- Use `handoffs` for guided multi-step workflows127- Specify `model` for optimal performance per task (single string or prioritized array)128- Set `user-invocable: false` for subagent-only agents129- Set `disable-model-invocation: true` to prevent automatic invocation130- Define agent-scoped `hooks` for lifecycle automation (preview)131- Add `mcp-servers` for GitHub Copilot cloud agents when the agent needs private or task-specific external tools132- Use `tools` to limit built-in tools, tool aliases, MCP tools (`server/tool`), or full MCP servers (`server/*`)133134**Example agents:**135136- **Planner** - Read-only tools, generates implementation plans137- **Reviewer** - Focus on security vulnerabilities and code quality138- **Architect** - Design patterns and system architecture decisions139- **Implementer** - Full editing capabilities for coding tasks140141---142143### Use Agent Skills when144145**Perfect for:**146147- Creating capabilities that work across VS Code, CLI, and coding agent148- Need to include scripts, examples, or resources149- Building specialized testing/debugging/deployment workflows150- Sharing capabilities with the community151- Want progressive loading (only loaded when relevant)152153**Key features:**154155- Open standard at [agentskills.io](https://agentskills.io/)156- Three-level loading: discovery → instructions → resources157- Can include scripts, templates, and example files158- Works across GitHub Copilot in VS Code, CLI, and coding agent159- Recognized project locations: `.github/skills/`, `.claude/skills/`, `.agents/skills/`160- Recognized user locations: `~/.copilot/skills/`, `~/.claude/skills/`, `~/.agents/skills/`161- Customize via `chat.agentSkillsLocations`162163**Example skills:**164165- `webapp-testing` - Testing workflows with test templates166- `github-actions-debug` - Debug CI/CD workflows with log analysis167- `api-documentation` - Generate OpenAPI specs with examples168- `database-migrations` - Migration scripts with rollback templates169170---171172### Use Hooks when173174**Perfect for:**175176- Enforcing security policies (block dangerous commands before execution)177- Automating code quality (run formatters/linters after edits)178- Creating audit trails (log all tool invocations)179- Injecting project context into sessions180- Controlling tool approvals programmatically181182**Key features:**183184- Eight lifecycle events: `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `PreCompact`, `SubagentStart`, `SubagentStop`, `Stop`185- JSON-based configuration in `.github/hooks/*.json`186- Can also be scoped to individual agents via frontmatter187- Deterministic execution (runs regardless of prompt)188- Hooks can block, allow, or require approval for tool execution189190**Example hooks:**191192- Block `rm -rf` and `DROP TABLE` commands193- Auto-format with Prettier after every file edit194- Log every tool invocation for compliance195- Inject environment info at session start196197---198199### Use Agent Plugins when (Preview)200201**Perfect for:**202203- Installing pre-packaged customization bundles from marketplaces204- Sharing complete workflows (agents + skills + prompts + hooks) as a single package205- Discovering community-contributed customizations206- Extending Copilot without manual file management207208**Key features:**209210- Bundles of slash commands, skills, agents, hooks, and MCP servers211- Discoverable via plugin marketplaces212- Installed plugins appear alongside local customizations213- Can add private repositories as custom marketplaces214- Plugin MCP servers use top-level `mcpServers`215- Plugin hooks run alongside workspace and user hooks; for `PreToolUse`, the most restrictive decision wins216- Workspace recommendations can point teams to approved plugin marketplaces and enabled plugins217218---219220### Use MCP Servers when221222**Perfect for:**223224- Connecting agents to external APIs, databases, browsers, internal tools, or SaaS systems225- Exposing tools, resources, prompts, or MCP Apps to Copilot226- Reusing the same external tool integration across prompts, agents, and plugin bundles227- Giving GitHub Copilot cloud agents access to repository-approved external tools228229**Key features:**230231- VS Code workspace config uses `.vscode/mcp.json` with top-level `servers`232- GitHub Copilot custom agents use `mcp-servers` in `.agent.md` frontmatter233- Agent plugins use `.mcp.json` or `plugin.json` with top-level `mcpServers`234- Tools can be referenced as `<server>/<tool>` or `<server>/*`235- Local stdio servers can use `sandboxEnabled: true` on macOS/Linux236237**Use MCP instead of a skill when:**238239- The agent needs live data or actions outside the repository240- The integration must expose callable tools, not just instructions241- Secrets or runtime configuration are required242243---244245### Use Tool Sets when246247**Perfect for:**248249- Grouping read-only research tools for planning and review workflows250- Grouping selected MCP tools so users do not enable a full server by accident251- Making repeated tool selections easier in prompts and custom agents252- Staying under the practical tool limit by enabling only relevant tool groups253254**Key features:**255256- Tool sets can include built-in tools, MCP tools, and extension tools257- Referenced in prompts with `#toolset-name`258- Appear as collapsible groups in the tools picker259- Useful alongside explicit `tools` lists in `.prompt.md` and `.agent.md` files260261---262263### Use Organization or Enterprise Customizations when264265**Perfect for:**266267- Shared defaults across many repositories268- Governance rules that should not be copied manually into every repo269- Organization-wide custom agents or instructions270- Standard plugin marketplaces or approved tool policies271272**Key features:**273274- Organization instructions and custom agents can be discovered alongside local files when enabled by settings/admin policy275- Repository-level agents with the same name override organization/enterprise-level agents276- Enterprise or organization agents can live in a `.github-private` repository for GitHub Copilot cloud agent scenarios277- Keep repository customizations focused on local project behavior and treat org/enterprise assets as the default layer278279---280281## How They Work Together282283```284┌─────────────────────────────────────────────────────────────┐285│ CUSTOM AGENT │286│ (defines persona, tools, model, hooks) │287│ ├── Can reference: Custom Instructions │288│ └── Can be triggered by: Prompt Files (via agent field) │289├─────────────────────────────────────────────────────────────┤290│ PROMPT FILE │291│ (defines reusable task template) │292│ ├── Can specify: agent, tools, model │293│ └── Can reference: Instructions via Markdown links │294├─────────────────────────────────────────────────────────────┤295│ CUSTOM INSTRUCTIONS │296│ (always applied guidelines, foundation layer) │297├─────────────────────────────────────────────────────────────┤298│ AGENT SKILLS │299│ (portable capabilities, auto-loaded when relevant) │300│ └── Works independently, loaded based on task context │301├─────────────────────────────────────────────────────────────┤302│ HOOKS │303│ (deterministic lifecycle automation) │304│ └── Runs at lifecycle events, enforces policies │305├─────────────────────────────────────────────────────────────┤306│ MCP SERVERS │307│ (external tools, resources, prompts, and apps) │308│ └── Tools can be limited via agent/prompt/tool-set config│309├─────────────────────────────────────────────────────────────┤310│ AGENT PLUGINS + TOOL SETS │311│ (distribution + reusable tool grouping) │312│ └── Plugins bundle primitives; tool sets group tools │313└─────────────────────────────────────────────────────────────┘314```315316## Recommended Folder Structure317318```319.github/320├── copilot-instructions.md # Global project instructions321├── instructions/322│ ├── python.instructions.md # Python-specific (applyTo: **/*.py)323│ ├── typescript.instructions.md324│ └── security.instructions.md # Security guidelines325├── prompts/326│ ├── create-component.prompt.md327│ ├── code-review.prompt.md328│ └── generate-tests.prompt.md329├── agents/330│ ├── planner.agent.md # Read-only planning agent331│ ├── reviewer.agent.md # Code review agent332│ └── implementer.agent.md # Full coding agent333├── skills/334│ ├── webapp-testing/335│ │ ├── SKILL.md336│ │ └── test-template.js337│ └── debugging/338│ └── SKILL.md339└── hooks/340 ├── security.json # Block dangerous commands341 └── formatting.json # Auto-format after edits342.vscode/343└── mcp.example.json # Inert MCP example; copy to mcp.json to enable344.github/345├── plugin/346│ └── plugin.example.json # Inert plugin manifest example347└── toolsets/348 └── toolsets.example.jsonc # Inert tool-set example349```350351## Common Combinations352353### Planning → Implementation Workflow3543551. **Agent**: `planner.agent.md` with read-only tools3562. **Handoff**: Button to switch to implementation agent3573. **Instructions**: Shared coding standards apply to both358359### Consistent Test Generation3603611. **Skill**: `webapp-testing` with test templates and utilities3622. **Prompt**: `/generate-tests` that references the skill patterns3633. **Instructions**: Test naming conventions and coverage requirements364365### Security-First Development3663671. **Instructions**: Security guidelines applied globally3682. **Agent**: `security-reviewer.agent.md` for dedicated reviews3693. **Prompt**: `/security-audit` for on-demand security checks370371### External Tool Integration3723731. **MCP**: `.vscode/mcp.json` or agent `mcp-servers` exposes a trusted external tool3742. **Tool set**: Groups only the required MCP tools3753. **Agent**: Restricts `tools` to `read`, `search`, and selected MCP tools376377### Packaged Team Workflow3783791. **Plugin**: Bundles agents, skills, prompts, hooks, and MCP servers3802. **Organization setting**: Recommends the plugin marketplace or enabled plugin3813. **Repository override**: Adds repo-specific instructions or agent variants382383## Version Requirements384385| Feature | Minimum VS Code Version | Setting |386|---------|-------------------------|---------|387| `copilot-instructions.md` | 1.95 | `github.copilot.chat.codeGeneration.useInstructionFiles` |388| `*.instructions.md` | 1.99 | Auto-discovered |389| Prompt files | 1.99 | Auto-discovered |390| `AGENTS.md` | 1.102 | `chat.useAgentsMdFile` |391| Custom agents (`.agent.md`) | 1.106 | Auto-discovered |392| Nested `AGENTS.md` | 1.105 | `chat.useNestedAgentsMdFiles` (experimental) |393| `CLAUDE.md` | 1.105+ | `chat.useClaudeMdFile` |394| Agent Skills | 1.108 | `chat.useAgentSkills` |395| Parent-repo discovery (monorepo) | 1.108+ | `chat.useCustomizationsInParentRepositories` |396| MCP servers | 1.102+ | `chat.mcp.enabled` / `chat.mcp.access` |397| MCP sandboxing | Preview | `sandboxEnabled` in `mcp.json` |398| Tool sets | 1.108+ | Configure with `Chat: Configure Tool Sets` |399| Organization instructions | 1.108+ | `github.copilot.chat.organizationInstructions.enabled` |400| Organization custom agents | 1.107+ | `github.copilot.chat.organizationCustomAgents.enabled` |401| Hooks | Preview | `chat.useCustomAgentHooks` (for agent-scoped) |402| Agent plugins | Preview | `chat.plugins.enabled` |403404## References405406- [Customization Overview](https://code.visualstudio.com/docs/copilot/customization/overview)407- [Custom Instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)408- [Prompt Files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)409- [Custom Agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)410- [Agent Skills](https://code.visualstudio.com/docs/copilot/customization/agent-skills)411- [Hooks](https://code.visualstudio.com/docs/copilot/customization/hooks)412- [Agent Plugins](https://code.visualstudio.com/docs/copilot/customization/agent-plugins)413- [MCP Servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers)414- [Agent Tools and Tool Sets](https://code.visualstudio.com/docs/copilot/agents/agent-tools)415- [Agent Skills Standard](https://agentskills.io/)416- [Community Examples](https://github.com/github/awesome-copilot)417418---419> Source: [trsdn/github-copilot-agent](https://github.com/trsdn/github-copilot-agent) — distributed by [TomeVault](https://tomevault.io).420<!-- tomevault:4.0:skill_md:2026-06-16 -->