name: "plugin-overlay-bundling" description: "Pattern for keeping published plugin templates stable while layering source-owned helper files and skill content."
Context
Use this when plugin artifacts are built by copying validated templates from a published/distribution repo, but the source repo still needs to own release-coupled helper files or skill content.
Pattern
- Keep the validated published plugin structure as the base copy input.
- Add a source-owned overlay directory (for example
.github/plugins/<plugin-name>/) for files that should be authored in the source repo:- plugin README updates
- install helpers
- wrapper scripts
- In the build script, apply the overlay after copying the template, then inject version metadata.
- Prefer keeping published plugins lightweight; ship binaries through the main release artifacts unless the marketplace repo can safely host them.
- Update the release workflow and source-side sync gate to watch both the build script and the overlay directory.
- If the published marketplace repo is mid-migration, make the automation prefer the canonical marketplace manifest path/schema (
.github/plugin/marketplace.json,metadata.version) but tolerate the legacy path/schema (marketplace.json,version) until the published repo is updated.
Why
- Preserves the “copy validated templates” discipline without forcing the published repo to be the only authoring surface.
- Avoids pushing oversized release binaries into the published marketplace repo.
- Keeps plugin-specific helper scripts versioned in the source repo, where product/release changes are made.
- Lets source automation become more spec-compliant without forcing an all-at-once published-repo migration.
Example
scripts/Build-Plugins.ps1copies../mcp-server-excel-plugins/plugins/excel-cli, applies.github/plugins/excel-cli/, and refreshes the skill content without adding release binaries.publish-plugins.ymlcan publish the plugin bundle directly afterBuild-Plugins.ps1because the standalone CLI remains distributed through GitHub Releases and NuGet.