Plugin commands reference changedplugins/cli-reference
Nearest release: v2.1.312, published 23 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 28 Oct 2026 18:18 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 28 Oct 2026 18:37 UTC.
Upstream edited
Recorded here
Lines+31added
Lines−1removed
From line
634
where the diff opens
First seen
25 Sep 2026
this site's first read of the page
Recorded edits26to this page, all time
#### Advice on the README
The whole hunk
from line 634, old and new numbered
/
from line 634
634634| Exit code | Verdict line | Meaning |
635635| :- | :- | :- |
636636| `0` | `Validation passed` or `Validation passed with warnings` | The manifest loads. With `--strict`, no warnings either |
637| `1` | `Validation failed` or `Validation failed (--strict treats warnings as errors)` | An error, or a warning under `--strict` |
637| `1` | `Validation failed` or `Validation failed (--strict treats warnings as errors)` | An error, or a warning under `--strict`. [Advice](#advice-on-the-readme) doesn't count, with or without `--strict` |
638638| `2` | `Unexpected error during validation: <reason>` | The validator itself failed, such as on an unreadable path |
639639
640640With `--json`, Claude Code writes the report to stdout as one JSON object with these top-level fields:
from line 645
645645* `manifest`: the manifest's own result, or `null` for a run without a manifest
646646* `contents`: per-file results, each naming its `file` and carrying `errors`, `warnings`, and `notes` arrays
647647 * `gatingHooks`: whether each [mod](https://code.claude.com/docs/en/plugins/mods/overview.md) hook that can refuse an action, such as a `tool.call` hook, has a [`.catch` handler](https://code.claude.com/docs/en/plugins/mods/events#handle-a-hook-that-fails). Each item gives `module`, `pattern`, `hook`, and `hasCatch`. Requires Claude Code v2.1.290 or later
648* `advice`: the [advice](#advice-on-the-readme) of the run, each entry naming the README as `file` and carrying a `message` and the `installLine` to paste. Empty when there is none. Requires Claude Code v2.1.295 or later
648649
649650On exit `2`, the command writes nothing to stdout. The error message goes to stderr.
651
652#### Advice on the README
653
654An `Advice` block in the output of `claude plugin validate` means a plugin's README has no line that installs the plugin from a marketplace, and it gives you a line to add. Advice isn't an error or a warning. It doesn't change the verdict line or the exit code, with or without `--strict`. It requires Claude Code v2.1.295 or later.
655
656For example, validating the `acme-tools` marketplace's directory prints this advice for its `deploy-helper` plugin:
657
658```text theme={null}
659Validating marketplace manifest: /path/to/acme-tools/.claude-plugin/marketplace.json
660
661ℹ Advice (does not change the verdict):
662
663 ❯ /path/to/acme-tools/plugins/deploy-helper/README.md: This README has no line that installs "deploy-helper" from a marketplace. Add the install line, which works in one step on Claude Code 2.1.275 or later.
664 /plugin install deploy-helper --marketplace acme/tools
665
666✔ Validation passed
667```
668
669To clear the advice, paste the suggested line into the README it names, then run `claude plugin validate` again in your shell. The `Advice` block is gone.
670
671If the suggested line holds the placeholder `<owner>/<repo>`, pasting it unchanged doesn't clear the advice. Get the real source first:
672
673* **You validated the plugin's own directory**: when the marketplace lists the plugin from a directory inside its own, validate that directory instead. When it lists the plugin from somewhere else, such as a GitHub repository, fill in `<owner>/<repo>` yourself
674* **You validated the marketplace's directory**: Claude Code fills in the source from the `origin` remote of the `.git` directory at the top of that directory. When it can't use that remote, such as when there is none, replace `<owner>/<repo>` with your marketplace's source yourself
675
676An install line you already wrote counts when `plugin install`, or its short form `plugin i`, is followed on the same line by either of these. The `/plugin` and `claude plugin` spellings both count:
677
678* `<plugin>@<marketplace>`, such as `/plugin install deploy-helper@acme-tools`
679* The plugin's name and `--marketplace <source>`, such as `/plugin install deploy-helper --marketplace acme/tools`
650680
651681## claude plugin marketplace commands
652682
No line in this hunk matches that.