# OpenAI Plugin Manifest Structure: Required Fields and JSON Examples

> Understand the OpenAI plugin manifest structure. Learn the four required fields name version supportedTargetKinds and command with clear JSON examples to build and execute your plugin effectively.

- Repository: [OpenAI/plugins](https://github.com/openai/plugins)
- Tags: api-reference
- Published: 2026-09-10

---

**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`](https://github.com/openai/plugins/blob/main/plugins/plugin-eval/fixtures/metric-pack/manifest.json). This file demonstrates the exact structure expected by the framework:

```json
{
  "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`](https://github.com/openai/plugins/blob/main/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`](https://github.com/openai/plugins/blob/main/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`](https://github.com/openai/plugins/blob/main/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`](https://github.com/openai/plugins/blob/main/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.