GitHub Copilot Configuration¶
The Forge repository configures GitHub Copilot across three surfaces — Copilot CLI, VS Code, and the Copilot coding agent — using several customization types. Agent Skills are the largest of these and provide domain-specific guidance and automation for platform development tasks.
Customization types¶
Copilot reads several kinds of customization file. Each is supported on a different set of surfaces and invoked differently:
| Type | Location | CLI | VS Code | Coding agent | How it is invoked |
|---|---|---|---|---|---|
| Agent instructions | AGENTS.md (repo root) |
✅ | ✅ | ✅ | Always loaded |
| Agent skills (package-mapped) | .github/skills/*/SKILL.md |
✅ | ✅ | ✅ | Model-invoked by task/keywords, or /name when user-invocable: true |
| Agent skills (repo-local-only) | .github/skills/{maintain-*,code-review}/SKILL.md |
✅ | ✅ | ✅ | Model-invoked by task/keywords, or /name when user-invocable: true |
| Custom agents | .github/agents/*.agent.md |
✅ | ✅ | ✅ | User-selected (/agent or picker). Supported by Copilot, but Forge does not currently ship any. |
| Prompt files | .github/prompts/*.prompt.md |
❌ | ✅ | ❌ | /name slash command (VS Code only) |
Repo-wide instructions: Forge uses
AGENTS.mdrather than.github/copilot-instructions.md. Both are read by all three surfaces;AGENTS.mdis the cross-tool standard, so there is no need to maintain both.Path instructions are not used. Forge previously kept
.github/instructions/*.instructions.mdfiles withapplyToglobs, but each one only pointed at the skill that already owned those standards. Skills carry the standards directly and load on the same signals, so the indirection was removed rather than maintained in two places by hand. Generated package copies under.github/plugins/*/skills/are still intentional: they are derived from.github/skills/, drift-checked, and needed for portable Agent Plugin distribution.Prompt files do not run in Copilot CLI (copilot-cli#618). Forge therefore ships no prompt files. Cross-surface guided workflows use user-invocable skills instead, so they work identically in the CLI, VS Code, and the coding agent.
📦 Agent Plugins packages¶
Forge separates portable Agent Skills from repository-maintenance skills. The shipped packages follow the Agent Plugins v1.0.0 packaging model:
| Package | Purpose | Authored in | Generated package output |
|---|---|---|---|
forge |
Day-to-day development skills plus the Forge and Mosaic MCP server registrations | .github/skills/ |
.github/plugins/forge/ |
forge-planning |
Optional planning and artifact-authoring skills for PRDs, decisions, implementation plans, and technical spikes | .github/skills/ |
.github/plugins/forge-planning/ |
.github/plugins/skill-packages.json is the package manifest that maps each shipped skill name to forge or forge-planning. .github/skills/maintain-skills/scripts/Sync-PluginSkills.ps1 reads that manifest and generates the package skills/ trees from .github/skills/. Do not hand-edit the generated plugin copies.
ADR 0012: Migrate Forge Skills into Two Agent Plugins Packages records the package boundary: forge is the default builder install, forge-planning is the optional formal-planning seam, and repo-local-only skills such as maintain-* and code-review stay outside the shipped package mapping.
Copilot code review repository settings¶
These are GitHub repository settings, not files in this repo, so path cleanups here do not configure them:
- Register the Forge MCP server for Copilot code review in the repository settings if you want reviews to use Forge MCP tools.
- Keep Allow Copilot to use MCP tools when reviewing pull requests enabled. GitHub currently defaults that toggle on.
- Automatic code review must be enabled for the
code-reviewskill to run without a manual request — including its release-notes validation rules. This is a repository setting, not a file. .github/workflows/copilot-code-review.ymlconfigures the Copilot code review environment only: it exposes acopilot-setup-stepsjob for runner type and preinstalled tooling, falling back tocopilot-setup-steps.ymlwhen absent. It is not a place for review rules — those live in.github/skills/code-review/SKILL.md, which Copilot code review reads from the pull request head branch. Forge intentionally has not added acopilot-code-review.ymltoday. Treat it as an available option if review-environment customization (runner size, preinstalled tools) becomes necessary later.
Read Install the SAIF CLI for the marketplace setup, install commands, prerequisites, and MCP details.
Pull request and issue templates¶
CLI and API creation flows bypass template prefill on both GitHub and Azure DevOps. The web compose form applies templates, but gh, az repos pr, REST APIs, and MCP issue or PR creation helpers do not.
- PR authors should read
docs/pull_request_template.md, the single host-neutral template used by both GitHub and Azure DevOps, and fill it manually before creating the PR. - Issue authors should check
.github/ISSUE_TEMPLATE/, includingtask.ymlanddesign-spike.yml, and render each YAML form field into the issue body instead of skipping the template structure.
Which type to use¶
- Reusable knowledge, a procedure, or rules scoped to specific file types the model should pull in automatically → skill (
.github/skills/<name>/; add it to.github/plugins/skill-packages.jsonwhen it should ship) - Reusable knowledge that should also be launchable as
/name→ skill withuser-invocable: truein itsSKILL.mdfrontmatter, such as shippedcreate-prandcreate-backportor repo-localmaintain-release - A guided, user-launched workflow with guardrails → prefer a user-invocable skill in Forge. Copilot custom agents remain a supported primitive, but Forge no longer ships
.github/agents/workflows for PR, backport, release, or review tasks. - Repo-wide, always-on guidance →
AGENTS.md
User-invocable workflow skills¶
Forge now exposes its guided workflows as skills rather than repo-local custom agents. These skills still route automatically by task, and the ones marked user-invocable: true can also be launched directly as slash commands.
| Skill | Scope | Invocation |
|---|---|---|
create-pr |
Shipped, provider-agnostic PR authoring with template filling and issue or work-item linking | Automatic routing or /create-pr |
create-backport |
Shipped, provider-agnostic backport workflow that cherry-picks and opens the release PR | Automatic routing or /create-backport |
maintain-release |
Repo-local Forge release-notes and versioning workflow | Automatic routing or /maintain-release |
code-review |
Repo-local Forge review guidance used by Copilot code review and manual review requests | Automatic routing or /code-review |
What are Agent Skills?¶
Agent Skills are self-contained folders containing specialized instructions and workflows that GitHub Copilot can use to provide expert assistance for specific tasks. Each skill follows the Agent Skills standard and includes:
- YAML frontmatter defining the skill name and description
- Optional
user-invocable: truefrontmatter for/nameslash-command invocation - Detailed instructions and workflows
- Code examples and best practices
- References subfolder for detailed topic documentation
- Troubleshooting guidance
Available Skills¶
Note: Forge authors every skill under
.github/skills/. Shipped skills are mapped into Agent Plugin packages via.github/plugins/skill-packages.json; repo-local-only skills stay only in.github/skills/.
Shipped skill inventories for the forge and forge-planning Agent Plugin packages live in Agent Skills. Treat that page as the canonical consumer-facing inventory so package tables stay in one place as shipped skills change.
🧰 Repo-local-only skills¶
Forge-only skills kept under .github/skills/ that are not mapped into Agent Plugin packages.
| Skill | Summary |
|---|---|
code-review |
Review Forge pull requests against platform standards using technology-specific routing, documentation validation, security checks, and evidence-based review rigor |
maintain-github-actions |
Forge repo-hygiene GitHub Actions, pull request docs checks, merge gatekeeping, Dependabot automation, and minimal repository automation |
maintain-pipelines |
Forge's own Azure DevOps pipeline generation, forge-orchestrator metadata, PR pipeline regeneration, and package or module pipeline config |
maintain-release |
Forge's own release process, version numbers, module repinning, release-note drafts, and release announcements |
maintain-skills |
Forge repo-local skills, validation scripts, Foundry-sync checks, skill frontmatter validation, and todo tracking |
maintain-templates |
Forge dotnet new templates, template.json, shared template config, host metadata, setup scripts, and snapshot coverage |
How Skills Work¶
Progressive Disclosure¶
Skills use a progressive disclosure pattern:
- Description field - Primary trigger for skill discovery (WHEN to use it)
- SKILL.md body - Workflow overview and quick reference
- references/ folder - Detailed documentation loaded on demand
This minimizes context overhead while providing deep expertise when needed.
Automatic Discovery¶
In this repository, Copilot discovers authored skills from .github/skills/. For plugin distribution, Sync-PluginSkills.ps1 generates the shipped package copies from .github/skills/ using .github/plugins/skill-packages.json. Skills are invoked based on:
- Task context - Asking for specific tasks (e.g., "Create a PR") triggers relevant skills
- Domain keywords - Mentioning "documentation", "release", or "Forge development" activates corresponding skills
- File context - Working in specific files may trigger related skills
Manual Invocation¶
You can explicitly request a skill's help:
If a skill sets user-invocable: true, you can also launch it directly:
Skill Structure¶
Each skill follows the Agent Skills standard:
.github/skills/skill-name/ # Authored skill
├── SKILL.md # Required: YAML frontmatter + markdown instructions
└── references/ # Optional: Detailed docs loaded on demand
├── topic-a.md
└── topic-b.md
Shipped skills are then generated into .github/plugins/<package>/skills/<name>/ for Agent Plugin distribution. Never edit those generated copies by hand.
SKILL.md Format¶
---
name: skill-name
user-invocable: true # Optional: expose the skill as /skill-name
description: >
What this skill does AND when to use it.
Include specific triggers and scenarios.
---
# Skill Title
## Workflow
1. Step 1 → See references/topic-a.md
2. Step 2 → See references/topic-b.md
## Quick Reference
[Essential tables/info that applies across all topics]
Key rules:
descriptionis the PRIMARY trigger—include all "when to use" info there- Set
user-invocable: trueonly when the skill should appear as a/nameslash command - Keep SKILL.md body under 500 lines
- Use
references/for detailed documentation
Creating New Skills¶
To add a new skill:
- Create the skill under
.github/skills/<name>/. If it should ship, map it into the right package in.github/plugins/skill-packages.json; otherwise leave it repo-local. - Create a folder with a lowercase, hyphen-separated name
- Add
SKILL.mdwith frontmatter (name,description) - Put trigger info in
description, not the body - Keep under 500 lines; split to
references/if needed - Test with GitHub Copilot
📖 See
.github/skills/maintain-skills/references/skill-creation.mdin the repository for detailed guidance.
Naming Conventions¶
| Pattern | Example | Use Case |
|---|---|---|
{domain} |
terraform, dotnet |
Broad domain standards |
{domain}-{specialty} |
terraform-testing, azure-devops-pipelines |
Specific domain workflows |
{action}-{object} |
create-pr, create-backport, create-prd |
Guided workflows and artifact-authoring skills |
maintain-{scope} |
maintain-release, maintain-skills |
Repo-local Forge maintenance skills in .github/skills/ |
Best Practices¶
For Skill Creators¶
Do:
- ✅ Focus on specific, actionable tasks
- ✅ Include real code examples
- ✅ Use progressive disclosure (SKILL.md → references/)
- ✅ Keep content current with platform versions
- ✅ Make descriptions specific with clear triggers
Don't:
- ❌ Create overly broad or vague skills
- ❌ Hand-maintain duplicate content across skills or between
.github/skills/and generated package copies - ❌ Exceed 500 lines in SKILL.md
- ❌ Put "when to use" in body instead of description
For Skill Users¶
Do:
- ✅ Be specific about what you need help with
- ✅ Provide context about your current task
- ✅ Ask for clarification if instructions are unclear
Don't:
- ❌ Expect skills to handle tasks outside their scope
- ❌ Ignore prerequisites or warnings
Related Resources¶
- Agent Skills Specification
- Agent Plugins v1.0.0
- ADR 0012: Migrate Forge Skills into Two Agent Plugins Packages
- Forge plugin install guide
- GitHub Agent Skills Docs
- Forge Documentation
Repository paths: All skills are authored in
.github/skills/; shipped package membership lives in.github/plugins/skill-packages.json; generated package copies live under.github/plugins/*/skills/; the agent-facing skill inventory is inAGENTS.mdat the repository root.
Migration History¶
The Forge repository previously consolidated fragmented repo-local skills into a smaller set using progressive disclosure. The table preserves the historical names used in that consolidation and maps them to today's authored and packaged layout.
| Historical consolidated skill | Original skills merged | Current successor |
|---|---|---|
documentation |
documentation-diataxis, documentation-formatting, documentation-validation | documentation in forge |
git-workflows |
git-branch-management, git-cherry-pick, git-commit-analysis, conventional-commits | git-workflows in forge |
github-workflows |
github-pr-create, github-issue-linking, code-review-standards | github-workflows in forge |
release-management |
release-notes-generation, release-announcements, version-management | maintain-release repo-local skill |
forge-standards |
forge-emoji-standards, forge-tech-stack, forge-version-compatibility | forge-standards in forge |
terraform-development |
terraform-module-creation, terraform-testing | terraform and terraform-testing in forge |
dotnet-development |
dotnet-template-creation, nuget-package-creation | dotnet, dotnet-testing, and nuget-manager in forge; maintain-templates repo-local skill |
utils |
skill-creation, foundry-examples-sync, todo-tracking | maintain-skills repo-local skill |
Benefits at the time: fewer skills to scan, consolidated triggers, and better context coherence.
Since that consolidation, Forge moved portable skills into Agent Plugin packages while keeping a single authored source tree in .github/skills/. The current inventory is 32 skills: 22 day-to-day development skills in forge, 4 planning and artifact-authoring skills in forge-planning, and 6 repo-local-only skills (code-review plus 5 maintain-* skills) that are never shipped.
For questions or suggestions about skills, contact the Platform Engineering team.