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, andcommand. - The file uses standard JSON syntax and resides in the plugin root or fixture directories.
- The
commandarray defines the runtime invocation, typically starting with an interpreter likenode. - Source examples exist in
plugins/plugin-eval/fixtures/metric-pack/manifest.jsonand 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →