universal-plugin 0.12.0 → 0.12.2
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 +5 -2
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/agents/agentskills-specialist.md +4 -16
- package/com.github.copilot/agents/agentskills-specialist.agent.md +4 -16
- package/dist/cli.mjs +6668 -16
- package/package.json +2 -2
- package/plugin.json +2 -1
- package/readme.md +3 -3
- package/references/plugin-design.md +1 -1
- package/references/universal-plugin.md +1 -1
- package/skills/build-plugin/SKILL.md +3 -3
- package/skills/doctor-universal-plugin/SKILL.md +4 -4
- package/skills/init-universal-plugin/SKILL.md +7 -7
- package/skills/marketplace/SKILL.md +1 -1
- package/skills/remove-plugin/SKILL.md +1 -1
- package/skills/version/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "universal-plugin",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.2",
|
|
4
4
|
"description": "Universal AI agent plugin build tool",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-plugin",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"agents"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@cyberuni/agent-harness": "^0.
|
|
42
|
+
"@cyberuni/agent-harness": "^0.6.0",
|
|
43
43
|
"@repobuddy/upx": "^0.2.0",
|
|
44
44
|
"@toon-format/toon": "^4.1.1",
|
|
45
45
|
"commander": "^15.0.0",
|
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.12.
|
|
4
|
+
"version": "0.12.2",
|
|
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"
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"extensions": {
|
|
14
14
|
"org.cyberuni.universal-plugin": {
|
|
15
15
|
"skills": "./skills/",
|
|
16
|
+
"dependencies": ["cyber-agent-harness"],
|
|
16
17
|
"harnesses": {
|
|
17
18
|
"claude-code": {},
|
|
18
19
|
"cursor": {},
|
package/readme.md
CHANGED
|
@@ -109,9 +109,9 @@ TOON by default; pass `--format json` for JSON.
|
|
|
109
109
|
### Reference documents
|
|
110
110
|
|
|
111
111
|
This package ships its own documents (`plugin-design`, `slash-invocation`, `universal-plugin`) under
|
|
112
|
-
`references/`. Read one with `
|
|
113
|
-
on `universal-plugin`, or, from a skill, with the `reference` skill in the
|
|
114
|
-
plugin.
|
|
112
|
+
`references/`. Read one with `npx @cyberuni/agent-harness reference show <name>` in any
|
|
113
|
+
project that depends on `universal-plugin`, or, from a skill, with the `reference` skill in the
|
|
114
|
+
`cyber-agent-harness` plugin.
|
|
115
115
|
|
|
116
116
|
### Housekeeping
|
|
117
117
|
|
|
@@ -330,6 +330,6 @@ Portability rules for skill bodies: keep each `SKILL.md` body under 6,000 chars;
|
|
|
330
330
|
|
|
331
331
|
## References
|
|
332
332
|
|
|
333
|
-
Load `skill-design`, `skill-repo-structure`, and `agent-tool-output` with the `reference` skill in the `
|
|
333
|
+
Load `skill-design`, `skill-repo-structure`, and `agent-tool-output` with the `reference` skill in the `cyber-agent-harness` plugin.
|
|
334
334
|
|
|
335
335
|
Spec: https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/spec.md
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# Universal Plugin Format
|
|
2
2
|
|
|
3
3
|
The rules for the universal plugin format live in `plugin-design`, which this package also ships.
|
|
4
|
-
Load `plugin-design` with the `reference` skill in the `
|
|
4
|
+
Load `plugin-design` with the `reference` skill in the `cyber-agent-harness` plugin.
|
|
@@ -111,7 +111,7 @@ Validation runs before the first write, so a failed build leaves the tree untouc
|
|
|
111
111
|
| a missing `plugin.json` | `--root` is not the plugin root | point `--root` at the directory holding the canonical manifest |
|
|
112
112
|
| codex requires `description` / `version` | Codex rejects a manifest without them | add them to `plugin.json` through `init-universal-plugin`, or `version` for the number |
|
|
113
113
|
| a `--vendor` not among the targets | the manifest does not declare that vendor | declare it through `init-universal-plugin`, or drop the flag |
|
|
114
|
-
| `vendorExtensions` or `.plugin/plugin.json` | a
|
|
114
|
+
| `vendorExtensions` or `.plugin/plugin.json` | a layout this CLI does not read | run `doctor-universal-plugin`, which names the migration |
|
|
115
115
|
|
|
116
116
|
## Do not
|
|
117
117
|
|
|
@@ -123,8 +123,8 @@ Validation runs before the first write, so a failed build leaves the tree untouc
|
|
|
123
123
|
- **Expect a build to pin skill `npx` references.** That is the release-time `plugin bundle`, not
|
|
124
124
|
this step.
|
|
125
125
|
- **Expect a build to copy governances into skills.** A skill loads a reference through the
|
|
126
|
-
`reference` skill in the `
|
|
127
|
-
`--check`
|
|
126
|
+
`reference` skill in the `cyber-agent-harness` plugin; the build does not copy them and has no
|
|
127
|
+
`--check` flag.
|
|
128
128
|
|
|
129
129
|
## Related skills
|
|
130
130
|
|
|
@@ -58,7 +58,7 @@ to derive. Never report it as a fault.
|
|
|
58
58
|
A plugin that **does** declare those reports `copilot-cli` as `built` at `com.github.copilot/`
|
|
59
59
|
instead. Declaring the canonical `$schema` moves them there: Copilot CLI stops reading them from the
|
|
60
60
|
plugin root entirely, so a root-only layout loads none of them and says nothing
|
|
61
|
-
([ADR-0015](
|
|
61
|
+
([ADR-0015](https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/design/decisions/0015-copilot-spec-mode-namespace.md)). That is what
|
|
62
62
|
`copilot-root-components` reports.
|
|
63
63
|
|
|
64
64
|
If `node` is unavailable, read `scripts/doctor.mjs` and apply the same checks by hand: it composes
|
|
@@ -85,7 +85,7 @@ Each `code` below is what the script emits.
|
|
|
85
85
|
| `copilot-root-components` | agents, commands, rules, hooks, or LSP servers sit at the plugin root with no copy under `com.github.copilot/` — Copilot CLI reads them only from there in spec mode, so it loads none of them, silently | `/universal-plugin:build-plugin` |
|
|
86
86
|
| `stale-github-plugin` | a leftover `.github/plugin/plugin.json` from an older build — shadowed by root and no longer generated | `/universal-plugin:remove-plugin` |
|
|
87
87
|
| `shadowing-manifest` | a `.plugin/plugin.json` exists — it outranks root in Copilot CLI's search order and silently shadows the canonical manifest | `/universal-plugin:remove-plugin` |
|
|
88
|
-
| `no-vendors` | no vendor is declared, so the build writes nothing and no runtime reads the plugin.
|
|
88
|
+
| `no-vendors` | no vendor is declared, so the build writes nothing and no runtime reads the plugin. When the repository carries `vendorExtensions` or a `.plugin/plugin.json`, the build stops rather than reporting an empty result, and the detail says so — read it beside `legacy-manifest` and `shadowing-manifest`, which name the signals | `/universal-plugin:init-universal-plugin`, adopt route when `vendorExtensions` or `.plugin/plugin.json` is present, else update route |
|
|
89
89
|
| `package-path-missing` | `packagePath` names a directory with no readable `package.json` | fix `packagePath`, or create the package |
|
|
90
90
|
| `package-path-unknown` | the CLI could not report `packagePath` (a version too old to read it), so `version-drift` and `unreleased-content` were skipped rather than guessed | upgrade universal-plugin |
|
|
91
91
|
| `misplaced-package-path` | `plugin.json` declares `packagePath` under `extensions["org.cyberuni.universal-plugin"]`, where the CLI never reads it — the plugin is silently treated as not shipping to npm | move it to `.agents/universal-plugin.json`, relative to the plugin root |
|
|
@@ -150,7 +150,7 @@ other.
|
|
|
150
150
|
A runtime keys its plugin cache on the version, not on content: Claude Code resolves the version,
|
|
151
151
|
finds it unchanged, and reports *"already at the latest version"* without re-extracting. So content
|
|
152
152
|
pushed without a bump reaches nobody who already installed the plugin, and neither side is told
|
|
153
|
-
([ADR-0010](
|
|
153
|
+
([ADR-0010](https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/design/decisions/0010-version-policy.md) §6).
|
|
154
154
|
|
|
155
155
|
The script compares the shipped paths — the canonical manifest, the skills directory, `agents/`,
|
|
156
156
|
`governances/`, `references/`, `mcp.json` — against the commit that set the version the manifest carries now, and
|
|
@@ -158,7 +158,7 @@ emits `unreleased-content` for anything committed since. Uncommitted work is not
|
|
|
158
158
|
shipped.
|
|
159
159
|
|
|
160
160
|
Two cases are deliberately silent. A plugin that declares `packagePath` is skipped, because there the
|
|
161
|
-
release picks the number (ADR-0010 §2) and content waiting ahead of the last released version is the
|
|
161
|
+
release picks the number ([ADR-0010](https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/design/decisions/0010-version-policy.md) §2) and content waiting ahead of the last released version is the
|
|
162
162
|
normal state of a branch. A tree with no git history is skipped rather than guessed at.
|
|
163
163
|
|
|
164
164
|
The repair is the bump, and it belongs to `/universal-plugin:version`. Judge first whether the change
|
|
@@ -18,7 +18,7 @@ That asymmetry does not extend to components. Declaring the canonical `$schema`
|
|
|
18
18
|
Open Plugin Spec mode, and Copilot CLI then reads its **native** components — agents, commands,
|
|
19
19
|
rules, hooks, LSP servers — from a `com.github.copilot/` directory rather than the plugin root.
|
|
20
20
|
Authoring still happens at the canonical locations: `plugin build` derives that directory
|
|
21
|
-
([ADR-0015](
|
|
21
|
+
([ADR-0015](https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/design/decisions/0015-copilot-spec-mode-namespace.md)), so do not tell
|
|
22
22
|
an author to move `agents/` into it — the root copy is what the other three vendors derive from. See
|
|
23
23
|
[`references/vendors/copilot-cli.md`](./references/vendors/copilot-cli.md).
|
|
24
24
|
|
|
@@ -30,7 +30,7 @@ runtime you are enabling, and only those.
|
|
|
30
30
|
| Claude Code | `.claude-plugin/plugin.json` | none | `references/vendors/claude-code.md` |
|
|
31
31
|
| Cursor | `.cursor-plugin/plugin.json` | none | `references/vendors/cursor.md` |
|
|
32
32
|
| Codex | `.codex-plugin/plugin.json` | `version`, `description` | `references/vendors/codex.md` |
|
|
33
|
-
| GitHub Copilot CLI | none — reads root `plugin.json` | native components derived under `com.github.copilot/` ([ADR-0015](
|
|
33
|
+
| GitHub Copilot CLI | none — reads root `plugin.json` | native components derived under `com.github.copilot/` ([ADR-0015](https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/design/decisions/0015-copilot-spec-mode-namespace.md)) | `references/vendors/copilot-cli.md` |
|
|
34
34
|
|
|
35
35
|
This skill owns the **authoring** side: the plugin a project ships. Setting a repository up to
|
|
36
36
|
*consume* skills — the `.agents/skills/` layout, `AGENTS.md`, per-harness bridges — is
|
|
@@ -39,7 +39,7 @@ This skill owns the **authoring** side: the plugin a project ships. Setting a re
|
|
|
39
39
|
## Prerequisites
|
|
40
40
|
|
|
41
41
|
Before any work that adds or removes components, load `plugin-design` with the `reference`
|
|
42
|
-
skill in the `
|
|
42
|
+
skill in the `cyber-agent-harness` plugin.
|
|
43
43
|
|
|
44
44
|
It is the authoritative source for which component to reach for and which anti-patterns to avoid.
|
|
45
45
|
|
|
@@ -127,7 +127,7 @@ Route by what Phase 2 found. Read exactly the reference for the work at hand —
|
|
|
127
127
|
| canonical, and a vendor or component changes | edit `extensions`, then rebuild | [`references/update.md`](./references/update.md) |
|
|
128
128
|
|
|
129
129
|
Three asks leave this skill rather than routing inside it. Hand them over instead of improvising a
|
|
130
|
-
route: **`doctor`** reports what is declared, built, stale, or drifting; **`version`** moves the
|
|
130
|
+
route: **`doctor-universal-plugin`** reports what is declared, built, stale, or drifting; **`version`** moves the
|
|
131
131
|
number; **`remove-plugin`** deletes derived manifests or the plugin itself.
|
|
132
132
|
|
|
133
133
|
Every route ends in the same two commands. Scaffold with the CLI that shipped beside this skill:
|
|
@@ -193,7 +193,7 @@ that vendor's `harnesses` entry, or to the drop list you reported in Phase 3, be
|
|
|
193
193
|
|
|
194
194
|
Audit each skill the plugin ships, per [`references/create.md`](./references/create.md) Step 6.
|
|
195
195
|
Report what was created, adopted, derived, and left alone. For a fuller read of the plugin's state
|
|
196
|
-
than this phase gives — drift, version skew, shadowing manifests — hand off to `doctor`.
|
|
196
|
+
than this phase gives — drift, version skew, shadowing manifests — hand off to `doctor-universal-plugin`.
|
|
197
197
|
|
|
198
198
|
This skill is not a formatter. If the project has one, run it over the written files and say so.
|
|
199
199
|
|
|
@@ -221,7 +221,7 @@ This skill is not a formatter. If the project has one, run it over the written f
|
|
|
221
221
|
|
|
222
222
|
| Task | Skill |
|
|
223
223
|
|------|-------|
|
|
224
|
-
| Diagnose a plugin — what is declared, built, stale, or drifting | `doctor` |
|
|
224
|
+
| Diagnose a plugin — what is declared, built, stale, or drifting | `doctor-universal-plugin` |
|
|
225
225
|
| Make the repository installable, and document how | `marketplace` |
|
|
226
226
|
| Move the plugin's version, or reconcile one that drifted | `version` |
|
|
227
227
|
| Delete derived manifests, or the whole plugin | `remove-plugin` |
|
|
@@ -233,7 +233,7 @@ This skill is not a formatter. If the project has one, run it over the written f
|
|
|
233
233
|
|
|
234
234
|
## References
|
|
235
235
|
|
|
236
|
-
- Reference: `plugin-design`, loaded with the `reference` skill in the `
|
|
236
|
+
- Reference: `plugin-design`, loaded with the `reference` skill in the `cyber-agent-harness` plugin
|
|
237
237
|
- Spec: https://github.com/cyberuni/universal-plugin/blob/main/packages/universal-plugin/.agents/spec/spec.md
|
|
238
238
|
- Manifest schema (Agent Plugins Specification v1.0.0): https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
|
|
239
239
|
- Extension schema (the body of `extensions["org.cyberuni.universal-plugin"]`), shipped in the package at
|
|
@@ -85,7 +85,7 @@ Copilot CLI. The reverse does not hold: Claude Code rejects the Codex catalog fo
|
|
|
85
85
|
| Task | Skill |
|
|
86
86
|
|------|-------|
|
|
87
87
|
| Create or change the plugin being listed | `init-universal-plugin` |
|
|
88
|
-
| Check that the plugin's own manifests are current | `doctor` |
|
|
88
|
+
| Check that the plugin's own manifests are current | `doctor-universal-plugin` |
|
|
89
89
|
| Move the version users will install | `version` |
|
|
90
90
|
| Submit to the shared marketplace repository instead | `publish-plugin` |
|
|
91
91
|
|
|
@@ -83,5 +83,5 @@ this skill does.
|
|
|
83
83
|
| Task | Skill |
|
|
84
84
|
|------|-------|
|
|
85
85
|
| Remove a vendor from what the plugin declares | `init-universal-plugin`, update route |
|
|
86
|
-
| Confirm what is stale, shadowing, or unbuilt before deleting | `doctor` |
|
|
86
|
+
| Confirm what is stale, shadowing, or unbuilt before deleting | `doctor-universal-plugin` |
|
|
87
87
|
| Take a published plugin out of a marketplace listing | `publish-plugin` |
|
package/skills/version/SKILL.md
CHANGED
|
@@ -115,7 +115,7 @@ Every guard resolves before the first write, so a failed run leaves the tree unt
|
|
|
115
115
|
|------|-------|
|
|
116
116
|
| Create, adopt, or change what the plugin declares | `init-universal-plugin` |
|
|
117
117
|
| Re-derive the vendor manifests by hand | `build-plugin` |
|
|
118
|
-
| Check whether the two authored versions agree | `doctor` |
|
|
118
|
+
| Check whether the two authored versions agree | `doctor-universal-plugin` |
|
|
119
119
|
| Add a changeset for the change being released | `add-changeset` |
|
|
120
120
|
| Refresh the repository's own marketplace catalogs after a bump | `marketplace` |
|
|
121
121
|
| List the released plugin in the shared marketplace | `publish-plugin` |
|