shabbirpatheria486 downloadsRender a checklist in your daily note from a folder structure. Checking an item logs the daily note's date into that note's 'entries' property.
Turn a folder of notes into a compact, minimal habit checklist for Obsidian.
Habit Checklist is a companion to the Habit Tracker 21 plugin. Both read and write the same entries list of YYYY-MM-DD dates in your habit notes: tick habits off in your daily note with Habit Checklist, and view the streak history with Habit Tracker 21. Point both plugins at the same folder and no extra setup is needed.
Every note in your routines folder becomes a checkbox, grouped into colour-coded sections. Ticking one writes today's date into that note, so your history lives in your vault as plain frontmatter.
Routines folder.routines code block to your daily note, or use the Insert routines checklist block command:```routines
```
Completion history is stored in your notes' frontmatter.
Everything below is optional detail — the plugin works out of the box.
Point the plugin at a root folder (default: Routines). Each subfolder becomes a collapsible section, and each note inside becomes a checklist item:
Routines/
├── Fitness/
│ ├── Gym.md
│ └── Protein goal.md
└── Work/
└── Inbox zero.md
Add a code block to your daily note (or use the Insert routines checklist block command):
```routines
```
This renders a collapsible Habits checklist with Fitness and Work sections. On a wide pane (600px or more) the sections are laid out in two columns, read top to bottom and then left to right; narrower panes and phones show a single column. When you check Gym in a daily note dated 2026-06-25, that date is appended to the entries frontmatter property of Fitness/Gym.md:
---
entries:
- 2026-06-25
---
Unchecking removes the date. Checked items are shown with a strikethrough.
A habit can show its current streak next to its name, such as 🔥 12: the number of consecutive days in entries up to the daily note's date. Streaks are opt-in per habit; add showStreak: true to the habit note's frontmatter to turn one on. Until the habit is ticked that day, the streak is shown very faded with the number it will reach once you tick it — the day before's streak plus one. Nothing is shown when showStreak is false or missing. Subtasks don't show a streak; a habit with subtasks counts the days its parent was complete.
This is the same format that Habit Tracker 21 reads, so a habittracker code block pointed at your routines folder will chart the dates written here.
A routine note can break a habit into subtasks by adding a subtasks list to its frontmatter:
---
subtasks:
- Warm up
- Main set
- Cool down
---
Each subtask renders as a nested checkbox under the habit. The parent and its subtasks stay in sync both ways:
entries.entries dates from before it had subtasks, those dates are automatically backfilled into every subtask on render, so the parent stays consistent.Per-subtask completion is stored in a plugin-managed subtaskEntries property so it survives reloads:
---
subtasks:
- Warm up
- Main set
subtaskEntries:
Warm up:
- 2026-06-25
Main set:
- 2026-06-25
entries:
- 2026-06-25
---
Notes without a subtasks property behave exactly as before — a single checkbox.
Above the checklist, buttons link to the previous and next day's notes; clicking one opens it in the same tab (Cmd/Ctrl-click opens a new tab). A button only appears when that day's note exists: on 2026-10-16 with no note for the 17th yet, you get just a button to 2026-10-15; on 2026-10-15 you get buttons to both 2026-10-14 and 2026-10-16. Daily notes are recognised by their filename, using the date format from the Daily notes or Periodic Notes plugin.
Routines)1. Meditation without renaming anything on disk (default: off)entries)entries (default: YYYY-MM-DD)subtasks)subtaskEntries)Once accepted: Settings → Community plugins → Browse → search for "Habit Checklist".
main.js, manifest.json, and styles.css from the latest release.<vault>/.obsidian/plugins/folder-routines/.