Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot official · OpenAI

plugin-creator — Codex skill: what it does, how to install

Scaffolds a Codex plugin with its manifest, optional folders, and marketplace entry. Useful when you need a local plugin ready for editing or testing.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openai/skills --skill plugin-creator -a claude-code
Open on GitHub

What plugin-creator does

The skill creates a plugin directory with a normalized name and the required .codex-plugin/plugin.json. The manifest includes the schema shape, an interface section, and placeholder values to replace before publishing or testing. The folder name and manifest name stay identical, while spaces, punctuation, and repeated separators are normalized to lower-case hyphen-case.

Flags can add skills/, hooks/, scripts/, assets/, .mcp.json, and .app.json. With --with-marketplace, the skill creates or updates .agents/plugins/marketplace.json, adds a relative plugin source path, preserves an existing interface.displayName, and writes installation, authentication, and category fields.

For a home-local plugin, choose the home directory as the root and pass a separate marketplace path. Check that location before generating the entry: repository plugins use a relative source path, while the home-local convention uses ~/.agents/plugins/marketplace.json.

What it helps with

  • scaffold a local plugin directory
  • create the required plugin.json manifest
  • add optional skills and hooks folders
  • update a marketplace entry
  • normalize a plugin name

Example prompts for the agent

  • Create a local `my-plugin` with `plugin-creator`, including the required manifest.
  • Run `python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin --with-marketplace`.
  • Create `my-plugin` with skills, hooks, scripts, assets, MCP, and apps folders using `create_basic_plugin.py`.

How to install plugin-creator

1Skills CLI (Vercel)

npx skills add openai/skills --skill plugin-creator -a claude-code

2Manually: put the files in place

~/.claude/skills/plugin-creator/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/plugin-creator/

From the same set20

The whole set →
pdf official openai A skill for reading, creating and reviewing PDFs where layout matters. Useful when the agent builds a document and needs to see how it renders. Claude Code CX Codex Cursor +1 13,400installs gh-fix-ci official openai Finds failing GitHub Actions checks on a pull request, inspects logs, and drafts a fix plan. The skill modifies code only after explicit approval. Claude Code CX Codex Cursor +1 11,400installs openai-docs official openai The skill finds current OpenAI guidance for API work, Codex, model selection, migrations, and prompt updates, using official documentation. Claude Code CX Codex Cursor +1 6,100installs imagegen official openai This skill creates and edits raster images such as illustrations, textures, sprites, and mockups. Use it when the output should be a bitmap asset. Claude Code CX Codex Cursor +1 5,700installs jupyter-notebook official openai Scaffolds reproducible Jupyter notebooks for experiments and tutorials using bundled templates and a helper script. It prevents manual raw JSON editing errors. Claude Code CX Codex Cursor +1 5,600installs skill-creator official openai Official guide for drafting and updating agent skills. It structures procedures, bundled scripts, and documentation while keeping token overhead low. Claude Code CX Codex Cursor +1 4,900installs gh-address-comments official openai This skill finds the open pull request for the current branch, lists review comments, and applies the fixes you select through gh. Claude Code CX Codex Cursor +1 4,800installs cloudflare-deploy official openai This skill helps choose Cloudflare services and prepare application or infrastructure deployments through Workers, Pages, and related products. Claude Code CX Codex Cursor +1 4,300installs

Similar

prompt-master nidhinjs This skill writes and improves prompts for a named AI tool. Use it when a rough request needs to become a ready-to-paste prompt for Claude Code, Cursor, or another supported tool. Claude Code CX Codex Cursor +1 3,900installs portless vercel-labs Assigns local dev servers stable names like myapp.localhost instead of port numbers. Claude Code CX Codex Cursor +1 5,900installs mem0 mem0ai Guides AI coding agents in adding persistent memory to Python and TypeScript applications using the Mem0 Platform SDK or open-source Memory class. Claude Code CX Codex Cursor +1 2,300installs plannotator-compound backnotprop Reads a Plannotator plan archive, pulls out denial patterns and feedback, then builds an HTML dashboard with findings. Claude Code CX Codex Cursor +1 11,400installs plannotator-setup-goal backnotprop This skill turns an idea into a goal package through user interview, fact gathering, and codebase exploration. It helps clarify what needs to be done and creates an execution plan. Claude Code CX Codex Cursor +1 11,300installs competitive-intelligence official anthropics Gathers competitor data from your CRM, emails and web sources, shows how to win against them in a specific deal, and tracks win/loss patterns across your pipeline. Built for sales teams who need competitive context before a call. Claude Code CX Codex Cursor +1 4,500installs setup-matt-pocock-skills Matt Pocock This skill configures a repository for Matt Pocock's engineering skills by setting its issue tracker, triage labels, and domain docs layout. Run it before using the other skills. Claude Code 1,052,851installs to-tickets Matt Pocock Turns a plan, spec, or conversation into small end-to-end tickets with explicit blockers. Use it to agree on the work breakdown before tickets go to a tracker. Claude Code 711,230installs

