Per https://code.claude.com/docs/en/plugins.md "Convert existing
configurations": the hooks config file goes at
`<plugin-root>/hooks/hooks.json` — sibling to the script files
under hooks/, NOT inside `.claude-plugin/`. v1.0.2 had it at
`.claude-plugin/hooks/hooks.json` (still 0 hooks loaded). v1.0.3
puts it at the actually-documented path.
Final layout:
.claude-plugin/plugin.json
hooks/hooks.json ← event → command map
hooks/hyprpanel-state.sh ← the script
`${CLAUDE_PLUGIN_ROOT}` in `command` strings is case-sensitive and
correct.