jmerryman-eng236 downloadsEisenhower-matrix view for #task lines across your vault. Drag tasks between Do / Schedule / Delegate / Delete quadrants; status changes write back to the source markdown.
An Eisenhower-matrix view for your Obsidian vault. TaskMatrix scans every
markdown file for #task checkbox lines and lays them out in a 2×2
Do / Schedule / Delegate / Delete grid plus a backlog. Drag a task between
quadrants and the change is written straight back to the source markdown — the
plugin keeps no off-vault state.
Markdown is the only API. A task's quadrant is a
#tm/qNtag on the line and its status is the checkbox character, so any external tool (or you, by hand) can move and complete tasks with ordinary file edits and the matrix updates automatically.
A task is a markdown checkbox line tagged #task:
- [ ] Draft the Q4 roadmap #task #tm/q2 ^task-abc123
| Piece | Meaning |
|---|---|
- [ ] |
status — [ ] pending, [/] in progress, [x] completed, [-] cancelled |
#task |
detection signal (a checkbox line without it is ignored) |
#tm/qN |
quadrant — q1 Do, q2 Schedule, q3 Delegate, q4 Delete; omit for backlog |
^task-… |
optional Obsidian block ID — used as the stable task identity, always kept last |
#tm/qN tag.Writes are atomic and conflict-checked: if a file changed underneath an action (another editor, a sync backend), TaskMatrix bails out without clobbering and re-scans.
npm install # install dev dependencies
npm run dev # esbuild watch → main.js
npm run build # typecheck (tsc -noEmit) + production bundle → main.js
npm run typecheck
npm test # node --test against src/parser.ts (no extra deps)
The pure parse/mutate logic lives in src/parser.ts (no Obsidian imports, the
single source of truth) and is unit-tested in test/parser.test.ts. The
Obsidian integration — view, drag-and-drop, vault writes — lives in
src/main.ts.
Build, then copy main.js, manifest.json, and styles.css into
<vault>/.obsidian/plugins/task-matrix/ and enable the plugin in Obsidian's
community-plugin settings.