Task Entry Structure
This guide covers everything you need to know about how TODOseq recognizes, parses, and manages tasks in your Obsidian vault.
Task Recognition Patterns
TODOseq identifies tasks based on specific patterns in your Markdown files. A task must match the following structure:
[optional indentation][optional list marker][state keyword][space][task text]Basic Task Structure
TODO Write documentation
DOING Update sync script
DONE Triage customer feedbackTask with Indentation
TODO Indented task
DOING Double indented taskTask with List Markers
- TODO Task in bullet list
+ TODO Task in bullet list using plus marker
1. DOING Task in numbered list
* DONE Task with indented bulletSupported Task Formats
TODOseq supports two main task formats:
1. Traditional Keyword Format
The primary format using state keywords:
TODO Simple task
DOING Task in progress
DONE Completed taskExamples with context:
- TODO Write documentation
- DONE Update README
- DOING Fix typos
1. DONE First step
2. DOING Second step
3. TODO Final step2. Markdown Checkbox Format
Combines checkboxes with state keywords:
- [ ] TODO Task with empty checkbox
- [ ] DOING In progress task with checkbox
- [x] DONE Completed task with checked checkboxCheckbox State Synchronization:
TODOseq automatically syncs checkbox state with task keywords when updated from the Task List*:
- Empty checkbox
[ ]= Incomplete task (TODO, DOING, etc.) - Checked checkbox
[x]= Completed task (DONE, CANCELED, etc.) - When you toggle state, both keyword and checkbox are updated
- Proper spacing is maintained (e.g.,
- [x] DONE)
*Note: If you modify the checkbox directly on the page in the Obsdian editor, the task state keyword will not be automatically updated accordingly.
Task Keywords
Default Supported Keywords
TODOseq recognizes these task state keywords by default:
Incomplete States:
TODO- Task needs to be doneDOING- Task is currently in progressNOW- Task should be done immediatelyLATER- Task is deferred for laterWAIT- Task is waiting on external dependenciesWAITING- Alternative form of WAITIN-PROGRESS- Alternative form of DOING
Completed States:
DONE- Task is completedCANCELED- Task was cancelledCANCELLED- Alternative spelling of cancelled
Task State Sequences
Tasks progress through defined state sequences when you click the state keyword:
Basic Workflow:
TODO → DOING → DONE → TODODeferred Workflow:
LATER → NOW → DONEWaiting Workflow:
WAIT → IN-PROGRESS → DONE
WAITING → IN-PROGRESS → DONECancelled Workflow:
CANCELED → TODO
CANCELLED → TODOAdding Custom Keywords
You can add additional task keywords in the plugin settings:
- Go to TODOseq settings
- Find "Additional Task Keywords" field
- Enter comma-separated capitalized keywords (e.g.,
FIXME, HACK, REVIEW)
Examples:
FIXME Broken functionality
HACK Temporary workaround
REVIEW Needs code reviewPriority System
TODOseq supports Logseq-style priority tokens to indicate task importance.
Priority Tokens
Add priority tokens immediately after the state keyword:
[#A]- High priority[#B]- Medium priority[#C]- Low priority
Examples:
TODO [#A] Critical bug fix
DOING [#B] Feature implementation
DONE [#C] Documentation updateDate Management
TODOseq supports Logseq-style SCHEDULED and DEADLINE dates for task organization.
Date Formats
Date Only
TODO Write documentation
SCHEDULED: <2025-01-15>
DEADLINE: <2025-01-20>Date with Time
TODO Write documentation
SCHEDULED: <2025-01-15 14:30>
DEADLINE: <2025-01-20 17:00>Date with Day of Week and Time
TODO Write documentation
SCHEDULED: <2025-01-15 Wed 14:30>
DEADLINE: <2025-01-20 Mon 17:00>Date Usage Rules
- Placement: Date lines must be immediately after the task line
- Indentation: Must match or be more indented than the task
- Format: Must use angle brackets
<>with valid date format - Limit: Only first occurrence of each type (SCHEDULED/DEADLINE) is recognized
Correct Date Usage:
TODO Write documentation
SCHEDULED: <2025-01-15>
- DOING Review pull requests
DEADLINE: <2025-01-20 17:00>Incorrect Date Usage:
TODO Write documentation
Some text between
SCHEDULED: <2025-01-15> # Not immediately after task
TODO Another task
SCHEDULED: <2025-01-15>
DEADLINE: <2025-01-20>
SCHEDULED: <2025-01-16> # Only first SCHEDULED is usedDate Parsing Details
- Dates are parsed in local time (timezone independent)
- Invalid date formats are ignored and logged to console
- Time component is optional
- Day of week is optional but must be valid if present
Tasks in Different Contexts
Tasks in Lists
TODOseq preserves list structure and markers:
- TODO Task in bullet list
- DOING Subtask with indentation
- DONE Deeply nested subtask
1. TODO First numbered task
2. DOING Second numbered task
3. DONE Third numbered taskTasks in Quotes and Callouts
When "Include tasks inside quote and callout blocks" is enabled:
> TODO Task in a quote block
> [!info]
> TODO Task in an info callout
> [!todo]-
>
> - [ ] TODO Checkbox task in collapsible todo blockTasks in Comment Blocks
When "Include tasks inside comment blocks" is enabled:
%% TODO Task in single-line comment block %%
%%
TODO Task in multi-line comment block
DEADLINE: <2025-11-01>
%%Tasks in Code Blocks
When "Include tasks inside code blocks" is enabled:
```txt TODO task in code block TODO another task in code block ```
Tasks in Footnotes
TODOseq can detect tasks in footnote definitions:
This text has a footnote[^1]
[^1]: TODO task in the footnoteLanguage-Aware Comment Tasks
TODOseq supports extracting tasks from comments in 20+ programming languages:
Python, Ruby, Shell, YAML, TOML, Dockerfile:
# TODO Write documentation
# FIXME Handle edge casesJavaScript, Java, C++, C#, Go, Swift, Kotlin, Rust, PowerShell:
// TODO Implement feature
// HACK Temporary fixSQL:
-- TODO Optimize query
-- DOING Add indexesINI:
; TODO Configure settings
; FIXME Broken configTask Updates and Preservation
When a task state is updated, TODOseq preserves:
- Indentation: Original whitespace is maintained
- List markers:
-,+,*,1., etc. are kept - Priority tokens:
[#A],[#B],[#C]remain, but will be moved to the start of the task line - Task text: Everything after the state keyword is preserved
- File structure: Task stays in original location
Before Update:
- TODO Write documentation for new feature [#A]After Clicking TODO:
- DOING [#A] Write documentation for new feature