From 198868caf3ffc1499e92cb2adf1fab40c4bb32d6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:13:52 +0000 Subject: [PATCH 2/5] Add OSPO Sponsorship collection and plugin for sponsor-finder skill Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com> --- collections/ospo-sponsorship.collection.yml | 15 +++++++++++ collections/ospo-sponsorship.md | 22 ++++++++++++++++ docs/README.collections.md | 1 + .../.github/plugin/plugin.json | 10 +++++++ plugins/ospo-sponsorship/README.md | 26 +++++++++++++++++++ .../ospo-sponsorship/skills/sponsor-finder | 1 + 6 files changed, 75 insertions(+) create mode 100644 collections/ospo-sponsorship.collection.yml create mode 100644 collections/ospo-sponsorship.md create mode 100644 plugins/ospo-sponsorship/.github/plugin/plugin.json create mode 100644 plugins/ospo-sponsorship/README.md create mode 120000 plugins/ospo-sponsorship/skills/sponsor-finder diff --git a/collections/ospo-sponsorship.collection.yml b/collections/ospo-sponsorship.collection.yml new file mode 100644 index 00000000..8d547734 --- /dev/null +++ b/collections/ospo-sponsorship.collection.yml @@ -0,0 +1,15 @@ +id: ospo-sponsorship +name: Open Source Sponsorship +description: Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms. +tags: [ospo, sponsorship, open-source, funding, github-sponsors] +items: + # Agent Skills + - path: skills/sponsor-finder/SKILL.md + kind: skill + usage: | + Find which of a GitHub repository's dependencies are sponsorable via GitHub Sponsors. + Invoke by providing a GitHub owner/repo (e.g., "find sponsorable dependencies in expressjs/express"). +display: + ordering: alpha # or "manual" to preserve the order above + show_badge: true # set to true to show collection badge on items + featured: false diff --git a/collections/ospo-sponsorship.md b/collections/ospo-sponsorship.md new file mode 100644 index 00000000..f620a905 --- /dev/null +++ b/collections/ospo-sponsorship.md @@ -0,0 +1,22 @@ +# Open Source Sponsorship + +Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms. + +**Tags:** ospo, sponsorship, open-source, funding, github-sponsors + +## Items in this Collection + +| Title | Type | Description | +| ----- | ---- | ----------- | +| [Sponsor Finder](../skills/sponsor-finder/SKILL.md) | Skill | Find which of a GitHub repository's dependencies are sponsorable via GitHub Sponsors. Uses deps.dev API for dependency resolution across npm, PyPI, Cargo, Go, RubyGems, Maven, and NuGet. Checks npm funding metadata, FUNDING.yml files, and web search. Verifies every link. Shows direct and transitive dependencies with OSSF Scorecard health data. Invoke by providing a GitHub owner/repo (e.g. "find sponsorable dependencies in expressjs/express"). [see usage](#sponsor-finder) | + +## Collection Usage + +### Sponsor Finder + +Find which of a GitHub repository's dependencies are sponsorable via GitHub Sponsors. +Invoke by providing a GitHub owner/repo (e.g., "find sponsorable dependencies in expressjs/express"). + +--- + +*This collection includes 1 curated items for **Open Source Sponsorship**.* \ No newline at end of file diff --git a/docs/README.collections.md b/docs/README.collections.md index c246b36f..8dfa74ca 100644 --- a/docs/README.collections.md +++ b/docs/README.collections.md @@ -35,6 +35,7 @@ Curated collections of related prompts, instructions, and agents organized aroun | [Java MCP Server Development](../collections/java-mcp-development.md) | Complete toolkit for building Model Context Protocol servers in Java using the official MCP Java SDK with reactive streams and Spring Boot integration. | 3 items | java, mcp, model-context-protocol, server-development, sdk, reactive-streams, spring-boot, reactor | | [Kotlin MCP Server Development](../collections/kotlin-mcp-development.md) | Complete toolkit for building Model Context Protocol (MCP) servers in Kotlin using the official io.modelcontextprotocol:kotlin-sdk library. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance. | 3 items | kotlin, mcp, model-context-protocol, kotlin-multiplatform, server-development, ktor | | [MCP-based M365 Agents](../collections/mcp-m365-copilot.md) | Comprehensive collection for building declarative agents with Model Context Protocol integration for Microsoft 365 Copilot | 5 items | mcp, m365-copilot, declarative-agents, api-plugins, model-context-protocol, adaptive-cards | +| [Open Source Sponsorship](../collections/ospo-sponsorship.md) | Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms. | 1 items | ospo, sponsorship, open-source, funding, github-sponsors | | [OpenAPI to Application - C# .NET](../collections/openapi-to-application-csharp-dotnet.md) | Generate production-ready .NET applications from OpenAPI specifications. Includes ASP.NET Core project scaffolding, controller generation, entity framework integration, and C# best practices. | 3 items | openapi, code-generation, api, csharp, dotnet, aspnet | | [OpenAPI to Application - Go](../collections/openapi-to-application-go.md) | Generate production-ready Go applications from OpenAPI specifications. Includes project scaffolding, handler generation, middleware setup, and Go best practices for REST APIs. | 3 items | openapi, code-generation, api, go, golang | | [OpenAPI to Application - Java Spring Boot](../collections/openapi-to-application-java-spring-boot.md) | Generate production-ready Spring Boot applications from OpenAPI specifications. Includes project scaffolding, REST controller generation, service layer organization, and Spring Boot best practices. | 3 items | openapi, code-generation, api, java, spring-boot | diff --git a/plugins/ospo-sponsorship/.github/plugin/plugin.json b/plugins/ospo-sponsorship/.github/plugin/plugin.json new file mode 100644 index 00000000..b5508ba7 --- /dev/null +++ b/plugins/ospo-sponsorship/.github/plugin/plugin.json @@ -0,0 +1,10 @@ +{ + "name": "ospo-sponsorship", + "description": "Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms.", + "version": "1.0.0", + "author": { + "name": "Awesome Copilot Community" + }, + "repository": "https://github.com/github/awesome-copilot", + "license": "MIT" +} diff --git a/plugins/ospo-sponsorship/README.md b/plugins/ospo-sponsorship/README.md new file mode 100644 index 00000000..315ceece --- /dev/null +++ b/plugins/ospo-sponsorship/README.md @@ -0,0 +1,26 @@ +# Open Source Sponsorship Plugin + +Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms. + +## Installation + +```bash +# Using Copilot CLI +copilot plugin install ospo-sponsorship@awesome-copilot +``` + +## What's Included + +### Skills + +| Skill | Description | +|-------|-------------| +| `SKILL.md` | Find which of a GitHub repository's dependencies are sponsorable via GitHub Sponsors. Uses deps.dev API for dependency resolution across npm, PyPI, Cargo, Go, RubyGems, Maven, and NuGet. Checks npm funding metadata, FUNDING.yml files, and web search. Verifies every link. Shows direct and transitive dependencies with OSSF Scorecard health data. Invoke by providing a GitHub owner/repo (e.g. "find sponsorable dependencies in expressjs/express"). | + +## Source + +This plugin is part of [Awesome Copilot](https://github.com/github/awesome-copilot), a community-driven collection of GitHub Copilot extensions. + +## License + +MIT diff --git a/plugins/ospo-sponsorship/skills/sponsor-finder b/plugins/ospo-sponsorship/skills/sponsor-finder new file mode 120000 index 00000000..d9aa6da7 --- /dev/null +++ b/plugins/ospo-sponsorship/skills/sponsor-finder @@ -0,0 +1 @@ +../../../skills/sponsor-finder \ No newline at end of file From ec3e0e66517e0a6d644e25bfea9d73ad0c9e4569 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:49:59 +0000 Subject: [PATCH 4/5] Add missing plugins to marketplace.json and create automation script - Add context-engineering, gem-team, and ospo-sponsorship to marketplace.json - Create eng/generate-marketplace.mjs to automatically generate marketplace.json - Update package.json build script to include marketplace generation - Update GitHub workflow to trigger on plugin changes Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com> --- .github/plugin/marketplace.json | 72 +++++++++++-------- .github/workflows/validate-readme.yml | 1 + eng/generate-marketplace.mjs | 99 +++++++++++++++++++++++++++ package.json | 3 +- 4 files changed, 147 insertions(+), 28 deletions(-) create mode 100755 eng/generate-marketplace.mjs diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index f98414ef..3921aff4 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -19,7 +19,7 @@ { "name": "azure-cloud-development", "source": "./plugins/azure-cloud-development", - "description": "Azure cloud development tools including Infrastructure as Code, architecture patterns, and cost optimization.", + "description": "Comprehensive Azure cloud development tools including Infrastructure as Code, serverless functions, architecture patterns, and cost optimization for building scalable cloud applications.", "version": "1.0.0" }, { @@ -34,10 +34,16 @@ "description": "Tools for REPL-first Clojure workflows featuring Clojure instructions, the interactive programming chat mode and supporting guidance.", "version": "1.0.0" }, + { + "name": "context-engineering", + "source": "./plugins/context-engineering", + "description": "Tools and techniques for maximizing GitHub Copilot effectiveness through better context management. Includes guidelines for structuring code, an agent for planning multi-file changes, and prompts for context-aware development.", + "version": "1.0.0" + }, { "name": "copilot-sdk", "source": "./plugins/copilot-sdk", - "description": "Build applications with the GitHub Copilot SDK across multiple programming languages. Includes comprehensive instructions for C#, Go, Node.js/TypeScript, and Python.", + "description": "Build applications with the GitHub Copilot SDK across multiple programming languages. Includes comprehensive instructions for C#, Go, Node.js/TypeScript, and Python to help you create AI-powered applications.", "version": "1.0.0" }, { @@ -49,7 +55,7 @@ { "name": "csharp-mcp-development", "source": "./plugins/csharp-mcp-development", - "description": "Complete toolkit for building Model Context Protocol (MCP) servers in C# using the official SDK.", + "description": "Complete toolkit for building Model Context Protocol (MCP) servers in C# using the official SDK. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.", "version": "1.0.0" }, { @@ -61,7 +67,7 @@ { "name": "dataverse-sdk-for-python", "source": "./plugins/dataverse-sdk-for-python", - "description": "Comprehensive collection for building production-ready Python integrations with Microsoft Dataverse.", + "description": "Comprehensive collection for building production-ready Python integrations with Microsoft Dataverse. Includes official documentation, best practices, advanced features, file operations, and code generation prompts.", "version": "1.0.0" }, { @@ -82,10 +88,16 @@ "description": "Essential prompts, instructions, and chat modes for modern frontend web development including React, Angular, Vue, TypeScript, and CSS frameworks.", "version": "1.0.0" }, + { + "name": "gem-team", + "source": "./plugins/gem-team", + "description": "A modular multi-agent team for complex project execution with DAG-based planning, parallel execution, TDD verification, and automated testing.", + "version": "1.0.0" + }, { "name": "go-mcp-development", "source": "./plugins/go-mcp-development", - "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk.", + "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.", "version": "1.0.0" }, { @@ -103,91 +115,97 @@ { "name": "kotlin-mcp-development", "source": "./plugins/kotlin-mcp-development", - "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Kotlin using the official io.modelcontextprotocol:kotlin-sdk library.", + "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Kotlin using the official io.modelcontextprotocol:kotlin-sdk library. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.", "version": "1.0.0" }, { "name": "mcp-m365-copilot", "source": "./plugins/mcp-m365-copilot", - "description": "Comprehensive collection for building declarative agents with Model Context Protocol integration for Microsoft 365 Copilot.", + "description": "Comprehensive collection for building declarative agents with Model Context Protocol integration for Microsoft 365 Copilot", "version": "1.0.0" }, { "name": "openapi-to-application-csharp-dotnet", "source": "./plugins/openapi-to-application-csharp-dotnet", - "description": "Generate production-ready .NET applications from OpenAPI specifications. Includes ASP.NET Core project scaffolding, controller generation, and entity framework integration.", + "description": "Generate production-ready .NET applications from OpenAPI specifications. Includes ASP.NET Core project scaffolding, controller generation, entity framework integration, and C# best practices.", "version": "1.0.0" }, { "name": "openapi-to-application-go", "source": "./plugins/openapi-to-application-go", - "description": "Generate production-ready Go applications from OpenAPI specifications. Includes project scaffolding, handler generation, middleware setup, and Go best practices.", + "description": "Generate production-ready Go applications from OpenAPI specifications. Includes project scaffolding, handler generation, middleware setup, and Go best practices for REST APIs.", "version": "1.0.0" }, { "name": "openapi-to-application-java-spring-boot", "source": "./plugins/openapi-to-application-java-spring-boot", - "description": "Generate production-ready Spring Boot applications from OpenAPI specifications. Includes project scaffolding, REST controller generation, and service layer organization.", + "description": "Generate production-ready Spring Boot applications from OpenAPI specifications. Includes project scaffolding, REST controller generation, service layer organization, and Spring Boot best practices.", "version": "1.0.0" }, { "name": "openapi-to-application-nodejs-nestjs", "source": "./plugins/openapi-to-application-nodejs-nestjs", - "description": "Generate production-ready NestJS applications from OpenAPI specifications. Includes project scaffolding, controller and service generation, and TypeScript best practices.", + "description": "Generate production-ready NestJS applications from OpenAPI specifications. Includes project scaffolding, controller and service generation, TypeScript best practices, and enterprise patterns.", "version": "1.0.0" }, { "name": "openapi-to-application-python-fastapi", "source": "./plugins/openapi-to-application-python-fastapi", - "description": "Generate production-ready FastAPI applications from OpenAPI specifications. Includes project scaffolding, route generation, and dependency injection.", + "description": "Generate production-ready FastAPI applications from OpenAPI specifications. Includes project scaffolding, route generation, dependency injection, and Python best practices for async APIs.", + "version": "1.0.0" + }, + { + "name": "ospo-sponsorship", + "source": "./plugins/ospo-sponsorship", + "description": "Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms.", "version": "1.0.0" }, { "name": "partners", "source": "./plugins/partners", - "description": "Custom agents that have been created by GitHub partners.", + "description": "Custom agents that have been created by GitHub partners", "version": "1.0.0" }, { "name": "pcf-development", "source": "./plugins/pcf-development", - "description": "Complete toolkit for developing custom code components using Power Apps Component Framework for model-driven and canvas apps.", + "description": "Complete toolkit for developing custom code components using Power Apps Component Framework for model-driven and canvas apps", "version": "1.0.0" }, { "name": "php-mcp-development", "source": "./plugins/php-mcp-development", - "description": "Comprehensive resources for building Model Context Protocol servers using the official PHP SDK with attribute-based discovery.", + "description": "Comprehensive resources for building Model Context Protocol servers using the official PHP SDK with attribute-based discovery, including best practices, project generation, and expert assistance", "version": "1.0.0" }, { "name": "power-apps-code-apps", "source": "./plugins/power-apps-code-apps", - "description": "Complete toolkit for Power Apps Code Apps development including project scaffolding, development standards, and expert guidance.", + "description": "Complete toolkit for Power Apps Code Apps development including project scaffolding, development standards, and expert guidance for building code-first applications with Power Platform integration.", "version": "1.0.0" }, { "name": "power-bi-development", "source": "./plugins/power-bi-development", - "description": "Comprehensive Power BI development resources including data modeling, DAX optimization, performance tuning, and visualization design.", + "description": "Comprehensive Power BI development resources including data modeling, DAX optimization, performance tuning, visualization design, security best practices, and DevOps/ALM guidance for building enterprise-grade Power BI solutions.", "version": "1.0.0" }, { "name": "power-platform-mcp-connector-development", "source": "./plugins/power-platform-mcp-connector-development", - "description": "Complete toolkit for developing Power Platform custom connectors with Model Context Protocol integration for Microsoft Copilot Studio.", + "description": "Complete toolkit for developing Power Platform custom connectors with Model Context Protocol integration for Microsoft Copilot Studio", "version": "1.0.0" }, { "name": "project-planning", "source": "./plugins/project-planning", - "description": "Tools and guidance for software project planning, feature breakdown, epic management, implementation planning, and task organization.", + "description": "Tools and guidance for software project planning, feature breakdown, epic management, implementation planning, and task organization for development teams.", "version": "1.0.0" }, { "name": "python-mcp-development", "source": "./plugins/python-mcp-development", - "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Python using the official SDK with FastMCP.", + "description": "Complete toolkit for building Model Context Protocol (MCP) servers in Python using the official SDK with FastMCP. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.", "version": "1.0.0" }, { @@ -199,13 +217,13 @@ { "name": "rust-mcp-development", "source": "./plugins/rust-mcp-development", - "description": "Build high-performance Model Context Protocol servers in Rust using the official rmcp SDK with async/await and procedural macros.", + "description": "Build high-performance Model Context Protocol servers in Rust using the official rmcp SDK with async/await, procedural macros, and type-safe implementations.", "version": "1.0.0" }, { "name": "security-best-practices", "source": "./plugins/security-best-practices", - "description": "Security frameworks, accessibility guidelines, performance optimization, and code quality best practices.", + "description": "Security frameworks, accessibility guidelines, performance optimization, and code quality best practices for building secure, maintainable, and high-performance applications.", "version": "1.0.0" }, { @@ -217,7 +235,7 @@ { "name": "structured-autonomy", "source": "./plugins/structured-autonomy", - "description": "Premium planning, thrifty implementation.", + "description": "Premium planning, thrifty implementation", "version": "1.0.0" }, { @@ -229,25 +247,25 @@ { "name": "technical-spike", "source": "./plugins/technical-spike", - "description": "Tools for creation, management and research of technical spikes to reduce unknowns and assumptions before specification and implementation.", + "description": "Tools for creation, management and research of technical spikes to reduce unknowns and assumptions before proceeding to specification and implementation of solutions.", "version": "1.0.0" }, { "name": "testing-automation", "source": "./plugins/testing-automation", - "description": "Comprehensive collection for writing tests, test automation, and TDD including unit tests, integration tests, and end-to-end testing.", + "description": "Comprehensive collection for writing tests, test automation, and test-driven development including unit tests, integration tests, and end-to-end testing strategies.", "version": "1.0.0" }, { "name": "typescript-mcp-development", "source": "./plugins/typescript-mcp-development", - "description": "Complete toolkit for building Model Context Protocol (MCP) servers in TypeScript/Node.js using the official SDK.", + "description": "Complete toolkit for building Model Context Protocol (MCP) servers in TypeScript/Node.js using the official SDK. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.", "version": "1.0.0" }, { "name": "typespec-m365-copilot", "source": "./plugins/typespec-m365-copilot", - "description": "Comprehensive collection of prompts, instructions, and resources for building declarative agents and API plugins using TypeSpec for Microsoft 365 Copilot.", + "description": "Comprehensive collection of prompts, instructions, and resources for building declarative agents and API plugins using TypeSpec for Microsoft 365 Copilot extensibility.", "version": "1.0.0" } ] diff --git a/.github/workflows/validate-readme.yml b/.github/workflows/validate-readme.yml index a4b2d05d..1969ad9e 100644 --- a/.github/workflows/validate-readme.yml +++ b/.github/workflows/validate-readme.yml @@ -8,6 +8,7 @@ on: - "prompts/**" - "agents/**" - "collections/**" + - "plugins/**" - "*.js" - "README.md" - "docs/**" diff --git a/eng/generate-marketplace.mjs b/eng/generate-marketplace.mjs new file mode 100755 index 00000000..80139c85 --- /dev/null +++ b/eng/generate-marketplace.mjs @@ -0,0 +1,99 @@ +#!/usr/bin/env node + +import fs from "fs"; +import path from "path"; +import { ROOT_FOLDER } from "./constants.mjs"; + +const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins"); +const MARKETPLACE_FILE = path.join(ROOT_FOLDER, ".github", "plugin", "marketplace.json"); + +/** + * Read plugin metadata from plugin.json file + * @param {string} pluginDir - Path to plugin directory + * @returns {object|null} - Plugin metadata or null if not found + */ +function readPluginMetadata(pluginDir) { + const pluginJsonPath = path.join(pluginDir, ".github", "plugin", "plugin.json"); + + if (!fs.existsSync(pluginJsonPath)) { + console.warn(`Warning: No plugin.json found for ${path.basename(pluginDir)}`); + return null; + } + + try { + const content = fs.readFileSync(pluginJsonPath, "utf8"); + return JSON.parse(content); + } catch (error) { + console.error(`Error reading plugin.json for ${path.basename(pluginDir)}:`, error.message); + return null; + } +} + +/** + * Generate marketplace.json from plugin directories + */ +function generateMarketplace() { + console.log("Generating marketplace.json..."); + + if (!fs.existsSync(PLUGINS_DIR)) { + console.error(`Error: Plugins directory not found at ${PLUGINS_DIR}`); + process.exit(1); + } + + // Read all plugin directories + const pluginDirs = fs.readdirSync(PLUGINS_DIR, { withFileTypes: true }) + .filter(entry => entry.isDirectory()) + .map(entry => entry.name) + .sort(); + + console.log(`Found ${pluginDirs.length} plugin directories`); + + // Read metadata for each plugin + const plugins = []; + for (const dirName of pluginDirs) { + const pluginPath = path.join(PLUGINS_DIR, dirName); + const metadata = readPluginMetadata(pluginPath); + + if (metadata) { + plugins.push({ + name: metadata.name, + source: `./plugins/${dirName}`, + description: metadata.description, + version: metadata.version || "1.0.0" + }); + console.log(`āœ“ Added plugin: ${metadata.name}`); + } else { + console.log(`āœ— Skipped: ${dirName} (no valid plugin.json)`); + } + } + + // Create marketplace.json structure + const marketplace = { + name: "awesome-copilot", + metadata: { + description: "Community-driven collection of GitHub Copilot plugins, agents, prompts, and skills", + version: "1.0.0", + pluginRoot: "./plugins" + }, + owner: { + name: "GitHub", + email: "copilot@github.com" + }, + plugins: plugins + }; + + // Ensure directory exists + const marketplaceDir = path.dirname(MARKETPLACE_FILE); + if (!fs.existsSync(marketplaceDir)) { + fs.mkdirSync(marketplaceDir, { recursive: true }); + } + + // Write marketplace.json + fs.writeFileSync(MARKETPLACE_FILE, JSON.stringify(marketplace, null, 2) + "\n"); + + console.log(`\nāœ“ Successfully generated marketplace.json with ${plugins.length} plugins`); + console.log(` Location: ${MARKETPLACE_FILE}`); +} + +// Run the script +generateMarketplace(); diff --git a/package.json b/package.json index a5ece157..5eff7968 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "private": true, "scripts": { "start": "npm run build", - "build": "node ./eng/update-readme.mjs", + "build": "node ./eng/update-readme.mjs && node ./eng/generate-marketplace.mjs", "contributors:add": "all-contributors add", "contributors:report": "node ./eng/contributor-report.mjs", "contributors:generate": "all-contributors generate", @@ -17,6 +17,7 @@ "skill:create": "node ./eng/create-skill.mjs", "plugin:migrate": "node ./eng/collection-to-plugin.mjs", "plugin:refresh": "PLUGIN_MODE=refresh node ./eng/collection-to-plugin.mjs", + "plugin:generate-marketplace": "node ./eng/generate-marketplace.mjs", "website:data": "node ./eng/generate-website-data.mjs", "website:dev": "npm run website:data && npm run --prefix website dev", "website:build": "npm run build && npm run website:data && npm run --prefix website build", From c8c907815d6d58cee0acf4e7ac451ad605049cb9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:51:52 +0000 Subject: [PATCH 5/5] Add documentation for marketplace.json generation - Document generate-marketplace.mjs in eng/README.md - Add plugin folder documentation to AGENTS.md - Update setup commands to include marketplace generation - Add plugin checklist to code review guidelines Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com> --- AGENTS.md | 33 +++++++++++++++++++++++++++++++-- eng/README.md | 26 +++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4af726cc..b397671e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -32,9 +32,12 @@ The Awesome GitHub Copilot repository is a community-driven collection of custom # Install dependencies npm ci -# Build the project (generates README.md) +# Build the project (generates README.md and marketplace.json) npm run build +# Generate marketplace.json only +npm run plugin:generate-marketplace + # Validate collection manifests npm run collection:validate @@ -93,9 +96,18 @@ All agent files (`*.agent.md`), prompt files (`*.prompt.md`), and instruction fi - Follow the [GitHub Copilot hooks specification](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks) - Optionally includes `tags` field for categorization +#### Plugin Folders (plugins/*) +- Each plugin is a folder containing a `.github/plugin/plugin.json` file with metadata +- plugin.json must have `name` field (matching the folder name) +- plugin.json must have `description` field (describing the plugin's purpose) +- plugin.json must have `version` field (semantic version, e.g., "1.0.0") +- Plugin folders can contain any combination of agents, prompts, instructions, skills, and hooks +- The `marketplace.json` file 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, prompt, instruction, skill, or hook: +When adding a new agent, prompt, instruction, skill, hook, or plugin: **For Agents, Prompts, and Instructions:** 1. Create the file with proper front matter @@ -121,6 +133,14 @@ When adding a new agent, prompt, instruction, skill, or hook: 5. Update the README.md by running: `npm run build` 6. Verify the skill appears in the generated README +**For Plugins:** +1. Create a new folder in `plugins/` with a descriptive name (lowercase with hyphens) +2. Create `.github/plugin/plugin.json` with metadata (name, description, version) +3. Add agents, prompts, instructions, skills, or hooks to the plugin folder +4. Run `npm run build` to update README.md and marketplace.json +5. Verify the plugin appears in `.github/plugin/marketplace.json` +6. Test plugin installation: `copilot plugin install @awesome-copilot` + ### Testing Instructions ```bash @@ -219,6 +239,15 @@ For hook folders (hooks/*/): - [ ] Follows [GitHub Copilot hooks specification](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks) - [ ] Optionally includes `tags` array field for categorization +For plugin folders (plugins/*/): +- [ ] Folder contains a `.github/plugin/plugin.json` file with metadata +- [ ] plugin.json has `name` field matching folder name (lowercase with hyphens) +- [ ] plugin.json has non-empty `description` field +- [ ] plugin.json has `version` field (semantic version, e.g., "1.0.0") +- [ ] Folder name is lower case with hyphens +- [ ] Plugin resources (agents, prompts, etc.) follow their respective guidelines +- [ ] Run `npm run build` to verify marketplace.json is updated correctly + ## Contributing This is a community-driven project. Contributions are welcome! Please see: diff --git a/eng/README.md b/eng/README.md index ff95c85d..5306315b 100644 --- a/eng/README.md +++ b/eng/README.md @@ -1,6 +1,30 @@ # Contributor Reporting (Maintainers) 🚧 -This directory contains a lightweight helper to generate human-readable reports about missing contributors. +This directory contains build scripts and utilities for maintaining the repository. + +## Build Scripts + +### `update-readme.mjs` +Generates the main README.md and documentation files from the repository content (agents, prompts, instructions, skills, hooks, collections). + +### `generate-marketplace.mjs` +Automatically generates `.github/plugin/marketplace.json` from all plugin directories in the `plugins/` folder. This file is used by the GitHub Copilot CLI to discover and install plugins from this repository. + +**How it works:** +- Scans all directories in `plugins/` +- Reads each plugin's `.github/plugin/plugin.json` for metadata +- Generates a consolidated `marketplace.json` with all available plugins +- Runs automatically as part of `npm run build` + +**To run manually:** +```bash +npm run plugin:generate-marketplace +``` + +### `generate-website-data.mjs` +Generates JSON data files for the website from repository content. + +## Contributor Tools - `contributor-report.mjs` — generates a markdown report of merged PRs for missing contributors (includes shared helpers). - `add-missing-contributors.mjs` — on-demand maintainer script to automatically add missing contributors to `.all-contributorsrc` (infers contribution types from merged PR files, then runs the all-contributors CLI).