Using TKDO for Getting Things Done (GTD)

how to implement GTD with TKDO
TKDO - GTD - Screenshots - Development


This is a short guide to implementing a Getting Things Done task system with TKDO.

In case you know GTD already, here's a quick translation table:
GTD conceptTKDO equivalent
task task
project / open loop task file, task with children, or recurring task
contexts contexts
next action 'next' task type (on parent task)
tickler file due dates, recurring events, lead times, snooze button
waiting for snooze button
someday / maybe 'idea' task type
If you don't know GTD yet, don't worry. I explain the basics below. However, I still recommend reading other articles about it, to more fully understand, and to learn about the parts which are the same no matter which system you use to implement GTD. This page focuses on the parts which are relevant to TKDO.

The guiding principle behind GTD is to "get everything out of your head", which is also a focus of TKDO.

GTD Workflow Process

The five steps of the GTD workflow process are:
  1. Collect
  2. Process
  3. Organize
  4. Review
  5. Do


Collection is basically dumping tasks into buckets. You can probably think of it as an inbox. For example, most people have several email inboxes which act as buckets. With email, this happens pretty automatically.

However, people also tend to accumulate tasks in their head. Don't leave them there. Write them down, and get them out of your head. It doesn't matter where you write them down, but I find it useful to put them into a VimOutliner file. You could even call it "bucket.otl", though you are by no means limited to a single bucket. Personally, I have a lot more than one bucket, and the formats vary widely. Only some of them are on a computer. Perhaps my most active bucket is my PDA, where I write things down when I'm not online.

The most important things to remember about collection are:
  • Dump all your incoming tasks into buckets of some sort. Don't keep them in your head.
  • Empty your buckets frequently. This brings us to the next step...


GTD recommends that you process buckets frequently by emptying them.

Basically, go through your buckets one item at a time. For each task, if it will take 2 minutes or less to complete, just do it immediately. Otherwise, move it somewhere appropriate so you can deal with it later.

In TKDO, this means removing items from a bucket and adding them to a todo.otl file somewhere. The idea is that you have one todo.otl for each project or each major category of tasks. I have about 40 task files in my master list right now, and the number is growing. Take the tasks out of your unsorted buckets, and put them into organized "to do" outlines.

Or, if you prefer, TKDO also makes it feasible to use a single file as both a bucket and a proper todo list. This may or may not fit your working style, but it is a possibility. If you choose to do this, the "Process" phase will tend to merge with "Organize" and "Review". Sometimes this is a convenient approach.


This is the part which differs the most between TKDO and traditional GTD. The GTD approach is fairly paper-oriented, and TKDO's plain text files don't really work the same way. This causes the "Organize" step to overlap somewhat with "Process", because organization is a natural extension to filing tasks away for later.

While organizing tasks, you should be doing several things:
  • Group related tasks into projects. A project is anything which requires more than one action to complete, or which is ongoing and cannot be completed. In TKDO, a project can be a recurring task, a regular task with children, or its own task file. You can have projects, sub-projects, sub-sub-projects, etc. TKDO only shows the leaf nodes on the master list, up to a given depth. Configure this depth by setting depth=3 (or any other number) on a task's metadata line.
  • Assign next actions, where appropriate. In TKDO, simply set the project's type to "next", and then put the child actions in the order they must be accomplished. TKDO will only show the first uncompleted item on the master list.

    To set the task type, you can either enter "T=next" on a metadata line or use the GUI. In the GUI, highlight a child, and press "tpn" or "tppn" or "tfn" to set the type of the parent/grandparent/file to "next".

    However, remember that "next actions" are not not appropriate for all projects. It is simply offered as an option.
  • Assign recurring schedules and due dates. Recurring tasks may be "fixed" (due on certain, hard dates) or "floating" (need to be done periodically, but not at any particular time).
  • Assign contexts. These represent locations where a task can be completed, or resources you need at hand to complete the task. By tagging tasks this way, it's easy to filter your todo list to only things which you can do right now, and avoid cluttering your head with things you can't do anything about until later.

    Examples are @home, @work, @online, @phone, @store, or the names of people who must be present during the task. I also have some such as @reboot (should be done next time I reboot), @outside (to be done on a nice day), @social (remind me to see people), @car, and some others.
  • Tag ideas for later. These are things you might like to do someday, but which aren't really important or necessary. Just set the task type to "idea", and TKDO will automatically reduce their priority.
  • Snooze any "waiting for" tasks, if they are assigned to someone else, or require external events to happen before you can start. You don't need to see these right now, but probably need to be reminded eventually.
  • Assign priorities, if you must. This is severely de-emphasized in GTD, but it's still a useful tool which many people like. TKDO does this in two ways:
    • The easiest way is to just put the more important tasks closer to the top of your task files. TKDO will preserve the task file's natural order, with items near the top of the task file appearing also near the top of the master list. This is easy and intuitive.
    • TKDO also allows explicit priorities ranging from 0 to 100, with 100 being the most important. Effectively, this changes the order of tasks on the master list, and overrides the "natural order" method above. I recommend using this as rarely as possible, mainly applying the explicit priorities to entire task files or projects. The subtasks will inherit it, so you only have to say it once.


This part is quick. Look at your master list. Pick something to do. You should do this at least every day, if not more often.

In TKDO, this process is just a little more complicated. Go through your master list (not necessarily the whole thing, but at least the first page or two), and do the following for each task (or each project):
  • If you intend to do this task today, mark it as 'active'. Just highlight the item and press "a". Or, in vim, you can simply add a "<--" arrow to the end of the task's title. (really, this is optional... it just helps keep the item near the top of the list, and reminds you what you were doing... but I find it helpful)
  • If you do not intend to do this task today, mark it inactive and snooze it.
When you're done reviewing, you should have all of today's tasks on the first page of your master list. The idea is to hide everything you're not planning to do in the next few hours, and get all your active tasks up to the top of the list.


Once you have a list of today's tasks... do them.

After you finish each task, you can mark it as completed by highlighting the item and pressing "x". This will mark the item as done, take it off your master list, and save a note about it in your action log to help you review accomplishments later. If it's a recurring task, the due date will be reset to the next scheduled time, so it will bubble up to the top of the list again when the due date approaches.

TKDO - GTD - Screenshots - Development
Last modified: May 05, 2008 @ 12:59 MDT
Copyright (C) 1996-2019 Selene ToyKeeper