Daily habit tracking with streaks, check-in protocols, and flexible scheduling. Use this skill whenever the user wants to: check in on habits, log habit completions, review streaks, set up new habits, do a morning or evening routine check-in, or mentions 'habits', 'routine', 'streak', 'check-in', 'did I do', or 'log my'. Also triggers on session-end reviews when habits haven't been logged yet. Works with any set of user-defined habits — no predefined habits required.
A structured daily habit tracking skill for AI assistants. Handles check-ins, logging, streak reporting, and flexible scheduling without requiring any specific habits — the user defines what matters to them.
This skill manages a complete habit tracking workflow:
The skill is config-driven. Habits are defined in habit-config.yaml, completions are logged in habit-log.json. The skill reads the config to know what to ask about and when.
When the skill triggers (user mentions habits, check-in, routines, or streaks):
Search for habit-config.yaml in the user's workspace:
Scan the workspace — Look in the workspace root and one level deep for habit-config.yaml. Exclude the skill's own templates/ directory.
Find the log file — The config's log_file field points to the JSON log. If the file doesn't exist, create it as an empty JSON object {}.
Check the current time and determine what to ask about:
The config's timezone field controls what "today" means. Always verify the current time: TZ='<timezone>' date.
For each active habit on the target date:
After logging, show a brief streak summary:
Streaks:
Water in the morning: 5 days ■■■■■
Oatmeal: 2 days ■■
PT exercises: 0 (last: 3 days ago)
Evening routine: 3 days ■■■
Celebrate streaks of 7+ days. Gently note broken streaks without guilt — the point is awareness, not shame. If the user has a values framework or motivational system, reference it when appropriate (e.g., "measure yourself by how you rise" for a broken streak).
Never assume false on unasked habits. If you didn't explicitly ask about a habit, don't log it. The user may have done it.
Ask about every active habit individually. Don't say "Did you do everything?" or "Anything else you did today?" Each habit gets its own question.
"Loaded" counts as done for threshold habits. Some habits have a threshold_note in the config (e.g., dishwasher: "loading it counts even if you don't run it"). Respect the user's definition of done.
Log immediately when data is collected. Don't defer or batch. The moment the user tells you about a habit, write it to the log.
Don't skip habits because the session is busy. Habit tracking is a gate, not an optional add-on. If the session is a coding sprint, a planning session, or an evening check-in, habits still get logged. Keep it quick (2-3 minutes), but do it.
Respect the user's energy. The check-in should feel like a quick inventory, not an interrogation. Group by category, move fast, don't editorialize on individual misses.
If the user gives a batch response ("protein shake done, dishwasher done, no PT"), log what they mentioned and ask about the rest. Don't assume the unmentioned ones are false.
If there are unlogged days between the last log entry and today, ask: "I see [date] through [date] aren't logged. Want to go through those, or just log today?" Respect the answer. Don't guilt-trip about gaps.
Habits are defined in habit-config.yaml. The schema:
# Habit Tracker Configuration