๐ Lesson 7.1: Task & Project Management in Obsidian
Your notes already know what you're thinking about โ so why keep your to-dos in a separate app? In this lesson we turn your vault into a genuine task manager, where a task lives right next to the note that spawned it, yet still rolls up into a single dashboard of everything due this week. No context-switching, no lost follow-ups.
๐ What You'll Learn
By the end of this lesson, you will be able to:
- Write native Markdown checkboxes and understand exactly how Obsidian renders and toggles them
- Use the Tasks community plugin โ emoji metadata for due, scheduled, start, priority, recurrence, and done dates
- Write
tasksquery blocks that gather matching tasks from across your whole vault, sorted and grouped - Combine tasks with Dataview
TASKqueries, aggregate tasks inside project notes, and sketch a simple GTD setup
โฑ๏ธ Estimated Time: 60 minutes
๐ฏ Project: Build a "Task Dashboard" note that lists every open task in your vault due this week โ a single place to start each morning.
In This Lesson
Tasks Where Your Thinking Lives
Most people keep to-dos in one app and knowledge in another. It feels tidy, but it quietly costs you. The task "email Dr. Chen about the grant" has no idea it belongs to your Grant Application note. The task "test the login bug fix" is divorced from your Auth Refactor project. Every time you want context you jump apps, lose your place, and the two systems drift out of sync.
Obsidian's pitch is simple and powerful: write the task exactly where the thought happened โ in your meeting note, your project note, your daily note โ and let the software gather it back up for you. The checkbox stays anchored to its context forever, but you still get a single, always-current list of what's due. Think of it as the difference between a shoebox of loose receipts and a ledger that reads every receipt automatically.
๐ง Mindset
You may be tempted to migrate a huge existing to-do list into Obsidian in one sitting. Don't. The win here isn't "another place to hold 200 tasks" โ it's that new tasks are born attached to the work you're already doing. Start by capturing tasks as they come up in this week's notes. In a fortnight you'll have a living system, built from real work, with no migration marathon and no guilt-inducing backlog import.
Native Markdown Checkboxes
Before any plugins, Obsidian speaks checkboxes out of the box. A checkbox is just a list item whose bullet is followed by square brackets:
- [ ] Book the dentist
- [x] Pay the electricity bill
- [ ] Draft the project brief
- [ ] Outline goals
- [x] Gather last year's numbers
Here's what each part does:
-starts a normal Markdown list item (a*or+works too).[ ]โ a space between the brackets โ renders as an empty checkbox.[x]โ anxbetween the brackets โ renders as a checked box, usually with the text struck through.- Indent with a tab or spaces to make subtasks, exactly like a nested list.
In Reading view (and in Live Preview) those brackets become real, clickable boxes.
Click one and Obsidian edits the underlying text for you โ it literally changes [ ] to
[x] in the file. That's the whole trick: the checkbox is plain text, and the tick is
just a character. Your tasks are as portable and future-proof as every other note in your vault.
โ Pro Tip โ Alternate checkbox states
Obsidian and many themes recognise custom statuses beyond blank and x. Common
ones are [/] (in progress), [-] (cancelled), [?] (question),
and [!] (important). Rendering depends on your theme, but the text stays valid Markdown
everywhere. The Tasks plugin (next section) lets you define exactly what each symbol means and how it
behaves.
โ ๏ธ Important Note: A checkbox needs the space inside the brackets to be empty:- [ ], not-[ ]or- []. If your boxes aren't rendering, 95% of the time it's a missing space after the dash or missing space inside the brackets.
The Tasks Plugin & Its Emoji Metadata
Native checkboxes are great for a single note. But you can't ask them questions like "show me everything due before Friday." That's what the Tasks community plugin adds. Install it from Settings โ Community plugins โ Browse โ "Tasks", then enable it.
Tasks works by letting you decorate an ordinary checkbox with emoji metadata. Each emoji is a signpost that says "the thing after me is a date / a priority / a recurrence rule." You never have to memorise them cold โ the plugin ships a "Create or edit task" command (open the Command palette with Ctrl/Cmd+P) that gives you a friendly form and writes the emoji for you. But it helps to read them:
| Meaning | Emoji | Example |
|---|---|---|
| Due date | ๐ | ๐
2026-09-18 |
| Scheduled (plan to work on) | โณ | โณ 2026-09-16 |
| Start (don't act before) | ๐ซ | ๐ซ 2026-09-15 |
| Priority | ๐บ highest ยท โซ high ยท ๐ผ medium ยท ๐ฝ low ยท โฌ lowest | ๐ผ |
| Recurrence | ๐ | ๐ every week |
| Done date (added when you tick it) | โ | โ
2026-09-14 |
Put together, a fully specified task looks like this โ still just one line of Markdown:
- [ ] Submit quarterly report ๐ผ ๐ซ 2026-09-15 โณ 2026-09-16 ๐
2026-09-18 ๐ every 3 months
Read it left to right: a medium-priority task you shouldn't start before the 15th, plan to
work on the 16th, that's due the 18th, and recurs quarterly. When you tick a
recurring task, Tasks marks this one done (stamping โ
with today's date) and
automatically writes the next occurrence right above it with the dates rolled forward. That
alone is worth the install.
๐ Definition
Global filter: In the Tasks settings you can set a "global filter" โ usually a tag
like #task. When set, Tasks only treats a checkbox as a real task if it contains that
tag. This lets you keep casual checklists (packing lists, recipe steps) separate from tracked tasks.
Leave it blank and every checkbox in your vault becomes a task. There's no wrong answer โ
just decide early, because changing it later reclassifies everything at once.
Now the payoff. A task's life moves through a small set of states, and the Tasks metadata is what lets your queries know where each one sits:
- [ ] in a note"] --> B["๐ซ Not started
start date in future"] B --> C["โณ Scheduled
you plan to do it"] C --> D["๐ Due
deadline approaching"] D --> E["โ Done
ticked, done-date stamped"] E -->|"๐ recurring"| A D -->|"missed"| F["๐ด Overdue"] F --> E
Querying Tasks Across Your Vault
Here's where it stops being a checklist and becomes a system. Anywhere in any note you can drop a
tasks query block โ a fenced code block whose language is tasks.
Each line inside is a filter, sort, or grouping instruction written in near-plain English. Tasks scans
your entire vault, finds every checkbox that matches, and renders a live, clickable list right
there in the note.
Example 1 โ everything still open, due on or before today, most urgent first:
```tasks
not done
due before tomorrow
sort by priority
sort by due
```
Example 2 โ this note as a mini project view: open tasks that live in this same file, grouped by their due date:
```tasks
not done
path includes {{query.file.path}}
group by due
sort by due
```
Example 3 โ a "waiting / high priority" board: open, high-or-higher priority tasks tagged
#task, hiding the little metadata icons for a cleaner look:
```tasks
not done
priority is above medium
tags include #task
hide priority
hide task count
```
The filter vocabulary is large but learnable. A few of the most useful lines:
not done/doneโ completion state.due before tomorrow,due after 2026-09-01,due this week,no due dateโ date filters (alsoscheduled,starts,happens).path includes Projects/โ only tasks in files under a folder.heading includes Follow-upโ only tasks under a matching heading.tags include #workโ only tasks carrying a tag.sort by(priority, due, scheduled, pathโฆ) andgroup by(due, priority, folder, heading, happensโฆ).limit 20,hide edit button,short modeโ presentation tweaks.
โ ๏ธ Watch Out
A tasks block only renders in Reading view / Live Preview, not in raw
source mode โ in source mode you just see the code fence. That's normal. Also note "before tomorrow"
is the idiomatic way to say "today or earlier," because due before is exclusive of the
date you name. And keep the language label exactly tasks (lowercase) โ Tasks
or task won't be recognised.
Dataview TASK & Project Notes
You met Dataview back in Lesson 6.2 as the plugin that queries your notes like a
database. Dataview can query tasks too, with its TASK query type. So which do you use?
| Useโฆ | When you wantโฆ |
|---|---|
Tasks plugin (```tasks) |
Rich due/recur/priority handling, recurring tasks, clickable ticking, near-English filters. The default for real task management. |
Dataview (```dataview TASK) |
Tasks pulled by note metadata โ e.g. "tasks from every note where status: active and project: Website." Great for tying tasks to frontmatter. |
A Dataview TASK query reads like its other queries โ it just returns checkboxes:
```dataview
TASK
FROM "Projects"
WHERE !completed AND due <= date(today) + dur(7 days)
SORT due ASC
```
This gathers incomplete tasks from notes in your Projects folder that are due within a week. Dataview's checkboxes are clickable too, and it groups them under the note they came from. Use whichever plugin's mental model fits the question you're asking โ many people keep both installed and reach for Tasks day-to-day, Dataview when metadata is doing the driving.
Project notes that aggregate their own tasks
A project note is one of the most satisfying patterns in Obsidian. You make a single note per project โ Kitchen Renovation, Q4 Launch, Master's Thesis โ and inside it you write the tasks as you think of them, then let a query pull them into a live status list. Skeleton:
---
type: project
status: active
---
# Q4 Launch
## Notes
Kickoff was great. Design owns the hero image; eng owns the API.
## Tasks
- [ ] Finalise hero image #task ๐
2026-09-18
- [ ] Ship staging API #task ๐ผ ๐
2026-09-20
- [ ] Draft launch email #task โณ 2026-09-22
## ๐ Open items (auto)
```tasks
not done
path includes {{query.file.path}}
sort by due
```
Everything is in one place: the narrative, the raw tasks, and a self-updating rollup. Because the query filters on this file's path, the same block works unchanged in every project note you create โ copy it once, paste it forever.
โ Pro Tip โ one dashboard, many projects
Give every project note type: project in its frontmatter (as above). Then a single
Dataview TABLE in your home note can list all active projects, and a single
```tasks block filtering path includes Projects/ can show every open task
across all of them. Small, consistent metadata now buys you effortless overviews later.
Kanban & a Simple GTD Setup
Some projects think in lists; others think in columns. Back in Lesson 6.4 (and again in the Visual Thinking lesson you just finished) you met the Kanban community plugin, which turns a note into a drag-and-drop board of "To Do โ Doing โ Done" columns. It stores the board as plain Markdown checkboxes under headings, so a Kanban board and a task query can read the very same file. Reach for Kanban when you want to see flow โ what's stuck, what's moving โ and for lists when you want to see deadlines. They're two windows onto the same notes.
A lightweight GTD-style setup
GTD (David Allen's Getting Things Done) boils to five moves: capture, clarify, organise, reflect, engage. You can run a perfectly good GTD system in Obsidian with almost no ceremony:
- Capture โ throw every task into your daily note the instant it appears, as
- [ ] โฆ #task. Don't sort yet; just get it out of your head. - Clarify โ once a day, add a due date (๐ ), a priority, or a project tag to each new task. Two-minute jobs? Just do them and tick.
- Organise โ move project-bound tasks into their project note; leave standalone ones where they are. The tag is what matters, not the location.
- Reflect โ a weekly review note with a
```tasksblock fordue this weekand another forno due date(your someday/maybe pile). - Engage โ every morning, open your Task Dashboard (the project below) and work the top of the list.
daily note: - [ ] ... #task"] --> B["๐ Clarify
add ๐ priority, project tag"] B --> C["๐๏ธ Organise
route to project notes"] C --> D["๐ญ Reflect
weekly review queries"] D --> E["โก Engage
work the dashboard"] E --> A
๐ง Mindset
The perfect task system is the one you actually open tomorrow. Don't build twelve smart queries and a colour-coded board on day one โ you'll admire it and never use it. Build one capture habit and one dashboard. Add a query only when you feel an actual pain ("I keep missing recurring bills"). Systems that grow from real friction survive; systems built from enthusiasm alone rarely do.
๐ฏ Project: Your Task Dashboard
Time to build the note you'll open every morning: a single dashboard that surfaces everything open and due this week, pulled live from across your whole vault. When it works, you'll wonder how you tracked tasks any other way.
๐๏ธ Build a "Task Dashboard" note
Objective: One note that always shows your open tasks due this week, plus overdue items and things with no date yet.
Instructions (about 25 minutes):
- (3 min) Install and enable the Tasks plugin via Settings โ Community plugins. (Optional: also enable Dataview if it isn't already.)
- (2 min) Decide your global filter. Simplest start: leave it blank so every checkbox counts. If you want separation, set it to
#taskand tag your real tasks. - (5 min) Seed some real data. In three or four existing notes, add a couple of tasks with due dates this week, e.g.
- [ ] Reply to Sam ๐ 2026-09-17. Add one overdue and one with no date, so every section of the dashboard has something to show. - (5 min) Create a new note called Task Dashboard and paste the three query blocks from the solution below.
- (3 min) Switch to Reading view / Live Preview and confirm the lists render and your tasks appear in the right sections. Tick one to confirm it disappears from "open."
- (4 min) Add this note to your Bookmarks (or set it as your Homepage with the Homepage plugin) so it's one click away each morning.
- (3 min) Tweak: change a due date, add a priority, and watch the sort order update.
๐ก Hint โ the three sections you want
A great dashboard answers three questions at a glance: What's late? What's this week?
What hasn't been scheduled yet? Make one ```tasks block per question, each with
a small heading above it.
โ Solution โ paste this into your Task Dashboard note
# ๐ Task Dashboard
## ๐ด Overdue
```tasks
not done
due before today
sort by due
```
## ๐
Due this week
```tasks
not done
due after yesterday
due before in 7 days
sort by priority
sort by due
group by due
```
## ๐ซ๏ธ No date yet (triage these)
```tasks
not done
no due date
sort by priority
limit 15
```
If you set a #task global filter, add tags include #task to each
block (or rely on the filter doing it automatically). Prefer Dataview? The "due this week" block
becomes TASK FROM "" WHERE !completed AND due >= date(today) AND due <= date(today) + dur(7 days) SORT due ASC.
โ Project Completion Checklist
- The Tasks plugin is installed and enabled
- You added real tasks with due dates in several notes (including one overdue, one undated)
- Your "Task Dashboard" note shows Overdue, Due this week, and No date sections
- Ticking a task removes it from the open lists
- The dashboard is bookmarked or set as your homepage
๐ฏ Quick Quiz
Question 1: Which emoji marks a task's due date in the Tasks plugin?
Question 2: What does a ```tasks query block actually do?
Best Practices for Task Management
โ Do's
- Capture in context. Write the task in the note that spawned it, not in a far-off list.
- Give dashboard tasks a due date. Undated tasks vanish from date-based queries โ schedule them or triage them.
- Reuse one
path includes {{query.file.path}}block across all project notes for instant rollups. - Let recurring tasks recur. ๐ turns chores into a self-refilling list you never rebuild.
โ Don'ts
- Don't over-tag. If a global filter of
#taskfeels heavy, leave it blank and let every checkbox count. - Don't mix ten date types on one task. Most tasks need only a due date; add start/scheduled only when they genuinely differ.
- Don't build queries you won't read. One dashboard beats twelve clever views nobody opens.
๐ Learning Journal
Open your Learning Journal note in your vault. After this lesson, jot down:
- Key concepts you learned
- Techniques that clicked for you
- Questions or confusion points to revisit
- Ideas you want to try
- Your progress and feelings about learning this
โ๏ธ This lesson's prompt: Where do your tasks currently live, and what would change if every task were born attached to the note that created it? Name one recurring obligation you keep forgetting โ how would a ๐ recurring task and your new dashboard catch it next time?
๐ Lesson Summary
๐ Key Takeaways
- Native checkboxes are plain Markdown โ
- [ ]and- [x]โ clickable in Reading view and portable everywhere. - The Tasks plugin adds emoji metadata: due ๐ , scheduled โณ, start ๐ซ, priority ๐บ๐ผ๐ฝ, recurrence ๐, done โ .
```tasksquery blocks gather matching tasks from the whole vault with near-English filters, sorting, and grouping.- Dataview
TASKqueries pull tasks by note metadata; project notes aggregate their own tasks; Kanban gives the same tasks a board view.
๐ What You've Accomplished
You've turned your vault into a real task manager โ one where a to-do lives beside the thinking that created it, yet still rolls up into a single morning dashboard. You can write, decorate, and query tasks, and you have a lightweight GTD loop to keep them flowing. That's a genuinely capable productivity system, built entirely from plain text you own.
โ Common Questions at This Stage
Do I have to use the emoji, or can I hide them?
You never type them by hand if you don't want to โ use the Tasks "Create or edit task" command for a
form. And if the icons feel cluttered, the plugin offers a "short mode" and hide lines in
queries. Some people also prefer the Dataview-style field syntax ([due:: 2026-09-18]),
which Tasks can be configured to read instead. Pick whichever you'll actually keep up.
Tasks vs Dataview โ do I really need both?
No, one is plenty to start. Choose Tasks if your questions are about dates,
priorities, and recurrence (most people). Choose Dataview if your questions are driven
by note frontmatter ("tasks from every note where project: X"). Many power users run both
and reach for each where it's strongest โ but that's an optimisation, not a requirement.
My ```tasks block just shows the code, not a list. What's wrong?
Almost always one of three things: you're in source mode (switch to Reading view or Live
Preview), the language label isn't exactly lowercase tasks, or a global filter is set and
your test tasks don't carry the required tag. Add the tag, or clear the filter, and they'll appear.
๐ญ Looking Ahead
Your task system now lives inside your vault โ which means it's only as safe as your vault is. In the next lesson we make sure your notes exist in more than one place and can survive a mistake or a dead drive: the crucial difference between sync and backup, and how to set up both for free or cheaply.
โ Before the Next Lesson
- Use your Task Dashboard for at least one real morning
- Convert one recurring chore into a ๐ recurring task and tick it once to see it regenerate
- Write your Learning Journal entry for this lesson
๐ Additional Resources
- Tasks plugin โ official documentation
- Obsidian Help โ formatting notes (checklists)
- Dataview โ query types, including TASK
๐ Encouragement for the Journey
You just closed the gap between "the notes I keep" and "the things I have to do" โ a divide that trips up most PKM setups. From here, your second brain doesn't just remember; it reminds. Open that dashboard tomorrow morning and feel the difference. ๐ฎ