Local Development Setup
Clone and install the plugin in development mode:--plugin-dir flag loads the plugin directly from your local directory instead of installing from the marketplace.
Plugin Directory Structure
Testing with Shorter Intervals
Default intervals are long (20-50 minutes). For rapid testing, override with environment variables:- Micro-breaks every 60 seconds
- Hydration reminders every 2 minutes
- Full breaks every 3 minutes
All Test Variables
State File Location for Debugging
The shared state file is located at:Manually Reset State
Delete the state file to start fresh:Debugging Hook Execution
Add debug prints to scripts:Hook Output Format
Hooks communicate via stdout:- SessionStart — Plain text message
- UserPromptSubmit — JSON with
hookSpecificOutput.additionalContext - Stop — Silent (no output)
Testing Break Compliance
- Start Claude with short intervals
- Send a prompt to trigger a reminder
- Wait for the compliance threshold (default: 10s for micro, 15s for hydration, 20s for full in test mode)
- Send another prompt
- Inspect state file — the timer should have reset
Testing Spontaneous Breaks
SetVIBE_CHECK_GAP_THRESHOLD=30 (30 seconds):
Testing Stale Sessions
SetVIBE_CHECK_STALE_THRESHOLD=60 (1 minute):
Locking Behavior
Test concurrent access by opening two Claude sessions simultaneously with the same plugin:- No corruption in
~/.claude/vibe-check-state.json - Timers remain consistent across sessions
- Lock file exists:
~/.claude/vibe-check-state.json.lock
Modifying Tips
Editscripts/tips.json to customize health tips:
Updating Hook Configuration
Edithooks/hooks.json to modify hook behavior. After changes:
- Exit Claude
- Restart Claude
- Hooks reload at session start
Uninstall Process
From Marketplace Installation
From Local Development
Just stop using--plugin-dir:
Clean Up State File
The state file persists after uninstall:Contributing
Contributions welcome! Areas for improvement:- Additional health tips in
tips.json - Expanded health reference in
skills/health.md - Break customization features
- Statistics tracking (total breaks taken, compliance rate)
- Notification sounds or visual indicators
Submission Checklist
- Test with default intervals
- Test with short intervals (rapid testing)
- Test concurrent sessions (locking)
- Test stale session detection
- Test break compliance logic
- Verify no state file corruption
- Document new environment variables
File Locations Reference
| Path | Purpose |
|---|---|
~/.claude/vibe-check-state.json | Shared session state |
~/.claude/vibe-check-state.json.lock | File lock for state coordination |
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/ | Plugin installation directory |
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/hooks/hooks.json | Hook registration |
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/scripts/ | Python implementation |
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/skills/ | On-demand skills |
Python Dependencies
Vibe Check uses only Python standard library:json— State file I/Oos— Path handling, environment variablestime— Timestampsfcntl— File lockingtextwrap— Reminder formatting