home / skills / laurigates / claude-plugins / health-check

health-check skill

/health-plugin/skills/health-check

This skill runs a complete health check of Claude Code, diagnosing plugins, settings, hooks, and MCP servers to improve reliability.

npx playbooks add skill laurigates/claude-plugins --skill health-check

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
4.7 KB
---
model: haiku
created: 2026-02-04
modified: 2026-02-10
reviewed: 2026-02-04
description: Run a comprehensive diagnostic scan of Claude Code configuration including plugins, settings, hooks, and MCP servers
allowed-tools: Bash(test *), Bash(jq *), Bash(head *), Bash(find *), Read, Glob, Grep, TodoWrite
argument-hint: "[--fix] [--verbose]"
name: health-check
---

# /health:check

Run a comprehensive diagnostic scan of your Claude Code environment. Identifies issues with plugin registry, settings files, hooks configuration, and MCP servers.

## When to Use This Skill

| Use this skill when... | Use another approach when... |
|------------------------|------------------------------|
| Running comprehensive Claude Code diagnostics | Checking specific component only (use `/health:plugins`, `/health:settings`) |
| Troubleshooting general Claude Code issues | Plugin registry issues only (use `/health:plugins --fix`) |
| Validating environment configuration | Auditing plugins for project fit (use `/health:audit`) |
| Identifying misconfigured settings or hooks | Just viewing settings (use Read tool on settings.json) |
| Quick health check before starting work | Need agentic optimization audit (use `/health:agentic-audit`) |

## Context

- User home: !`echo $HOME`
- Current project: !`pwd`
- Plugin registry exists: !`find ~/.claude/plugins -maxdepth 1 -name 'installed_plugins.json' 2>/dev/null`
- User settings exists: !`find ~/.claude -maxdepth 1 -name 'settings.json' 2>/dev/null`
- Project settings exists: !`find .claude -maxdepth 1 -name 'settings.json' 2>/dev/null`
- Local settings exists: !`find .claude -maxdepth 1 -name 'settings.local.json' 2>/dev/null`

## Parameters

| Parameter | Description |
|-----------|-------------|
| `--fix` | Attempt to automatically fix identified issues |
| `--verbose` | Show detailed diagnostic information |

## Execution

Execute this comprehensive health check:

### Step 1: Check the plugin registry

1. Read `~/.claude/plugins/installed_plugins.json` if it exists
2. For each installed plugin, verify:
   - If `projectPath` is set, confirm the directory exists
   - Flag orphaned entries (projectPath points to deleted directory)
   - Flag potential scope conflicts (same plugin installed globally and per-project)
3. Check if current project has plugins that show as "installed" but are not active here

### Step 2: Validate settings files

1. Validate JSON syntax in all settings files:
   - `~/.claude/settings.json` (user-level)
   - `.claude/settings.json` (project-level)
   - `.claude/settings.local.json` (local overrides)
2. Check for common issues: invalid permission patterns, conflicting allow/deny rules, deprecated settings

### Step 3: Check hooks configuration

1. Read hooks from settings files
2. Validate that hook command paths exist
3. Check timeout configurations
4. Identify potential hook conflicts

### Step 4: Check MCP server configuration

1. Look for MCP configuration in `.claude/settings.json`, `.mcp.json`, and plugin-provided MCP configs
2. Validate server command paths
3. Check for missing environment variables

### Step 5: Generate the diagnostic report

Print a structured report covering each check area (Plugin Registry, Settings Files, Hooks, MCP Servers) with status indicators (OK/WARN/ERROR), issue counts, and recommended actions. Use the report template from [REFERENCE.md](REFERENCE.md).

## Agentic Optimizations

| Context | Command |
|---------|---------|
| Quick health check | `/health:check` |
| Health check with auto-fix | `/health:check --fix` |
| Detailed diagnostics | `/health:check --verbose` |
| Check plugin registry exists | `test -f ~/.claude/plugins/installed_plugins.json && echo "exists" \|\| echo "missing"` |
| Validate settings JSON | `jq empty .claude/settings.json 2>&1` |
| List MCP servers | `jq -r '.mcpServers \| keys[]' .mcp.json 2>/dev/null` |

## Known Issues Database

Reference these known Claude Code issues when diagnosing:

| Issue | Symptoms | Solution |
|-------|----------|----------|
| #14202 | Plugin shows "installed" but not active in project | Run `/health:plugins --fix` |
| Orphaned projectPath | Plugin was installed for deleted project | Run `/health:plugins --fix` |
| Invalid JSON | Settings file won't load | Validate and fix JSON syntax |
| Hook timeout | Commands hang or fail silently | Check hook timeout settings |

## Flags

| Flag | Description |
|------|-------------|
| `--fix` | Attempt automatic fixes for identified issues |
| `--verbose` | Include detailed diagnostic output |

## See Also

- `/health:plugins` - Detailed plugin registry diagnostics
- `/health:settings` - Settings file validation
- `/health:hooks` - Hooks configuration check
- `/health:mcp` - MCP server diagnostics

Overview

This skill runs a comprehensive diagnostic scan of a Claude Code environment to find issues with plugins, settings, hooks, and MCP servers. It reports status (OK/WARN/ERROR), counts issues, and gives recommended actions. Use flags to attempt automatic fixes or to get detailed output.

How this skill works

The tool inspects the plugin registry, validates user/project/local settings JSON, verifies hook commands and timeouts, and checks MCP server configuration across expected files. It parses installed_plugins.json, .claude settings files, .mcp.json and plugin-provided MCP configs, then compiles a structured report with findings and remediation steps.

When to use it

  • Before starting work to confirm environment health
  • Troubleshooting general Claude Code failures spanning plugins, settings, hooks, or MCP servers
  • After installing or updating plugins to detect scope or orphaned entries
  • When deploying agents that depend on hooks or MCP servers
  • To run automated fixes using the --fix flag

Best practices

  • Run --verbose when troubleshooting to see detailed file paths and commands
  • Back up settings files before applying automatic fixes
  • Run the check from the project root to include project-level settings (.claude)
  • Use --fix only after reviewing WARN/ERROR entries when possible
  • Validate any changes to hook commands or MCP env vars in a safe test environment

Example use cases

  • Quick pre-work health check: /health:check to ensure no blocked plugins or invalid JSON
  • Fix orphaned or conflicting plugin entries: /health:check --fix to attempt repairs
  • Deep troubleshooting: /health:check --verbose to get command paths, timeout values, and missing env vars
  • MCP server audit: run the check to list configured servers and validate server commands and env variables
  • Validate hook configurations after adding custom hooks to ensure paths exist and timeouts are sane

FAQ

What does the --fix flag do?

--fix attempts safe automatic repairs such as removing orphaned plugin entries and correcting obvious JSON errors, but it prompts or reports before changing critical files when verbose mode is off.

Will this modify my configuration without asking?

By default the tool reports findings. --fix enables automatic changes; run with --verbose to review proposed fixes before applying them.