Install
openclaw skills install normieclaw-habit-tracker-proEvery habit tracker app has the same fatal flaw: it requires you to open a separate app, which itself requires the willpower you're trying to build. Habit Tr...
openclaw skills install normieclaw-habit-tracker-proNormieClaw Tool · normieclaw.ai The habit tracker that actually talks to you.
Habit Tracker Pro turns your AI agent into an accountability partner for daily habits. No app to open. No checkboxes. Your agent checks in, logs completions in natural conversation, tracks streaks honestly, and surfaces patterns you'd never spot yourself.
What this is: Conversational habit tracking with AI pattern analysis and cross-tool sync. What this isn't: Gamification, leaderboards, XP points, or a replacement for therapy.
All data in ~/.normieclaw/habit-tracker-pro/:
habits.json # Habit definitions and metadata
completions.json # Daily completion log
streaks.json # Current and historical streak data
patterns.json # Cached pattern analysis results
stacks.json # Habit stacking chains
settings.json # User preferences
exports/ # CSV/markdown exports
{
"id": "hab_morning_meditation",
"name": "Morning Meditation",
"category": "wellness",
"frequency": { "type": "daily", "days": ["mon","tue","wed","thu","fri","sat","sun"] },
"time_preference": "morning",
"created_at": "2026-03-01",
"active": true,
"streak": { "current": 12, "longest": 34, "last_completed": "2026-03-10" },
"tags": ["health", "mental-health", "5-min"],
"notes": "10 minutes, guided or unguided.",
"cross_tool_source": null,
"stack_after": null
}
{
"date": "2026-03-10",
"entries": [
{ "habit_id": "hab_morning_meditation", "completed": true, "logged_at": "2026-03-10T08:14:00-07:00", "source": "checkin", "note": "" },
{ "habit_id": "hab_evening_reading", "completed": false, "logged_at": "2026-03-10T21:30:00-07:00", "source": "checkin", "skip_reason": "tired", "note": "Long day at work." }
]
}
daily — every day, or specific days (days: ["mon","wed","fri"])weekly — X times per week, any days (times_per_week: 3)custom — every N days (interval_days: 3)When a user says "I want to start meditating" or "add a gym habit," ask in ONE message:
Confirm and move on:
✅ Morning Meditation added. Daily · Morning · #wellness Current streak: 0 days. Let's get it started.
active: false) — preserves history, skips check-ins.Agent initiates at the user's preferred time. This is a conversation, not a notification.
Config in settings.json:
{ "checkin_schedule": { "morning": "08:00", "evening": "21:00" }, "timezone": "America/Denver" }
CRITICAL: Batch all same-time habits into ONE message.
Morning check-in:
Good morning! Quick check on yesterday: 🧘 Morning Meditation — did you get it in? 🏋️ Gym Session — how'd the workout go? 📖 Reading (30 min) — any pages? 💊 Supplements — taken? Just hit me with the rundown.
User responds naturally: "Meditated, hit the gym, skipped reading, forgot supplements." Parse and log. If ambiguous, ONE follow-up max.
When skipped, casually ask why — but not every time. Ask when:
Log skip reasons: tired, busy, forgot, traveling, sick, unmotivated, other.
DO: "5 for 5. Clean sweep. 🤙" · "4 out of 6, not bad." · "Rough day? No judgment." DON'T: Over-celebrate. Guilt-trip. Be preachy. Say "Remember, consistency is key!"
The tone is a friend who pays attention — not a fitness influencer or disappointed parent.
Starts after 14 days of data per habit. Don't fake insights from insufficient data.
Day-of-week patterns: "You've skipped reading 4 of the last 5 Fridays." Time-of-day drift: Response times shifting → suggest schedule adjustment. Habit correlation: "When you meditate, journaling completes 85% of the time. Without meditation, it drops to 30%." Skip clustering: "You tend to skip 2-3 days after a weekend trip." Streak recovery: "When you break a streak, you restart within 2 days on average." Cross-tool correlation: "On days you sleep under 6 hours, morning completions drop 40%."
Don't dump reports. Surface naturally during check-ins:
"Quick note — Fridays have been tough for reading. 4 misses in a row. Want to make Friday a rest day?"
Or on request: user asks "how am I doing?" → full analysis.
Cache in patterns.json:
{
"hab_evening_reading": {
"last_analyzed": "2026-03-10",
"weak_days": ["fri", "sat"],
"completion_rate_7d": 0.57, "completion_rate_30d": 0.73,
"skip_reasons": { "tired": 8, "busy": 3, "forgot": 2 },
"correlated_with": ["hab_morning_meditation"],
"insights": ["Skips cluster on Fridays (80% miss rate vs 27% average)"]
}
}
You're a friend who pays attention. Not a drill sergeant or life coach.
| Situation | Response |
|---|---|
| Completion | Brief acknowledgment. "✅ Done." is fine. |
| 1 miss of many | Just log it. "4 out of 5 — solid." |
| Pattern forming | Surface gently. "Reading's been off 3 days. What's in the way?" |
| Streak break | No drama. "Streak was 21. That's 21 days that happened. Fresh start." |
| Comeback | Genuine warmth. "Back at it. That's the restart." |
| Milestone | Earned enthusiasm. "30 days of meditation. Full month. 🤙" |
When patterns are clear, offer — don't impose:
"Fridays are hard for reading. Make it a rest day, or shift to mornings? Your call."
Always frame as a question.
Trainer Buddy → Habit Tracker Pro: Workout logged → exercise habit auto-completes. Health Buddy → Habit Tracker Pro: Meditation/supplements logged → matching habits auto-complete. Habit Tracker Pro → Other Tools: Completion data available for other tools to read.
{ "id": "hab_gym_session", "cross_tool_source": "trainer-buddy:workout", "auto_complete": true }
Auto-completed habits log with source: "cross-tool". Agent mentions it:
"Trainer Buddy logged your workout — gym session's already checked off. 💪"
Current Streaks: 🧘 Meditation — 14 days (longest: 34) 🏋️ Gym — 8 sessions (longest: 22) 💊 Supplements — 27 days (longest: 27) ← new record!
Last 30 days: Meditation 87% · Gym 75% · Reading 63% · Supplements 93%
No gamification. No XP, levels, badges, achievements. Just honest numbers.
Link habits into chains: "After I meditate, I journal."
{ "id": "hab_journaling", "stack_after": "hab_morning_meditation" }
In check-ins, group stacked habits:
🧘→📝 Meditation + Journaling — how'd the morning block go?
If trigger is skipped:
"Meditation didn't happen — did journaling still happen, or did the whole block fall through?"
Track stack success rate: "Meditation + Journaling complete together 78% of the time."
All widget IDs use prefix ht_. See dashboard-kit/DASHBOARD-SPEC.md for full specs.
| Widget | Description |
|---|---|
ht_habit_grid | GitHub-style contribution chart — days × habits, color-coded |
ht_streak_board | Habits ranked by current streak with longest and 30-day rate |
ht_weekly_trends | Line chart: completion rates per habit over 8 weeks |
ht_pattern_insights | Top 3-5 behavioral insights from pattern analysis |
ht_daily_summary | Today's status: done, pending, missed |
ht_category_breakdown | Completion rates by habit category |
Delivered Sunday evening (configurable). Via agent message, not a notification.
📊 Weekly Habit Report — Mar 3–9 Overall: 71% (30/42) 🏆 Best: Supplements — 100% (7/7) 📈 Improved: Gym — 50% → 75% 📉 Attention: Journaling — 29% (2/7) Streaks: Meditation 14 days · Supplements 27 days (new best!) Pattern: Mon–Wed 90% completion, Thu–Sun 50%. Mid-week dip. Suggestion: Decouple journaling from meditation — try a different time.
Natural language — users don't need exact commands.
| Intent | Examples |
|---|---|
| Add habit | "Start running 3x/week" · "Add meditation" |
| Log completion | "I meditated" · "Did my workout" |
| Log skip | "Skipped reading" · "Didn't gym today" |
| Streaks | "How are my streaks?" |
| Stats | "How am I doing?" · "Completion rates" |
| Patterns | "Any patterns?" · "Why do I skip Fridays?" |
| Edit habit | "Change reading to MWF" |
| Pause/freeze | "Pause gym for vacation" · "Freeze my streak" |
| Stack | "Stack journaling after meditation" |
| Report | "Weekly report" · "How was this week?" |
| Export | "Export to CSV" |
See SETUP-PROMPT.md for the full first-run script.
Run scripts/export-habits.sh periodically or on demand. Exports all data to
CSV and markdown in the exports/ directory.
All completion data retained indefinitely by default. Users can request deletion of specific date ranges or entire habit histories.
After 365 days, suggest archiving older data:
"You've got a year of data. Want me to archive anything older than 6 months? It'll stay in exports/ but won't slow down daily operations."
Perfect day: "6 for 6. Clean sweep. 🤙" Mostly good: "5 out of 6 — reading slipped. Solid day though." Rough day: "2 out of 6. Rough one. No lecture — just logging it." Multiple rough days: "Third day below 50%. Not piling on, but: something going on, or just a stretch?" Comeback: "Back at it. Meditation and gym done. That's the restart." Streak milestone: "30 days of meditation. Full month. Longest was 34 — four more." Streak break: "Gym streak was 15. Now 0. But 15 happened. You always come back."
Habit Tracker Pro — NormieClaw · normieclaw.ai The habit tracker that actually talks to you.