Skip to content

Instantly share code, notes, and snippets.

Last active May 15, 2024 14:25
Show Gist options
  • Save alehandrof/9941620 to your computer and use it in GitHub Desktop.
Save alehandrof/9941620 to your computer and use it in GitHub Desktop.
How to GTD with Simpletask

How to GTD with Simpletask

This is a guide to implementing Getting Things Done (GTD) using Simpletask by Mark Janssen.

Simpletask uses the todo.txt syntax, but has sufficient differences and quirks of its own to be worth describing in detail---at least, that's the story I'm going with. I actually began this guide as an exploration of my own trusted system. Personal workflows are by definition eccentric; I have included only what seems to me to be broadly useful.

This implementation of GTD covers the "standard" classifications: next actions by context, projects, somedays, agendas by person and meeting, etc. In a departure from strict GTD, each entry in these lists is also tagged with an area of focus, interest or responsibility. I find that the ability to slice the system by this extra dimension is worth the additional complexity at the processing and organizing stages. Limitations, issues and workarounds are discussed at the end.

Before we begin, some words of wisdom:

Your system has to be easy enough (and complete enough) that you will be motivated to work it even when you have the flu. The system is only as good as what you're willing to maintain when you don't feel like it. ---David Allen, "Let the Lists Fall Where They May"


I refer to every line in your todo.txt as an "entry" to differentiate them from tasks. Simpletask takes a broader view of what constitutes a todo.txt file.

Entries may belong to one list (@something) and they may have one or more tags (+something) assigned to them. They may also utilize due dates (due:2014-04-2) thresholds (t:2014-04-3), recurrance (rec:1w) and priorities ((A)).

Lists (@)

Simpletasks collects all @somethings in your entries and calls them lists.

Lists hold all entries on the first four Horizons of Focus: from Runway to 30,000 feet, or Next Actions to Goals & Objectives. If you find this format appropriate, you could feasibly include items from the remaining two altitudes: Vision, Purpose and Principles.

Lists are mutually exclusive. If an entry can be placed in more than one list, you need to clarify either the entry or your lists.

Inbox (Capture/Collect)

The inbox consists of all entries that have not been assigned to a list. They are typically not tagged, either. Although I will often revise entries before tagging and assigning them to another list, I generally preserve the original creation date.

Do not create a list called @Inbox; it will just slow you down at the collection phase. If you want to view just your Inbox, filter by - in the left drawer.

Next Actions (Runway)

Next actions are filed in lists that begin with an at-sign (@), one for each context. The at sign is an established shorthand that reinforces the idea that the context (place or tool) is required for the action to be performed. More importantly, the at-sign makes these lists sort above the others, so you can find them more quickly.

The standard GTD contexts are:


Next actions are tagged with an area tag and, for entries relating to communication, an agenda tag (either a person or meeting).

Agendas may be listed under @@agendas (for face-to-face and impromptu communications) or required context (@@calls, @@computer, etc.) but not both.

Projects (10,000 ft)

A list called @Projects with an entry for every multi-step outcome you are committed to completing within the next year. Each project entry is tagged with an area and, if applicable, an agenda.

Example: Clean out the garage +household @Projects

Someday/Maybe (Incubate Runway/10,000 ft)

A list called @Someday with an entry for every project (multi-step outcome) or single action you are incubating -- i.e., that would like to periodically review but are not committed to moving on, yet. Each someday entry is tagged with an area and, if applicable, an agenda, allowing you to view potential commitments along with your current ones.

Example: Learn to play the piano +creativity @Someday

You could feasibly have multiple Someday/Maybe lists (@Someday-Soon or @Someday-Never, etc.) if you need the additional granularity.

Tickler (Incubate Runway/10,000 ft)

A list called @Tickler contains all tickled items which are not actions. Tickled items are all entries with a threshold date; if their threshold has not passed, they will also have a priority of (B). Tickled actions are not included in this list; they are placed under the appropriate context.

Waiting For (Runway)

A list called @WaitingFor with an entry for each delegated action, tagged with both area and agenda.

Example: +JSmith re: conference +consortium @WaitingFor

Areas (20,000 ft)

A list called @\_Areas with entries identifying all your areas of focus, interest or responsibility. There is overlap between this horizon and the area tags (described below), but a 1-to-1 correspondence is not obligatory. How you set up this horizon depends on how you think about your life and how it makes sense to carve up your commitments.

Example entries:

  • Family +family @_Areas
  • Health, Vitality & Well-Being +health @\_Areas
  • Hobbies +blog +painting +rpg @\_Areas

Note: the underscore in front of this list is merely to have it sort to the bottom of your Lists.

Goals & Objectives (30,000 ft)

A list called @\_Goals with an entry for every outcome you are committed to completing within the next 2-5 years, tagged with an area and, if applicable, an agenda. Goals are treated basically as long-term projects.

Example: Attain some promotion +career @\_Goals

Tags (+)

Simpletasks collects all +somethings in your entries and calls them tags.

Tags specify areas of focus, interest or responsibility, as well as agendas for people or meetings.


All lowercase tags refer to areas of focus, interest or responsibility. These generally relate to the 20,000 feet horizon, but will probably be more granular. There's no rule here; you will need as many areas as you need. A word of warning, however: avoid making area tags too specific (so that they basically map to your projects). Most area tags will be somewhere between projects and areas (or approximately 25,000 feet :)



