OpenAI Plugin Manifest Structure: Required Fields and JSON Examples

An OpenAI plugin manifest is a JSON configuration file containing four required fields—name, version, supportedTargetKinds, and command—that instruct the plugin-eval framework how to build and execute a plugin.

The openai/plugins repository defines a minimal manifest specification used by the plugin-eval evaluation harness. This JSON file tells the framework how to locate source code, determine compatibility, and invoke the correct runtime command.

Required Fields in a Plugin Manifest

According to the source code in openai/plugins, every plugin manifest must declare four specific properties. The framework reads these fields to manage the plugin lifecycle.

name

The name field accepts a string value that serves as a unique identifier for the plugin. This short handle appears in logs and evaluation reports.

version

The version field expects a semantic versioning string following the MAJOR.MINOR.PATCH format. Valid examples include "1.0.0" or "2.1.3".

supportedTargetKinds

This field contains an array of strings indicating what types of targets the plugin can operate on. Common values found in the repository include "skill", "plugin", and "directory".

command

The command field specifies the execution instruction as an array of strings. The evaluator passes this array directly to the process spawn function, with the first element typically being the interpreter (e.g., node) followed by the entry-point script.

Example Plugin Manifest from the OpenAI Repository

The canonical example resides in plugins/plugin-eval/fixtures/metric-pack/manifest.json. This file demonstrates the exact structure expected by the framework:

{
  "name": "team-rubric",
  "version": "1.0.0",
  "supportedTargetKinds": ["skill", "plugin", "directory"],
  "command": ["node", "./emit-pack.js"]
}

In this example, the manifest declares a plugin named team-rubric at version 1.0.0. The evaluator understands that this tool applies to skills, plugins, or directories, and should be executed by running node ./emit-pack.js.

Real-World Implementation Patterns

Beyond the fixture example, production manifests follow the identical schema. The file at plugins/nvidia/skills/omniverse-usd-performance-tuning/references/operations/manifest.json implements the same four-field structure for a specialized skill, confirming the consistency of the specification across different plugin types in the repository.

Summary

  • An OpenAI plugin manifest requires exactly four fields: name, version, supportedTargetKinds, and command.
  • The file uses standard JSON syntax and resides in the plugin root or fixture directories.
  • The command array defines the runtime invocation, typically starting with an interpreter like node.
  • Source examples exist in plugins/plugin-eval/fixtures/metric-pack/manifest.json and the NVIDIA skills directory.

Frequently Asked Questions

What are the required fields in an OpenAI plugin manifest?

A valid manifest must include name (string identifier), version (semver string), supportedTargetKinds (array of target types), and command (array of execution arguments). The plugin-eval framework rejects manifests missing any of these properties.

Where is the example plugin manifest located in the openai/plugins repository?

The primary example lives at plugins/plugin-eval/fixtures/metric-pack/manifest.json. A production implementation also appears at plugins/nvidia/skills/omniverse-usd-performance-tuning/references/operations/manifest.json.

What values are supported for supportedTargetKinds?

The manifest accepts an array containing any combination of "skill", "plugin", and "directory". These values tell the evaluator which target types the current plugin can analyze or transform.

How does the plugin-eval framework use the manifest?

The framework reads the manifest to determine compatibility, locate the entry point via the command array, and spawn the correct runtime process. It uses supportedTargetKinds to filter applicable plugins during batch evaluations.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →