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-pluginThis skill is limited to using the following tools:
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.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
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