@orchid-labs/pluxx 0.1.0 → 0.1.1

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 (51) hide show
  1. package/README.md +100 -522
  2. package/dist/cli/agent.d.ts +7 -0
  3. package/dist/cli/agent.d.ts.map +1 -1
  4. package/dist/cli/doctor.d.ts +1 -0
  5. package/dist/cli/doctor.d.ts.map +1 -1
  6. package/dist/cli/eval.d.ts +22 -0
  7. package/dist/cli/eval.d.ts.map +1 -0
  8. package/dist/cli/index.d.ts +19 -2
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/init-from-mcp.d.ts +17 -2
  11. package/dist/cli/init-from-mcp.d.ts.map +1 -1
  12. package/dist/cli/install.d.ts +2 -0
  13. package/dist/cli/install.d.ts.map +1 -1
  14. package/dist/cli/lint.d.ts +5 -1
  15. package/dist/cli/lint.d.ts.map +1 -1
  16. package/dist/cli/mcp-proxy.d.ts +10 -0
  17. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  18. package/dist/cli/migrate.d.ts.map +1 -1
  19. package/dist/cli/sync-from-mcp.d.ts.map +1 -1
  20. package/dist/cli/test.d.ts +2 -0
  21. package/dist/cli/test.d.ts.map +1 -1
  22. package/dist/generators/claude-code/index.d.ts +2 -0
  23. package/dist/generators/claude-code/index.d.ts.map +1 -1
  24. package/dist/generators/codex/index.d.ts +1 -0
  25. package/dist/generators/codex/index.d.ts.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +99 -1
  29. package/dist/mcp/introspect.d.ts +43 -1
  30. package/dist/mcp/introspect.d.ts.map +1 -1
  31. package/dist/permissions.d.ts.map +1 -1
  32. package/dist/validation/platform-rules.d.ts +20 -0
  33. package/dist/validation/platform-rules.d.ts.map +1 -1
  34. package/package.json +2 -2
  35. package/src/cli/agent.ts +459 -34
  36. package/src/cli/doctor.ts +400 -1
  37. package/src/cli/eval.ts +470 -0
  38. package/src/cli/index.ts +633 -114
  39. package/src/cli/init-from-mcp.ts +545 -41
  40. package/src/cli/install.ts +166 -4
  41. package/src/cli/lint.ts +56 -26
  42. package/src/cli/mcp-proxy.ts +322 -0
  43. package/src/cli/migrate.ts +256 -3
  44. package/src/cli/sync-from-mcp.ts +23 -0
  45. package/src/cli/test.ts +10 -2
  46. package/src/generators/claude-code/index.ts +143 -0
  47. package/src/generators/codex/index.ts +23 -0
  48. package/src/index.ts +12 -1
  49. package/src/mcp/introspect.ts +297 -24
  50. package/src/permissions.ts +3 -1
  51. package/src/validation/platform-rules.ts +121 -0
package/README.md CHANGED
@@ -1,573 +1,151 @@
1
1
  # pluxx
2
2
 
3
- **Build AI agent plugins once. Ship them everywhere.**
3
+ **Stop maintaining four plugin repos for one MCP.**
4
4
 
5
- pluxx generates native plugin packages for Claude Code, Cursor, Codex, and OpenCode from a single config file. One source of truth — platform-specific outputs with the right manifests, rules, install scripts, hook handling, and MCP config when your plugin needs it.
5
+ Pluxx keeps one maintained plugin source project for **Claude Code, Cursor, Codex, and OpenCode**, then compiles the native bundle each host expects.
6
6
 
7
- The product scope is intentionally tight:
7
+ It is the cross-host plugin authoring and maintenance layer for MCP teams that want one source of truth instead of separate per-host plugin repos.
8
8
 
9
- - Pluxx owns the common cross-host plugin-authoring primitives
10
- - Pluxx does not try to model every host-specific extension feature yet
9
+ - Docs: [docs.pluxx.dev](https://docs.pluxx.dev/)
10
+ - Website: [pluxx.dev](https://pluxx.dev/)
11
11
 
12
- pluxx is Bun-first today. Use `bunx` or run it from a Bun workspace. The npm package includes a small launcher for global installs, but it still requires Bun at runtime.
12
+ ## Why Pluxx
13
13
 
14
- ```bash
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?
55
-
56
- Tools like `npx skills` install SKILL.md files across agents. That covers **skills**.
14
+ Every host has different plugin contracts:
57
15
 
58
- But a plugin is more than skills. A plugin bundles:
16
+ - manifests
17
+ - instructions and rules
18
+ - hook surfaces
19
+ - MCP auth wiring
20
+ - brand and packaging metadata
59
21
 
60
- | Component | What pluxx handles |
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 |
22
+ Without Pluxx, those details drift across multiple repos. With Pluxx, you keep one source project and generate host-native outputs.
68
23
 
69
- Without pluxx you maintain separate copies for each platform. With pluxx you maintain one.
24
+ ## Platform Focus
70
25
 
71
- That value exists even if your plugin has no MCP at all. If you are hand-authoring skills, instructions, hooks, commands, or brand metadata, Pluxx still gives you one maintainable cross-host plugin project.
26
+ Pluxx is currently centered on the core four:
72
27
 
73
- The sharpest launch wedge is still MCP-first authoring: start from an existing MCP server, generate a maintainable plugin scaffold, then keep shipping from one config.
28
+ - Claude Code
29
+ - Cursor
30
+ - Codex
31
+ - OpenCode
74
32
 
75
- ## Core Primitives
33
+ Other targets still exist as generated secondary/beta outputs, but the product and docs are intentionally optimized around the core four.
76
34
 
77
- Pluxx treats these as the canonical authoring model:
78
-
79
- - `skills`
80
- - `instructions`
81
- - `mcp`
82
- - `userConfig`
83
- - `commands`
84
- - `agents`
85
- - `hooks`
86
- - `permissions`
87
- - `brand`
88
- - `assets/scripts`
89
- - `taxonomy`
90
-
91
- These are the primitives that show up repeatedly in real plugins and real host integrations.
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).
35
+ For the detailed compatibility and verification matrix, see [docs/compatibility.md](./docs/compatibility.md).
113
36
 
114
37
  ## Quick Start
115
38
 
116
39
  ```bash
117
- # Preferred: run via bunx
118
-
119
- # Start a plugin by hand
120
- bunx pluxx init my-plugin
121
- cd my-plugin
122
- # Edit pluxx.config.ts, add skills in ./skills/, then build
123
-
124
- # Or scaffold directly from an MCP server
125
- bunx pluxx init --from-mcp https://example.com/mcp
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
171
- ```
172
-
173
- `--attach` is only supported for the `opencode` runner.
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.
184
-
185
- The best fit today is MCP developers and teams shipping MCP-backed plugins, because MCP import, auth translation, and sync create the most cross-host pain. But hand-authored plugins are still a valid use case.
186
-
187
- Pluxx owns:
188
-
189
- - plugin authoring scaffold, whether imported from MCP or authored manually
190
- - validation (`lint`, `doctor`, `test`)
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
216
- ```
217
-
218
- Publish/distribution today is repo-first:
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).
40
+ # Requires Bun on PATH
41
+ npx @orchid-labs/pluxx init --from-mcp https://example.com/mcp --name my-plugin --yes
223
42
 
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.
235
-
236
- ```bash
237
- # Optional: global install still shells out to Bun
238
- npm install -g pluxx
239
- pluxx init my-plugin
240
-
241
- # Scaffold a new plugin
242
43
  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
263
- ```
264
-
265
- ## Config
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
- })
44
+ npx @orchid-labs/pluxx doctor
45
+ npx @orchid-labs/pluxx lint
46
+ npx @orchid-labs/pluxx build
47
+ npx @orchid-labs/pluxx test
313
48
  ```
314
49
 
315
- ## What Gets Generated
316
-
317
- ### MCP Config Translation
318
-
319
- You write one auth config. pluxx generates the correct format for each platform:
50
+ Common output shape:
320
51
 
321
- ```typescript
322
- // You write:
323
- mcp: {
324
- server: {
325
- url: 'https://api.example.com/mcp',
326
- auth: { type: 'bearer', envVar: 'API_KEY' },
327
- },
328
- }
329
- ```
330
-
331
- ```jsonc
332
- // Claude Code gets:
333
- { "headers": { "Authorization": "Bearer ${API_KEY}" } }
334
-
335
- // Codex gets:
336
- {
337
- "env_http_headers": {
338
- "X-API-Key": "API_KEY"
339
- }
340
- }
341
-
342
- // Cursor gets:
343
- { "headers": { "Authorization": "Bearer ${API_KEY}" } }
344
- ```
345
-
346
- ### Plugin Manifests
347
-
348
- Each platform gets its native manifest format:
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
- }
52
+ ```text
53
+ dist/
54
+ claude-code/
55
+ cursor/
56
+ codex/
57
+ opencode/
405
58
  ```
406
59
 
407
- ## Real-World Examples
408
-
409
- ### Megamind (client intelligence plugin)
410
-
411
- The [example/megamind](./example/megamind) directory contains a full plugin that was previously hand-maintained as two separate copies. With pluxx, one config generates outputs for all platforms.
60
+ ## Command Cheat Sheet
412
61
 
413
- ```bash
414
- cd example/megamind
415
- bunx pluxx build
416
- ```
62
+ ```text
63
+ Need a new project from an MCP?
64
+ pluxx init --from-mcp <source> --yes
417
65
 
