feat: add plugin marketplace published from source via dist branch - #831
Open
Marinski wants to merge 1 commit into
Open
feat: add plugin marketplace published from source via dist branch#831Marinski wants to merge 1 commit into
Marinski wants to merge 1 commit into
Conversation
Adds a Claude-format plugin marketplace: each division ships as an installable skills plugin (agency-<division>) for Claude Code, Claude Desktop, VS Code (Agent Plugins, Preview), and GitHub Copilot CLI. Layout per division: - skills/<stem>/SKILL.md — portable Agent Skill (kebab-case name matching the dir, required by VS Code; description from the agent frontmatter). - agents/<stem>.md — byte-identical copy of the source agent, usable as a Claude Code sub-agent. - README.md — per-plugin readme for VS Code's detail pane. - .claude-plugin/plugin.json — identity metadata only (no component path fields; the runtimes discover skills/ and agents/ by default directory). Source/dist split: the generated plugins/ tree and .claude-plugin/marketplace.json are never committed to main. They are gitignored and published by CI to the plugins dist branch, so consumers point at <owner>/agency-agents#plugins. Division folders stay the single source of truth, byte-checked by the validator. - scripts/build-marketplace.py — generates the dist from divisions.json and the on-disk roster. - scripts/check-plugin-marketplace.sh — validates a fresh temp build and guards that main never tracks generated output. - scripts/publish-marketplace.sh — builds, validates, and force-publishes the dist to the plugins branch. - .github/workflows/check-plugin-marketplace.yml — PR gate (fresh temp build + claude plugin validate + registration smoke test). - .github/workflows/publish-plugin-marketplace.yml — publish the dist on push to main. - check-divisions.sh — treats plugins/ as non-division output. - .gitattributes — keep generated .claude-plugin JSON LF on all platforms. - Docs (README Option 5, integrations, CONTRIBUTING) updated for the #plugins consumption path.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Screenshots
Claude Code

VS Code

Opencode (needs extra plugin to enable support for agents and skills auto discovery from Claude/Codex/VSCode etc. https://github.com/Marinski/opencode-skill-autodiscovery)
Summary
Adds a Claude-format plugin marketplace: each division ships as an installable
skills plugin (
agency-<division>) for Claude Code, Claude Desktop, VS Code(Agent Plugins, Preview), and GitHub Copilot CLI.
Per-division layout:
skills/<stem>/SKILL.md— portable Agent Skill (kebab-case name matching thedir, required by VS Code; description taken from the agent frontmatter).
agents/<stem>.md— byte-identical copy of the source agent, usable as aClaude Code sub-agent.
README.md— per-plugin readme for VS Code's detail pane..claude-plugin/plugin.json— identity metadata only (no component-pathfields; the runtimes discover
skills/andagents/by default directory).Source/dist split (matching the repo's "Committed build output" rule in
CONTRIBUTING):
plugins/tree and.claude-plugin/marketplace.jsonare nevercommitted to
main. They are gitignored and published by CI to thepluginsdist branch, so consumers point at
<owner>/agency-agents#plugins.validator.
Changelist
scripts/build-marketplace.py— generates the dist fromdivisions.jsonandthe on-disk roster.
scripts/check-plugin-marketplace.sh— validates a fresh temp build andguards that
mainnever tracks generated output.scripts/publish-marketplace.sh— builds, validates, and force-publishes thedist to the
pluginsbranch..github/workflows/check-plugin-marketplace.yml— PR gate (fresh temp build +claude plugin validate+ registration smoke test)..github/workflows/publish-plugin-marketplace.yml— publish the dist on pushto
main.scripts/check-divisions.sh— treatsplugins/as non-division output..gitattributes— keeps generated.claude-pluginJSON LF on all platforms.#pluginsconsumption path.
Verification
main(5457373); no merge commits.convert.shoutputs are touched, sotest-convert-outputs.shis unaffected (no manifest drift from this PR).consistency (incl.
claude plugin validate+ registration smoke test),test-installer, and the publish job.