mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 02:15:12 +00:00
Deprecate Collections in favour of Plugins
Replace Collections with Plugins as first-class citizens in the repo. With the Copilot CLI v0.409 release making plugins an on-by-default marketplace, collections are redundant overhead. ## What changed ### Plugin Infrastructure - Created eng/validate-plugins.mjs (replaces validate-collections.mjs) - Created eng/create-plugin.mjs (replaces create-collection.mjs) - Enhanced all 42 plugin.json files with tags, featured, display, and items metadata from their corresponding collection.yml files ### Build & Website - Updated eng/update-readme.mjs to generate plugin docs - Updated eng/generate-website-data.mjs to emit plugins.json with full items array for modal rendering - Renamed website collections page to plugins (/plugins/) - Fixed plugin modal to use <div> instead of <pre> for proper styling - Updated README.md featured section from Collections to Plugins ### Documentation & CI - Updated CONTRIBUTING.md, AGENTS.md, copilot-instructions.md, PR template - Updated CI workflows to validate plugins instead of collections - Replaced docs/README.collections.md with docs/README.plugins.md ### Cleanup - Removed eng/validate-collections.mjs, eng/create-collection.mjs, eng/collection-to-plugin.mjs - Removed entire collections/ directory (41 .collection.yml + .md files) - Removed parseCollectionYaml from yaml-parser.mjs - Removed COLLECTIONS_DIR from constants.mjs Closes #711
This commit is contained in:
120
CONTRIBUTING.md
120
CONTRIBUTING.md
@@ -136,112 +136,49 @@ Skills are self-contained folders in the `skills/` directory that include a `SKI
|
||||
3. **Add optional assets**: Keep bundled assets reasonably sized (under 5MB each) and reference them from `SKILL.md`
|
||||
4. **Validate and update docs**: Run `npm run skill:validate` and then `npm run build` to update the generated README tables
|
||||
|
||||
### Adding Collections
|
||||
### Adding Plugins
|
||||
|
||||
Collections group related prompts, instructions, agents, and skills around specific themes or workflows, making it easier for users to discover and adopt comprehensive toolkits.
|
||||
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.
|
||||
|
||||
1. **Create your collection manifest**: Add a new `.collection.yml` file in the `collections/` directory
|
||||
2. **Follow the naming convention**: Use descriptive, lowercase filenames with hyphens (e.g., `python-web-development.collection.yml`)
|
||||
3. **Reference existing items**: Collections should only reference files that already exist in the repository
|
||||
4. **Test your collection**: Verify all referenced files exist and work well together
|
||||
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
|
||||
4. **Test your plugin**: Run `npm run plugin:validate` to verify your plugin structure
|
||||
|
||||
#### Creating a collection
|
||||
#### Creating a plugin
|
||||
|
||||
```bash
|
||||
# Using the creation script
|
||||
node create-collection.js my-collection-id
|
||||
|
||||
# Or using VS Code Task: Ctrl+Shift+P > "Tasks: Run Task" > "create-collection"
|
||||
npm run plugin:create -- --name my-plugin-id
|
||||
```
|
||||
|
||||
#### Example collection format
|
||||
#### Plugin structure
|
||||
|
||||
```yaml
|
||||
id: my-collection-id
|
||||
name: My Collection Name
|
||||
description: A brief description of what this collection provides and who should use it.
|
||||
tags: [tag1, tag2, tag3] # Optional discovery tags
|
||||
items:
|
||||
- path: prompts/my-prompt.prompt.md
|
||||
kind: prompt
|
||||
- path: instructions/my-instructions.instructions.md
|
||||
kind: instruction
|
||||
- path: agents/my-custom.agent.md
|
||||
kind: agent
|
||||
usage: |
|
||||
recommended # or "optional" if not essential to the workflow
|
||||
|
||||
This agent requires the following instructions/prompts/MCPs:
|
||||
- Instruction 1
|
||||
- Prompt 1
|
||||
- MCP 1
|
||||
|
||||
This agent is ideal for...
|
||||
- Use case 1
|
||||
- Use case 2
|
||||
|
||||
Here is an example of how to use it:
|
||||
```markdown, task-plan.prompt.md
|
||||
---
|
||||
mode: task-planner
|
||||
title: Plan microsoft fabric realtime intelligence terraform support
|
||||
---
|
||||
#file: <file including in chat context>
|
||||
Do an action to achieve goal.
|
||||
```
|
||||
|
||||
To get the best results, consider...
|
||||
- Tip 1
|
||||
- Tip 2
|
||||
|
||||
display:
|
||||
ordering: alpha # or "manual" to preserve order above
|
||||
show_badge: false # set to true to show collection badge
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
For full example of usage checkout edge-ai tasks collection:
|
||||
- [edge-ai-tasks.collection.yml](./collections/edge-ai-tasks.collection.yml)
|
||||
- [edge-ai-tasks.md](./collections/edge-ai-tasks.md)
|
||||
#### Plugin Guidelines
|
||||
|
||||
#### Collection Guidelines
|
||||
|
||||
- **Focus on workflows**: Group items that work together for specific use cases
|
||||
- **Reasonable size**: Typically 3-10 items work well
|
||||
- **Test combinations**: Ensure the items complement each other effectively
|
||||
- **Clear purpose**: The collection should solve a specific problem or workflow
|
||||
- **Validate before submitting**: Run `node validate-collections.js` to ensure your manifest is valid
|
||||
- **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
|
||||
- **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 automatically generated from collections. They contain symlinked agents, commands (prompts), and skills from the source collection.
|
||||
|
||||
#### Creating a Plugin from a Collection
|
||||
|
||||
When you create a new collection, you can generate a corresponding plugin:
|
||||
|
||||
```bash
|
||||
# Migrate a collection to a new plugin (first time only)
|
||||
npm run plugin:migrate -- --collection <collection-id>
|
||||
```
|
||||
|
||||
#### Updating Plugins After Collection Changes
|
||||
|
||||
If you modify a collection (add/remove items, update metadata), refresh the corresponding plugin:
|
||||
|
||||
```bash
|
||||
# Refresh a single plugin
|
||||
npm run plugin:refresh -- --collection <collection-id>
|
||||
|
||||
# Refresh all existing plugins
|
||||
npm run plugin:refresh -- --all
|
||||
```
|
||||
Plugins are installable packages that contain symlinked agents, commands (prompts), and skills organized around a specific theme or workflow.
|
||||
|
||||
#### Plugin Structure
|
||||
|
||||
```plaintext
|
||||
plugins/<collection-id>/
|
||||
├── .github/plugin/plugin.json # Plugin metadata (auto-generated)
|
||||
├── README.md # Plugin documentation (auto-generated)
|
||||
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
|
||||
@@ -251,14 +188,13 @@ plugins/<collection-id>/
|
||||
|
||||
- **Symlinks, not copies**: Plugin files are symlinks to the source files, avoiding duplication
|
||||
- **Instructions excluded**: Instructions are not currently supported in plugins
|
||||
- **Auto-generated content**: The `plugin.json` and `README.md` are generated from the collection metadata
|
||||
- **Keep plugins in sync**: After modifying a collection, run `plugin:refresh` to update the plugin
|
||||
- **Validate before submitting**: Run `npm run plugin:validate` to ensure your plugin is valid
|
||||
|
||||
## Submitting Your Contribution
|
||||
|
||||
1. **Fork this repository**
|
||||
2. **Create a new branch** for your contribution
|
||||
3. **Add your instruction, prompt file, chatmode, or collection** following the guidelines above
|
||||
3. **Add your instruction, prompt file, chatmode, or plugin** following the guidelines above
|
||||
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
|
||||
@@ -324,7 +260,7 @@ We welcome many kinds of contributions, including the custom categories below:
|
||||
| **Prompts** | Reusable or one-off prompts for GitHub Copilot | ⌨️ |
|
||||
| **Agents** | Defined GitHub Copilot roles or personalities | 🎭 |
|
||||
| **Skills** | Specialized knowledge of a task for GitHub Copilot | 🧰 |
|
||||
| **Collections** | Curated bundles of related prompts, agents, or instructions | 🎁 |
|
||||
| **Plugins** | Installable packages of related prompts, agents, or skills | 🎁 |
|
||||
|
||||
In addition, all standard contribution types supported by [All Contributors](https://allcontributors.org/emoji-key/) are recognized.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user