Skip to content

Projects

A project is a note with a marktodo key in its frontmatter, set to anything other than false.

---
marktodo: true
---
## Doing
- [/] Demo old floor @high
## Backlog
- [ ] Price new subfloor

In a project note, status headings (## Doing, ## Backlog, …) are kept in sync with the glyph — change a todo’s status and its line moves to the matching section.

Any heading level works, # through ######: MarkTodo matches the heading’s text, not its depth. A project MarkTodo creates for you is scaffolded at ##, and when it has to add a section that was missing it matches the level of the status sections already in that part of the note.

The six statuses and their names are fixed: a Doing heading means the same thing in every vault, on every device, in the plugin and in the app.

Doing was called Progress in an early version. A ### Progress heading is still read as Doing, and MarkTodo renames it to ### Doing — at whatever level you wrote it — the next time it writes to that note.

A todo’s subproject is the deepest ancestor heading whose text is not a status label. Both kinds of heading can sit over the same todo:

## Kitchen
### Doing
- [/] Demo old floor

That todo is in the Doing section, under the Kitchen subproject. Nest as deep as you like; the nearest non-status heading above the line wins.

In a note that is not a project, nothing is a status section: ## Doing in a daily note is a plain grouping like any other heading, and the todos under it are grouped by it and nothing more.

Four more keys, read on any note rather than only on projects — a daily-note template can carry them too:

Key Does
marktodo-group: Home Files the project under a group in the dashboard
marktodo-archived: true Archives it: still indexed, but out of pickers, boards and lists
marktodo-cleanup: delete Completing a todo in this note removes its line
marktodo-pinned: true Lifts the project to the top of the dashboard, above every group

The pin lives in the note, not in a setting, because the two programs share notes and not settings files. It survives a rename the way a path-keyed pin never could, it arrives on your other devices with the Markdown, and it lets the Android app pin a project without writing anything under .obsidian.

marktodo-cleanup is per note and binary. The default is keep: a note without the key never loses a line. Archived notes never delete whatever the key says — archiving exists to preserve history, so it outranks cleanup.

In Obsidian the removal is part of the same write that marks the todo Done. In the Android app it is queued instead and written at the next sync, which leaves you an undo window: uncheck the todo before syncing and the line was never removed.