To make sure that these are always available, define them in your @_Areas entries or add them to a hidden entry (see below).

Agendas (People & Meetings)

All tags that begin with a capital letter refer to agendas -- that is, to people or meetings.

Tag Examples:


Place agenda entries in the appropriate context list and they tag them with an area.


Tell +Bob about the party @@agendas +fun
Email +DevTeam re: new client @@online +work

People and meetings you refer to often can be added to a hidden entry (see below) for easy access.

Other Features

The Left Drawer

The left drawer allows you to view your system by any combination of horizon, area and agenda. This is a rough sketch of how your left drawer should look:

  • Lists
    • Inbox
    • Contexts
    • Higher Altitudes
  • Tags
    • Agendas
    • Areas

The most frequently used ways to slice your system -- contexts and areas -- are the quickest to reach, being at at the top and bottom, respectively. Less used stuff is in the middle. (YMMV.)

You can choose multiple lists and tags to slice your system in various ways. For example, you can see all the @@calls you have to make for +work, the @Projects relating to your +family or all the +fun things you might do @Someday.

Hidden Entries

These serve as placeholders to preserve your lists and tags when they do not contain any items.


h:1 Contexts: @@agendas, @@anywhere, @@calls, @@computer, @@errands, @@home, @@office
h:1 Other Lists: @Projects, @Someday, @Tickler, @WaitingFor, @_Areas, @_Goals
h:1 Contacts: +Mom, +JSmith, etc.

Due Dates

Per GTD, I only use due dates for the "hard landscape", such as appointments, rather than estimations of when I'd like to do something. I also add them to projects to indicate deadlines (after which completion becomes moot).

For time-sensitive actions I prefix generally prefix times like so: [10:15] Taskname

That said, I find Simpletask's calendar integration to be really clunky, and I have begun adding items straight to the calendar, which I find problematic.

Threshold Dates

Threshold dates allow you to incubate actions or reminders (tickled entries). Add the (B) priority to all newly created tickled entries. Tickled actions are filed under the appropriate context. For reminders, you can use the @Tickler list.

The priority is remove when the entry has been "tickled" (the threshold has been passed).


GTD does not have a priority system. I use the todo.txt priority syntax to help me filter two kinds of entries:

  • Entries with (A) priority are "hot": they are actions that I plan (not would like) to do today or, at most, tomorrow. I update this list daily.

  • Entries with (B) priority are "tickled": all actions or reminders with a threshold date have this priority until the threshold is passed.

Projects and higher altitudes never have priorities.

Saved Filters (The Right Drawer)

Saved filters allow you to bring up or review aspects of your GTD system. The ones I've found most useful are:


The Hotlist shows me anything with a priority. In this way I see all my "hot" actions for today or tomorrow, as well as all "tickled" entries (incubated actions with a threshold that have become relevant).

The hotlist not a GTD concept, but in interviews David Allen has accepted the it as a potentially useful, as long as it does not become a system unto itself. It also allows an incubation system with date-specific triggers.


  • Hide completed tasks and tasks with threshold date in future.


  • Show all tasks (including complete and tasks with threshold in the future).
  • Sort with Completed on top.

Other details

  • Simpletask provides an option to automatically generate a creation date for new tasks. Use it.

Issues & Problems

The following are known issues with the GTD implementation in this guide.

  • Inbox. I enter data straight into the todo.txt with Simpletask or a text editor. I haven't experimented with using emails or other input, which is why I don't discuss this at all. There are some ifttt recipes, but I haven't tried any of them.

  • Calendar. You do not need a calendar with this system -- at least insofar as your GTD system is concerned. Integration with an online calendar would be useful, but that is a feature that would need to be provided by Simpletask, or via something that can read the text file and populate the calendar.

  • Reference System. This is outside the scope of a list maker such as Simpletask.

  • Project Support. A subset of the Reference System that is related your active actions, projects, etc. There is no inherent

I include these as "notes" (see above). For example: 2014-01-07 Complete Something or Other // Files in Dropbox > Projects > SomethingOrOther.

  • Read/Review.

    • "Must read" items go into the main system at the appropriate context -- since I am committed to reading or reviewing them. This works very well for items that you can keep on your Android device.

      Example: Read email from bank @@anywhere +finances.

    • "Nice to read" things do not go into the main system. You might want to add some of these to your classify @Someday list, if you would like to review them weekly.

Since I don't care much if anything falls through the cracks, they are housed in various systems: books and movies are in text files (in a custom format, but I might convert these to the todo.txt format as well), online articles are in a read-it-later service, etc.

  • Performance. Simpletask becomes quite slow if you are viewing many entries at once (over 200 on my phone). You might want to experiment with breaking off the Someday/Maybe entries into their own todo.

    That said, my todo.txt is over 400 lines and, while not snappy, is still usable.


  • 0.1.0 - Intial public release
Copy link

aleksfadini commented Aug 6, 2021 via email

Copy link

My needs have changed over the years, as well as the tech I use. When I wrote this I was using Linux and Android, but now I use a MacBook and an iPhone. My current system relies on Things but is pretty close in implementation to the above, though I don't use contexts as much as I used to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment