4.2 KiB
VS Code Copilot Customization References
Use these notes as a source map before creating or debugging Copilot customizations.
Official Sources
- Customization overview: https://code.visualstudio.com/docs/copilot/customization/overview
- Custom instructions: https://code.visualstudio.com/docs/copilot/customization/custom-instructions
- Agent skills: https://code.visualstudio.com/docs/copilot/customization/agent-skills
- Prompt files: https://code.visualstudio.com/docs/copilot/customization/prompt-files
- Custom agents: https://code.visualstudio.com/docs/copilot/customization/custom-agents
- MCP servers: https://code.visualstudio.com/docs/copilot/customization/mcp-servers
- Hooks: https://code.visualstudio.com/docs/copilot/customization/hooks
Customization Types
- Instructions describe standards and conventions that apply to every request or to matching files.
- Prompt files save reusable slash-command prompts for recurring tasks.
- Agent Skills package reusable workflows, scripts, examples, and resources that load on demand.
- Custom agents define specialized personas, tool access, model choices, and role-specific workflows.
- MCP servers connect the agent to external tools, resources, and data.
- Hooks run deterministic actions at defined lifecycle points.
- Agent plugins bundle related customization types into an installable package.
Instructions
Use .github/copilot-instructions.md for workspace-wide rules that should be included in every chat request. Use AGENTS.md when multiple agents should share the same repository guidance, or when nested agent guidance is useful. Use CLAUDE.md for Claude-compatible instruction sharing.
Use .github/instructions/**/*.instructions.md for file-based or task-specific rules. Supported frontmatter fields include:
---
name: Documentation Standards
description: Rules for documentation writing tasks
applyTo: '**/*.md'
---
applyTo is a workspace-relative glob. If it is omitted, the instruction file can still be manually attached but does not automatically apply by file match.
Agent Skills
Skills live in a directory whose name must match the name field in SKILL.md. VS Code supports project skills in .github/skills/, .claude/skills/, and .agents/skills/, and personal skills under user-level skill folders.
Required skill frontmatter:
---
name: skill-name
description: Description of what the skill does and when to use it.
---
Useful optional fields:
argument-hint: shown when invoking the skill as a slash command.user-invocable: controls whether it appears in the slash menu.disable-model-invocation: controls whether the model can auto-load it.context: can useforkfor a separate subagent context when supported.
Skills load progressively: discovery reads frontmatter, instruction loading reads SKILL.md, and extra resources load only when linked from the skill document.
Priority And Discovery
When multiple instruction sources apply, personal instructions have higher priority than repository instructions, and repository instructions have higher priority than organization instructions. If multiple instruction files exist, VS Code combines them; do not rely on ordering between instruction files.
For monorepos, chat.useCustomizationsInParentRepositories can enable discovery from a trusted parent repository root. Skill locations can also be configured with chat.agentSkillsLocations, and instruction locations with chat.instructionsFilesLocations.
Troubleshooting
If a customization is not applied:
- Confirm the file is in a supported location.
- Confirm frontmatter is valid YAML.
- Confirm skill
namematches the parent directory. - Confirm
applyTomatches the file path when using*.instructions.md. - Confirm relevant settings are enabled, such as instruction inclusion, referenced instruction inclusion, or AGENTS/CLAUDE support.
- Use the Chat customization diagnostics view or Agent Debug Logs to inspect what VS Code loaded.
Writing Effective Instructions
Keep instructions short, self-contained, and focused on non-obvious rules. Include the reason for a rule when it helps with edge cases. Prefer concrete examples over abstract preferences. Split unrelated rules into separate targeted files when they have different triggers.