plugin-creator
Original:🇺🇸 English
Translated
1 scriptsChecked / no sensitive code detected
Create and scaffold plugin directories for Codex with a required `.codex-plugin/plugin.json`, optional plugin folders/files, and baseline placeholders you can edit before publishing or testing. Use when Codex needs to create a new local plugin, add optional plugin structure, or generate or update repo-root `.agents/plugins/marketplace.json` entries for plugin ordering and availability metadata.
3installs
Sourceopenai/codex
Added on
NPX Install
npx skill4agent add openai/codex plugin-creatorTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Plugin Creator
Quick Start
- Run the scaffold script:
bash
# Plugin names are normalized to lower-case hyphen-case and must be <= 64 chars.
# The generated folder and plugin.json name are always the same.
# Run from repo root (or replace .agents/... with the absolute path to this SKILL).
# By default creates in <repo_root>/plugins/<plugin-name>.
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py <plugin-name>-
Openand replace
<plugin-path>/.codex-plugin/plugin.jsonplaceholders.[TODO: ...] -
Generate or update the repo marketplace entry when the plugin should appear in Codex UI ordering:
bash
# marketplace.json always lives at <repo-root>/.agents/plugins/marketplace.json
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin --with-marketplaceFor a home-local plugin, treat as the root and use:
<home>bash
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin \
--path ~/plugins \
--marketplace-path ~/.agents/plugins/marketplace.json \
--with-marketplace- Generate/adjust optional companion folders as needed:
bash
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin --path <parent-plugin-directory> \
--with-skills --with-hooks --with-scripts --with-assets --with-mcp --with-apps --with-marketplace<parent-plugin-directory><plugin-name>~/code/pluginsWhat this skill creates
- If the user has not made the plugin location explicit, ask whether they want a repo-local plugin or a home-local plugin before generating marketplace entries.
- Creates plugin root at .
/<parent-plugin-directory>/<plugin-name>/ - Always creates .
/<parent-plugin-directory>/<plugin-name>/.codex-plugin/plugin.json - Fills the manifest with the full schema shape, placeholder values, and the complete section.
interface - Creates or updates when
<repo-root>/.agents/plugins/marketplace.jsonis set.--with-marketplace- If the marketplace file does not exist yet, seed top-level plus
nameplaceholders before adding the first plugin entry.interface.displayName
- If the marketplace file does not exist yet, seed top-level
- is normalized using skill-creator naming rules:
<plugin-name>- →
My Pluginmy-plugin - →
My--Pluginmy-plugin - underscores, spaces, and punctuation are converted to
- - result is lower-case hyphen-delimited with consecutive hyphens collapsed
- Supports optional creation of:
skills/hooks/scripts/assets/.mcp.json.app.json
Marketplace workflow
- always lives at
marketplace.json.<repo-root>/.agents/plugins/marketplace.json - For a home-local plugin, use the same convention with as the root:
<home>plus~/.agents/plugins/marketplace.json../plugins/<plugin-name> - Marketplace root metadata supports top-level plus optional
name.interface.displayName - Treat plugin order in as render order in Codex. Append new entries unless a user explicitly asks to reorder the list.
plugins[] - belongs inside the marketplace
displayNameobject, not individualinterfaceentries.plugins[] - Each generated marketplace entry must include all of:
policy.installationpolicy.authenticationcategory
- Default new entries to:
policy.installation: "AVAILABLE"policy.authentication: "ON_INSTALL"
- Override defaults only when the user explicitly specifies another allowed value.
- Allowed values:
policy.installationNOT_AVAILABLEAVAILABLEINSTALLED_BY_DEFAULT
- Allowed values:
policy.authenticationON_INSTALLON_USE
- Treat as an override. Omit it unless the user explicitly requests product gating.
policy.products - The generated plugin entry shape is:
json
{
"name": "plugin-name",
"source": {
"source": "local",
"path": "./plugins/plugin-name"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}-
Useonly when intentionally replacing an existing marketplace entry for the same plugin name.
--force -
Ifdoes not exist yet, create it with top-level
<repo-root>/.agents/plugins/marketplace.json, an"name"object containing"interface", and a"displayName"array, then add the new entry.plugins -
For a brand-new marketplace file, the root object should look like:
json
{
"name": "[TODO: marketplace-name]",
"interface": {
"displayName": "[TODO: Marketplace Display Name]"
},
"plugins": [
{
"name": "plugin-name",
"source": {
"source": "local",
"path": "./plugins/plugin-name"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}Required behavior
- Outer folder name and
plugin.jsonare always the same normalized plugin name."name" - Do not remove required structure; keep present.
.codex-plugin/plugin.json - Keep manifest values as placeholders until a human or follow-up step explicitly fills them.
- If creating files inside an existing plugin path, use only when overwrite is intentional.
--force - Preserve any existing marketplace .
interface.displayName - When generating marketplace entries, always write ,
policy.installation, andpolicy.authenticationeven if their values are defaults.category - Add only when the user explicitly asks for that override.
policy.products - Keep marketplace relative to repo root as
source.path../plugins/<plugin-name>
Reference to exact spec sample
For the exact canonical sample JSON for both plugin manifests and marketplace entries, use:
references/plugin-json-spec.md
Validation
After editing , run:
SKILL.mdbash
python3 <path-to-skill-creator>/scripts/quick_validate.py .agents/skills/plugin-creator