Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -1465,6 +1465,18 @@
"authentication": "ON_INSTALL"
},
"category": "Engineering"
},
{
"name": "plugin-builder",
"source": {
"source": "local",
"path": "./plugins/plugin-builder"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Engineering"
}
]
}
16 changes: 10 additions & 6 deletions .agents/skills/plugin-creator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,12 +151,16 @@ python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin \
- Add `policy.products` only when the user explicitly asks for that override.
- Keep marketplace `source.path` relative to the selected marketplace root as `./plugins/<plugin-name>`.
- When the workflow created or updated a marketplace-backed plugin, end the final user-facing
response with these two Markdown links, in this order, and do not add any text after them:
- `[View <normalized plugin name>](codex://plugins/view-local?marketplacePath=<absolute marketplace.json path>&pluginName=<normalized plugin name>)`
- `[Share <normalized plugin name>](codex://plugins/share-local?marketplacePath=<absolute marketplace.json path>&pluginName=<normalized plugin name>)`
- Replace the link-label placeholder and both deeplink placeholders with the real normalized plugin
name plus the real absolute marketplace path from the scaffolded plugin. URL-encode query
parameter values when needed.
response with this Codex app handoff block, in this order, and do not add any text after the links.
First write the standalone line `To view this in the Codex app:`. Then write:
- `[View <normalized plugin name>](codex://plugins/<normalized plugin name>?marketplacePath=<absolute marketplace.json path>)`
- `[Share <normalized plugin name>](codex://plugins/<normalized plugin name>?marketplacePath=<absolute marketplace.json path>&mode=share)`
- Replace the normalized plugin-name placeholder in both the Markdown label and the deeplink path
segment with the real normalized plugin name. Replace the marketplace path placeholder with the
real absolute `marketplace.json` path from the scaffolded plugin. URL-encode the path segment and
query value when needed.
- Do not add `pluginName` or `hostId` query parameters to these deeplinks. Codex derives both after
the user clicks the link.
- Do not emit the `View <normalized plugin name>` or `Share <normalized plugin name>` links when no marketplace entry was
created or updated.

Expand Down
30 changes: 30 additions & 0 deletions plugins/plugin-builder/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "plugin-builder",
"version": "0.1.0",
"description": "Create local Codex plugins with the bundled Plugin Creator skill, then review and share the result from a polished right-side app.",
"author": {
"name": "OpenAI",
"url": "https://openai.com/"
},
"homepage": "https://openai.com/",
"license": "Proprietary",
"keywords": [
"plugin",
"builder",
"sharing",
"mcp-app"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Plugin Builder",
"shortDescription": "Create, review, and share newly built local plugins",
"longDescription": "Use the bundled Plugin Creator skill to scaffold a local plugin, then open a read-only Codex app that inspects the plugin's real local contents and continues into View or Share in the desktop app.",
"developerName": "OpenAI",
"category": "Developer Tools",
"websiteURL": "https://openai.com/",
"privacyPolicyURL": "https://openai.com/policies/row-privacy-policy/",
"termsOfServiceURL": "https://openai.com/policies/row-terms-of-use/",
"screenshots": []
}
}
11 changes: 11 additions & 0 deletions plugins/plugin-builder/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"mcpServers": {
"plugin-builder": {
"command": "node",
"args": [
"./mcp/server.js"
],
"cwd": "."
}
}
}
2 changes: 2 additions & 0 deletions plugins/plugin-builder/app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules/
dist/raw/
142 changes: 142 additions & 0 deletions plugins/plugin-builder/app/dist/plugin-builder-widget.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions plugins/plugin-builder/app/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Plugin Builder</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading