universal-plugin 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/bin/upx.mjs +12 -5
- package/com.github.copilot/agents/agentskills-specialist.agent.md +132 -0
- package/dist/cli.mjs +5806 -261
- package/governances/plugin-design.md +14 -0
- package/package.json +4 -1
- package/plugin.json +1 -1
- package/readme.md +12 -5
- package/schema/README.md +10 -0
- package/schema/claude-code-marketplace.json +1939 -0
- package/schema/extension.schema.json +842 -0
- package/skills/adopt-upx/README.md +4 -4
- package/skills/adopt-upx/SKILL.md +4 -4
- package/skills/doctor/README.md +3 -4
- package/skills/doctor/SKILL.md +44 -14
- package/skills/doctor/scripts/doctor.mjs +145 -37
- package/skills/{init → init-universal-plugin}/README.md +5 -2
- package/skills/{init → init-universal-plugin}/SKILL.md +38 -13
- package/skills/init-universal-plugin/references/adopt.md +206 -0
- package/skills/{init → init-universal-plugin}/references/detection.md +8 -2
- package/skills/{init → init-universal-plugin}/references/standard.md +5 -1
- package/skills/{init → init-universal-plugin}/references/vendors/claude-code.md +1 -1
- package/skills/init-universal-plugin/references/vendors/copilot-cli.md +201 -0
- package/skills/marketplace/SKILL.md +1 -1
- package/skills/migrate-plugin/SKILL.md +140 -26
- package/skills/migrate-plugin/evals/evals.json +6 -0
- package/skills/migrate-plugin/evals/trigger-queries.json +18 -0
- package/skills/publish-plugin/README.md +35 -0
- package/skills/publish-plugin/SKILL.md +118 -19
- package/skills/publish-plugin/evals/evals.json +12 -0
- package/skills/remove-plugin/README.md +1 -1
- package/skills/remove-plugin/SKILL.md +2 -2
- package/skills/version/SKILL.md +2 -2
- package/dist/run.mjs +0 -271
- package/skills/init/references/adopt.md +0 -118
- package/skills/init/references/vendors/copilot-cli.md +0 -53
- /package/skills/{init → init-universal-plugin}/assets/templates/agent.md +0 -0
- /package/skills/{init → init-universal-plugin}/assets/templates/command.md +0 -0
- /package/skills/{init → init-universal-plugin}/assets/templates/hooks.json +0 -0
- /package/skills/{init → init-universal-plugin}/assets/templates/plugin.json +0 -0
- /package/skills/{init → init-universal-plugin}/assets/templates/setup-command.md +0 -0
- /package/skills/{init → init-universal-plugin}/assets/templates/skill.md +0 -0
- /package/skills/{init → init-universal-plugin}/references/create.md +0 -0
- /package/skills/{init → init-universal-plugin}/references/frontmatter.md +0 -0
- /package/skills/{init → init-universal-plugin}/references/update.md +0 -0
- /package/skills/{init → init-universal-plugin}/references/vendors/codex.md +0 -0
- /package/skills/{init → init-universal-plugin}/references/vendors/cursor.md +0 -0
- /package/skills/{init → init-universal-plugin}/scripts/init.mjs +0 -0
|
@@ -245,6 +245,20 @@ ln -sf .mcp.json mcp.json
|
|
|
245
245
|
|
|
246
246
|
If the repo needs explicit symlink tracking: `mcp.json symlink` in `.gitattributes`. MCP server startup failures are non-fatal.
|
|
247
247
|
|
|
248
|
+
### Pinning a self-published server to the plugin version
|
|
249
|
+
|
|
250
|
+
A plugin whose MCP server is its own npm package writes an unpinned invocation — `{"command": "npx", "args": ["-y", "my-server", "mcp"]}` — and a consumer on plugin 1.4.0 then gets 1.4.0's skills alongside whatever `npx` resolves as latest for the server. Mark the entry and `build` stamps the version on:
|
|
251
|
+
|
|
252
|
+
```json
|
|
253
|
+
{ "command": "npx", "args": ["-y", "my-server", "mcp"], "pinToPluginVersion": true }
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
- **The marker is required.** `build` never name-matches — a plugin may publish its server under a package name that is not the plugin's, and an unrelated `npx -y widget-cli` must never be stamped with this plugin's version.
|
|
257
|
+
- **The marker never reaches a runtime.** It is a build directive, not part of any vendor's schema, so `build` strips it from every derived manifest and derived `mcp.json`. The authored files are left as written.
|
|
258
|
+
- An already-pinned specifier is **overwritten** with the manifest version, and the build warns naming the version it replaced. Do not hand-pin a marked entry.
|
|
259
|
+
- A marked entry the build cannot pin — the `command` is not `npx`/`upx`, the manifest declares no `version`, or `args` carry no package specifier — is warned about and left alone; the build stays green.
|
|
260
|
+
- `copilot-cli` reads the canonical manifest directly, so it has no derived manifest to receive the pin; the build warns rather than pretending otherwise.
|
|
261
|
+
|
|
248
262
|
## Environment Variable Mapping
|
|
249
263
|
|
|
250
264
|
| Canonical | Claude Code | Cursor | Codex | Copilot CLI |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "universal-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Universal AI agent plugin build tool",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-plugin",
|
|
@@ -30,13 +30,16 @@
|
|
|
30
30
|
"dist",
|
|
31
31
|
"governances",
|
|
32
32
|
"plugin.json",
|
|
33
|
+
"schema",
|
|
33
34
|
".claude-plugin",
|
|
34
35
|
".cursor-plugin",
|
|
35
36
|
".codex-plugin",
|
|
37
|
+
"com.github.copilot",
|
|
36
38
|
"skills",
|
|
37
39
|
"agents"
|
|
38
40
|
],
|
|
39
41
|
"dependencies": {
|
|
42
|
+
"@repobuddy/upx": "^0.1.0",
|
|
40
43
|
"@toon-format/toon": "^4.1.1",
|
|
41
44
|
"commander": "^14.0.3",
|
|
42
45
|
"semver": "^7.8.1"
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "universal-plugin",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.8.0",
|
|
5
5
|
"description": "Research and design toolkit for building universal AI coding agent plugins that work across Claude Code, Cursor, Codex, and GitHub Copilot CLI.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "unional"
|
package/readme.md
CHANGED
|
@@ -120,21 +120,28 @@ npx universal-plugin self-update <version> # update the version pin i
|
|
|
120
120
|
|
|
121
121
|
## upx, the fast package runner
|
|
122
122
|
|
|
123
|
-
`
|
|
123
|
+
`upx` now ships as its own package, [`@repobuddy/upx`](https://www.npmjs.com/package/@repobuddy/upx).
|
|
124
124
|
|
|
125
125
|
`upx <pkg>@^<major>` looks for an already-installed version satisfying the range, checking local
|
|
126
126
|
`node_modules` first and then global. It spawns that binary directly, skipping the resolve step that
|
|
127
|
-
costs `npx`
|
|
127
|
+
costs `npx` a registry round-trip on every call. When nothing installed matches, it falls back to
|
|
128
|
+
`npx`. See [its measurements](https://repobuddy.github.io/upx/concepts/measurements/) for what that
|
|
129
|
+
is worth on current npm.
|
|
128
130
|
|
|
129
131
|
```sh
|
|
130
|
-
npm i -g
|
|
132
|
+
npm i -g @repobuddy/upx
|
|
131
133
|
upx cyber-skills@^2 audit validate
|
|
132
134
|
```
|
|
133
135
|
|
|
134
136
|
Use a caret range on the major rather than an exact pin, so one global install serves every caller.
|
|
137
|
+
`plugin bundle --runner upx` emits references in this form.
|
|
135
138
|
|
|
136
|
-
`upx` only works once
|
|
137
|
-
|
|
139
|
+
`upx` only works once it is installed globally. `npx` ships with npm, so keep `npx` as the default
|
|
140
|
+
anywhere you cannot guarantee that install.
|
|
141
|
+
|
|
142
|
+
> **Deprecated:** `universal-plugin` still installs a `upx` bin that re-exports `@repobuddy/upx`, so
|
|
143
|
+
> existing global installs keep working. It will be removed in the next major — install
|
|
144
|
+
> `@repobuddy/upx` directly.
|
|
138
145
|
|
|
139
146
|
## Related
|
|
140
147
|
|
package/schema/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Vendored schemas
|
|
2
|
+
|
|
3
|
+
`claude-code-marketplace.json` is the official Claude Code marketplace schema, fetched verbatim from
|
|
4
|
+
<https://json.schemastore.org/claude-code-marketplace.json> (the copy generated 2026-04-23) on
|
|
5
|
+
2026-08-19.
|
|
6
|
+
|
|
7
|
+
It ships nowhere: `package.json` `files` does not list this directory. It exists so
|
|
8
|
+
`src/marketplace/validation.schema.test.ts` can hold this project's catalog rules against the
|
|
9
|
+
runtime's own schema without reaching the network in a test, and so a re-fetch is a reviewable diff.
|
|
10
|
+
Re-fetch it when Claude Code's catalog shape moves, then run the tests.
|