418
- ### Prospeo (sales intelligence MCP)
66
+ Need the all-in-one path?
67
+ pluxx autopilot --from-mcp <source> --runner <runner>
419
68
 
420
- The [examples/prospeo-mcp](./examples/prospeo-mcp) directory wraps a real MCP server into a multi-platform plugin with 4 skills:
69
+ Need deterministic checks?
70
+ pluxx doctor
71
+ pluxx lint
72
+ pluxx eval
73
+ pluxx build
74
+ pluxx test
421
75
 
422
- ```bash
423
- cd examples/prospeo-mcp
424
- bunx pluxx build # 52 files across 7 platforms
425
- bunx pluxx lint # Catches real platform gotchas
426
- ```
76
+ Need local installs too?
77
+ pluxx build --install
78
+ pluxx test --install
79
+ pluxx uninstall
427
80
 
428
- ## Testing Locally
81
+ Need agent refinement?
82
+ pluxx agent prepare [--website <url>] [--docs <url>]
83
+ pluxx agent run taxonomy --runner <runner>
84
+ pluxx agent run instructions --runner <runner>
85
+ pluxx agent run review --runner <runner>
429
86
 
430
- ```bash
431
- # Check project health before generating anything
432
- bunx pluxx doctor
87
+ Need to import an old host-native plugin?
88
+ pluxx migrate <path>
433
89
 
434
- # Build and install to Claude Code
435
- bunx pluxx build
436
- bunx pluxx install --target claude-code
90
+ Need to inspect a shipped bundle?
91
+ pluxx doctor --consumer <bundle>
437
92
 
438
- # Run the full plugin verification contract
439
- bunx pluxx test
93
+ Need deterministic MCP replay?
94
+ pluxx mcp proxy --from-mcp <source> --record tape.json
95
+ pluxx mcp proxy --replay tape.json
440
96
 
441
- # Validate with Claude Code's own validator
442
- claude plugin validate ~/.claude/plugins/my-plugin
443
- # ✓ Validation passed
97
+ Need to refresh from the MCP later?
98
+ pluxx sync
444
99
  ```
445
100
 
