/health:check Single entry point for Claude Code health diagnostics. Runs environment checks (plugin registry, settings, hooks, MCP servers, SessionStart executability, pre-commit validity, permissions coverage, marketplace enrollment) plus optional deeper audits, and routes to the appropriate internal workflow. When to Use This Skill | Use this skill when... | Use another approach when... | |------------------------|------------------------------| | Running Claude Code diagnostics | Viewing raw settings (use Read on settings.json) | | Troubleshooting plugin registry issues | Inspecting marke…

\\t' read -r project_path disabled_name; do\n [ -z \"$disabled_name\" ] && continue\n # Membership test: is disabled_name in live_servers?\n case \" ${live_servers} \" in\n *\" ${disabled_name} \"*) ;;\n *)\n orphaned_disabled=$((orphaned_disabled + 1))\n if [ \"$verbose_mode\" = true ]; then\n issues_list=\"${issues_list} - SEVERITY=WARN TYPE=orphan_disabled_mcp PROJECT=${project_path} SERVER=${disabled_name}\\n\"\n fi\n ;;\n esac\n done \u003c \u003c(jq -r '\n .projects // {}\n | to_entries[]\n | . as $p\n | (.value.disabledMcpServers // [])[]\n | [$p.key, .] | @tsv\n ' \"$runtime_file\" 2>/dev/null)\nfi\n\necho \"ORPHAN_DISABLED_MCP=${orphaned_disabled}\"\n\nif [ \"$orphaned_disabled\" -gt 0 ]; then\n issue_count=$((issue_count + orphaned_disabled))\n [ \"$check_status\" = \"OK\" ] && check_status=\"WARN\"\n if [ \"$verbose_mode\" = false ]; then\n issues_list=\"${issues_list} - SEVERITY=WARN TYPE=orphan_disabled_mcp COUNT=${orphaned_disabled} MSG=disabledMcpServers refer to servers no longer in global mcpServers (use --verbose to list)\\n\"\n fi\nfi\n\n# 4. Duplicate / non-canonical MCP names ------------------------------------\n# When both \"foo\" and \"plugin:\u003cscope>:foo\" appear across mcpServers /\n# disabledMcpServers, the bare form is a migration artifact.\nduplicate_mcp=0\n\nif jq -e 'has(\"mcpServers\") or has(\"projects\")' \"$runtime_file\" >/dev/null 2>&1; then\n # Collect every MCP name referenced anywhere, dedupe.\n all_names=$(jq -r '\n [\n (.mcpServers // {} | keys[]),\n (.projects // {} | .[] | (.mcpServers // {} | keys[])?),\n (.projects // {} | .[] | (.disabledMcpServers // [])[]?)\n ] | unique | .[]\n ' \"$runtime_file\" 2>/dev/null)\n\n # For every \"plugin:\u003cscope>:\u003cname>\", if the bare \"\u003cname>\" also appears,\n # flag the bare form as a duplicate.\n while IFS= read -r mcp_name; do\n [ -z \"$mcp_name\" ] && continue\n case \"$mcp_name\" in\n plugin:*:*)\n bare=\"${mcp_name##*:}\"\n if echo \"$all_names\" | grep -qxF \"$bare\"; then\n duplicate_mcp=$((duplicate_mcp + 1))\n if [ \"$verbose_mode\" = true ]; then\n issues_list=\"${issues_list} - SEVERITY=WARN TYPE=duplicate_mcp BARE=${bare} NAMESPACED=${mcp_name}\\n\"\n fi\n fi\n ;;\n esac\n done \u003c\u003c\u003c \"$all_names\"\nfi\n\necho \"DUPLICATE_MCP=${duplicate_mcp}\"\n\nif [ \"$duplicate_mcp\" -gt 0 ]; then\n issue_count=$((issue_count + duplicate_mcp))\n [ \"$check_status\" = \"OK\" ] && check_status=\"WARN\"\n if [ \"$verbose_mode\" = false ]; then\n issues_list=\"${issues_list} - SEVERITY=WARN TYPE=duplicate_mcp COUNT=${duplicate_mcp} MSG=bare MCP names coexist with plugin:scope:name form (migration artifact; use --verbose to list)\\n\"\n fi\nfi\n\n# Suggested cleanup (read-only audit; the operator runs these manually) -----\nif [ \"$issue_count\" -gt 0 ]; then\n echo \"CLEANUP_SUGGESTED=true\"\n echo \"CLEANUP_NOTE=Close other Claude Code sessions before editing ~/.claude.json (the harness rewrites this file on session end). Suggested jq filters:\"\n if [ \"$projects_dead\" -gt 0 ]; then\n echo \" CLEANUP_PROJECTS=jq 'reduce (.projects | keys[]) as \\$k (.; if (\\$k | test(\\\"^/\\\") and (\\$k | @sh | \\\"test -d \\\" + . | @sh)) then . else del(.projects[\\$k]) end)' ~/.claude.json # preview first\"\n fi\n if [ \"$gh_paths_dead\" -gt 0 ]; then\n echo \" CLEANUP_GH_PATHS=Run a shell loop that filters .githubRepoPaths through 'test -d' before writing back to a temp file\"\n fi\n if [ \"$orphaned_disabled\" -gt 0 ]; then\n echo \" CLEANUP_DISABLED_MCP=jq '.projects |= map_values(.disabledMcpServers |= map(select(. as \\$n | (input_filename | .mcpServers | has(\\$n)))))' ~/.claude.json # adapt to your shell\"\n fi\nelse\n echo \"CLEANUP_SUGGESTED=false\"\nfi\n\necho \"STATUS=${check_status}\"\necho \"ISSUE_COUNT=${issue_count}\"\nif [ -n \"$issues_list\" ]; then\n echo \"ISSUES:\"\n echo -e \"$issues_list\" | sed '/^$/d'\nfi\necho \"FIX_SUPPORTED=false\"\necho \"=== END RUNTIME STATE ===\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":9949,"content_sha256":"29b28a398b89dbd36cb5e4e08ad0dd236965f6f2ec1894eef1dcd9a2a8df78a4"},{"filename":"scripts/check-settings.sh","content":"#!/usr/bin/env bash\n# Check Settings Files\n# Validates JSON syntax and structure of all Claude Code settings files.\n# Usage: bash check-settings.sh --home-dir \u003cpath> --project-dir \u003cpath> [--verbose]\n\nset -uo pipefail\n\nhome_dir=\"\"\nproject_dir=\"\"\nverbose_mode=false\n\nwhile [ $# -gt 0 ]; do\n case \"$1\" in\n --home-dir) home_dir=\"$2\"; shift 2 ;;\n --project-dir) project_dir=\"$2\"; shift 2 ;;\n --verbose) verbose_mode=true; shift ;;\n *) shift ;;\n esac\ndone\n\n: \"${home_dir:=$HOME}\"\n: \"${project_dir:=$(pwd)}\"\n\necho \"=== SETTINGS FILES ===\"\n\nissue_count=0\ncheck_status=\"OK\"\n\n# Check jq availability\nif ! command -v jq >/dev/null 2>&1; then\n echo \"JQ_AVAILABLE=false\"\n echo \"STATUS=ERROR\"\n echo \"ISSUE_COUNT=1\"\n echo \"ISSUES:\"\n echo \" - SEVERITY=ERROR TYPE=missing_tool MSG=jq is required but not installed\"\n echo \"=== END SETTINGS FILES ===\"\n exit 1\nfi\n\necho \"JQ_AVAILABLE=true\"\n\n# Define settings files to check\ndeclare -A settings_files=(\n [\"USER_SETTINGS\"]=\"${home_dir}/.claude/settings.json\"\n [\"USER_LOCAL_SETTINGS\"]=\"${home_dir}/.claude/settings.local.json\"\n [\"PROJECT_SETTINGS\"]=\"${project_dir}/.claude/settings.json\"\n [\"PROJECT_LOCAL_SETTINGS\"]=\"${project_dir}/.claude/settings.local.json\"\n)\n\nissues_list=\"\"\n\nfor settings_key in USER_SETTINGS USER_LOCAL_SETTINGS PROJECT_SETTINGS PROJECT_LOCAL_SETTINGS; do\n settings_file=\"${settings_files[$settings_key]}\"\n\n if [ ! -f \"$settings_file\" ]; then\n echo \"${settings_key}=MISSING\"\n if [ \"$verbose_mode\" = true ]; then\n echo \"${settings_key}_PATH=${settings_file}\"\n fi\n continue\n fi\n\n # Validate JSON syntax\n json_error=$(jq empty \"$settings_file\" 2>&1)\n if [ $? -ne 0 ]; then\n echo \"${settings_key}=INVALID\"\n echo \"${settings_key}_ERROR=${json_error}\"\n issues_list=\"${issues_list} - SEVERITY=ERROR TYPE=invalid_json FILE=${settings_file} MSG=${json_error}\\n\"\n issue_count=$((issue_count + 1))\n check_status=\"ERROR\"\n continue\n fi\n\n echo \"${settings_key}=OK\"\n\n if [ \"$verbose_mode\" = true ]; then\n echo \"${settings_key}_PATH=${settings_file}\"\n\n # Count permission patterns if present\n allow_count=$(jq -r '.permissions.allow // [] | length' \"$settings_file\" 2>/dev/null || echo \"0\")\n deny_count=$(jq -r '.permissions.deny // [] | length' \"$settings_file\" 2>/dev/null || echo \"0\")\n echo \"${settings_key}_ALLOW_PATTERNS=${allow_count}\"\n echo \"${settings_key}_DENY_PATTERNS=${deny_count}\"\n\n # Count hooks if present\n hook_count=$(jq -r '.hooks // {} | length' \"$settings_file\" 2>/dev/null || echo \"0\")\n echo \"${settings_key}_HOOKS=${hook_count}\"\n\n # Count enabled plugins if present\n plugin_count=$(jq -r '.enabledPlugins // {} | length' \"$settings_file\" 2>/dev/null || echo \"0\")\n echo \"${settings_key}_ENABLED_PLUGINS=${plugin_count}\"\n fi\ndone\n\n# Check for permission conflicts (allow and deny same pattern)\nuser_settings=\"${home_dir}/.claude/settings.json\"\nproject_settings=\"${project_dir}/.claude/settings.json\"\n\nfor sf in \"$user_settings\" \"$project_settings\"; do\n if [ -f \"$sf\" ]; then\n allow_patterns=$(jq -r '.permissions.allow // [] | .[]' \"$sf\" 2>/dev/null)\n deny_patterns=$(jq -r '.permissions.deny // [] | .[]' \"$sf\" 2>/dev/null)\n\n if [ -n \"$allow_patterns\" ] && [ -n \"$deny_patterns\" ]; then\n while IFS= read -r pattern; do\n if echo \"$deny_patterns\" | grep -qxF \"$pattern\"; then\n issues_list=\"${issues_list} - SEVERITY=WARN TYPE=permission_conflict FILE=${sf} PATTERN=${pattern}\\n\"\n issue_count=$((issue_count + 1))\n [ \"$check_status\" = \"OK\" ] && check_status=\"WARN\"\n fi\n done \u003c\u003c\u003c \"$allow_patterns\"\n fi\n fi\ndone\n\n# Aggregate permission counts across all files\ntotal_allow=0\ntotal_deny=0\nfor sf in \"$user_settings\" \"${home_dir}/.claude/settings.local.json\" \"$project_settings\" \"${project_dir}/.claude/settings.local.json\"; do\n if [ -f \"$sf\" ]; then\n ac=$(jq -r '.permissions.allow // [] | length' \"$sf\" 2>/dev/null || echo \"0\")\n dc=$(jq -r '.permissions.deny // [] | length' \"$sf\" 2>/dev/null || echo \"0\")\n total_allow=$((total_allow + ac))\n total_deny=$((total_deny + dc))\n fi\ndone\necho \"TOTAL_ALLOW_PATTERNS=${total_allow}\"\necho \"TOTAL_DENY_PATTERNS=${total_deny}\"\n\necho \"STATUS=${check_status}\"\necho \"ISSUE_COUNT=${issue_count}\"\nif [ -n \"$issues_list\" ]; then\n echo \"ISSUES:\"\n echo -e \"$issues_list\" | sed '/^$/d'\nfi\necho \"=== END SETTINGS FILES ===\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":4392,"content_sha256":"724237042bac5b2fc8ba2eb7bdc12e4788c4c2f8d2347664f1079d8415e0a491"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"/health:check","type":"text"}]},{"type":"paragraph","content":[{"text":"Single entry point for Claude Code health diagnostics. Runs environment checks (plugin registry, settings, hooks, MCP servers, SessionStart executability, pre-commit validity, permissions coverage, marketplace enrollment) plus optional deeper audits, and routes ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" to the appropriate internal workflow.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"When to Use This Skill","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use this skill when...","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use another approach when...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Running Claude Code diagnostics","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Viewing raw settings (use Read on settings.json)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Troubleshooting plugin registry issues","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Inspecting marketplace metadata manually","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Auditing plugins for project fit","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Installing a specific plugin (use ","type":"text"},{"text":"/plugin install","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Checking skill agentic-optimisation quality","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Editing a single known skill","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"One-stop ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" across registry/stack/agentic","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Precise surgical edits to a single file","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Context","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Current project: !","type":"text"},{"text":"pwd","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Project settings exists: !","type":"text"},{"text":"find .claude -maxdepth 1 -name 'settings.json'","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Local settings exists: !","type":"text"},{"text":"find .claude -maxdepth 1 -name 'settings.local.json'","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Parameters","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse these from ","type":"text"},{"text":"$ARGUMENTS","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Parameter","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--scope=\u003call|registry|stack|agentic|runtime>","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Which audits to run. Default ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Apply fixes to findings (prompts for confirmation).","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--dry-run","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Preview fixes without modifying files.","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--verbose","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Include detailed diagnostics.","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Scope semantics:","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scope","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Covers","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"registry","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin registry health (orphaned ","type":"text"},{"text":"projectPath","type":"text","marks":[{"type":"code_inline"}]},{"text":", stale ","type":"text"},{"text":"enabledPlugins","type":"text","marks":[{"type":"code_inline"}]},{"text":", registry-vs-settings drift)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"stack","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Enabled plugins vs detected project tech stack","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"agentic","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Skill/command/agent agentic-optimisation compliance","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"runtime","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"~/.claude.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" bloat (dead ","type":"text"},{"text":"projects[]","type":"text","marks":[{"type":"code_inline"}]},{"text":", dead ","type":"text"},{"text":"githubRepoPaths[*]","type":"text","marks":[{"type":"code_inline"}]},{"text":", orphaned ","type":"text"},{"text":"disabledMcpServers","type":"text","marks":[{"type":"code_inline"}]},{"text":", duplicate MCP naming). Read-only audit.","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"all","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Environment checks + all four audits","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Execution","type":"text"}]},{"type":"paragraph","content":[{"text":"Execute this diagnostic router. Default scope is ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":" when ","type":"text"},{"text":"--scope","type":"text","marks":[{"type":"code_inline"}]},{"text":" is not provided.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Run environment checks (always)","type":"text"}]},{"type":"paragraph","content":[{"text":"Environment checks run regardless of ","type":"text"},{"text":"--scope","type":"text","marks":[{"type":"code_inline"}]},{"text":". They cover the baseline health of the Claude Code installation and the current project's ","type":"text"},{"text":".claude/","type":"text","marks":[{"type":"code_inline"}]},{"text":" directory.","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1a. Core environment scripts","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${CLAUDE_SKILL_DIR}/scripts/check-plugins.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"\nbash \"${CLAUDE_SKILL_DIR}/scripts/check-settings.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"\nbash \"${CLAUDE_SKILL_DIR}/scripts/check-hooks.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"\nbash \"${CLAUDE_SKILL_DIR}/scripts/check-mcp.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse ","type":"text"},{"text":"STATUS=","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"ISSUES:","type":"text","marks":[{"type":"code_inline"}]},{"text":" from each. Pass ","type":"text"},{"text":"--verbose","type":"text","marks":[{"type":"code_inline"}]},{"text":" when set on ","type":"text"},{"text":"$ARGUMENTS","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1b. SessionStart smoke test","type":"text"}]},{"type":"paragraph","content":[{"text":"Check whether ","type":"text"},{"text":"scripts/install_pkgs.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" (or any script registered in the ","type":"text"},{"text":"SessionStart","type":"text","marks":[{"type":"code_inline"}]},{"text":" hook in ","type":"text"},{"text":".claude/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":") is executable and exits cleanly in both remote and local contexts.","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Locate the ","type":"text"},{"text":"SessionStart","type":"text","marks":[{"type":"code_inline"}]},{"text":" hook command from ","type":"text"},{"text":".claude/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" (look for the ","type":"text"},{"text":"command","type":"text","marks":[{"type":"code_inline"}]},{"text":" field).","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If a script is found, run:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"CLAUDE_CODE_REMOTE=true bash \u003cscript-path>","type":"text"}]},{"type":"paragraph","content":[{"text":"Capture exit code. Expected: 0.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Run again to verify idempotency — expected: 0.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Run with remote guard off:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"CLAUDE_CODE_REMOTE=false bash \u003cscript-path>","type":"text"}]},{"type":"paragraph","content":[{"text":"Expected: 0 (typically a no-op).","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Report:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"OK: All three exit 0","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"WARN: Script exists but is not registered in settings.json hook","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ERROR: Script exits non-zero, or script referenced in hook does not exist","type":"text"}]}]}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1c. Pre-commit config validator","type":"text"}]},{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":".pre-commit-config.yaml","type":"text","marks":[{"type":"code_inline"}]},{"text":" exists:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"pre-commit validate-config .pre-commit-config.yaml","type":"text"}]},{"type":"paragraph","content":[{"text":"Report:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"OK: exits 0 (config is valid)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"WARN: ","type":"text"},{"text":"pre-commit","type":"text","marks":[{"type":"code_inline"}]},{"text":" not installed — skip check, suggest ","type":"text"},{"text":"pip install pre-commit","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ERROR: exits non-zero — show validation error","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1d. Permissions coverage check","type":"text"}]},{"type":"paragraph","content":[{"text":"Compare tools referenced in project files against ","type":"text"},{"text":"permissions.allow","type":"text","marks":[{"type":"code_inline"}]},{"text":" in ","type":"text"},{"text":".claude/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Read ","type":"text"},{"text":"permissions.allow","type":"text","marks":[{"type":"code_inline"}]},{"text":" from ","type":"text"},{"text":".claude/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":". Extract the command prefix from each ","type":"text"},{"text":"Bash(\u003cprefix>:*)","type":"text","marks":[{"type":"code_inline"}]},{"text":" entry.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scan these files for tool invocations:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"justfile","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"Justfile","type":"text","marks":[{"type":"code_inline"}]},{"text":" — commands on recipe lines","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Makefile","type":"text","marks":[{"type":"code_inline"}]},{"text":" — shell commands on recipe lines","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":".pre-commit-config.yaml","type":"text","marks":[{"type":"code_inline"}]},{"text":" — ","type":"text"},{"text":"entry:","type":"text","marks":[{"type":"code_inline"}]},{"text":" fields","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For each tool found in project files:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Flag as ","type":"text"},{"text":"MISSING","type":"text","marks":[{"type":"strong"}]},{"text":" if no matching ","type":"text"},{"text":"Bash(\u003ctool>:*)","type":"text","marks":[{"type":"code_inline"}]},{"text":" entry exists in ","type":"text"},{"text":"permissions.allow","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For each ","type":"text"},{"text":"Bash(\u003ctool>:*)","type":"text","marks":[{"type":"code_inline"}]},{"text":" entry in ","type":"text"},{"text":"permissions.allow","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Flag as ","type":"text"},{"text":"UNUSED","type":"text","marks":[{"type":"strong"}]},{"text":" if the tool is not found in any project file (informational, not an error)","type":"text"}]}]}]}]}]},{"type":"paragraph","content":[{"text":"Scoring:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"OK: No missing permissions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"WARN: 1–3 missing permissions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ERROR: 4+ missing permissions","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1e. Marketplace enrollment check","type":"text"}]},{"type":"paragraph","content":[{"text":"The local marketplace key (set by ","type":"text"},{"text":"claude marketplace add \u003cname>","type":"text","marks":[{"type":"code_inline"}]},{"text":") is user-chosen and varies between installs (commonly ","type":"text"},{"text":"laurigates-claude-plugins","type":"text","marks":[{"type":"code_inline"}]},{"text":", sometimes ","type":"text"},{"text":"claude-plugins","type":"text","marks":[{"type":"code_inline"}]},{"text":"). Identify the marketplace by its stable ","type":"text"},{"text":"source.repo","type":"text","marks":[{"type":"code_inline"}]},{"text":", not by a hardcoded local key.","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Read ","type":"text"},{"text":".claude/settings.json","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scan all entries under ","type":"text"},{"text":"extraKnownMarketplaces","type":"text","marks":[{"type":"code_inline"}]},{"text":" and find the one whose ","type":"text"},{"text":"source.repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" equals ","type":"text"},{"text":"\"laurigates/claude-plugins\"","type":"text","marks":[{"type":"code_inline"}]},{"text":". Capture that entry's key as ","type":"text"},{"text":"$MP_KEY","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Check that ","type":"text"},{"text":"enabledPlugins","type":"text","marks":[{"type":"code_inline"}]},{"text":" contains at least one key with the suffix ","type":"text"},{"text":"@$MP_KEY","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Report:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"OK: Both checks pass","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"WARN: ","type":"text"},{"text":"enabledPlugins","type":"text","marks":[{"type":"code_inline"}]},{"text":" has no ","type":"text"},{"text":"@$MP_KEY","type":"text","marks":[{"type":"code_inline"}]},{"text":" entries (marketplace enrolled but no plugins enabled)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ERROR: no ","type":"text"},{"text":"extraKnownMarketplaces","type":"text","marks":[{"type":"code_inline"}]},{"text":" entry with ","type":"text"},{"text":"source.repo = laurigates/claude-plugins","type":"text","marks":[{"type":"code_inline"}]},{"text":" (run ","type":"text"},{"text":"/configure:claude-plugins --fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" to add it)","type":"text"}]}]}]}]}]},{"type":"paragraph","content":[{"text":"Reference ","type":"text"},{"text":"jq","type":"text","marks":[{"type":"code_inline"}]},{"text":" snippet (for verification or fix scripts):","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"MP_KEY=$(jq -r '.extraKnownMarketplaces // {} | to_entries | map(select(.value.source.repo == \"laurigates/claude-plugins\")) | .[0].key // empty' .claude/settings.json)\nif [ -z \"$MP_KEY\" ]; then\n echo \"ERROR: no extraKnownMarketplaces entry with source.repo = laurigates/claude-plugins\"\nelse\n jq -e --arg k \"@$MP_KEY\" '.enabledPlugins // {} | to_entries | map(select(.key | endswith($k))) | length > 0' .claude/settings.json >/dev/null \\\n && echo \"OK: marketplace enrolled as $MP_KEY with enabled plugins\" \\\n || echo \"WARN: marketplace $MP_KEY enrolled but no @${MP_KEY} entries in enabledPlugins\"\nfi","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Run scope-specific audits","type":"text"}]},{"type":"paragraph","content":[{"text":"For ","type":"text"},{"text":"--scope=registry","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${CLAUDE_PLUGIN_ROOT}/skills/health-plugins/scripts/check-registry.sh\" \\\n --home-dir \"$HOME\" --project-dir \"$(pwd)\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse ","type":"text"},{"text":"STATUS=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"PLUGIN_COUNT=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"ORPHANED_ENTRIES=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"STALE_ENABLED_ENTRIES=","type":"text","marks":[{"type":"code_inline"}]},{"text":", and ","type":"text"},{"text":"ISSUES:","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"For ","type":"text"},{"text":"--scope=stack","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":": follow the tech-stack audit steps from the internal ","type":"text"},{"text":"health-audit","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill (see ","type":"text"},{"text":"${CLAUDE_PLUGIN_ROOT}/skills/health-audit/SKILL.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" and its ","type":"text"},{"text":"REFERENCE.md","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]},{"type":"paragraph","content":[{"text":"For ","type":"text"},{"text":"--scope=agentic","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":": follow the skill-quality audit steps from the internal ","type":"text"},{"text":"health-agentic-audit","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill (see ","type":"text"},{"text":"${CLAUDE_PLUGIN_ROOT}/skills/health-agentic-audit/SKILL.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" and its ","type":"text"},{"text":"REFERENCE.md","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]},{"type":"paragraph","content":[{"text":"For ","type":"text"},{"text":"--scope=runtime","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${CLAUDE_SKILL_DIR}/scripts/check-runtime.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse ","type":"text"},{"text":"STATUS=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"RUNTIME_SIZE_BYTES=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"PROJECTS_TOTAL=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"PROJECTS_DEAD=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"GH_PATHS_TOTAL=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"GH_PATHS_DEAD=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"ORPHAN_DISABLED_MCP=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"DUPLICATE_MCP=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"CLEANUP_SUGGESTED=","type":"text","marks":[{"type":"code_inline"}]},{"text":", and ","type":"text"},{"text":"ISSUES:","type":"text","marks":[{"type":"code_inline"}]},{"text":". Pass ","type":"text"},{"text":"--verbose","type":"text","marks":[{"type":"code_inline"}]},{"text":" to list every dead path / orphaned server (default is a single rolled-up issue per category to keep output compact).","type":"text"}]},{"type":"paragraph","content":[{"text":"The runtime scope audits ","type":"text"},{"text":"~/.claude.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" — the harness state file that grows with every session and is never auto-pruned. It reports four classes of bloat: dead ","type":"text"},{"text":"projects[]","type":"text","marks":[{"type":"code_inline"}]},{"text":" keys, dead ","type":"text"},{"text":"githubRepoPaths[*]","type":"text","marks":[{"type":"code_inline"}]},{"text":" worktree paths, orphaned ","type":"text"},{"text":"disabledMcpServers[]","type":"text","marks":[{"type":"code_inline"}]},{"text":" entries, and bare-vs-namespaced duplicate MCP names. The audit is ","type":"text"},{"text":"read-only","type":"text","marks":[{"type":"strong"}]},{"text":": it prints suggested ","type":"text"},{"text":"jq","type":"text","marks":[{"type":"code_inline"}]},{"text":" filters for the operator to run manually after closing other Claude Code sessions.","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Concurrent-write warning.","type":"text","marks":[{"type":"strong"}]},{"text":" The harness rewrites ","type":"text"},{"text":"~/.claude.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" on session end. Before acting on the audit's suggested cleanups, close every other Claude Code session — otherwise the in-memory state of a live session will clobber your edits when it next writes the file. An automated cleanup writer is out of scope for this audit.","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3: Report findings","type":"text"}]},{"type":"paragraph","content":[{"text":"Print a consolidated report grouped by scope:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Environment","type":"text","marks":[{"type":"strong"}]},{"text":" — plugins/settings/hooks/MCP status + counts, SessionStart smoke test, pre-commit validity, permissions coverage, marketplace enrollment","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Registry","type":"text","marks":[{"type":"strong"}]},{"text":" — orphaned projectPath entries, stale enabledPlugins keys, registry-vs-settings drift","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Stack","type":"text","marks":[{"type":"strong"}]},{"text":" — detected stack + relevant/irrelevant/missing plugin recommendations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Agentic","type":"text","marks":[{"type":"strong"}]},{"text":" — skills missing optimisation tables, bare CLI commands, stale reviews","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Runtime","type":"text","marks":[{"type":"strong"}]},{"text":" — ","type":"text"},{"text":"~/.claude.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" size, dead projects/githubRepoPaths, orphaned disabledMcpServers, duplicate MCP naming (read-only — no ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" path)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Use ","type":"text"},{"text":"STATUS=","type":"text","marks":[{"type":"code_inline"}]},{"text":" indicators (OK/WARN/ERROR) and issue counts per scope. Include a summary table:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Issues","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin registry","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Settings files","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Hooks configuration","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"MCP servers","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SessionStart smoke test","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Pre-commit config","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR/SKIP","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Permissions coverage","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Marketplace enrollment","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Registry audit","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stack audit","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Agentic audit","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Runtime audit","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"OK/WARN/ERROR","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"See ","type":"text"},{"text":"REFERENCE.md","type":"text","marks":[{"type":"link","attrs":{"href":"REFERENCE.md","title":null}}]},{"text":" for the full report template.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4: Apply fixes (if ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]},{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" is set:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":"--scope=all","type":"text","marks":[{"type":"code_inline"}]},{"text":" AND findings exist in multiple scopes, use ","type":"text"},{"text":"AskUserQuestion","type":"text","marks":[{"type":"code_inline"}]},{"text":" to let the user pick which scopes to fix (multi-select: ","type":"text"},{"text":"registry","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"stack","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"agentic","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For each selected scope, delegate:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scope","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Delegate to","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"registry","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"bash \"${CLAUDE_PLUGIN_ROOT}/skills/health-plugins/scripts/fix-registry.sh\" --home-dir \"$HOME\" --project-dir \"$(pwd)\"","type":"text","marks":[{"type":"code_inline"}]},{"text":" (pass ","type":"text"},{"text":"--dry-run","type":"text","marks":[{"type":"code_inline"}]},{"text":" when set)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"stack","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Follow the ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" flow in ","type":"text"},{"text":"${CLAUDE_PLUGIN_ROOT}/skills/health-audit/SKILL.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" (Step 6)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"agentic","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Follow the ","type":"text"},{"text":"--fix","type":"text","marks":[{"type":"code_inline"}]},{"text":" flow in ","type":"text"},{"text":"${CLAUDE_PLUGIN_ROOT}/skills/health-agentic-audit/SKILL.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" (Step 6)","type":"text"}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Parse each script's output (","type":"text"},{"text":"STATUS=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"REMOVED_COUNT=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"MESSAGE=","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"RESTART_REQUIRED=","type":"text","marks":[{"type":"code_inline"}]},{"text":") and report what changed.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If any fix reports ","type":"text"},{"text":"RESTART_REQUIRED=true","type":"text","marks":[{"type":"code_inline"}]},{"text":", remind the user to restart Claude Code.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 5: Verify","type":"text"}]},{"type":"paragraph","content":[{"text":"Re-run the relevant checks and confirm issue counts have dropped.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Agentic Optimizations","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Context","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Command","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Full scan","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Registry only","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=registry","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stack relevance only","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=stack","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Agentic audit only","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=agentic","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Runtime state audit (~/.claude.json)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=runtime","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fix everything (interactive)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --fix","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Dry-run preview of fixes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --fix --dry-run","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Detailed diagnostics","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --verbose","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check plugin registry exists","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"find ~/.claude/plugins -name 'installed_plugins.json'","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Validate settings JSON","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"find .claude -maxdepth 1 -name 'settings.json'","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Smoke-test install script","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"CLAUDE_CODE_REMOTE=true bash scripts/install_pkgs.sh","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Validate pre-commit config","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"pre-commit validate-config .pre-commit-config.yaml","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check marketplace enrollment","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"find .claude -maxdepth 1 -name 'settings.json'","type":"text","marks":[{"type":"code_inline"}]},{"text":" then grep for ","type":"text"},{"text":"extraKnownMarketplaces","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Known Issues","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Issue","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Symptom","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fix path","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"#14202","type":"text","marks":[{"type":"link","attrs":{"href":"https://github.com/anthropics/claude-code/issues/14202","title":null}}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin shows \"installed\" but not active","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=registry --fix","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stale ","type":"text"},{"text":"enabledPlugins","type":"text","marks":[{"type":"code_inline"}]},{"text":" key in settings.json","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin appears enabled but no registry/marketplace entry","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=registry --fix","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Orphaned ","type":"text"},{"text":"projectPath","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin installed for deleted project","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check --scope=registry --fix","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Invalid settings JSON","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Settings file won't load","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/health:check","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Missing marketplace enrollment","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"laurigates/claude-plugins skills unavailable in web sessions","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"/configure:claude-plugins --fix","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"args":"[--scope=all|registry|stack|agentic|runtime] [--fix] [--dry-run] [--verbose]","date":"2026-06-05","name":"health-check","author":"@skillopedia","source":{"stars":35,"repo_name":"claude-plugins","origin_url":"https://github.com/laurigates/claude-plugins/blob/HEAD/health-plugin/skills/health-check/SKILL.md","repo_owner":"laurigates","body_sha256":"c4616fcf0977cf24b580959b7b36981ea06110d431644cbe33940d1faa492b86","cluster_key":"28ff21b8397b0bdbcd26c3feb38b133fc127ddccbda9c8a3b2d7be99dd4d0f95","clean_bundle":{"format":"clean-skill-bundle-v1","source":"laurigates/claude-plugins/health-plugin/skills/health-check/SKILL.md","attachments":[{"id":"c9f4a59b-a619-59fb-a51a-d3d905133215","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c9f4a59b-a619-59fb-a51a-d3d905133215/attachment.md","path":"REFERENCE.md","size":1408,"sha256":"65ab2d2e26ff418f1dc7c36fdcb18069760d670daf42a0ea67641d99db7907ac","contentType":"text/markdown; charset=utf-8"},{"id":"b6a840c2-4351-5119-b80c-5484546f10b4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b6a840c2-4351-5119-b80c-5484546f10b4/attachment.sh","path":"scripts/check-hooks.sh","size":4377,"sha256":"30a4f9047128bc7acb408dd66995302353a3e3f49aa91c015e0bab5155f1271d","contentType":"application/x-sh; charset=utf-8"},{"id":"14969975-7f4d-58f6-82b9-be0d5db2df27","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/14969975-7f4d-58f6-82b9-be0d5db2df27/attachment.sh","path":"scripts/check-mcp.sh","size":4358,"sha256":"34694a1980be04de5a7092b3eefd5880c7f9b640681c761ca4a46714f0751dd8","contentType":"application/x-sh; charset=utf-8"},{"id":"62843556-599c-5ee7-9dca-ad8de4bc6409","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/62843556-599c-5ee7-9dca-ad8de4bc6409/attachment.sh","path":"scripts/check-plugins.sh","size":6090,"sha256":"14939bee01fc98a3ba5cdd67c6e713886f73421276d9abdfc925aa888d774ff9","contentType":"application/x-sh; charset=utf-8"},{"id":"69b79cb7-25cc-54ab-843d-7c49976f473e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/69b79cb7-25cc-54ab-843d-7c49976f473e/attachment.sh","path":"scripts/check-runtime.sh","size":9949,"sha256":"29b28a398b89dbd36cb5e4e08ad0dd236965f6f2ec1894eef1dcd9a2a8df78a4","contentType":"application/x-sh; charset=utf-8"},{"id":"8f5e7336-0871-52be-b44f-0a86e7431803","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8f5e7336-0871-52be-b44f-0a86e7431803/attachment.sh","path":"scripts/check-settings.sh","size":4392,"sha256":"724237042bac5b2fc8ba2eb7bdc12e4788c4c2f8d2347664f1079d8415e0a491","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"27b1b43982c57e0edf6d1b3254bf995be4a60d0ac6cdb77ae58bcaafee0f363a","attachment_count":6,"text_attachments":6,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"health-plugin/skills/health-check/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"ai-agent-development","category_label":"AI"},"exact_dupes_collapsed_into_this":0},"created":"2026-02-04T00:00:00.000Z","version":"v1","category":"ai-agent-development","modified":"2026-05-14T00:00:00.000Z","reviewed":"2026-05-14T00:00:00.000Z","import_tag":"clean-skills-v1","description":"Claude Code health check — scans plugins, settings, hooks, MCP, runtime state, permissions, marketplace with optional fixes. Use when checking project health or troubleshooting setup.","allowed-tools":"Bash(bash *), Bash(pre-commit *), Read, Glob, Grep, TodoWrite, AskUserQuestion","argument-hint":"[--scope=all|registry|stack|agentic|runtime] [--fix] [--dry-run] [--verbose]"}},"renderedAt":1782982002082}

/health:check Single entry point for Claude Code health diagnostics. Runs environment checks (plugin registry, settings, hooks, MCP servers, SessionStart executability, pre-commit validity, permissions coverage, marketplace enrollment) plus optional deeper audits, and routes to the appropriate internal workflow. When to Use This Skill | Use this skill when... | Use another approach when... | |------------------------|------------------------------| | Running Claude Code diagnostics | Viewing raw settings (use Read on settings.json) | | Troubleshooting plugin registry issues | Inspecting marke…