Keybinding Note: This extension uses Emacs-style keybindings where Ctrl is used on all platforms (not Cmd on Mac), except where explicitly noted. Mac alternatives are shown as Cmd where applicable.
✅ TODO Items
Scimax VS Code provides a comprehensive task management system built into your documents. TODO items are headlines with a special keyword that indicates their status.
✅ Basic TODO Functionality
✅ Creating TODO Items
Add TODO after the headline stars to create a task:
* TODO Write documentation
** TODO Complete first draft
** TODO Review and edit
✅ Cycling TODO States
Press C-c C-t on a headline to cycle through TODO states:
(no keyword) → TODO → DONE → (no keyword)
Or use the command scimax.org.cycleTodo.
With speed commands enabled, press t at the beginning of a headline.
✅ TODO Keywords
The default TODO keywords are:
| Keyword | Meaning |
|---|---|
| TODO | Task that needs to be done |
| DONE | Completed task |
Additional states available:
| Keyword | Meaning |
|---|---|
| NEXT | Next action to take |
| WAITING | Waiting for external input |
| HOLD | On hold / paused |
| CANCELLED | Task cancelled (won't be done) |
Logging Completion
When you mark a task as DONE, a CLOSED timestamp is automatically added:
* DONE Write introduction
CLOSED: [2026-01-13 Mon 15:30]
Changing a heading to any state that is not done (another TODO keyword, or no keyword) removes the CLOSED timestamp. Other planning keywords on the same line (SCHEDULED, DEADLINE) are kept. As in org-mode this happens in either direction (S-
✅ Priorities
Priorities help you identify the most important tasks.
✅ Setting Priorities
Add a priority cookie after the TODO keyword:
* TODO [#A] Urgent and important task
* TODO [#B] Important but not urgent
* TODO [#C] Nice to have
✅ Priority Levels
| Priority | Meaning |
|---|---|
| [#A] | High priority - do first |
| [#B] | Medium priority - do soon |
| [#C] | Low priority - do when possible |
✅ Priority Commands
| Key/Command | Action |
|---|---|
| Speed key 1 | Set priority A |
| Speed key 2 | Set priority B |
| Speed key 3 | Set priority C |
| Speed key 0 | Remove priority |
| Speed key , | Increase priority (C→B→A) |
You can also set priority through the command palette: scimax.org.setPriority
✅ Progress Indicators
Track progress through subtasks using statistics cookies and checkboxes.
Shopping List
-
Milk
-
Bread
-
Eggs
-
Butter
✅ Checkbox States
| Syntax | State |
|---|---|
| [ ] | Unchecked / not done |
| [X] | Checked / done |
| [-] | Partially complete (has mixed children) |
✅ Toggling Checkboxes
Press C-c C-c with cursor on a checkbox line to toggle it.
Or use scimax.org.toggleCheckbox.
✅ Nested Checkboxes
Checkboxes can be nested. Parent checkboxes show aggregate state:
* Packing List [1/2]
- [-] Clothes [2/3]
- [X] Shirts
- [X] Pants
- [ ] Socks
- [X] Toiletries [3/3]
- [X] Toothbrush
- [X] Soap
- [X] Towel
✅ Inserting Checkboxes
| Command | Description |
|---|---|
| scimax.org.insertCheckbox | Insert checkbox at cursor |
Type - [ ] followed by space to manually create a checkbox item.
✅ Extended TODO Keywords
Beyond TODO and DONE, use these states for workflow management:
✅ NEXT
Indicates the very next action to take:
* NEXT Call client about project requirements
Use NEXT for tasks you're actively working on or will work on immediately.
✅ WAITING
Task is blocked waiting for someone or something:
* WAITING Review from manager
:PROPERTIES:
:WAITING_ON: John Smith
:END:
✅ HOLD
Task is paused but not cancelled:
* HOLD Website redesign
Paused until Q2 budget approval.
✅ CANCELLED
Task won't be done (but kept for records):
* CANCELLED Old feature request
No longer relevant after product pivot.
✅ Workflow Example
A typical task progression:
TODO → NEXT → WAITING → NEXT → DONE
↓
HOLD → NEXT → DONE
↓
CANCELLED
✅ Custom TODO Keywords
You can define your own TODO workflow states for each file using the #+TODO: keyword. This is useful for project-specific workflows like code review, content publishing, or approval processes.
✅ Defining Custom States
Add #+TODO: at the top of your org file (before any headings):
#+TODO: DRAFT REVIEW | PUBLISHED REJECTED
The | separates active (incomplete) states from done (complete) states. When you cycle TODO states, they will follow this sequence:
(none) → DRAFT → REVIEW → PUBLISHED → (none)
✅ Multiple TODO Lines
You can define multiple workflow sequences:
#+TODO: TODO IN-PROGRESS | DONE
#+TODO: BUG INVESTIGATING FIXING | FIXED WONTFIX
All states from all #+TODO: lines are recognized.
✅ Without Pipe Separator
If you omit the |, the last state is treated as done:
#+TODO: IDEA DRAFT REVIEW PUBLISHED
This makes PUBLISHED the done state.
✅ Syntax Variants
These keywords are all equivalent:
| Keyword | Usage |
|---|---|
| #+TODO: | Standard TODO keyword definition |
| #+SEQ_TODO: | Sequential workflow (same as TODO) |
| #+TYP_TODO: | Type-based workflow |
✅ Example Workflows
✅ Code Review Workflow
#+TODO: DRAFT REVIEW APPROVED | MERGED REJECTED
* DRAFT Implement new feature
* REVIEW Fix login bug
* APPROVED Update documentation
✅ Content Publishing Workflow
#+TODO: IDEA OUTLINE WRITING EDITING | PUBLISHED ARCHIVED
* WRITING Blog post about org-mode
* EDITING Tutorial on source blocks
✅ Project Management Workflow
#+TODO: BACKLOG SPRINT IN-PROGRESS TESTING | DONE CANCELLED
* IN-PROGRESS User authentication
* TESTING Payment integration
✅ Logging State Changes
Scimax VS Code can log when and how TODO states change.
✅ LOGBOOK Drawer
State changes are recorded in the LOGBOOK drawer:
* DONE Complete documentation
CLOSED: [2026-01-13 Mon 16:00]
:LOGBOOK:
- State "DONE" from "TODO" [2026-01-13 Mon 16:00]
- State "TODO" from "WAITING" [2026-01-12 Sun 10:00]
- State "WAITING" from "TODO" [2026-01-10 Fri 14:30]
:END:
✅ Timestamps on State Changes
When enabled, each state change adds:
A timestamp showing when the change occurred
The previous state
This creates a complete history of task progress.
✅ Progress Logging for Repeating Tasks
When a repeating task cycles back to TODO (e.g., a task with DEADLINE: <2026-01-30 Fri +1w>),
you can optionally log the completion event with a timestamp and note.
✅ Enabling Progress Logging
Progress logging is off by default. Enable it with:
✅ Global Setting
{
"scimax.org.logRepeat": "time" // or "note" for note prompts
}
✅ File-Level Override
Add a #+STARTUP keyword at the top of your org file:
#+STARTUP: logrepeat ;; Enable with timestamp
#+STARTUP: lognoterepeat ;; Enable with note prompt
#+STARTUP: nologrepeat ;; Disable
✅ Heading-Level Override
Add a :LOGGING: property to individual headings:
* TODO Weekly review
:PROPERTIES:
:LOGGING: logrepeat
:END:
DEADLINE: <2026-01-30 Fri +1w>
✅ Priority Order
Settings are resolved in this priority order (highest to lowest):
Heading
:LOGGING:propertyFile
#+STARTUP:keywordsGlobal
scimax.org.logRepeatsetting
✅ Log Output Example
When you mark a repeating task as done with logging enabled:
* TODO Weekly review
DEADLINE: <2026-02-06 Fri +1w>
:PROPERTIES:
:LAST_REPEAT: [2026-01-23 Fri 07:31]
:END:
- State "DONE" from "TODO" [2026-01-23 Fri 07:31]
The log shows:
LAST_REPEATproperty with when the task was last completedState change entry showing the transition from TODO to DONE
✅ Logging to Drawer
By default, log entries appear in the body text. To log into a drawer:
{
"scimax.org.logIntoDrawer": true // Use :LOGBOOK: drawer
// or
"scimax.org.logIntoDrawer": "MYLOG" // Use custom drawer name
}
Or use file-level #+STARTUP: logdrawer to enable.
With drawer logging, the output becomes:
* TODO Weekly review
DEADLINE: <2026-02-06 Fri +1w>
:PROPERTIES:
:LAST_REPEAT: [2026-01-23 Fri 07:31]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2026-01-23 Fri 07:31]
:END:
✅ Note Prompts
When logRepeat is set to "note", you'll be prompted to enter a note when
completing a repeating task. The note is included in the log entry:
- State "DONE" from "TODO" [2026-01-23 Fri 07:31] \\
Completed early because of deadline change.
If you cancel or leave the note empty, the entry is logged without a note.
✅ Configuration Summary
| Setting | Values | Description |
|---|---|---|
| scimax.org.logRepeat | "false""time""note" | Enable/disable repeat logging |
| scimax.org.logIntoDrawer | boolean or string | Where to log (body or drawer) |
| #+STARTUP: logrepeat | - | File-level: log with timestamp |
| #+STARTUP: lognoterepeat | - | File-level: log with note prompt |
| #+STARTUP: nologrepeat | - | File-level: disable logging |
| #+STARTUP: logdrawer | - | File-level: use LOGBOOK drawer |
| :LOGGING: logrepeat | - | Heading-level: log with timestamp |
| :LOGGING: lognoterepeat | - | Heading-level: log with note prompt |
| :LOGGING: nologrepeat | - | Heading-level: disable logging |
| :LOGGING: nil | - | Heading-level: disable logging |
✅ Scheduling and Deadlines
Assign dates to tasks for planning.
✅ SCHEDULED
When you plan to start or work on a task:
* TODO Write report
SCHEDULED: <2026-01-15 Wed>
✅ DEADLINE
When a task must be completed by:
* TODO Submit proposal
DEADLINE: <2026-01-20 Mon>
✅ Both Together
* TODO Complete project
SCHEDULED: <2026-01-15 Wed> DEADLINE: <2026-01-25 Sat>
✅ Adding Dates
| Speed Key | Action |
|---|---|
| s | Add/edit SCHEDULED date |
| d | Add/edit DEADLINE date |
| . | Insert timestamp |
Or use commands:
scimax.org.schedule
scimax.org.deadline
See Timestamps for more on date formats.
✅ Time Tracking
Track time spent on tasks using clock entries.
✅ Clocking In/Out
| Speed Key | Action |
|---|---|
| I | Clock in (start timing) |
| O | Clock out (stop timing) |
✅ Clock Entries
Clock entries are stored in the LOGBOOK drawer:
* TODO Working on documentation
:LOGBOOK:
CLOCK: [2026-01-13 Mon 09:00]--[2026-01-13 Mon 10:30] => 1:30
CLOCK: [2026-01-12 Sun 14:00]--[2026-01-12 Sun 16:00] => 2:00
:END:
✅ Total Time
The total clocked time appears in the properties or can be calculated for reports.
✅ Effort Estimates
Estimate how long tasks will take.
✅ Setting Effort
Add an EFFORT property:
* TODO Review document
:PROPERTIES:
:EFFORT: 1:30
:END:
| Speed Key | Action |
|---|---|
| e | Set effort estimate |
Effort Format
Any of these formats work, in the property and in the Set effort prompt
(speed key e, or Set Effort... in the project view):
0:30 - 30 minutes (H:MM)
2:30 - 2 hours 30 minutes
3h or 1.5h - hours
45m - minutes
2d - 2 days; a day counts as 8 hours
The Set effort list offers common values (0:15 to 8:00, 2d, 5d); choose Custom... to type another one.
✅ Agenda Integration
TODO items appear in agenda views for planning and review.
✅ Viewing All TODOs
Use scimax.agenda.todoList or scimax.db.showTodos to see all tasks.
✅ Deadline View
Use scimax.agenda.deadlines to see upcoming and overdue deadlines.
✅ Filtering Options
By priority (A, B, C)
By tag
By date range
By TODO state
See Agenda for complete agenda documentation.
✅ Best Practices
✅ Task Granularity
Make tasks actionable:
* TODO "Write documentation" ; Too vague
* TODO Write introduction section ; Better - specific and actionable
✅ Use NEXT for Clarity
Always have at least one NEXT task to know what to work on:
* Project: New Feature
** DONE Design architecture
** NEXT Implement core module ; ← Clear next step
** TODO Write tests
** TODO Deploy to staging
✅ Regular Review
Periodically review tasks to:
Move stale TODO items to HOLD or CANCELLED
Update WAITING items
Identify next actions
✅ Quick Reference
✅ Keybindings
| Key | Action |
|---|---|
| C-c C-t | Cycle TODO state |
| C-c C-c | Toggle checkbox |
✅ Speed Commands (at heading start)
| Key | Action |
|---|---|
| t | Cycle TODO state |
| 1/2/3 | Set priority A/B/C |
| 0 | Clear priority |
| , | Increase priority |
| s | Schedule |
| d | Deadline |
| e | Set effort |
| ; | Set tags |
| I | Clock in |
| O | Clock out |
✅ Commands
| Command | Description |
|---|---|
| scimax.org.cycleTodo | Cycle TODO state |
| scimax.org.toggleCheckbox | Toggle checkbox |
| scimax.org.insertCheckbox | Insert checkbox |
| scimax.org.schedule | Add SCHEDULED timestamp |
| scimax.org.deadline | Add DEADLINE timestamp |
| scimax.db.showTodos | Show all TODO items |
| scimax.agenda.todoList | Open TODO agenda view |