数据分析

plugin-creator

为 Codex 一键生成规范化命名的插件目录、清单与可选子目录。

它能做什么

Plugin Creator 通过一条命令为 Codex 搭建插件目录。它总会生成包含完整字段与占位符的 `.codex-plugin/plugin.json`,以及规范化为小写连字符格式(最长 64 字符)、与清单 `name` 保持一致的外层文件夹。脚本可按需创建 `skills/`、`hooks/`、`scripts/`、`assets/`、`.mcp.json` 与 `.app.json`。传入 `--with-marketplace` 时,会新建或更新 `.agents/plugins/marketplace.json`:首次创建会写入顶层的 `name` 与 `interface.displayName` 占位符,并在 `plugins[]` 末尾追加一条包含 `policy.installation`、`policy.authentication` 与 `category` 的条目,默认值分别为 `AVAILABLE`、`ON_INSTALL`、`Productivity`。`--force` 仅在你明确要替换同名条目时使用。

什么时候用它

  • 为 Codex 搭建新插件目录,生成规范化名称与清单
  • 为现有插件补齐 skills、hooks、scripts、assets、MCP 配置、apps 等可选子目录
  • 新建或追加 .agents/plugins/marketplace.json 条目,管理插件展示顺序

技能文档

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 /plugins/.
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py 
  1. Open /.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 /.agents/plugins/marketplace.json
python3 .agents/skills/plugin-creator/scripts/create_basic_plugin.py my-plugin --with-marketplace

For a home-local plugin, treat `` 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  \
  --with-skills --with-hooks --with-scripts --with-assets --with-mcp --with-apps --with-marketplace

is the directory where the plugin folder 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 ///.
  • Always creates ///.codex-plugin/plugin.json.
  • Fills the manifest with the full schema shape, placeholder values, and the complete interface section.
  • Creates or updates /.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.
  • `` 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 /.agents/plugins/marketplace.json.
  • For a home-local plugin, use the same convention with `` as the root: ~/.agents/plugins/marketplace.json plus ./plugins/.
  • 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 /.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/.

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 /scripts/quick_validate.py .agents/skills/plugin-creator

常见问题

会覆盖已有的插件目录吗?
不会。已有文件会被保留;只有在使用 `--force` 且插件名相同时,才会替换 marketplace 中已有的条目。
marketplace.json 应该放在哪里?
仓库根的 `<root>/.agents/plugins/marketplace.json`;家用本机场景

相关技能

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants4.3k 次安装296 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

通过托管 OAuth 代理连接 Notion 工作区,支持搜索、数据库查询与读取,写入需用户确认。

339 次安装8 星标

通过托管 OAuth 连接,读写 Google Merchant Center 的商品、库存、促销与账户数据。

231 次安装5 星标

通过托管 OAuth 网关调用 Square API 接口,内置连接管理能力。

229 次安装3 星标

基于 MachFive API 搭建冷外联活动并从线索数据生成个性化邮件序列,搭活动不消耗配额。

作者 MachFive242 次安装4 星标

OpenAI 的更多技能

浏览全部技能

hatch-pet

官方

从概念、品牌或参考图生成 Codex 兼容的宠物精灵动画图谱。

作者 OpenAI24.8k 星标

imagegen

官方

通过内置图像工具生成或编辑项目所需的位图素材,仅在用户明确要求时切换到 CLI 回退路径。

作者 OpenAI24.8k 星标

winui-app

官方

用官方 Windows App SDK 模板和内置安装流程引导、搭建并验证 WinUI 3 桌面应用。

作者 OpenAI24.8k 星标

通过 Code Connect 把 Figma 组件与代码组件对应起来,并扫描代码库寻找匹配的实现。

作者 OpenAI24.8k 星标

针对具体代码库产出有据可查的 AppSec 威胁建模 Markdown 文档。

作者 OpenAI24.8k 星标

按既定流程把 Figma 设计稿转成项目代码,视觉与 Figma 1:1 对齐,并落到已有设计系统里。

作者 OpenAI24.8k 星标