Local habit tracking via JSON files. No external services or API keys.
Data lives in ~/.openclaw/workspace/habits/ (override with HABIT_DATA_DIR env var).
Scripts live in scripts/ relative to this file.
Resolve all script paths relative to this skill's scripts/ directory.
text
python scripts/setup_habits.py --list
text
python scripts/setup_habits.py --add "Habit Name" --frequency daily|weekday|weekly --emoji 🏋️
--frequency defaults to daily if omitted--emoji is optionaltext
python scripts/setup_habits.py --remove "Habit Name"
History is preserved. Habit is soft-deleted.
text
python scripts/log_habit.py "Habit Name"
python scripts/log_habit.py "Habit Name" --date 2024-01-15
python scripts/log_habit.py "Habit Name" --undo
--undo removes today's log entrytext
python scripts/status.py
python scripts/status.py --json
python scripts/status.py --date 2024-01-15
Outputs current streak, longest streak, today's completion, and 7/30-day rates.
text
python scripts/weekly_review.py
python scripts/weekly_review.py --week 2024-01-15
python scripts/weekly_review.py --output ~/Desktop/review.md
python scripts/weekly_review.py --obsidian
Generates a formatted markdown report. --obsidian saves to vault/habits/weekly-reviews/YYYY-MM-DD.md.
User saysAction"Did I exercise today?"status.py --json → find habit by name"Log my run / I exercised"log_habit.py "Exercise""What's my reading streak?"status.py --json → extract streak for reading"Log yesterday's meditation"log_habit.py "Meditation" --date YYYY-MM-DD"Weekly review"weekly_review.py"Add habit: cold shower"setup_habits.py --add "Cold Shower""Show all habits"setup_habits.py --list"Remove journaling"setup_habits.py --remove "Journaling"
daily — expected every calendar dayweekday — Mon–Fri only; weekend skips don't break streaksweekly — once per 7-day window; streak = consecutive weeks with ≥1 completionstatus.py (no --json): print directly to userstatus.py --json: parse and reformat as a clean bullet list for Discordweekly_review.py: offer to save to Obsidian ( --obsidian) or print inlinelog_habit.py with what was logged and current streaktext
~/.openclaw/workspace/habits/
├── habits.json # habit definitions
└── log.json # daily completion records
Both files are auto-created. See references/data-format.md for schema details.