Routine Streaks
approvedby Taehyun A. Kim
Track routine streaks from tagged Daily Note tasks. - This plugin has not been manually reviewed by Obsidian staff.
Track routine streaks from plain Markdown checkboxes, then carry them to your iPhone home screen.
Daily Notes stay as the source of truth while Routine Streaks exports widget-ready data and generates Scriptable code for iOS/iPadOS.
Highlights · Screenshots · Usage · Markdown widgets · Scriptable widgets
Highlights
| ✅ Markdown-first streaks | Completion history comes from tagged Daily Note checkboxes, not a hidden database. |
| 🗓️ Flexible schedules | Use selected weekdays, weekly targets, repeating intervals, or a custom day start. |
| 🧊 Freeze days | Pause a routine for breaks, travel, sick days, or planned rest. |
| 🧩 Routine templates | Define template items once, then insert routine tasks from the command palette. |
| 📊 Widgets everywhere | View progress in the sidebar, inside notes, and on iOS/iPadOS through Scriptable. |
| 🐾 Pixel pet status | Pick a dog, cat, or parrot that reacts to today's routine progress. |
Screenshots
Routine Management
Pixel Pets
| Pet | Complete | Needs attention |
|---|---|---|
| Dog | ![]() | ![]() |
| Cat | ![]() | ![]() |
| Parrot | ![]() | ![]() |
How It Works
Routine Streaks treats your Daily Notes as the source of truth.
- [ ] Drink water #routine/morning
- [x] Open the journal #routine/morning
For each routine, the plugin scans Daily Notes for tasks with the routine tag. A routine counts as complete for a date when all matching tasks for that routine are checked. If you uncheck a task later, the next recalculation removes that completion from the streak cache.
What gets stored:
- Routine definitions and display settings are stored in plugin data.
- Streak cache is stored in plugin data and can be rebuilt.
- Completion history lives in Daily Note task checkboxes.
Usage
- Enable the plugin in Obsidian.
- Open Settings → Community plugins → Routine Streaks.
- Configure your Daily Note folder, date format, and day start time if needed.
- Create or edit routines, tags, schedules, template items, and freeze days.
- Open any Markdown note and place the cursor where you want routine tasks.
- Run Routine Streaks: Insert routine template from the command palette.
- Check off the tagged routine tasks in your Daily Note.
- Open the sidebar widget, embed a markdown widget, or run Routine Streaks: Recalculate streaks to refresh progress.
Routine Tags
Each routine has a tag. New installs start without sample routines, so you can add routines such as:
#routine/journal#routine/vitamins#routine/reading
Markdown Widgets
You can embed Routine Streaks widgets in any note with a routine-streaks-widget code block.
```routine-streaks-widget
title: My routine dashboard
subtitle: Today status
widgets:
- overview: Summary
- today_items: Checklist
- routine_cards: All routines
```
The widget reads your current plugin settings and streak cache. If you leave the code block empty, it uses the widget layout from the plugin settings.
Markdown Widget Options
| Option | Description |
|---|---|
title | Optional heading shown above the widget. Leave it blank or omit it to hide the heading. |
subtitle | Optional smaller text below the title. |
widgets | A list of widget blocks to render in this note. |
Widget Types
| Type | What it shows |
|---|---|
overview | Best current streak, today's completion count, and the selected pixel pet. |
pet | A large pixel pet that reacts to today's routine progress. |
routine_cards | A card grid for enabled routines, including streaks and today's task progress. |
today_items | Today's tagged checklist items grouped by routine. |
routine_focus | One selected routine with its current streak and status. |
You can set a title after ::
```routine-streaks-widget
widgets:
- overview: Summary
- pet: Buddy
- today_items: Today's checklist
```
For routine_focus, pass a routine id after ::
```routine-streaks-widget
widgets:
- routine_focus: morning
```
You can also use the pipe format when you want both a custom title and a routine id:
```routine-streaks-widget
widgets:
- routine_focus | Morning focus | morning
```
Supported routine focus keys:
routine_focusfocusroutine
Supported aliases:
routine_cards,cards,routinestoday_items,tasks,itemspet,animal,pixel_pet,pet_card
Scriptable Widgets
Routine Streaks can generate ready-to-paste Scriptable code for iOS/iPadOS widgets.
The Scriptable widget reads an exported data.json file from your vault. It does not scan your notes directly on iOS; Obsidian exports the current routine settings and recalculated streak cache, then Scriptable displays that exported data.
Setup
- In Obsidian, open Settings → Routine Streaks → Scriptable widget.
- Choose the Scriptable display you want.
- Choose the Scriptable size.
- Click Export now to create or refresh the data file.
- Click Generate code and copy the generated script.
- In Scriptable, create a new script and paste the code.
- In Scriptable, open Settings → File Bookmarks.
- Create a file bookmark named exactly:
Routine Streaks Data
- Point that bookmark to the exported vault file, usually:
Routine Streaks/data.json
- Add the Scriptable script as an iOS/iPadOS widget.
Scriptable Display Types
| Display | Description |
|---|---|
Dashboard | A larger dashboard with overview, pet, and routine progress. |
Overview | Best streak, today's progress, and pet status. |
Pet | A focused pixel pet status widget. |
Routine cards | Routine progress cards. |
Today items | Today's task status for selected routines. |
Focused routine | One selected routine's streak and status. |
Scriptable Sizes
Available sizes depend on the selected display:
| Display | Sizes |
|---|---|
Dashboard | Large |
Overview | Medium, Large |
Pet | Small, Medium, Large |
Routine cards | Medium, Large |
Today items | Small, Medium, Large |
Focused routine | Small, Medium, Large |
For Focused routine, choose which routine to show in Scriptable focused routine.
For Today items, choose which routine cards should appear. Small shows one routine. Medium and Large can show up to four routines.
Refreshing Data
Use Export now whenever you want to manually refresh the data used by Scriptable. Routine Streaks also exports data when plugin settings are saved or streaks are recalculated.
If the iOS widget looks stale, open Obsidian on the device that has the latest vault data, run Routine Streaks: Recalculate streaks, then export again.
Privacy
Routine Streaks works locally in your vault. It does not collect telemetry and does not send your notes to an external service.
License
Routine Streaks is released under the MIT license.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.





