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.
Files changed (50) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/bin/upx.mjs +12 -5
  5. package/com.github.copilot/agents/agentskills-specialist.agent.md +132 -0
  6. package/dist/cli.mjs +5806 -261
  7. package/governances/plugin-design.md +14 -0
  8. package/package.json +4 -1
  9. package/plugin.json +1 -1
  10. package/readme.md +12 -5
  11. package/schema/README.md +10 -0
  12. package/schema/claude-code-marketplace.json +1939 -0
  13. package/schema/extension.schema.json +842 -0
  14. package/skills/adopt-upx/README.md +4 -4
  15. package/skills/adopt-upx/SKILL.md +4 -4
  16. package/skills/doctor/README.md +3 -4
  17. package/skills/doctor/SKILL.md +44 -14
  18. package/skills/doctor/scripts/doctor.mjs +145 -37
  19. package/skills/{init → init-universal-plugin}/README.md +5 -2
  20. package/skills/{init → init-universal-plugin}/SKILL.md +38 -13
  21. package/skills/init-universal-plugin/references/adopt.md +206 -0
  22. package/skills/{init → init-universal-plugin}/references/detection.md +8 -2
  23. package/skills/{init → init-universal-plugin}/references/standard.md +5 -1
  24. package/skills/{init → init-universal-plugin}/references/vendors/claude-code.md +1 -1
  25. package/skills/init-universal-plugin/references/vendors/copilot-cli.md +201 -0
  26. package/skills/marketplace/SKILL.md +1 -1
  27. package/skills/migrate-plugin/SKILL.md +140 -26
  28. package/skills/migrate-plugin/evals/evals.json +6 -0
  29. package/skills/migrate-plugin/evals/trigger-queries.json +18 -0
  30. package/skills/publish-plugin/README.md +35 -0
  31. package/skills/publish-plugin/SKILL.md +118 -19
  32. package/skills/publish-plugin/evals/evals.json +12 -0
  33. package/skills/remove-plugin/README.md +1 -1
  34. package/skills/remove-plugin/SKILL.md +2 -2
  35. package/skills/version/SKILL.md +2 -2
  36. package/dist/run.mjs +0 -271
  37. package/skills/init/references/adopt.md +0 -118
  38. package/skills/init/references/vendors/copilot-cli.md +0 -53
  39. /package/skills/{init → init-universal-plugin}/assets/templates/agent.md +0 -0
  40. /package/skills/{init → init-universal-plugin}/assets/templates/command.md +0 -0
  41. /package/skills/{init → init-universal-plugin}/assets/templates/hooks.json +0 -0
  42. /package/skills/{init → init-universal-plugin}/assets/templates/plugin.json +0 -0
  43. /package/skills/{init → init-universal-plugin}/assets/templates/setup-command.md +0 -0
  44. /package/skills/{init → init-universal-plugin}/assets/templates/skill.md +0 -0
  45. /package/skills/{init → init-universal-plugin}/references/create.md +0 -0
  46. /package/skills/{init → init-universal-plugin}/references/frontmatter.md +0 -0
  47. /package/skills/{init → init-universal-plugin}/references/update.md +0 -0
  48. /package/skills/{init → init-universal-plugin}/references/vendors/codex.md +0 -0
  49. /package/skills/{init → init-universal-plugin}/references/vendors/cursor.md +0 -0
  50. /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.6.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.6.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
- `npm i -g universal-plugin` puts a second bin, `upx`, on PATH.
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` roughly 1s per call. When nothing installed matches, it falls back to `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 universal-plugin
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 `universal-plugin` is installed globally. `npx` ships with npm, so keep `npx`
137
- as the default anywhere you cannot guarantee that install.
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
 
@@ -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.