Module guide
Habits
Track repeating routines with streak and at-risk detection.
Overview
A per-user habit tracker with a configurable target per period. The deterministic streak calculator reports current, longest, and 30-day rolling totals, and habitsAtRisk() flags anything whose streak will break today unless you hit its target.
Highlights
The capabilities worth knowing before you dive in.
- Daily or multi-day targets (targetPerPeriod, periodDays)
- Current streak, longest streak, and 30-day completion sparkline data
- An at-risk endpoint surfaces habits one check-in away from breaking
- Per-user scope, so teammates never see each other's habits
Important to know
Limits, permissions, and sharp edges to keep in mind.
- Streak math is UTC-day based. If you travel across timezones, check-ins near midnight can surprise you.
- Archiving a habit preserves its history but hides it from active lists.
How to use it
The primary workflow, start to finish.
- Create a habit with a target and period (for example, 1/1 daily, or 3/7 three times a week).
- Check in each time you complete it. Check-ins are idempotent per day.
- Review the at-risk list every evening to protect your streaks.
FAQ
- Can I track habits across a team?
- Not today. Habits are per-user by design so no one feels monitored. Shared team rituals live in Cycles and Goals.
- Why did my check-in land on the wrong day?
- Streaks are calculated on UTC days. A check-in close to midnight, particularly while travelling, can therefore fall either side of the boundary from where you expect it.
- If I stop a habit, have I lost the record of it?
- No. Archiving hides a habit from the active list and preserves its history, so the streak you built remains readable even though the habit is no longer being tracked.
Automate this module
Everything on this screen is scriptable. Drive it from the REST API, or let an AI agent run it through the MCP server.
Was this page helpful?