Plugin Structure
Vibe Check follows the standard Claude Code plugin layout:Directory Overview
hooks/
Containshooks.json, which registers three lifecycle hooks:
matcher to fire on every event.
scripts/
The Python implementation:- shared.py — Core state management primitives (load, save, lock)
- session_start.py — Initializes or joins existing session
- check_reminder.py — Core reminder engine with break detection
- stop_hook.py — Records response end time for gap calculation
- tips.json — Rotating health tips organized by category
skills/
Containshealth.md, invoked via /vibe-check:health for on-demand health reference.
State File Location
Vibe Check stores session state at:scripts/shared.py:10:
~/.claude/vibe-check-state.json.lock to coordinate access between concurrent Claude sessions.
Hook System Flow
Cross-Session Coordination
Multiple Claude sessions share the same state file. The locking mechanism ensures atomic reads/writes. If you start a second session within 60 minutes of the last activity, it inherits all timers and continues tracking seamlessly.Plugin Root Variable
Hook commands use${CLAUDE_PLUGIN_ROOT} to reference scripts relative to the plugin installation directory, ensuring portability across different installations.