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:
Aaron Powell
2026-02-13 15:38:37 +11:00
parent de0611d0ec
commit 7a003fc75a
154 changed files with 2603 additions and 5790 deletions

View File

@@ -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.