A plugin's manifest is the file that tells Claude Code where the plugin's parts live. claude plugin validate now checks these paths in the manifest:
- commands, hooks, agents, skills, mcpServers, workflows and types, as before
- outputStyles, themes, monitors and lspServers, which were not checked before
- the same keys written in the
experimental.<key>form
There is also a new error. If a hooks, monitors, lspServers or mcpServers path ends in .json but is actually a folder, validation reports that it "must point to a JSON file".
Plugin authors see missing or wrong paths for more kinds of plugin parts before their users run into them. For example, a missing MCP servers file is otherwise skipped silently, so none of its servers load.
This page is for plugin and skill authors who have a working plugin and want to test its behavior, and for teams that gate plugin changes in CI. Its case format is separate from the `evals/evals.json` file the [skill-creator plugin](/docs/…see the edit
To find `SKILL.md` files whose frontmatter doesn't parse, run [`claude plugin validate`](/docs/en/plugins/cli-reference#validate-a-directory) on the skills directory, for example `claude plugin validate .claude/skills` for project skills o…see the edit
To find files in an `agents` directory whose frontmatter doesn't parse, run `claude plugin validate` against the directory, for example `.claude/agents` or `~/.claude/agents`. Claude Code checks only [the directory you name](/docs/en/plugi…see the edit
Before you open the portal, work through the [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist). It covers what the directory's checks look for in `plugin.json`, the README, the license, and the rest of the plugin fo…see the edit
To check the skill's contents rather than the archive shape, [validate it before uploading](#before-uploading) with `skills-ref validate` or `claude plugin validate`, or ask Claude to review the folder against the [Agent Skills specificati…see the edit
* **Run `claude plugin validate ./your-plugin --strict` in your shell**: replace `./your-plugin` with the path to your plugin directory. The command catches manifest errors locally; [plugin validate](/docs/en/plugins/cli-reference#plugin-v…see the edit
Before you submit the plugin to the directory, run `claude plugin validate ./expense-reports`, then select **Validate** in the [developer portal](https://claude.ai/directory/manage). The portal runs every validation check, and [Run the che…see the edit
Run `claude plugin validate` on plugins. For MCP servers, exercise every tool through the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) and as a [custom connector in Claude](/docs/connectors/building/testing).see the edit
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
If you leave one of these variables outside quotes in a shell-form command in a hooks file, `claude plugin validate` warns about it unless the hook sets [`shell`](/docs/en/hooks#command-hook-fields) to `"powershell"`.plugins/manifest-reference see the edit
The full list of checked keys comes from reading the code, not from running the validator.
claude plugin validate on Test plugins with evals
Fixed claude plugin validate saying Claude Code accepts a plugin or marketplace name it cannot install; such names in marketplace.json now…