{"name":"plugin.json","slug":"plugin-json","family":"setting","title":"Settings keys","noun":"settings key","description":"Skill listing and job tracking now go through the storage layer instead of touching files directly.","description_source":"entry","described_by":{"version":"2.1.223","anchor":"skills-and-jobs-load-through-the-storage-sidecar"},"presence":{"first_seen":null,"removed_in":null,"in_current_build":false,"newest_mined":"2.1.319","builds":0,"mined_builds":159,"first_cited":{"version":"2.1.110","released_at":"2026-04-15 20:40:53","spans":5}},"aliases":[],"entries":[{"version":"2.1.302","anchor":"plugin-loading-reworked-marketplace-conflicts-become-per-pl","heading":"Plugin manifest conflicts are now collected as errors for each plugin","line":"A clash between a plugin's plugin.json and its marketplace entry is now recorded as an error in a list instead of failing the load","released_at":"2026-10-16 16:48:28","reason":"found in this entry's text"},{"version":"2.1.295","anchor":"plugin-name-read-from-pluginjson-marketplace-clone-gains-p","heading":"Plugin names are read from plugin.json, and marketplace clones get a path","line":"Claude Code reads a plugin's name from its plugin.json file, and cloning a plugin marketplace now also passes a path","released_at":"2026-10-08 18:22:58","reason":"found in this entry's text"},{"version":"2.1.287","anchor":"plugin-name-impersonation-check-in-marketplace-validation-an","heading":"Plugin names that imitate Anthropic's are now flagged when validated","line":"Plugin checks now give an error for names that start with claude-, anthropic- or similar, and a warning for looser look-alikes","released_at":"2026-10-01 16:59:25","reason":"found in this entry's text"},{"version":"2.1.281","anchor":"plugin-directory-detection-recognises-marketplace-roots","heading":"Plugin directory detection recognises marketplace roots","line":"A folder with .claude-plugin\/marketplace.json but no plugin.json is now treated as a marketplace root","released_at":"2026-09-23 17:01:17","reason":"found in this entry's text"},{"version":"2.1.281","anchor":"plugin-validation-now-checks-a-plugins-mcp-server-files","heading":"Plugin validation now checks a plugin's MCP server files","line":"Plugin validation now checks a plugin's MCP server files for bad settings, insecure addresses and credentials left in plain text","released_at":"2026-09-23 17:01:17","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"new-plugin-type-contract-validator-and-claude-code-pluginsd","heading":"New plugin type-contract validator and claude-code-plugins.d.ts generator","line":"Plugin type contracts get strict validation and a generated claude-code-plugins.d.ts file","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"plugin-manifests-can-declare-a-types-field-for-hooks-modul","heading":"Plugin manifests can declare a types field for hooks-module engine interfaces","line":"Plugin manifests can now declare a `types` field describing what they expose on the shared `$` interface","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"plugin-manifest-gains-a-types-field-declaring-engineinterf","heading":"Plugin manifest gains a types field declaring EngineInterface members on $","line":"Plugin manifests can now declare a `types` field describing what they add to the `$` interface","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.268","anchor":"plugin-manifest-path-traversal-checks-consolidated-into-a-sh","heading":"Plugin manifest path-traversal checks consolidated into a shared helper","line":"Plugin path-traversal checks unified into one shared helper function","released_at":"2026-09-10 18:41:11","reason":"found in this entry's text"},{"version":"2.1.265","anchor":"plugin-marketplace-listings-enriched-from-each-plugins-own","heading":"Plugin marketplace listings enriched from each plugin's own plugin.json","line":"Plugin marketplace listings now fill in missing display info by reading the plugin's own plugin.json","released_at":"2026-09-08 19:05:16","reason":"named in this entry, found in this entry's text"}],"entries_total":30,"docs":[{"source":"api","path":"api\/beta\/organization\/plugins","title":"Plugins","documented":false},{"source":"api","path":"api\/beta\/organization\/plugins\/create","title":"Create Plugin","documented":false},{"source":"api","path":"api\/beta\/organization\/plugins\/versions","title":"Versions","documented":false},{"source":"api","path":"api\/beta\/organization\/plugins\/versions\/create","title":"Create Plugin Version","documented":false},{"source":"api","path":"manage-claude\/plugins-api","title":"plugins-api","documented":false},{"source":"claude-code","path":"agent-sdk\/plugins","title":"Plugins in the SDK","documented":false},{"source":"claude-code","path":"changelog","title":"Claude Code changelog","documented":false},{"source":"claude-code","path":"mcp","title":"Connect Claude Code to tools via MCP","documented":false},{"source":"claude-code","path":"plugin-evals","title":"Test plugins with evals","documented":false},{"source":"claude-code","path":"plugins\/cli-reference","title":"Plugin commands reference","documented":false}],"docs_total":12,"gates":[],"related":[{"name":"plugin.register","slug":"plugin-register","description":"Plugin hooks can now react to tool-call dry-runs, config changes, and session attach\/detach events."},{"name":"plugin_folder_held","slug":"plugin-folder-held","description":"Plugin install and uninstall failures now report specific error codes, and --config is skipped when an install changed nothing"},{"name":"plugin_policy_blocked","slug":"plugin-policy-blocked","description":"Plugin updates blocked by org policy now fail early with a stated reason instead of quietly stalling."},{"name":"pluginConfigs","slug":"pluginconfigs","description":"Store the answers you gave a [plugin](https:\/\/code.claude.com\/docs\/en\/plugins\/overview.md)'s configuration dialog"},{"name":"pluginDelivery","slug":"plugindelivery","description":"A new SDK option lets plugins be delivered via the initialize request instead of argv, still opt-in."},{"name":"pluginDigests","slug":"plugindigests","description":"Managed settings can now list fingerprints of approved plugin releases, and a hooks plugin loads only from a folder that matches one"},{"name":"pluginDirs","slug":"plugindirs","description":null},{"name":"pluginDirsUnderTest","slug":"plugindirsundertest","description":null},{"name":"plugins","slug":"plugins","description":"Signing in can request an extra permission for plugin search, though search itself remains policy-gated."},{"name":"pluginSecrets","slug":"pluginsecrets","description":"Deleting a plugin's saved options now checks that its settings and secrets are really gone, and reports what failed"}],"url":"https:\/\/changelogs.core-directive.com\/reference\/setting\/plugin-json","family_url":"https:\/\/changelogs.core-directive.com\/reference\/setting.json"}