mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 02:15:12 +00:00
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:
@@ -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!
|
||||
|
||||
|
||||
Reference in New Issue
Block a user