From health-plugin
Diagnoses and fixes Claude Code plugin registry issues including orphaned entries and project-scope conflicts (addresses #14202).
How this skill is triggered — by the user, by Claude, or both
Slash command
/health-plugin:health-pluginssonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Diagnose and fix issues with the Claude Code plugin registry. This command specifically addresses issue #14202 where project-scoped plugins incorrectly appear as globally installed.
Diagnose and fix issues with the Claude Code plugin registry. This command specifically addresses issue #14202 where project-scoped plugins incorrectly appear as globally installed.
| Use this skill when... | Use another approach when... |
|---|---|
| Fixing plugin registry corruption (issue #14202) | Comprehensive health check (use /health:check) |
| Diagnosing project-scope vs global plugin issues | Auditing plugins for relevance (use /health:audit) |
| Cleaning up orphaned plugin entries | Settings validation only needed |
| Resolving "plugin already installed" errors | Agentic optimization audit (use /health:agentic-audit) |
| Manually inspecting registry JSON | Just viewing installed plugins (read registry file) |
pwdfind . -maxdepth 2 -path '*/.claude-plugin/plugin.json' -type ffind . -maxdepth 1 -name '.claude/settings.json'find . -maxdepth 1 -type d -name \'.claude-plugin\'When a plugin is installed with --scope project in one project, other projects incorrectly show the plugin as "(installed)" in the Marketplaces view. This happens because:
~/.claude/plugins/installed_plugins.json stores projectPath for project-scoped installsImpact: Users cannot install the same plugin across multiple projects with project-scope isolation.
| Parameter | Description |
|---|---|
--fix | Apply fixes to the plugin registry |
--dry-run | Show what would be fixed without making changes |
--plugin <name> | Check/fix a specific plugin only |
Execute this plugin registry diagnostic:
~/.claude/plugins/installed_plugins.jsonprojectPath (project-scoped), and the installation timestamp and versionCheck for these issue types:
| Issue Type | Detection | Severity |
|---|---|---|
| Orphaned projectPath | projectPath directory doesn't exist | WARN |
| Missing from current project | Plugin has different projectPath than current directory | INFO |
| Duplicate scopes | Same plugin installed both globally and per-project | WARN |
| Invalid entry | Missing required fields or malformed data | ERROR |
Print a structured diagnostic report listing all installed plugins with scope and status, followed by issues found with severity, details, and suggested fixes.
For each issue, apply the appropriate fix:
projectPath, update .claude/settings.json with enabledPlugins if neededBefore making changes:
~/.claude/plugins/installed_plugins.json.backupAfter applying fixes:
{
"version": 2,
"plugins": {
"plugin-name@marketplace-name": [
{
"scope": "project",
"projectPath": "/path/to/project",
"installPath": "~/.claude/plugins/cache/marketplace/plugin-name/1.0.0",
"version": "1.0.0",
"installedAt": "2024-01-15T10:30:00Z",
"lastUpdated": "2024-01-15T10:30:00Z",
"gitCommitSha": "abc123"
}
]
}
}
Scope types:
"scope": "project" — has projectPath, only active in that project"scope": "user" — no projectPath, active globallyIf automatic fix fails, users can manually edit ~/.claude/plugins/installed_plugins.json:
projectPath to make it globalprojectPath to current project path| Context | Command |
|---|---|
| Plugin registry diagnostics | /health:plugins |
| Fix registry issues | /health:plugins --fix |
| Dry-run mode | /health:plugins --dry-run |
| Inspect registry | jq '.' ~/.claude/plugins/installed_plugins.json 2>/dev/null |
| Check specific plugin | jq '.["plugin-name"]' ~/.claude/plugins/installed_plugins.json 2>/dev/null |
| List orphaned paths | jq -r 'to_entries[] | select(.value.projectPath? and (.value.projectPath | test("."))) | .value.projectPath' ~/.claude/plugins/installed_plugins.json 2>/dev/null |
| Flag | Description |
|---|---|
--fix | Apply fixes (with confirmation prompts) |
--dry-run | Show what would be fixed without changes |
--plugin <name> | Target a specific plugin |
/health:check - Full diagnostic scan/health:settings - Settings file validationnpx claudepluginhub laurigates/claude-plugins --plugin health-pluginTroubleshoots Claude Code plugin registry issues like installation scopes, orphaned entries, project-scoped visibility bugs, and debugging failures. Details structure of ~/.claude/plugins/installed_plugins.json.
Audits .claude/ structure, naming, hooks, and plugin versions. Runs hygiene and sync checks, outputs health report with fix commands.
Diagnoses and fixes oh-my-claudecode installation issues including missing CLAUDE.md, legacy hooks, stale cache, and outdated versions.