✅ 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:

KeywordMeaning
TODOTask that needs to be done
DONECompleted task

Additional states available:

KeywordMeaning
NEXTNext action to take
WAITINGWaiting for external input
HOLDOn hold / paused
CANCELLEDTask 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]

✅ 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

PriorityMeaning
[#A]High priority - do first
[#B]Medium priority - do soon
[#C]Low priority - do when possible

✅ Priority Commands

Key/CommandAction
Speed key 1Set priority A
Speed key 2Set priority B
Speed key 3Set priority C
Speed key 0Remove 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.

✅ Statistics Cookies [/]

✅ Fraction Format

Shows completed/total count:

Project Tasks [2/4]

Task 1
Task 2
✅ Task 3
✅ [#C] Task 4

✅ Percentage Format

Shows completion percentage:

Project Progress [50%]

DONE Design
✅ Implementation
✅ Testing
TODO Deployment

Statistics cookies update automatically when child TODO states change.

✅ Checkbox Lists

For simpler task lists within a section, use checkboxes:

Shopping List [2/4]

  • Milk

  • Bread

  • Eggs

  • Butter

✅ Checkbox States

SyntaxState
[ ]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

CommandDescription
scimax.org.insertCheckboxInsert 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:

KeywordUsage
#+TODO:Standard TODO keyword definition
#+SEQTODO:Sequential workflow (same as TODO)
#+TYPTODO: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):

  1. Heading :LOGGING: property

  2. File #+STARTUP: keywords

  3. Global scimax.org.logRepeat setting

✅ 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_REPEAT property with when the task was last completed

  • State 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

SettingValuesDescription
scimax.org.logRepeat"false""time""note"Enable/disable repeat logging
scimax.org.logIntoDrawerboolean or stringWhere 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

✅ Tags for TODO Items

Tags provide additional categorization beyond the headline hierarchy.

✅ Adding Tags

Tags appear at the end of the headline, enclosed in colons:

,* TODO Review quarterly report                               :work:urgent:
,* TODO Buy groceries                                         :personal:errands:

✅ Tag Commands

Key/CommandAction
Speed key ;Edit tags
scimax.org.setTagsSet tags via command

✅ Inherited Tags

Child headlines inherit their parent's tags:

,* Work Projects                                              :work:
,** TODO Project A                                            :client1:
This task has both :work: and :client1: tags.
,** TODO Project B                                            :internal:
This task has both :work: and :internal: tags.

✅ Common Tag Conventions

TagUsage
@officeContext: at office
@homeContext: at home
@computerContext: needs computer
@phoneContext: phone call
urgentPriority indicator
projectPart of larger project

✅ Filtering by Tags

Use agenda views or search to filter tasks by tag:

  • scimax.db.searchByTag - Search for specific tags

  • scimax.agenda.filterByTag - Filter agenda by tag

✅ 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 KeyAction
sAdd/edit SCHEDULED date
dAdd/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 KeyAction
IClock in (start timing)
OClock 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 KeyAction
eSet effort estimate

✅ Effort Format

Use H:MM format:

  • 0:30 - 30 minutes

  • 1:00 - 1 hour

  • 2:30 - 2 hours 30 minutes

✅ 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

✅ Tags vs Hierarchy

Use hierarchy for project structure, tags for cross-cutting concerns:

,* Work                                                       :work:
,** Project A
,*** TODO Task requiring phone                                :@phone:
,*** TODO Task requiring computer                             :@computer:
,** Project B
,*** TODO Another phone task                                  :@phone:

Now you can filter by @phone to see all phone tasks across projects.

✅ Quick Reference

✅ Keybindings

KeyAction
C-c C-tCycle TODO state
C-c C-cToggle checkbox

✅ Speed Commands (at heading start)

KeyAction
tCycle TODO state
123Set priority A/B/C
0Clear priority
,Increase priority
sSchedule
dDeadline
eSet effort
;Set tags
IClock in
OClock out

✅ Commands

CommandDescription
scimax.org.cycleTodoCycle TODO state
scimax.org.toggleCheckboxToggle checkbox
scimax.org.insertCheckboxInsert checkbox
scimax.org.scheduleAdd SCHEDULED timestamp
scimax.org.deadlineAdd DEADLINE timestamp
scimax.db.showTodosShow all TODO items
scimax.agenda.todoListOpen TODO agenda view

Navigation