What problem does it solve? Claude Code hook events (tool calls, session lifecycle, errors) are invisible by default, making it hard to debug agent behavior or monitor session activity. This Skill fans out every hook event into a normalized JSON envelope stored in a local JSONL queue and optionally broadcast over a localhost-only WebSocket, giving you an on-device observability surface with zero external data transfer. ## Core Features & Use Cases - Event Normalization: Converts 12 Claude Code hook event types (SessionStart, PreToolUse, PostToolUse, SubagentStop, PreCompact, and more) into a versioned JSON envelope schema. - Local-Only Pipeline: Appends events to runtime/events/YYYY-MM-DD.jsonl and broadcasts to a WebSocket server bound strictly to 127.0.0.1, with a local token file for authentication. - Built-in Privacy Redaction: Applies redactObject from lib/core/redaction.js to mask tokens, file paths, emails, and long prompts before any event is persisted. - Use Case: You are building a local agent dashboard and want a live timeline of tool calls, error rates, and token usage per session. This Skill defines the emitter hook, the envelope schema, retention policy (24h default), and aggregation views so the dashboard can subscribe and render immediately. ## Quick Start Ask the agent to set up the hook-event-emitter skill so Claude Code hook events are written to a local JSONL queue and streamed to a localhost dashboard.