Thank you for your interest in contributing to GitHub Copilot for Azure! This document provides guidelines and instructions for contributing to this project.
This project has adopted the Microsoft Open Source Code of Conduct. For more information, see the Code of Conduct FAQ or contact opencode@microsoft.com with any questions or comments.
- Report bugs - File issues for bugs you encounter
- Request features - Suggest new features or improvements
- Submit pull requests - Contribute code, documentation, or skills
- Create skills - Build new Azure skills to extend functionality
- Improve documentation - Help make our docs clearer and more comprehensive
Before contributing, ensure you have the following installed:
- Git
- Node.js 18+ and NPM
- GitHub Copilot CLI
In GitHub Copilot CLI, add the plugin marketplace:
/plugin marketplace add microsoft/azure-skills
Install the Azure plugin:
/plugin install azure@azure-skills
To develop and test skills locally, you build the plugin from source and point Copilot CLI at the build output.
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR-USERNAME/GitHub-Copilot-for-Azure.git
cd GitHub-Copilot-for-AzureInstall dependencies and run the build. This copies the plugin source files into output/, stamping version numbers automatically via Nerdbank.GitVersioning.
npm install
npm run buildThe output/ directory now contains the fully built plugin, ready for use.
Use the --plugin-dir flag to point Copilot CLI at your build output:
copilot --plugin-dir ./outputThis loads the locally built plugin instead of any marketplace-installed version.
After making changes to skill files under plugin/:
-
Rebuild the plugin to update the
output/directory:npm run build
-
In an active Copilot CLI session, run:
/skills reloadThis reloads all skills without restarting the CLI.
-
Alternatively, restart the Copilot CLI to pick up changes.
Tip: Use
/skills reloadafter rebuilding for faster iteration during development.
You can quickly test any open pull request by checking out its branch and building. This is especially useful during code review to verify changes work as expected.
Install the GitHub CLI if you haven't already, then run:
gh pr checkout <PR-NUMBER>
npm run build
copilot --plugin-dir ./outputFor example, to test PR #42:
gh pr checkout 42
npm run build
copilot --plugin-dir ./outputTo return to the main branch after testing:
git checkout main
npm run buildSkills are the core building blocks of GitHub Copilot for Azure. Each skill provides domain-specific knowledge and capabilities.
Skills are located under plugin/skills/. Each skill folder should contain:
plugin/skills/your-skill-name/
├── SKILL.md # Main skill definition (required)
├── LICENSE.txt # License file (if applicable)
├── references/ # Additional reference documentation
│ └── *.md
├── examples/ # Example code and templates
│ └── *
└── scripts/ # Helper scripts
└── *
⚠️ Char count of skill descriptions in this repo is close to the char count budget in tools like Copilot CLI. Exceeding the char count budget may result in any skill being truncated at runtime, causing inconsistent agent behavior. Consider adding the new content to an existing skill or rebrand an existing skill to cover the new content.
NOTE: You can use the "Azure Skill Brainstormer", "Azure Skill Creator", or "Skill Fixer" agents in Copilot to help you build and maintain skills. They are recognizable across all github copilot agent hosts, such as Copilot Coding Agent, Copilot CLI and VSCode copilot chat.
- The Creator agent expects you already know what scenarios the skill should address
- The Brainstormer agent will help you identify scenarios
- The Skill Fixer agent works on your skills related tasks and follows rules it was pre-configured with, such as skill version bumping.
-
Create your skill folder under
plugin/skills/your-skill-name/ -
Write your SKILL.md following the existing patterns in other skills
-
Provide context in your skill:
- Links to relevant Azure documentation
- Descriptions of MCP or command-line tools to include
- Example use cases and scenarios
- Keep skills focused on a specific Azure service or capability
- The
descriptionfrontmatter should:- be short
- describe what the skill does and when to use it
- include trigger phrases (see existing skills for examples)
- Focus on one "golden path" rather than providing multiple approaches
- To ensure consistency across skills, prefer Azure MCP tools (for data collection operations) and
azd(for deployment) overaz. - Include practical examples and common use cases
- Reference official Microsoft documentation
- Test your skill thoroughly before submitting
- Follow the Agent Skills Specification
- See .github/skills/skill-authoring/SKILL.md for detailed guidelines
AI agents load skill content into their context window, which has finite capacity. Large skills:
- Consume context space needed for user conversations
- Slow down agent response times
- May get truncated, losing important instructions
The agentskills.io specification recommends keeping SKILL.md under 5000 tokens, with detailed content in references/ directories that load on-demand.
| File Type | Soft Limit | Hard Limit | Action if Exceeded |
|---|---|---|---|
| SKILL.md | 500 tokens | 5000 tokens | Move content to references/ |
| references/*.md | 1000 tokens | 2000 tokens | Split into multiple files |
| docs/*.md | 1500 tokens | 3000 tokens | Restructure content |
Token estimation: ~4 characters = 1 token
Run these from the repository root:
# First time setup (installs dependencies)
npm install
# Show help and available commands
npm run tokens help
# Count tokens in all markdown files
npm run tokens count
# Check all markdown files against token limits
npm run tokens check
# Get optimization suggestions
npm run tokens suggest # All files
npm run tokens suggest -- docs/ # Specific directory
npm run tokens suggest -- path/to/file.md # Specific file
# Compare token counts between git refs
npm run tokens compare # HEAD vs main
npm run tokens compare -- --base HEAD~1 # vs previous commit
npm run tokens compare -- --base feature-branch # vs specific branchExample output from npm run tokens compare:
📊 TOKEN CHANGE REPORT
══════════════════════════════════════════════════════════════════════
Comparing: main → HEAD
──────────────────────────────────────────────────────────────────────
📈 Total Change: +350 tokens (+5%)
Before: 7,000 tokens
After: 7,350 tokens
Files: 3 modified, 1 added, 0 removed
Changed Files:
──────────────────────────────────────────────────────────────────────
🆕 plugin/skills/my-new-skill/SKILL.md
0 → 450 tokens [+450 (+100%)]
📈 plugin/skills/existing-skill/SKILL.md
500 → 600 tokens [+100 (+20%)]
Example output from npm run tokens check:
📊 Token Limit Check
════════════════════════════════════════════════════════════
Files Checked: 83
Files Exceeded: 5
⚠️ Files exceeding limits:
────────────────────────────────────────────────────────────
❌ plugin/skills/my-skill/SKILL.md
850 tokens (limit: 500, over by 350)
Pattern: SKILL.md
💡 Tip: Move detailed content to references/ subdirectories
Pull requests automatically run token analysis which includes:
-
Token Comparison - Shows token changes between your PR and the base branch
- Total token increase/decrease with percentage
- Per-file breakdown of changes
- Highlights files with significant increases (>20%)
-
Limit Check - Warns if any files exceed their token limits
The bot will comment on your PR with a combined report. Address warnings by:
- Moving detailed content to
references/subdirectory - Using tables instead of verbose lists
- Removing decorative elements (excessive emojis, redundant headers)
- Linking to external documentation instead of duplicating it
See markdown-token-optimizer skill for optimization techniques.
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes and commit with clear, descriptive messages:
git add . git commit -m "Add: Description of your changes"
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request against the
mainbranch -
Address review feedback and ensure all checks pass
Use clear, descriptive commit messages:
Add: New azure-cosmos-db skillFix: Correct authentication example in plugin READMEUpdate: Improve Azure Functions deployment docsRemove: Deprecated references from skill
- Changes are tested locally
- Documentation is updated (if applicable)
- Commit messages are clear and descriptive
- No breaking changes (or breaking changes are documented)
- Skills follow the established patterns
- Search existing issues to avoid duplicates
- Check the Troubleshooting guide
- Verify you're using the latest version
Include the following information:
- Description: Clear description of the issue
- Steps to Reproduce: Numbered steps to reproduce the bug
- Expected Behavior: What you expected to happen
- Actual Behavior: What actually happened
- Environment: OS, GitHub Copilot CLI version
- Logs/Screenshots: Any relevant error messages or screenshots
For feature requests, include:
- Use Case: Describe the problem you're trying to solve
- Proposed Solution: Your suggested approach
- Alternatives: Any alternatives you've considered
After making changes to a skill:
- Rebuild the plugin:
npm run build - Start Copilot CLI with
copilot --plugin-dir ./output - Run
/skills reloadif you already have a session open - Test the skill by asking relevant questions
- Verify all referenced documentation and examples work
- Review the Troubleshooting guide for common issues
- Use verbose logging when available
Keep your fork in sync with the upstream repository:
# Add upstream remote (one-time setup)
git remote add upstream https://github.com/microsoft/GitHub-Copilot-for-Azure.git
# Fetch and merge upstream changes
git fetch upstream
git checkout main
git merge upstream/main- Check the README for general information
- Review the Troubleshooting guide for common issues
- Search or file GitHub Issues
Thank you for contributing to GitHub Copilot for Azure! 🚀