Skip to content

Move plugin.json to plugin root; declare skills for CLI/marketplace compliance - #122

Merged
gggdttt merged 1 commit into
mainfrom
fix/plugin-manifest-format
Jul 30, 2026
Merged

Move plugin.json to plugin root; declare skills for CLI/marketplace compliance#122
gggdttt merged 1 commit into
mainfrom
fix/plugin-manifest-format

Conversation

@gggdttt

@gggdttt gggdttt commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Problem

The plugin manifest layout did not match the GitHub Copilot CLI plugin reference, which states the manifest must be a plugin.json file at the root of the plugin directory. BCQuality shipped plugin.json only under .claude-plugin/.

To be precise about what was and was not broken:

  • plugin.json does exist (added when BCQuality was packaged as an installable plugin) — so "there is no plugin.json" is not accurate.
  • The absence of a skills array is not a defect: the reference documents skills/ as the default location, and BCQuality's skill already lives at skills/bcquality-al-review/. That is why copilot --plugin-dir <clone> already auto-discovered and registered the skill.
  • The one real deviation from the documented format was the location of plugin.json (.claude-plugin/ instead of the plugin root). --plugin-dir tolerates the .claude-plugin/ location, but it is non-canonical and can be rejected on the stricter marketplace / copilot plugin install owner/repo path.

Change

Mirror the proven microsoft/BC-ALAgents al-review plugin layout:

  • Move plugin.json to the repository (plugin) root.
  • Add an explicit skills: ["./skills/bcquality-al-review/"] array to both plugin.json and marketplace.json. This pins the single real skill and avoids any ambiguity with the loose meta .md files (entry.md, do.md, read.md, write.md) that also sit under skills/.
  • Add repository / license / keywords metadata for parity and completeness.

source: "./" is kept intentionally: the bridge skill's Entry protocol needs the full BCQuality tree (knowledge, tools, layer skills), so the whole repository is the plugin.

Verification

copilot --plugin-dir <clone> was run before and after the change:

  • copilot ... plugin list lists the bcquality plugin in both cases.
  • A live session confirms the bcquality-al-review skill registers at runtime in both cases (identical to the known-good al-review plugin).

No functional change to the already-working --plugin-dir consumption path; this brings the manifest into documented compliance and unblocks the marketplace / plugin install path.

…ompliance

The GitHub Copilot CLI plugin reference requires plugin.json at the root of the plugin directory. BCQuality shipped it only under .claude-plugin/, which is tolerated by --plugin-dir but is non-canonical and can be rejected on the marketplace / 'plugin install owner/repo' path.

Mirror the proven microsoft/BC-ALAgents al-review plugin layout: move plugin.json to the repo (plugin) root and add an explicit skills array plus repository/license/keywords metadata to both plugin.json and marketplace.json. The skills array pins the one real skill (skills/bcquality-al-review/), avoiding ambiguity with the loose meta .md files in skills/.

Verified: 'copilot --plugin-dir <clone>' still loads the bcquality plugin and the bcquality-al-review skill registers at runtime, identical to before.
@gggdttt
gggdttt merged commit 7838962 into main Jul 30, 2026
6 checks passed
gggdttt added a commit that referenced this pull request Jul 30, 2026
Fix bridge skill manifest references after #122 root move
adamLiveware pushed a commit to livewaresolutions/BCQuality that referenced this pull request Jul 31, 2026
microsoft#122 moved the plugin manifest to the root plugin.json (and moved the
bridge skill to skills/bcquality-al-review/), but the bridge SKILL.md
prose still pointed at the now-deleted .claude-plugin/plugin.json:

- ## Plugin root told the host to resolve PLUGIN_ROOT by anchoring on
  .claude-plugin/plugin.json, a marker that no longer exists, so the
  location-based fallback could never find it. Anchor on root plugin.json.
- ## Notes described .claude-plugin/plugin.json as the manifest the plugin
  uses and root plugin.json as a future form -- the reverse of reality
  after microsoft#122. Describe root plugin.json as canonical and .claude-plugin/
  marketplace.json as the marketplace entry.

Doc-only; no behavior change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant