You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
Cherrypick Bot
committed
Merge origin/main into eshwar/per-target-mcp-and-plugin-root-files
Reconcile the per-target MCP override + plugin-root files features with
main's target-registry refactor (src/targets.ts -> src/targets/).
- source.ts: kept main's resolveTargetOverride-based readPluginFiles; re-added
the plugin.pluginpack.json "files" map emission and threaded "target" into
readMcpServers so targets/<host>/.mcp.json overrides the base .mcp.json.
- targets.ts deleted (accepted main's refactor); the resolveMcpServers call
moved to src/targets/engine.ts and now passes "target".
- render.ts/types.ts/schema.ts: target param on readMcpServers/resolveMcpServers
and the "files" field on sourcePluginManifestSchema merged cleanly.
- tests/core.test.ts: kept all of main's tests; re-added the 4 feature tests
(per-target MCP override, plugin-root files, collision guard, missing source).
npm run test:all green (80 tests, format/lint/typecheck/build/docs).
Copy file name to clipboardExpand all lines: CHANGELOG.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,30 @@
1
1
# Changelog
2
2
3
+
## v0.8.0 (2026-07-27)
4
+
5
+
#### :rocket: Enhancement
6
+
7
+
-[#18](https://github.com/gleanwork/pluginpack/pull/18) feat: add install-info command and buildInstallSnippet API ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
8
+
-[#12](https://github.com/gleanwork/pluginpack/pull/12) feat: add opt-in update-check hook for claude and cursor targets ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
9
+
10
+
#### :bug: Bug Fix
11
+
12
+
-[#20](https://github.com/gleanwork/pluginpack/pull/20) fix(deps): resolve brace-expansion DoS advisory; scope audit to production deps ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
13
+
-[#16](https://github.com/gleanwork/pluginpack/pull/16) fix: correct Codex plugin output for the target registry ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
-[#17](https://github.com/gleanwork/pluginpack/pull/17) refactor: delete legacy per-target emitters/validators now that all targets are migrated ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
19
+
-[#19](https://github.com/gleanwork/pluginpack/pull/19) refactor: migrate claude to the target registry (no behavior change) ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
20
+
-[#14](https://github.com/gleanwork/pluginpack/pull/14) refactor: migrate cursor to the target registry ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
21
+
22
+
#### Committers: 1
23
+
24
+
- Steve Calvert ([@steve-calvert-glean](https://github.com/steve-calvert-glean))
25
+
26
+
27
+
3
28
## 0.7.0 (2026-07-13)
4
29
5
30
- Add a native Codex target that emits `.agents/plugins/marketplace.json`,
Copy file name to clipboardExpand all lines: CONFORMANCE.md
+75-9Lines changed: 75 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ Each app's source of truth is something other than a stable schema URL:
14
14
|`cursor`| Glean-authored schemas in `gleanwork/cursor-plugins/schemas/`|**No upstream.** The schema `$id` (`https://cursor.com/schemas/cursor-plugin/...`) 500s; no Cursor-published schema found. |
15
15
|`antigravity`| Antigravity CLI plugin docs (`plugin.json`, optional `mcp_config.json`) |**No.** Defined by product docs and observed CLI layout, not a published schema. |
16
16
|`copilot`|[`github/copilot-plugins`](https://github.com/github/copilot-plugins) — a Claude-marketplace-derived format |**Structural.** Copilot shares the Claude marketplace base but extends entries (`skills[]`, `mcpServers` as a path), which `claude plugin validate` rejects — so conformance is asserted structurally against the official format. |
17
-
|`codex`|[OpenAI Codex CLI plugin docs](https://developers.openai.com/codex/plugins/build) (`.codex-plugin/plugin.json` + `.agents/plugins/marketplace.json`) |**No published schema.** Defined by product docs; conformance is asserted structurally against the documented format (retrieved 2026-06-17). |
17
+
|`codex`|[OpenAI Codex CLI plugin docs](https://developers.openai.com/codex/plugins/build) (`.codex-plugin/plugin.json` + `.agents/plugins/marketplace.json`) |**No published schema.** Defined by product docs; conformance is asserted structurally against the documented format (retrieved 2026-07-26). |
18
18
19
19
## Oracles the harness uses
20
20
@@ -48,14 +48,80 @@ against a temp fixture via [`bintastic`](https://github.com/scalvert/bintastic).
|`cursor`| No CLI equivalent exists. Prints the repo URL, pasted into Dashboard → Plugins → Team Marketplaces → "Import from Repo." |<https://cursor.com/docs/plugins>| 2026-07-25 |
114
+
115
+
`claude`'s two-step sequence is not symmetric with `codex`/`copilot`'s shell
116
+
commands: `/plugin marketplace add` is slash-only inside an active Claude Code
117
+
session, with no shell equivalent — but once a marketplace is already added,
118
+
`claude plugin install <name>@<marketplace>` does work as a standalone shell
119
+
command, surfaced as a secondary `note`.
120
+
121
+
Every target resolves to `userConfigurable: true` today;
122
+
`getUnsupportedInstallTargets()` returns `[]`. The `false` branch of the
123
+
`InstallSnippet` union exists for forward-compatibility, not because any
0 commit comments