@orchid-labs/pluxx 0.1.0 → 0.1.3
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/README.md +110 -515
- package/bin/pluxx.js +19 -28
- package/dist/agents.d.ts +16 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/cli/agent.d.ts +69 -0
- package/dist/cli/agent.d.ts.map +1 -1
- package/dist/cli/doctor.d.ts +3 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/entry.d.ts +2 -0
- package/dist/cli/entry.d.ts.map +1 -0
- package/dist/cli/eval.d.ts +22 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/index.d.ts +26 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +21810 -0
- package/dist/cli/init-from-mcp.d.ts +34 -3
- package/dist/cli/init-from-mcp.d.ts.map +1 -1
- package/dist/cli/install.d.ts +3 -0
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/lint.d.ts +7 -1
- package/dist/cli/lint.d.ts.map +1 -1
- package/dist/cli/mcp-proxy.d.ts +10 -0
- package/dist/cli/mcp-proxy.d.ts.map +1 -0
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/primitive-summary.d.ts +14 -0
- package/dist/cli/primitive-summary.d.ts.map +1 -0
- package/dist/cli/prompt.d.ts +1 -1
- package/dist/cli/publish.d.ts +6 -1
- package/dist/cli/publish.d.ts.map +1 -1
- package/dist/cli/sync-from-mcp.d.ts.map +1 -1
- package/dist/cli/test.d.ts +2 -0
- package/dist/cli/test.d.ts.map +1 -1
- package/dist/cli/verify-install.d.ts +25 -0
- package/dist/cli/verify-install.d.ts.map +1 -0
- package/dist/commands.d.ts +10 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/compiler-intent.d.ts +165 -0
- package/dist/compiler-intent.d.ts.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/delegation.d.ts +11 -0
- package/dist/delegation.d.ts.map +1 -0
- package/dist/generators/amp/index.d.ts.map +1 -1
- package/dist/generators/base.d.ts +5 -0
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/claude-code/index.d.ts +2 -0
- package/dist/generators/claude-code/index.d.ts.map +1 -1
- package/dist/generators/cline/index.d.ts.map +1 -1
- package/dist/generators/codex/index.d.ts +5 -0
- package/dist/generators/codex/index.d.ts.map +1 -1
- package/dist/generators/cursor/index.d.ts +1 -0
- package/dist/generators/cursor/index.d.ts.map +1 -1
- package/dist/generators/gemini-cli/index.d.ts.map +1 -1
- package/dist/generators/github-copilot/index.d.ts.map +1 -1
- package/dist/generators/opencode/index.d.ts +1 -0
- package/dist/generators/opencode/index.d.ts.map +1 -1
- package/dist/generators/openhands/index.d.ts.map +1 -1
- package/dist/generators/roo-code/index.d.ts.map +1 -1
- package/dist/generators/shared/claude-family.d.ts.map +1 -1
- package/dist/generators/warp/index.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5464 -548
- package/dist/mcp/introspect.d.ts +43 -1
- package/dist/mcp/introspect.d.ts.map +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/schema.d.ts +91 -42
- package/dist/schema.d.ts.map +1 -1
- package/dist/text-files.d.ts +5 -0
- package/dist/text-files.d.ts.map +1 -0
- package/dist/validation/platform-rules.d.ts +35 -1
- package/dist/validation/platform-rules.d.ts.map +1 -1
- package/package.json +16 -14
- package/src/cli/agent.ts +0 -1030
- package/src/cli/dev.ts +0 -112
- package/src/cli/doctor.ts +0 -588
- package/src/cli/index.ts +0 -2414
- package/src/cli/init-from-mcp.ts +0 -1611
- package/src/cli/install.ts +0 -698
- package/src/cli/lint.ts +0 -1219
- package/src/cli/migrate.ts +0 -614
- package/src/cli/prompt.ts +0 -82
- package/src/cli/publish.ts +0 -401
- package/src/cli/runtime.ts +0 -86
- package/src/cli/sync-from-mcp.ts +0 -563
- package/src/cli/test.ts +0 -134
- package/src/compatibility/matrix.ts +0 -149
- package/src/config/define.ts +0 -20
- package/src/config/load.ts +0 -74
- package/src/generators/amp/index.ts +0 -63
- package/src/generators/base.ts +0 -188
- package/src/generators/claude-code/index.ts +0 -29
- package/src/generators/cline/index.ts +0 -35
- package/src/generators/codex/index.ts +0 -120
- package/src/generators/cursor/index.ts +0 -158
- package/src/generators/gemini-cli/index.ts +0 -83
- package/src/generators/github-copilot/index.ts +0 -32
- package/src/generators/hooks-warning.ts +0 -51
- package/src/generators/index.ts +0 -71
- package/src/generators/opencode/index.ts +0 -526
- package/src/generators/openhands/index.ts +0 -32
- package/src/generators/roo-code/index.ts +0 -35
- package/src/generators/shared/claude-family.ts +0 -215
- package/src/generators/warp/index.ts +0 -32
- package/src/hook-events.ts +0 -33
- package/src/index.ts +0 -23
- package/src/mcp/introspect.ts +0 -834
- package/src/permissions.ts +0 -258
- package/src/schema.ts +0 -312
- package/src/user-config.ts +0 -177
- package/src/validation/platform-rules.ts +0 -565
package/README.md
CHANGED
|
@@ -1,573 +1,168 @@
|
|
|
1
1
|
# pluxx
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**The cross-host compiler for MCP-backed plugins.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Import a raw MCP or an existing host-native plugin, keep one maintained source project, and compile native outputs for **Claude Code, Cursor, Codex, and OpenCode**.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Pluxx is the authoring, maintenance, and compilation layer for MCP teams that want one source of truth instead of separate per-host plugin repos.
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
9
|
+
- Docs: [docs.pluxx.dev](https://docs.pluxx.dev/)
|
|
10
|
+
- Website: [pluxx.dev](https://pluxx.dev/)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Why Pluxx
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
bunx pluxx build
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
dist/
|
|
20
|
-
claude-code/ .claude-plugin/plugin.json, .mcp.json, CLAUDE.md, hooks/hooks.json, skills
|
|
21
|
-
cursor/ .cursor-plugin/plugin.json, mcp.json, hooks/hooks.json, AGENTS.md, rules/
|
|
22
|
-
codex/ .codex-plugin/plugin.json, .mcp.json, AGENTS.md, interface metadata
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Platform Support
|
|
26
|
-
|
|
27
|
-
| Platform | Status | Validated |
|
|
28
|
-
|----------|--------|-----------|
|
|
29
|
-
| **Claude Code** | Primary | `claude plugin validate` PASSED |
|
|
30
|
-
| **Cursor** | Primary | Docs-audited, hooks + rules covered in lint |
|
|
31
|
-
| **Codex** | Primary | Docs-audited, plugin packaging aligned; hooks remain external Codex config |
|
|
32
|
-
| **OpenCode** | Primary | Generates JS/TS wrapper, active docs-parity work |
|
|
33
|
-
| GitHub Copilot | Beta | Reuses Claude Code format (confirmed compatible) |
|
|
34
|
-
| OpenHands | Beta | Generates .plugin/ manifest, needs live testing |
|
|
35
|
-
| Warp | Beta | Generates skills + AGENTS.md |
|
|
36
|
-
| Gemini CLI | Beta | Generates gemini-extension.json |
|
|
37
|
-
| Roo Code | Beta | Generates .roorules + skills |
|
|
38
|
-
| Cline | Beta | Generates .clinerules + skills |
|
|
39
|
-
| AMP | Beta | Generates AGENT.md + skills |
|
|
40
|
-
|
|
41
|
-
**Primary** = first-class launch target, actively maintained.
|
|
42
|
-
**Beta** = generated, but less validated against live tool behavior.
|
|
43
|
-
|
|
44
|
-
The mechanically generated source of truth for support and verification is [docs/compatibility.md](./docs/compatibility.md).
|
|
45
|
-
|
|
46
|
-
If you want the operational version of the docs, start with the [Practical handbook](./docs/practical-handbook.md).
|
|
47
|
-
If you want the explicit authoring walkthrough, use [Create a Pluxx plugin](./docs/create-a-pluxx-plugin.md).
|
|
48
|
-
If you want the meta guide for using Pluxx *inside* Claude/Codex/Cursor/OpenCode, use [Use Pluxx in host agents](./docs/use-pluxx-in-host-agents.md).
|
|
49
|
-
If you want the tightened product scope for what Pluxx should model first, use [Core primitives](./docs/core-primitives.md).
|
|
50
|
-
If you want the current execution queue with milestones, dependencies, and delegated subtasks, use [Roadmap](./docs/roadmap.md).
|
|
51
|
-
If you want the implementation target for release orchestration, use [publish v1 contract](./docs/publish-v1-contract.md).
|
|
52
|
-
If you are planning marketplace-aware release flows, use [Marketplace submission prep](./docs/marketplace-submission-prep.md).
|
|
53
|
-
|
|
54
|
-
## Why?
|
|
14
|
+
Every host has different plugin contracts and different places to express the same intent:
|
|
55
15
|
|
|
56
|
-
|
|
16
|
+
- manifests
|
|
17
|
+
- instructions and rules
|
|
18
|
+
- hook surfaces
|
|
19
|
+
- agents and subagents
|
|
20
|
+
- permission and approval controls
|
|
21
|
+
- MCP auth wiring
|
|
22
|
+
- brand and packaging metadata
|
|
57
23
|
|
|
58
|
-
|
|
24
|
+
Without Pluxx, those details drift across multiple repos. With Pluxx, you keep one source project and compile honest host-native outputs.
|
|
59
25
|
|
|
60
|
-
|
|
61
|
-
|-----------|---------------------|
|
|
62
|
-
| **Manifests** | `.claude-plugin/plugin.json` vs `.cursor-plugin/plugin.json` vs `.codex-plugin/plugin.json` |
|
|
63
|
-
| **MCP auth** | Claude Code uses `headers`, Codex uses `bearer_token_env_var` plus `env_http_headers` / `http_headers`, Cursor uses Claude Desktop format |
|
|
64
|
-
| **Hooks** | Different event names, different JSON schemas, and in Codex's case a separate runtime config path |
|
|
65
|
-
| **Rules** | `CLAUDE.md` vs `rules/*.mdc` vs `AGENTS.md` |
|
|
66
|
-
| **Brand metadata** | Codex has icons, colors, screenshots, default prompts. Others don't. |
|
|
67
|
-
| **Subagents** | Different formats per platform |
|
|
26
|
+
Pluxx is built around an explicit compiler model:
|
|
68
27
|
|
|
69
|
-
|
|
28
|
+
- `preserve` when a primitive maps cleanly to a host-native surface
|
|
29
|
+
- `translate` when the same intent belongs in a different host surface
|
|
30
|
+
- `degrade` when a host only supports a weaker equivalent
|
|
31
|
+
- `drop` when the host has no truthful native equivalent
|
|
70
32
|
|
|
71
|
-
That
|
|
33
|
+
That keeps the cross-host story explicit instead of pretending every platform works the same way.
|
|
72
34
|
|
|
73
|
-
|
|
35
|
+
## Platform Focus
|
|
74
36
|
|
|
75
|
-
|
|
37
|
+
Pluxx is currently centered on the core four:
|
|
76
38
|
|
|
77
|
-
|
|
39
|
+
- Claude Code
|
|
40
|
+
- Cursor
|
|
41
|
+
- Codex
|
|
42
|
+
- OpenCode
|
|
78
43
|
|
|
79
|
-
|
|
80
|
-
- `instructions`
|
|
81
|
-
- `mcp`
|
|
82
|
-
- `userConfig`
|
|
83
|
-
- `commands`
|
|
84
|
-
- `agents`
|
|
85
|
-
- `hooks`
|
|
86
|
-
- `permissions`
|
|
87
|
-
- `brand`
|
|
88
|
-
- `assets/scripts`
|
|
89
|
-
- `taxonomy`
|
|
44
|
+
Other targets still exist as generated secondary/beta outputs, but the product and docs are intentionally optimized around the core four.
|
|
90
45
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
## What Pluxx Does Not Model Yet
|
|
94
|
-
|
|
95
|
-
These features exist in one or more hosts, but they are not the current product center:
|
|
96
|
-
|
|
97
|
-
- `outputStyles`
|
|
98
|
-
- `lspServers`
|
|
99
|
-
- `bin/` executables
|
|
100
|
-
- `monitors`
|
|
101
|
-
- `channels`
|
|
102
|
-
- `apps` abstraction
|
|
103
|
-
- plugin data-dir abstraction
|
|
104
|
-
- statuslines
|
|
105
|
-
- themes / keybindings
|
|
106
|
-
- sandbox or other user/admin runtime policy
|
|
107
|
-
|
|
108
|
-
Pluxx should document these and revisit them later, but it should not expand the core mental model around them yet.
|
|
109
|
-
|
|
110
|
-
When you scaffold from an MCP server, pluxx now drafts workflow-oriented skills from the discovered tools so the first pass is closer to a usable plugin.
|
|
111
|
-
|
|
112
|
-
The next layer is `Agent` mode: Pluxx prepares the scaffold, context pack, and prompt pack; Claude Code or Codex does the semantic refinement. The product direction is documented in [docs/agent-mode.md](./docs/agent-mode.md).
|
|
46
|
+
For the detailed compatibility and verification matrix, see [docs/compatibility.md](./docs/compatibility.md).
|
|
113
47
|
|
|
114
48
|
## Quick Start
|
|
115
49
|
|
|
116
50
|
```bash
|
|
117
|
-
|
|
51
|
+
npx @orchid-labs/pluxx init --from-mcp https://example.com/mcp --name my-plugin --yes
|
|
118
52
|
|
|
119
|
-
# Start a plugin by hand
|
|
120
|
-
bunx pluxx init my-plugin
|
|
121
53
|
cd my-plugin
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
# Legacy SSE MCP import
|
|
128
|
-
bunx pluxx init --from-mcp https://example.com/sse --transport sse
|
|
129
|
-
|
|
130
|
-
# Local stdio MCP import
|
|
131
|
-
bunx pluxx init --from-mcp "npx -y @acme/mcp"
|
|
132
|
-
|
|
133
|
-
# pluxx will introspect the server and draft grouped skills like
|
|
134
|
-
# account-research, contact-discovery, hiring-signals, or technographics
|
|
135
|
-
|
|
136
|
-
# Headless / CI-friendly import
|
|
137
|
-
bunx pluxx init --from-mcp https://example.com/mcp --yes --name acme --display-name "Acme" --author "Acme" --targets claude-code,codex --grouping workflow --hooks safe --json
|
|
138
|
-
|
|
139
|
-
# Remote MCPs that use custom header auth
|
|
140
|
-
bunx pluxx init --from-mcp https://mcp.playkit.sh/mcp --yes --auth-env PLAYKIT_API_KEY --auth-type header --auth-header X-API-Key --auth-template '${value}'
|
|
141
|
-
|
|
142
|
-
# OAuth-first MCPs: complete provider OAuth first, then pass the resulting token env var
|
|
143
|
-
bunx pluxx init --from-mcp https://example.com/mcp --yes --auth-env OAUTH_ACCESS_TOKEN --auth-type bearer
|
|
144
|
-
|
|
145
|
-
# Inspect the generated project without mutating files
|
|
146
|
-
bunx pluxx doctor
|
|
147
|
-
bunx pluxx init --from-mcp https://example.com/mcp --yes --dry-run
|
|
148
|
-
|
|
149
|
-
# Refresh MCP-derived files later while preserving the custom sections
|
|
150
|
-
bunx pluxx sync --json
|
|
151
|
-
|
|
152
|
-
# Prepare an agent-facing context pack and prompt pack
|
|
153
|
-
bunx pluxx agent prepare
|
|
154
|
-
bunx pluxx agent prompt taxonomy
|
|
155
|
-
|
|
156
|
-
# Or run the full import -> refine -> verify path in one shot
|
|
157
|
-
bunx pluxx autopilot --from-mcp https://example.com/mcp --runner codex --mode quick --yes
|
|
158
|
-
bunx pluxx autopilot --from-mcp https://example.com/mcp --runner codex --mode standard --yes --name acme --display-name "Acme" --author "Acme"
|
|
159
|
-
bunx pluxx autopilot --from-mcp https://example.com/mcp --runner codex --mode thorough --yes --verbose-runner
|
|
160
|
-
|
|
161
|
-
# Or let Claude/Cursor/OpenCode/Codex consume the pack headlessly
|
|
162
|
-
bunx pluxx agent run taxonomy --runner claude
|
|
163
|
-
bunx pluxx agent run taxonomy --runner cursor
|
|
164
|
-
bunx pluxx agent run taxonomy --runner codex
|
|
165
|
-
bunx pluxx agent run review --runner opencode --attach http://localhost:4096 --no-verify
|
|
166
|
-
|
|
167
|
-
# Validate, build, and smoke-test the generated plugin
|
|
168
|
-
bunx pluxx lint
|
|
169
|
-
bunx pluxx build
|
|
170
|
-
bunx pluxx test
|
|
54
|
+
npx @orchid-labs/pluxx doctor
|
|
55
|
+
npx @orchid-labs/pluxx lint
|
|
56
|
+
npx @orchid-labs/pluxx build
|
|
57
|
+
npx @orchid-labs/pluxx test
|
|
171
58
|
```
|
|
172
59
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
Autopilot modes:
|
|
176
|
-
|
|
177
|
-
- `quick`: deterministic scaffold first, and only a taxonomy pass when MCP metadata warnings make it necessary
|
|
178
|
-
- `standard`: balanced default; only runs the expensive passes when quality signals or extra docs/context justify them
|
|
179
|
-
- `thorough`: always runs taxonomy, instructions, and review before verification
|
|
180
|
-
|
|
181
|
-
## Product Boundary And Lifecycle
|
|
182
|
-
|
|
183
|
-
Pluxx is for teams that want one maintained plugin source of truth across hosts.
|
|
60
|
+
Common output shape:
|
|
184
61
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
- platform bundle generation (`build`)
|
|
192
|
-
- local installation for testing (`install`)
|
|
193
|
-
- ongoing MCP-to-plugin maintenance (`sync`) for MCP-derived projects
|
|
194
|
-
|
|
195
|
-
Pluxx does not own:
|
|
196
|
-
|
|
197
|
-
- deploying or hosting your MCP backend service
|
|
198
|
-
- running your production MCP infrastructure
|
|
199
|
-
|
|
200
|
-
The normal lifecycle is:
|
|
201
|
-
|
|
202
|
-
1. Start from an MCP import or a hand-authored plugin source repo.
|
|
203
|
-
2. Refine the source project.
|
|
204
|
-
3. Validate/build/install locally.
|
|
205
|
-
4. If the plugin is MCP-backed, repoint sync to the deployed HTTP/SSE MCP when production is ready.
|
|
206
|
-
5. Keep the same plugin repo as the long-term source of truth.
|
|
207
|
-
|
|
208
|
-
Example local-to-production transition:
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
# Local development MCP
|
|
212
|
-
bunx pluxx init --from-mcp "npx -y @acme/mcp"
|
|
213
|
-
|
|
214
|
-
# Later, after your MCP backend is deployed
|
|
215
|
-
bunx pluxx sync --from-mcp https://mcp.acme.com/mcp
|
|
62
|
+
```text
|
|
63
|
+
dist/
|
|
64
|
+
claude-code/
|
|
65
|
+
cursor/
|
|
66
|
+
codex/
|
|
67
|
+
opencode/
|
|
216
68
|
```
|
|
217
69
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
1. Commit the generated plugin source repo (`pluxx.config.ts`, `skills/`, `INSTRUCTIONS.md`, `.pluxx/mcp.json`).
|
|
221
|
-
2. Build platform bundles with `bunx pluxx build`.
|
|
222
|
-
3. Distribute those bundles through your target channels (internal repo, releases, or platform-specific publish paths).
|
|
223
|
-
|
|
224
|
-
Pluxx is the distribution and maintenance layer for plugin artifacts; MCP service deployment remains your responsibility.
|
|
225
|
-
|
|
226
|
-
Generated MCP skill files include deterministic example requests derived from tool names and required inputs, so the first scaffold is useful before any AI refinement.
|
|
227
|
-
|
|
228
|
-
Agent Mode stays file-first: Pluxx writes `.pluxx/agent/context.md`, `.pluxx/agent/plan.json`, and the prompt packs, then optional runner adapters can hand those files to `claude`, `opencode`, or `codex` in headless mode. Durable project-level prompt and context customization now lives in `pluxx.agent.md`, so users do not need to edit generated `.pluxx/agent/*.md` files directly.
|
|
229
|
-
Runner output is summarized by default for `pluxx agent run` and `pluxx autopilot`; use `--verbose-runner` when you want full headless runner streaming.
|
|
230
|
-
|
|
231
|
-
The dogfood coverage matrix across messy metadata, local stdio, OAuth-first servers, and production auth patterns is documented in [docs/mcp-dogfood-matrix.md](./docs/mcp-dogfood-matrix.md).
|
|
232
|
-
|
|
233
|
-
For dogfooding inside Codex, this repo also ships a local plugin/skill pack at [plugins/pluxx](/Users/brandonguerrero/Documents/Orchid Automation/Orchid Labs/pluxx/plugins/pluxx) with focused skills for import, taxonomy refinement, instructions, review, and sync.
|
|
234
|
-
There is now also a first-class self-hosting source project at [example/pluxx](/Users/brandonguerrero/Documents/Orchid Automation/Orchid Labs/pluxx/example/pluxx) that uses one Pluxx config to generate Claude Code, Cursor, Codex, and OpenCode outputs for the Pluxx plugin itself.
|
|
70
|
+
For local stdio MCPs, pass the real executable command, not just the npm package name. The bin name can differ from the package name.
|
|
235
71
|
|
|
236
72
|
```bash
|
|
237
|
-
|
|
238
|
-
npm install -g pluxx
|
|
239
|
-
pluxx init my-plugin
|
|
240
|
-
|
|
241
|
-
# Scaffold a new plugin
|
|
242
|
-
cd my-plugin
|
|
243
|
-
|
|
244
|
-
# Edit pluxx.config.ts, create skills in ./skills/
|
|
245
|
-
|
|
246
|
-
# Build for all platforms
|
|
247
|
-
bunx pluxx build
|
|
248
|
-
|
|
249
|
-
# Lint against all platform rules (47 checks)
|
|
250
|
-
bunx pluxx lint
|
|
251
|
-
|
|
252
|
-
# Diagnose local runtime + config health
|
|
253
|
-
bunx pluxx doctor
|
|
254
|
-
|
|
255
|
-
# Run config, lint, build, and smoke checks together
|
|
256
|
-
bunx pluxx test
|
|
257
|
-
|
|
258
|
-
# Build for specific platforms
|
|
259
|
-
bunx pluxx build --target claude-code cursor codex opencode
|
|
260
|
-
|
|
261
|
-
# Validate your config
|
|
262
|
-
bunx pluxx validate
|
|
73
|
+
npx @orchid-labs/pluxx init --from-mcp "npx -y -p @acme/mcp acme-mcp" --yes
|
|
263
74
|
```
|
|
264
75
|
|
|
265
|
-
##
|
|
266
|
-
|
|
267
|
-
```typescript
|
|
268
|
-
// pluxx.config.ts
|
|
269
|
-
import { definePlugin } from 'pluxx'
|
|
270
|
-
|
|
271
|
-
export default definePlugin({
|
|
272
|
-
name: 'my-plugin',
|
|
273
|
-
version: '1.0.0',
|
|
274
|
-
description: 'What your plugin does',
|
|
275
|
-
author: { name: 'Your Name' },
|
|
276
|
-
|
|
277
|
-
// Skills (Agent Skills standard — shared across all platforms)
|
|
278
|
-
skills: './skills/',
|
|
279
|
-
|
|
280
|
-
// MCP servers (auth format auto-translated per platform)
|
|
281
|
-
mcp: {
|
|
282
|
-
'my-server': {
|
|
283
|
-
url: 'https://my-server.com/mcp',
|
|
284
|
-
auth: {
|
|
285
|
-
type: 'bearer',
|
|
286
|
-
envVar: 'MY_API_KEY',
|
|
287
|
-
},
|
|
288
|
-
},
|
|
289
|
-
},
|
|
290
|
-
|
|
291
|
-
// Hooks (generated where the platform supports plugin-packaged hooks;
|
|
292
|
-
// Codex currently keeps hook config in .codex/hooks.json outside plugin bundles)
|
|
293
|
-
hooks: {
|
|
294
|
-
sessionStart: [{
|
|
295
|
-
command: '${PLUGIN_ROOT}/scripts/setup.sh',
|
|
296
|
-
}],
|
|
297
|
-
},
|
|
298
|
-
|
|
299
|
-
// Instructions (generates CLAUDE.md, AGENTS.md, or .mdc rules)
|
|
300
|
-
instructions: './INSTRUCTIONS.md',
|
|
301
|
-
|
|
302
|
-
// Brand (used by platforms that support rich metadata)
|
|
303
|
-
brand: {
|
|
304
|
-
displayName: 'My Plugin',
|
|
305
|
-
color: '#3B82F6',
|
|
306
|
-
icon: './assets/icon.svg',
|
|
307
|
-
defaultPrompts: ['Try my plugin with this prompt'],
|
|
308
|
-
},
|
|
309
|
-
|
|
310
|
-
// Target platforms
|
|
311
|
-
targets: ['claude-code', 'cursor', 'codex', 'opencode'],
|
|
312
|
-
})
|
|
313
|
-
```
|
|
76
|
+
## Command Cheat Sheet
|
|
314
77
|
|
|
315
|
-
|
|
78
|
+
```text
|
|
79
|
+
Need a new project from an MCP?
|
|
80
|
+
pluxx init --from-mcp <source> --yes
|
|
316
81
|
|
|
317
|
-
|
|
82
|
+
Need the all-in-one path?
|
|
83
|
+
pluxx autopilot --from-mcp <source> --runner <runner>
|
|
318
84
|
|
|
319
|
-
|
|
85
|
+
Need deterministic checks?
|
|
86
|
+
pluxx doctor
|
|
87
|
+
pluxx lint
|
|
88
|
+
pluxx eval
|
|
89
|
+
pluxx build
|
|
90
|
+
pluxx test
|
|
320
91
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
url: 'https://api.example.com/mcp',
|
|
326
|
-
auth: { type: 'bearer', envVar: 'API_KEY' },
|
|
327
|
-
},
|
|
328
|
-
}
|
|
329
|
-
```
|
|
92
|
+
Need local installs too?
|
|
93
|
+
pluxx build --install
|
|
94
|
+
pluxx test --install
|
|
95
|
+
pluxx uninstall
|
|
330
96
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
97
|
+
Need agent refinement?
|
|
98
|
+
pluxx agent prepare [--website <url>] [--docs <url>]
|
|
99
|
+
pluxx agent run taxonomy --runner <runner>
|
|
100
|
+
pluxx agent run instructions --runner <runner>
|
|
101
|
+
pluxx agent run review --runner <runner>
|
|
334
102
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
"env_http_headers": {
|
|
338
|
-
"X-API-Key": "API_KEY"
|
|
339
|
-
}
|
|
340
|
-
}
|
|
103
|
+
Need to import an old host-native plugin?
|
|
104
|
+
pluxx migrate <path>
|
|
341
105
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
```
|
|
106
|
+
Need to inspect a shipped bundle?
|
|
107
|
+
pluxx doctor --consumer <bundle>
|
|
345
108
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
- **Claude Code**: `.claude-plugin/plugin.json` with skills, commands paths
|
|
351
|
-
- **Cursor**: `.cursor-plugin/plugin.json` with explicit `rules/`, `hooks/hooks.json`, and `mcp.json` component paths
|
|
352
|
-
- **Codex**: `.codex-plugin/plugin.json` with full `interface` block (brand color, icons, screenshots, default prompts, capabilities) plus external hooks via `.codex/hooks.json`
|
|
353
|
-
- **OpenCode**: npm package + JS/TS plugin wrapper
|
|
354
|
-
|
|
355
|
-
### Instructions to Platform-Native Rules
|
|
356
|
-
|
|
357
|
-
Your single `INSTRUCTIONS.md` becomes:
|
|
358
|
-
- `CLAUDE.md` for Claude Code
|
|
359
|
-
- `AGENTS.md` for Codex and Cursor
|
|
360
|
-
- `.mdc` rule files in `rules/` for Cursor (with frontmatter) when you specify rules in platform overrides
|
|
361
|
-
|
|
362
|
-
### 47 Lint Checks
|
|
363
|
-
|
|
364
|
-
`pluxx lint` catches platform-specific gotchas before you ship:
|
|
365
|
-
|
|
366
|
-
- Codex rejects SKILL.md descriptions over 1024 characters
|
|
367
|
-
- Claude Code silently truncates descriptions at 250 characters
|
|
368
|
-
- Cursor and Cline require skill names to match their directory names
|
|
369
|
-
- Codex allows max 3 default prompts, 128 chars each
|
|
370
|
-
- Claude Code hook events must be PascalCase (26 valid events)
|
|
371
|
-
- Manifest paths must start with `./` and cannot contain `../`
|
|
372
|
-
- Plugin directories must be at root, not inside `.claude-plugin/`
|
|
373
|
-
- Version must follow semver format
|
|
374
|
-
- And 39 more checks across all platforms
|
|
375
|
-
|
|
376
|
-
### Read-Only Diagnostics And Verification
|
|
377
|
-
|
|
378
|
-
- `pluxx doctor` checks Bun/runtime health, config loadability, configured paths, MCP auth/transport shape, scaffold metadata, and install trust advisories.
|
|
379
|
-
- `pluxx test` runs the default verification stack for a plugin project: config load, lint, build, and generated-output smoke checks.
|
|
380
|
-
- `--json` is available for machine-readable output on `init --from-mcp`, `sync`, `doctor`, `lint`, `build`, `install --dry-run`, and `test`.
|
|
381
|
-
- `--dry-run` previews file writes for `init --from-mcp` and `sync`, install paths for `install`, and output targets for `build`.
|
|
382
|
-
|
|
383
|
-
### Platform Overrides
|
|
384
|
-
|
|
385
|
-
For the 10% of cases where platforms diverge:
|
|
386
|
-
|
|
387
|
-
```typescript
|
|
388
|
-
platforms: {
|
|
389
|
-
'claude-code': {
|
|
390
|
-
skillDefaults: { effort: 'high' },
|
|
391
|
-
},
|
|
392
|
-
cursor: {
|
|
393
|
-
rules: [{
|
|
394
|
-
description: 'My conventions',
|
|
395
|
-
alwaysApply: false,
|
|
396
|
-
}],
|
|
397
|
-
},
|
|
398
|
-
codex: {
|
|
399
|
-
interface: {
|
|
400
|
-
capabilities: ['Interactive', 'Write'],
|
|
401
|
-
privacyPolicyURL: 'https://example.com/privacy',
|
|
402
|
-
},
|
|
403
|
-
},
|
|
404
|
-
}
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
## Real-World Examples
|
|
408
|
-
|
|
409
|
-
### Megamind (client intelligence plugin)
|
|
109
|
+
Need deterministic MCP replay?
|
|
110
|
+
pluxx mcp proxy --from-mcp <source> --record tape.json
|
|
111
|
+
pluxx mcp proxy --replay tape.json
|
|
410
112
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
```bash
|
|
414
|
-
cd example/megamind
|
|
415
|
-
bunx pluxx build
|
|
113
|
+
Need to refresh from the MCP later?
|
|
114
|
+
pluxx sync
|
|
416
115
|
```
|
|
417
116
|
|
|
418
|
-
|
|
117
|
+
Full docs tree:
|
|
419
118
|
|
|
420
|
-
|
|
119
|
+
- [docs.pluxx.dev/getting-started/command-decision-tree](https://docs.pluxx.dev/getting-started/command-decision-tree)
|
|
421
120
|
|
|
422
|
-
|
|
423
|
-
cd examples/prospeo-mcp
|
|
424
|
-
bunx pluxx build # 52 files across 7 platforms
|
|
425
|
-
bunx pluxx lint # Catches real platform gotchas
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
## Testing Locally
|
|
429
|
-
|
|
430
|
-
```bash
|
|
431
|
-
# Check project health before generating anything
|
|
432
|
-
bunx pluxx doctor
|
|
433
|
-
|
|
434
|
-
# Build and install to Claude Code
|
|
435
|
-
bunx pluxx build
|
|
436
|
-
bunx pluxx install --target claude-code
|
|
437
|
-
|
|
438
|
-
# Run the full plugin verification contract
|
|
439
|
-
bunx pluxx test
|
|
440
|
-
|
|
441
|
-
# Validate with Claude Code's own validator
|
|
442
|
-
claude plugin validate ~/.claude/plugins/my-plugin
|
|
443
|
-
# ✓ Validation passed
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
## CI / Automation
|
|
447
|
-
|
|
448
|
-
Pluxx now ships a reusable GitHub workflow for plugin repos:
|
|
121
|
+
## Core Commands
|
|
449
122
|
|
|
450
|
-
|
|
451
|
-
name: Plugin Check
|
|
123
|
+
Pluxx includes more than scaffold generation:
|
|
452
124
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
125
|
+
- `pluxx eval` checks scaffold and prompt-pack quality
|
|
126
|
+
- `pluxx migrate <path>` imports an existing host-native plugin into a Pluxx project
|
|
127
|
+
- `pluxx doctor --consumer <bundle>` inspects built or installed plugin bundles from the user side
|
|
128
|
+
- `pluxx mcp proxy --record` and `--replay` give you deterministic MCP tapes for debugging and CI
|
|
457
129
|
|
|
458
|
-
|
|
459
|
-
verify:
|
|
460
|
-
uses: orchidautomation/pluxx/.github/workflows/pluxx-plugin-check.yml@main
|
|
461
|
-
with:
|
|
462
|
-
working-directory: .
|
|
463
|
-
pluxx-version: latest
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
For headless local automation, prefer:
|
|
467
|
-
|
|
468
|
-
```bash
|
|
469
|
-
bunx pluxx init --from-mcp https://example.com/mcp --yes --json
|
|
470
|
-
bunx pluxx sync --dry-run --json
|
|
471
|
-
bunx pluxx test --json
|
|
472
|
-
```
|
|
130
|
+
## Authoring Model
|
|
473
131
|
|
|
474
|
-
|
|
132
|
+
Pluxx is intentionally opinionated around a compact cross-host model:
|
|
475
133
|
|
|
476
|
-
|
|
134
|
+
- skills
|
|
135
|
+
- instructions
|
|
136
|
+
- mcp
|
|
137
|
+
- commands
|
|
138
|
+
- hooks
|
|
139
|
+
- permissions
|
|
140
|
+
- userConfig
|
|
141
|
+
- agents
|
|
142
|
+
- brand and assets
|
|
143
|
+
- taxonomy
|
|
477
144
|
|
|
478
|
-
|
|
145
|
+
Pluxx owns the deterministic scaffold, validation, and host compilation layer. Your host coding agent can refine taxonomy, instructions, and examples without breaking the structure.
|
|
479
146
|
|
|
480
|
-
|
|
147
|
+
## Install And Runtime Notes
|
|
481
148
|
|
|
482
|
-
|
|
149
|
+
- npm package: `@orchid-labs/pluxx`
|
|
150
|
+
- preferred invocation: `npx @orchid-labs/pluxx ...`
|
|
151
|
+
- global install also works: `npm install -g @orchid-labs/pluxx`
|
|
152
|
+
- published CLI runtime: Node `>=18`
|
|
153
|
+
- source builds and maintainer workflows also run on Node `>=18`
|
|
483
154
|
|
|
484
|
-
|
|
485
|
-
bunx pluxx install --trust
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
## CLI Commands
|
|
489
|
-
|
|
490
|
-
| Command | What it does |
|
|
491
|
-
|---------|-------------|
|
|
492
|
-
| `pluxx init` | Interactive scaffold for a new plugin or `--from-mcp` import |
|
|
493
|
-
| `pluxx doctor` | Read-only runtime, config, MCP, and trust diagnostics |
|
|
494
|
-
| `pluxx build` | Generate plugin packages for all target platforms |
|
|
495
|
-
| `pluxx lint` | 47 checks against all platform rules |
|
|
496
|
-
| `pluxx test` | Run config, lint, build, and smoke checks together |
|
|
497
|
-
| `pluxx sync` | Refresh MCP-derived scaffold files while preserving custom sections |
|
|
498
|
-
| `pluxx validate` | Validate your config schema |
|
|
499
|
-
| `pluxx install` | Symlink built plugins for local testing (prompts when hook commands exist) |
|
|
500
|
-
| `pluxx install --trust` | Bypass hook trust confirmation |
|
|
501
|
-
| `pluxx uninstall` | Remove symlinked plugins |
|
|
502
|
-
| `pluxx dev` | Watch mode with auto-rebuild on file changes |
|
|
503
|
-
| `pluxx migrate <path>` | Import an existing single-platform plugin |
|
|
504
|
-
|
|
505
|
-
## How It Works
|
|
506
|
-
|
|
507
|
-
```
|
|
508
|
-
pluxx.config.ts <- You define your plugin once
|
|
509
|
-
|
|
|
510
|
-
v
|
|
511
|
-
+---------+
|
|
512
|
-
| Parse | Zod schema validation
|
|
513
|
-
+----+----+
|
|
514
|
-
|
|
|
515
|
-
v
|
|
516
|
-
+--------+
|
|
517
|
-
| Lint | 47 platform-specific checks
|
|
518
|
-
+----+---+
|
|
519
|
-
|
|
|
520
|
-
v
|
|
521
|
-
+----------+
|
|
522
|
-
| Generate | Platform-specific generators
|
|
523
|
-
+-+--+--+--+
|
|
524
|
-
| | |
|
|
525
|
-
v v v
|
|
526
|
-
Claude Cursor Codex + 8 beta platforms
|
|
527
|
-
Code
|
|
528
|
-
```
|
|
155
|
+
## Read Next
|
|
529
156
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
| Rules/instructions generation | Yes | - | Translate only |
|
|
540
|
-
| Cross-platform lint (47 checks) | Yes | - | - |
|
|
541
|
-
| Subagent configs | Yes | - | - |
|
|
542
|
-
|
|
543
|
-
**pluxx builds plugins. The others install skills.** They're complementary — use `npx skills` to distribute your skills, use pluxx to build the full plugin package.
|
|
544
|
-
|
|
545
|
-
## Built On
|
|
546
|
-
|
|
547
|
-
- [Agent Skills](https://agentskills.io/) open standard (skills are pass-through, never modified)
|
|
548
|
-
- [Zod](https://zod.dev/) for config validation with full TypeScript inference
|
|
549
|
-
- [Bun](https://bun.sh/) for fast builds and TypeScript-native execution
|
|
550
|
-
|
|
551
|
-
## Roadmap
|
|
552
|
-
|
|
553
|
-
- [x] Core schema with Zod validation
|
|
554
|
-
- [x] Generators: Claude Code, Cursor, Codex (fully supported) + 8 beta platforms
|
|
555
|
-
- [x] CLI: `build`, `validate`, `init`, `lint`, `install`, `uninstall`, `dev`, `migrate`
|
|
556
|
-
- [x] MCP auth normalization across platforms
|
|
557
|
-
- [x] 47 lint checks from official docs (Firecrawl-verified)
|
|
558
|
-
- [x] Real-world examples (Megamind + Prospeo)
|
|
559
|
-
- [ ] `pluxx lint --fix` — auto-apply suggested fixes
|
|
560
|
-
- [x] `pluxx init --from-mcp` — auto-scaffold plugins from existing MCP servers
|
|
561
|
-
- [x] `pluxx doctor` — project and runtime health checks
|
|
562
|
-
- [x] `pluxx test` — verification command for plugin repos
|
|
563
|
-
- [x] CI/CD GitHub Action / reusable workflow
|
|
564
|
-
- [ ] canonical `userConfig` / install-time secret handling
|
|
565
|
-
- [ ] canonical permissions model across primary targets
|
|
566
|
-
- [ ] build-time target cap validation for primary targets
|
|
567
|
-
- [ ] `pluxx publish` — push to platform marketplaces
|
|
568
|
-
- [ ] `pluxx diff` — show what changed per platform
|
|
569
|
-
- [ ] Plugin analytics dashboard
|
|
570
|
-
- [ ] Promote beta platforms to fully supported
|
|
157
|
+
- [Getting started](./docs/getting-started.md)
|
|
158
|
+
- [Create a Pluxx plugin](./docs/create-a-pluxx-plugin.md)
|
|
159
|
+
- [How it works](./docs/how-it-works.md)
|
|
160
|
+
- [Use Pluxx in host agents](./docs/use-pluxx-in-host-agents.md)
|
|
161
|
+
- [Core primitives](./docs/core-primitives.md)
|
|
162
|
+
- [OSS wedge and trust layer](./docs/oss-wedge-and-trust-layer.md)
|
|
163
|
+
- [Compatibility matrix](./docs/compatibility.md)
|
|
164
|
+
- [First proof and demo asset pack](./docs/first-proof-demo-asset-pack.md)
|
|
165
|
+
- [Releasing Pluxx](./docs/releasing-pluxx.md)
|
|
571
166
|
|
|
572
167
|
## License
|
|
573
168
|
|