refactor: migrate plugins to Claude Code spec format

- Move plugin manifests from .github/plugin/ to .claude-plugin/
- Convert items[] to Claude Code spec fields (agents, commands, skills)
- Rename tags to keywords, drop display/featured/instructions from plugins
- Delete all symlinks and materialized files from plugin directories
- Add eng/materialize-plugins.mjs to copy source files into plugin dirs at publish time
- Add .github/workflows/publish.yml for staged->main publishing
- Update CI triggers to target staged branch
- Update validation, creation, marketplace, and README generation scripts
- Update CONTRIBUTING.md and AGENTS.md documentation
- Include all new content from main (polyglot-test-agent, gem-browser-tester,
  fabric-lakehouse, fluentui-blazor, quasi-coder, transloadit-media-processing,
  make-repo-contribution hardening, website logo/gradient changes)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Aaron Powell
2026-02-18 14:11:22 +11:00
parent 8480453512
commit 9d1df57ebc
243 changed files with 753 additions and 1836 deletions

View File

@@ -2,31 +2,6 @@
Thank you for your interest in contributing to the Awesome GitHub Copilot repository! We welcome contributions from the community to help expand our collection of custom instructions and prompts.
## Prerequisites
### Windows Users: Enable Symlinks
This repository uses symbolic links for plugins. On Windows, you need to enable symlink support before cloning:
1. **Enable Developer Mode** (recommended):
- Open **Settings****Update & Security****For developers**
- Enable **Developer Mode**
- This allows creating symlinks without administrator privileges
2. **Configure Git to use symlinks**:
```bash
git config --global core.symlinks true
```
3. **Clone the repository** (after enabling the above):
```bash
git clone https://github.com/github/awesome-copilot.git
```
> **Note:** If you cloned the repository before enabling symlinks, the symlinks will appear as plain text files containing the target path. You'll need to delete the local repository and re-clone after enabling symlink support.
**Alternative for older Windows versions:** If Developer Mode is not available, you can run Git Bash as Administrator, or grant your user the "Create symbolic links" privilege via Local Security Policy (`secpol.msc` → Local Policies → User Rights Assignment → Create symbolic links).
## How to Contribute
### Adding Instructions
@@ -138,11 +113,11 @@ Skills are self-contained folders in the `skills/` directory that include a `SKI
### Adding Plugins
Plugins group related prompts, agents, and skills around specific themes or workflows, making it easy for users to install comprehensive toolkits via GitHub Copilot CLI.
Plugins group related agents, commands (prompts), and skills around specific themes or workflows, making it easy for users to install comprehensive toolkits via GitHub Copilot CLI.
1. **Create your plugin**: Run `npm run plugin:create` to scaffold a new plugin
2. **Follow the naming convention**: Use descriptive, lowercase folder names with hyphens (e.g., `python-web-development`)
3. **Add your content**: Add agents, commands (prompts), and skills to the plugin folder using symlinks to existing repo files
3. **Define your content**: List agents, commands, and skills in `plugin.json` using the Claude Code spec fields
4. **Test your plugin**: Run `npm run plugin:validate` to verify your plugin structure
#### Creating a plugin
@@ -155,41 +130,37 @@ npm run plugin:create -- --name my-plugin-id
```
plugins/my-plugin-id/
├── .github/plugin/plugin.json # Plugin metadata
── README.md # Plugin documentation
├── commands/ # Symlinked prompt files
├── agents/ # Symlinked agent files
└── skills/ # Symlinked skill folders
├── .github/plugin/plugin.json # Plugin metadata (Claude Code spec format)
── README.md # Plugin documentation
```
> **Note:** 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.
#### plugin.json example
```json
{
"name": "my-plugin-id",
"description": "Plugin description",
"version": "1.0.0",
"keywords": [],
"author": { "name": "Awesome Copilot Community" },
"repository": "https://github.com/github/awesome-copilot",
"license": "MIT",
"agents": ["./agents/my-agent.md"],
"commands": ["./commands/my-command.md"],
"skills": ["./skills/my-skill/"]
}
```
#### Plugin Guidelines
- **Use symlinks**: Plugin content should be symlinks to source files in agents/, prompts/, skills/ directories
- **Valid references**: All items referenced in plugin.json must exist in the repository
- **Declarative content**: Plugin content is specified via `agents`, `commands`, and `skills` arrays in plugin.json — source files live in top-level directories and are materialized into plugins by CI
- **Valid references**: All paths referenced in plugin.json must point to existing source files in the repository
- **Instructions excluded**: Instructions are standalone resources and are not part of plugins
- **Clear purpose**: The plugin should solve a specific problem or workflow
- **Validate before submitting**: Run `npm run plugin:validate` to ensure your plugin is valid
### Working with Plugins
Plugins are installable packages that contain symlinked agents, commands (prompts), and skills organized around a specific theme or workflow.
#### Plugin Structure
```plaintext
plugins/<plugin-name>/
├── .github/plugin/plugin.json # Plugin metadata
├── README.md # Plugin documentation
├── agents/ # Symlinks to agent files (.md)
├── commands/ # Symlinks to prompt files (.md)
└── skills/ # Symlinks to skill folders
```
#### Plugin Guidelines
- **Symlinks, not copies**: Plugin files are symlinks to the source files, avoiding duplication
- **Instructions excluded**: Instructions are not currently supported in plugins
- **Validate before submitting**: Run `npm run plugin:validate` to ensure your plugin is valid
## Submitting Your Contribution
1. **Fork this repository**
@@ -198,11 +169,14 @@ plugins/<plugin-name>/
4. **Run the update script**: `npm start` to update the README with your new file (make sure you run `npm install` first if you haven't already)
- A GitHub Actions workflow will verify that this step was performed correctly
- If the README.md would be modified by running the script, the PR check will fail with a comment showing the required changes
5. **Submit a pull request** with:
5. **Submit a pull request** targeting the `staged` branch with:
- A clear title describing your contribution
- A brief description of what your instruction/prompt does
- Any relevant context or usage notes
> [!IMPORTANT]
> All pull requests should target the **`staged`** branch, not `main`.
> [!NOTE]
> We use [all-contributors](https://github.com/all-contributors/all-contributors) to recognize all types of contributions to the project. Jump to [Contributors Recognition](#contributor-recognition) to learn more!