hooks.json: unknown keys ($schema, id, description) ignored on Claude Code plugin hook load
Description
Loading the ECC plugin's hooks/hooks.json (v2.2.1) produces a startup warning from Claude Code:
ecc: hooks.json: unknown keys "$schema", "description" in hooks.PreToolUse[0], "id" in hooks.PreToolUse[0], "description" in hooks.PreToolUse[1], "id" in hooks.PreToolUse[1] and 42 more ignored
Cause
hooks/hooks.json includes a root-level "$schema" key and, on every one of its 23 hook entries across all events (PreToolUse, PostToolUse, PostToolUseFailure, PreCompact, SessionStart, Stop, SessionEnd), extra "id" and "description" fields. Claude Code's plugin hook loader (tested on 2.1.270, the current latest release) only recognizes matcher and hooks (with type/command/timeout/statusMessage) on each entry, and the root schema only recognizes hooks. The extra fields are silently ignored functionally, but produce a noisy warning on every session start.
Impact
Cosmetic only — hooks still execute correctly since the recognized fields (matcher, hooks[].type, hooks[].command) are unaffected. But the warning fires on every session start for anyone using the plugin.
Suggested fix
Either drop the $schema/id/description fields from hooks/hooks.json (they appear to be authoring/documentation metadata not consumed by Claude Code), or move them into a comment/sibling metadata file that isn't parsed as part of the live hook config.
Environment
- ECC plugin version: 2.2.1
- Claude Code version: 2.1.270 (latest at time of filing)
Source: affaan-m/ECC