Plugins should declare and verify system dependencies

Resolved 💬 2 comments Opened Apr 2, 2026 by mtschoen Closed May 11, 2026

Problem

Plugins that depend on system tools (like jq, npm packages, etc.) fail silently or with cryptic errors when those dependencies aren't installed. Two examples:

  1. ralph-loop plugin — The stop hook (stop-hook.sh) requires jq to parse JSON. When jq isn't installed, every response triggers a hook error:

``
Stop hook error: Failed with non-blocking status code:
stop-hook.sh: line 32: jq: command not found
``
This persists on every turn with no indication of what's wrong or how to fix it.

  1. Python linter plugin — Required an npm dependency but didn't ask for it or try to install it. Failed without a clear message pointing to the missing dep.

Suggestion

  • Plugins should declare their system dependencies (e.g., jq, node, specific npm packages) in their manifest/config
  • At plugin install time, Claude Code should check for required dependencies and either:
  • Install them automatically (with user consent)
  • Warn clearly: "Plugin X requires jq which is not installed. Install it with sudo pacman -S jq / brew install jq / etc."
  • Hook failures from missing deps should surface a helpful message rather than a generic "Failed with non-blocking status code"

Environment

  • Arch Linux
  • Claude Code CLI
  • ralph-loop plugin from claude-plugins-official

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