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] 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",