Help us improve
Share bugs, ideas, or general feedback.
From health-plugin
Diagnoses and fixes Claude Code plugin registry issues including orphaned entries and project-scope conflicts (addresses #14202).
npx claudepluginhub laurigates/claude-plugins --plugin health-pluginHow 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.
Troubleshoots 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.
Audits Claude Code plugins for manifest validity, component organization, namespace compliance, documentation, and marketplace readiness before releases or periodic checks.
Share bugs, ideas, or general feedback.
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 validation