Questions about plugin-creator

How do I install plugin-creator in Codex?

Run npx skills add openai/skills --skill plugin-creator -a codex, then use .agents/skills/plugin-creator/SKILL.md.

What does plugin-creator do?

It scaffolds a local Codex plugin, creates the required .codex-plugin/plugin.json, adds optional directories, and can update marketplace.json.

How do I add a home-local plugin to the marketplace?

Pass --path ~/plugins and --marketplace-path ~/.agents/plugins/marketplace.json, then add --with-marketplace. The command is `python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin --path ~/plugins --marketplace-path ~/.agents/plugins/marketplace.json --with-marketplace`.

Source text

SKILL.md · Apache-2.0
---
name: plugin-creator
description: 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.
---

# Plugin Creator

## Quick Start

1. 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>
```

2. Open `<plugin-path>/.codex-plugin/plugin.json` and replace `[TODO: ...]` placeholders.

3. 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-marketplace
```

For a home-local plugin, treat `<home>` as the root and use:

```bash
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin \
  --path ~/plugins \
  --marketplace-path ~/.agents/plugins/marketplace.json \
  --with-marketplace
```

4. 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>` is the directory where the plugin folder `<plugin-name>` will be created (for example `~/code/plugins`).

## What 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 `interface` section.
- Creates or updates `<repo-root>/.agents/plugins/marketplace.json` when `--with-marketplace` is set.
  - If the marketplace file does not exist yet, seed top-level `name` plus `interface.displayName` placeholders before adding the first plugin entry.
- `<plugin-name>` is normalized using skill-creator naming rules:
  - `My Plugin` → `my-plugin`
  - `My--Plugin` → `my-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

- `marketplace.json` always lives at `<repo-root>/.agents/plugins/marketplace.json`.
- For a home-local plugin, use the same convention with `<home>` as the root:
  `~/.agents/plugins/marketplace.json` plus `./plugins/<plugin-name>`.
- Marketplace root metadata supports top-level `name` plus optional `interface.displayName`.
- Treat plugin order in `plugins[]` as render order in Codex. Append new entries unless a user explicitly asks to reorder the list.
- `displayName` belongs inside the marketplace `interface` object, not individual `plugins[]` entries.
- Each generated marketplace entry must include all of:
  - `policy.installation`
  - `policy.authentication`
  - `category`
- Default new entries to:
  - `policy.installation: "AVAILABLE"`
  - `policy.authentication: "ON_INSTALL"`
- Override defaults only when the user explicitly specifies another allowed value.
- Allowed `policy.installation` values:
  - `NOT_AVAILABLE`
  - `AVAILABLE`
  - `INSTALLED_BY_DEFAULT`
- Allowed `policy.authentication` values:
  - `ON_INSTALL`
  - `ON_USE`
- Treat `policy.products` as an override. Omit it unless the user explicitly requests product gating.
- 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"
}
```

- Use `--force` only when intentionally replacing an existing marketplace entry for the same plugin name.
- If `<repo-root>/.agents/plugins/marketplace.json` does not exist yet, create it with top-level `"name"`, an `"interface"` object containing `"displayName"`, and a `plugins` array, then add the new entry.

- 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.json` `"name"` are always the same normalized plugin name.
- Do not remove required structure; keep `.codex-plugin/plugin.json` present.
- Keep manifest values as placeholders until a human or follow-up step explicitly fills them.
- If creating files inside an existing plugin path, use `--force` only when overwrite is intentional.
- Preserve any existing marketplace `interface.displayName`.
- When generating marketplace entries, always write `policy.installation`, `policy.authentication`, and `category` even if their values are defaults.
- Add `policy.products` only when the user explicitly asks for that override.
- Keep marketplace `source.path` relative to repo root as `./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 `SKILL.md`, run:

```bash
python3 <path-to-skill-creator>/scripts/quick_validate.py .agents/skills/plugin-creator
```

© openai · Apache-2.0 · openai/skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor