Agent Skillsopenai/skills › plugin-creator

plugin-creator

GitHub

用于为 Codex 创建和脚手架化插件目录,自动生成 plugin.json 及可选组件结构,并支持更新 marketplace 元数据。

skills/.system/plugin-creator/SKILL.md openai/skills

Trigger Scenarios

需要创建新的本地插件 生成或更新插件市场入口

Install

npx skills add openai/skills --skill plugin-creator -g -y
More Options

Non-standard path

npx skills add https://github.com/openai/skills/tree/main/skills/.system/plugin-creator -g -y

Use without installing

npx skills use openai/skills@plugin-creator

指定 Agent (Claude Code)

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

安装 repo 全部 skill

npx skills add openai/skills --all -g -y

预览 repo 内 skill

npx skills add openai/skills --list

SKILL.md

Frontmatter
{
    "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:
  # 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>
  1. Open <plugin-path>/.codex-plugin/plugin.json and replace [TODO: ...] placeholders.

  2. Generate or update the repo marketplace entry when the plugin should appear in Codex UI ordering:

# 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:

python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin \
  --path ~/plugins \
  --marketplace-path ~/.agents/plugins/marketplace.json \
  --with-marketplace
  1. Generate/adjust optional companion folders as needed:
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 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

  • 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:
{
  "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:

{
  "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:

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

Version History

  • 49f948f Current 2026-07-25 07:39

Same Skill Collection

skills/.curated/aspnet-core/SKILL.md
skills/.curated/chatgpt-apps/SKILL.md
skills/.curated/cli-creator/SKILL.md
skills/.curated/cloudflare-deploy/SKILL.md
skills/.curated/define-goal/SKILL.md
skills/.curated/figma-code-connect-components/SKILL.md
skills/.curated/figma-create-design-system-rules/SKILL.md
skills/.curated/figma-create-new-file/SKILL.md
skills/.curated/figma-generate-library/SKILL.md
skills/.curated/figma-implement-design/SKILL.md
skills/.curated/figma/SKILL.md
skills/.curated/gh-address-comments/SKILL.md
skills/.curated/gh-fix-ci/SKILL.md
skills/.curated/jupyter-notebook/SKILL.md
skills/.curated/linear/SKILL.md
skills/.curated/migrate-to-codex/SKILL.md
skills/.curated/netlify-deploy/SKILL.md
skills/.curated/notion-knowledge-capture/SKILL.md
skills/.curated/notion-meeting-intelligence/SKILL.md
skills/.curated/notion-research-documentation/SKILL.md
skills/.curated/notion-spec-to-implementation/SKILL.md
skills/.curated/openai-docs/SKILL.md
skills/.curated/pdf/SKILL.md
skills/.curated/playwright-interactive/SKILL.md
skills/.curated/playwright/SKILL.md
skills/.curated/render-deploy/SKILL.md
skills/.curated/screenshot/SKILL.md
skills/.curated/security-best-practices/SKILL.md
skills/.curated/security-threat-model/SKILL.md
skills/.curated/sentry/SKILL.md
skills/.curated/speech/SKILL.md
skills/.curated/transcribe/SKILL.md
skills/.curated/vercel-deploy/SKILL.md
skills/.curated/yeet/SKILL.md
skills/.system/openai-docs/SKILL.md
skills/.system/skill-creator/SKILL.md
skills/.system/skill-installer/SKILL.md
skills/.curated/figma-generate-design/SKILL.md
skills/.curated/figma-use/SKILL.md
skills/.curated/hatch-pet/SKILL.md
skills/.curated/security-ownership-map/SKILL.md
skills/.curated/winui-app/SKILL.md
skills/.system/imagegen/SKILL.md

Metadata

Files
0
Version
49f948f
Hash
3b43cb21
Indexed
2026-07-25 07:39

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 11:55
浙ICP备14020137号-1 $Гость$