11 KiB
AGENTS.md
Project Overview
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
- Plugins - Installable packages that group related agents, commands, and skills around specific themes
Repository Structure
.
├── 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)
├── plugins/ # Installable plugin packages (folders with plugin.json)
├── docs/ # Documentation for different resource types
├── eng/ # Build and automation scripts
└── scripts/ # Utility scripts
Setup Commands
# 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>
Development Workflow
Working with Agents, Instructions, Skills, and Hooks
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:
Agent Files (*.agent.md)
- 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
Instruction Files (*.instructions.md)
- 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
Agent Skills (skills/*/SKILL.md)
- 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
Hook Folders (hooks/*/README.md)
- 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
Plugin Folders (plugins/*)
- 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
Adding New Resources
When adding a new agent, instruction, skill, hook, 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 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
Testing Instructions
# 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.sh
Before 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
Code Style Guidelines
Markdown Files
- 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
JavaScript/Node.js Scripts
- Located in
eng/andscripts/directories - Follow Node.js ES module conventions (
.mjsextension) - Use clear, descriptive function and variable names
Pull Request Guidelines
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
Pre-commit Checklist
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
Code Review Checklist
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 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-emptydescriptionfieldplugin.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
Contributing
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
MCP Server
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.
License
MIT License - see LICENSE for details