The Awesome GitHub Copilot repository is a community-driven collection of custom agents and instructions designed to enhance GitHub Copilot experiences across various domains, languages, and use cases. The project includes:
- Agents - Specialized GitHub Copilot agents that integrate with MCP servers
- Instructions - Coding standards and best practices applied to specific file patterns
- Skills - Self-contained folders with instructions and bundled resources for specialized tasks
- Hooks - Automated workflows triggered by specific events during development
- Workflows - Agentic Workflows for AI-powered repository automation in GitHub Actions
- Plugins - Installable packages that group related agents, commands, and skills around specific themes
.
├── agents/ # Custom GitHub Copilot agent definitions (.agent.md files)
├── instructions/ # Coding standards and guidelines (.instructions.md files)
├── skills/ # Agent Skills folders (each with SKILL.md and optional bundled assets)
├── hooks/ # Automated workflow hooks (folders with README.md + hooks.json)
├── workflows/ # Agentic Workflows (.md files for GitHub Actions automation)
├── plugins/ # Installable plugin packages (folders with plugin.json)
├── docs/ # Documentation for different resource types
├── eng/ # Build and automation scripts
└── scripts/ # Utility scripts
# Install dependencies
npm ci
# Build the project (generates README.md and marketplace.json)
npm run build
# Validate plugin manifests
npm run plugin:validate
# Generate marketplace.json only
npm run plugin:generate-marketplace
# Create a new plugin
npm run plugin:create -- --name <plugin-name>
# Validate agent skills
npm run skill:validate
# Create a new skill
npm run skill:create -- --name <skill-name>All agent files (*.agent.md) and instruction files (*.instructions.md) must include proper markdown front matter. Agent Skills are folders containing a SKILL.md file with frontmatter and optional bundled assets. Hooks are folders containing a README.md with frontmatter and a hooks.json configuration file:
- Must have
descriptionfield (wrapped in single quotes) - File names should be lower case with words separated by hyphens
- Recommended to include
toolsfield - Strongly recommended to specify
modelfield
- Must have
descriptionfield (wrapped in single quotes, not empty) - Must have
applyTofield specifying file patterns (e.g.,'**.js, **.ts') - File names should be lower case with words separated by hyphens
- Each skill is a folder containing a
SKILL.mdfile - SKILL.md must have
namefield (lowercase with hyphens, matching folder name, max 64 characters) - SKILL.md must have
descriptionfield (wrapped in single quotes, 10-1024 characters) - Folder names should be lower case with words separated by hyphens
- Skills can include bundled assets (scripts, templates, data files)
- Bundled assets should be referenced in the SKILL.md instructions
- Asset files should be reasonably sized (under 5MB per file)
- Skills follow the Agent Skills specification
- Each hook is a folder containing a
README.mdfile with frontmatter - README.md must have
namefield (human-readable name) - README.md must have
descriptionfield (wrapped in single quotes, not empty) - Must include a
hooks.jsonfile with hook configuration (hook events extracted from this file) - Folder names should be lower case with words separated by hyphens
- Can include bundled assets (scripts, utilities, configuration files)
- Bundled scripts should be referenced in the README.md and hooks.json
- Follow the GitHub Copilot hooks specification
- Optionally includes
tagsfield for categorization
- Each workflow is a standalone
.mdfile in theworkflows/directory - Must have
namefield (human-readable name) - Must have
descriptionfield (wrapped in single quotes, not empty) - Contains agentic workflow frontmatter (
on,permissions,safe-outputs) and natural language instructions - File names should be lower case with words separated by hyphens
- Only
.mdfiles are accepted —.yml,.yaml, and.lock.ymlfiles are blocked by CI - Follow the GitHub Agentic Workflows specification
- Each plugin is a folder containing a
.github/plugin/plugin.jsonfile with metadata - plugin.json must have
namefield (matching the folder name) - plugin.json must have
descriptionfield (describing the plugin's purpose) - plugin.json must have
versionfield (semantic version, e.g., "1.0.0") - Plugin content is defined declaratively in plugin.json using Claude Code spec fields (
agents,commands,skills). Source files live in top-level directories and are materialized into plugins by CI. - The
marketplace.jsonfile is automatically generated from all plugins during build - Plugins are discoverable and installable via GitHub Copilot CLI
When adding a new agent, instruction, skill, hook, workflow, or plugin:
For Agents and Instructions:
- Create the file with proper front matter
- Add the file to the appropriate directory
- Update the README.md by running:
npm run build - Verify the resource appears in the generated README
For Hooks:
- Create a new folder in
hooks/with a descriptive name - Create
README.mdwith proper frontmatter (name, description, hooks, tags) - Create
hooks.jsonwith hook configuration following GitHub Copilot hooks spec - Add any bundled scripts or assets to the folder
- Make scripts executable:
chmod +x script.sh - Update the README.md by running:
npm run build - Verify the hook appears in the generated README
For Workflows:
- Create a new
.mdfile inworkflows/with a descriptive name (e.g.,daily-issues-report.md) - Include frontmatter with
nameanddescription, plus agentic workflow fields (on,permissions,safe-outputs) - Compile with
gh aw compile --validateto verify it's valid - Update the README.md by running:
npm run build - Verify the workflow appears in the generated README
For Skills:
- Run
npm run skill:createto scaffold a new skill folder - Edit the generated SKILL.md file with your instructions
- Add any bundled assets (scripts, templates, data) to the skill folder
- Run
npm run skill:validateto validate the skill structure - Update the README.md by running:
npm run build - Verify the skill appears in the generated README
For Plugins:
- Run
npm run plugin:create -- --name <plugin-name>to scaffold a new plugin - Define agents, commands, and skills in
plugin.jsonusing Claude Code spec fields - Edit the generated
plugin.jsonwith your metadata - Run
npm run plugin:validateto validate the plugin structure - Run
npm run buildto update README.md and marketplace.json - Verify the plugin appears in
.github/plugin/marketplace.json
For External Plugins:
- Edit
plugins/external.jsonand add an entry withname,source,description, andversion - The
sourcefield should be an object specifying a GitHub repo, git URL, npm package, or pip package (see CONTRIBUTING.md) - Run
npm run buildto regenerate marketplace.json - Verify the external plugin appears in
.github/plugin/marketplace.json
# Run all validation checks
npm run plugin:validate
npm run skill:validate
# Build and verify README generation
npm run build
# Fix line endings (required before committing)
bash scripts/fix-line-endings.shBefore committing:
- Ensure all markdown front matter is correctly formatted
- Verify file names follow the lower-case-with-hyphens convention
- Run
npm run buildto update the README - Always run
bash scripts/fix-line-endings.shto normalize line endings (CRLF → LF) - Check that your new resource appears correctly in the README
- Use proper front matter with required fields
- Keep descriptions concise and informative
- Wrap description field values in single quotes
- Use lower-case file names with hyphens as separators
- Located in
eng/andscripts/directories - Follow Node.js ES module conventions (
.mjsextension) - Use clear, descriptive function and variable names
When creating a pull request:
Important: All pull requests should target the
stagedbranch, notmain.
- README updates: New files should automatically be added to the README when you run
npm run build - Front matter validation: Ensure all markdown files have the required front matter fields
- File naming: Verify all new files follow the lower-case-with-hyphens naming convention
- Build check: Run
npm run buildbefore committing to verify README generation - Line endings: Always run
bash scripts/fix-line-endings.shto normalize line endings to LF (Unix-style) - Description: Provide a clear description of what your agent/instruction does
- Testing: If adding a plugin, run
npm run plugin:validateto ensure validity
Before submitting your PR, ensure you have:
- Run
npm install(ornpm ci) to install dependencies - Run
npm run buildto generate the updated README.md - Run
bash scripts/fix-line-endings.shto normalize line endings - Verified that all new files have proper front matter
- Tested that your contribution works with GitHub Copilot
- Checked that file names follow the naming convention
For instruction files (*.instructions.md):
- Has markdown front matter
- Has non-empty
descriptionfield wrapped in single quotes - Has
applyTofield with file patterns - File name is lower case with hyphens
For agent files (*.agent.md):
- Has markdown front matter
- Has non-empty
descriptionfield wrapped in single quotes - Has
namefield with human-readable name (e.g., "Address Comments" not "address-comments") - File name is lower case with hyphens
- Includes
modelfield (strongly recommended) - Considers using
toolsfield
For skills (skills/*/):
- Folder contains a SKILL.md file
- SKILL.md has markdown front matter
- Has
namefield matching folder name (lowercase with hyphens, max 64 characters) - Has non-empty
descriptionfield wrapped in single quotes (10-1024 characters) - Folder name is lower case with hyphens
- Any bundled assets are referenced in SKILL.md
- Bundled assets are under 5MB per file
For hook folders (hooks/*/):
- Folder contains a README.md file with markdown front matter
- Has
namefield with human-readable name - Has non-empty
descriptionfield wrapped in single quotes - Has
hooks.jsonfile with valid hook configuration (hook events extracted from this file) - Folder name is lower case with hyphens
- Any bundled scripts are executable and referenced in README.md
- Follows GitHub Copilot hooks specification
- Optionally includes
tagsarray field for categorization
For workflow files (workflows/*.md):
- File has markdown front matter
- Has
namefield with human-readable name - Has non-empty
descriptionfield wrapped in single quotes - File name is lower case with hyphens
- Contains
onandpermissionsin frontmatter - Workflow uses least-privilege permissions and safe outputs
- No
.yml,.yaml, or.lock.ymlfiles included - Follows GitHub Agentic Workflows specification
For plugins (plugins/*/):
- Directory contains a
.github/plugin/plugin.jsonfile - Directory contains a
README.mdfile -
plugin.jsonhasnamefield matching the directory name (lowercase with hyphens) -
plugin.jsonhas non-emptydescriptionfield -
plugin.jsonhasversionfield (semantic version, e.g., "1.0.0") - Directory name is lower case with hyphens
- If
keywordsis present, it is an array of lowercase hyphenated strings - If
agents,commands, orskillsarrays are present, each entry is a valid relative path - The plugin does not reference non-existent files
- Run
npm run buildto verify marketplace.json is updated correctly
This is a community-driven project. Contributions are welcome! Please see:
- CONTRIBUTING.md for contribution guidelines
- CODE_OF_CONDUCT.md for community standards
- SECURITY.md for security policies
The repository includes an MCP (Model Context Protocol) Server for searching and installing resources directly from this repository. Docker is required to run the server.
MIT License - see LICENSE for details