446
- ## CI / Automation
447
-
448
- Pluxx now ships a reusable GitHub workflow for plugin repos:
101
+ Full docs tree:
449
102
 
450
- ```yaml
451
- name: Plugin Check
452
-
453
- on:
454
- pull_request:
455
- push:
456
- branches: [main]
457
-
458
- jobs:
459
- verify:
460
- uses: orchidautomation/pluxx/.github/workflows/pluxx-plugin-check.yml@main
461
- with:
462
- working-directory: .
463
- pluxx-version: latest
464
- ```
103
+ - [docs.pluxx.dev/getting-started/command-decision-tree](https://docs.pluxx.dev/getting-started/command-decision-tree)
465
104
 
466
- For headless local automation, prefer:
105
+ ## Core Commands
467
106
 
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
- ```
107
+ Pluxx includes more than scaffold generation:
473
108
 
474
- See [docs/getting-started.md](./docs/getting-started.md) for the full getting-started walkthrough, including the MCP-first path.
109
+ - `pluxx eval` checks scaffold and prompt-pack quality
110
+ - `pluxx migrate <path>` imports an existing host-native plugin into a Pluxx project
111
+ - `pluxx doctor --consumer <bundle>` inspects built or installed plugin bundles from the user side
112
+ - `pluxx mcp proxy --record` and `--replay` give you deterministic MCP tapes for debugging and CI
475
113
 
476
- ## Hook Trust Model
114
+ ## Authoring Model
477
115
 
478
- Hook commands are shell commands that execute on your machine when hook events fire. If you install a third-party plugin with hooks, you are trusting that plugin author with local command execution.
116
+ Pluxx is intentionally opinionated around a compact cross-host model:
479
117
 
480
- `pluxx install` now warns when the plugin config contains command hooks and prints each event/command pair before install proceeds.
118
+ - skills
119
+ - instructions
120
+ - mcp
121
+ - commands
122
+ - hooks
123
+ - permissions
124
+ - userConfig
125
+ - agents
126
+ - brand and assets
127
+ - taxonomy
481
128
 
482
- Use `--trust` to bypass the confirmation prompt (useful in CI/non-interactive environments):
129
+ Pluxx owns the deterministic scaffold and validation. Your host coding agent can refine taxonomy, instructions, and examples without breaking the structure.
483
130
 
484
- ```bash
485
- bunx pluxx install --trust
486
- ```
131
+ ## Install And Runtime Notes
487
132
 
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
133
+ - npm package: `@orchid-labs/pluxx`
134
+ - preferred invocation: `npx @orchid-labs/pluxx ...`
135
+ - global install also works: `npm install -g @orchid-labs/pluxx`
136
+ - the current launcher still requires Bun at runtime
506
137
 
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
- ```
138
+ ## Read Next
529
139
 
530
- ## Comparison
531
-
532
- | | pluxx | npx skills | SkillKit |
533
- |---|:---:|:---:|:---:|
534
- | Install skills to multiple agents | - | Yes | Yes |
535
- | Generate plugin manifests | Yes | - | - |
536
- | MCP config with auth translation | Yes | - | - |
537
- | Hook generation per platform | Yes | - | - |
538
- | Brand/interface metadata | Yes | - | - |
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
140
+ - [Getting started](./docs/getting-started.md)
141
+ - [Create a Pluxx plugin](./docs/create-a-pluxx-plugin.md)
142
+ - [How it works](./docs/how-it-works.md)
143
+ - [Use Pluxx in host agents](./docs/use-pluxx-in-host-agents.md)
144
+ - [Core primitives](./docs/core-primitives.md)
145
+ - [OSS wedge and trust layer](./docs/oss-wedge-and-trust-layer.md)
146
+ - [Compatibility matrix](./docs/compatibility.md)
147
+ - [First proof and demo asset pack](./docs/first-proof-demo-asset-pack.md)
148
+ - [Releasing Pluxx](./docs/releasing-pluxx.md)
571
149
 
572
150
  ## License
573
151