How I Use TaskWarrior to Stay Organized

Posted on July 01, 2016 in development, workflow

For the last two months, I've been using TaskWarrior to stay organized at work and home. I use it to track time on work-related projects, record personal goals, and remind myself of daily and weekly chores. TaskWarrior is an amazing TODO application that has completely changed how I stay organized. It's simple yet powerful and as the official description says, "it does its job then gets out of your way."

There are many, many ways to use TaskWarrior which makes it easy to adapt into any workflow whether you're a heavy organizer or only need simple reminders to stay on track. There is no right way to use it.

Over the months, I've collected some notes on how I like to use TaskWarrior and how I surprisingly fit it into my current workflow. It goes a little something like the below.


"We're going to be launching this Thursday"

You got it.

$ task add Launch that thing Thursday project:Shutterstock.Bigstock priority:H due:thursday

Created task 40.
The project 'Shutterstock.Bigstock' has changed.  Project 'Shutterstock.Bigstock' is 90% complete (2 of 20 tasks remaining).

And done. It's a proven concept that writing things down makes us more likely to do them, which is the primary reason I like TODO lists.

Cool, so we can add TODOs .. big deal, right? Anybody with a free subscription to some e-learning site can make an app to do the same thing. Let's explore the extremely powerful simplicity of the command we just wrote.

$ task add Launch that thing Thursday project:Shutterstock.Bigstock priority:H due:thursday

Here we're adding a task with a project, priority, and due date. Let's explore each attribute a little bit more.


To help myself stay organized, I break all my tasks into categories and sub-categories, or rather projects. This allows me to filter tasks by project's such as project:Personal or a more narrower project:Personal.Chore. We can even do reporting on our projects.

Let's see how my performance at work as been.

$ task burndown.weekly project:Shutterstock

As you can see, TaskWarrior gives me a pretty decent breakdown of my activity at work. If I wanted to explore my work on Bigstock, I could simply filter by project:Shutterstock.Bigstock items.

$ task burndown.weekly project:Shutterstock.Bigstock

We can also break down our progress by day and month.

$ task burndown.daily project:Personal


Tasks aren't always important. Sometimes I'll create tasks to remind myself of things I'd like to someday do but maybe it's not all that important if I do or don't. For tasks like those TaskWarrior comes with some pretty nifty built-in keywords.

$ task add Buy a house due:someday
Created task 41

This creates a task due 21 or so years from now.

For other tasks that are more-or-less important we can label them as such by using priority:H, priority:M, or priority:L. Priorities play a significant part in calculating the "urgency" of the item which we'll talk about in just a moment.


Obviously we want our tasks to have due dates so we do this by appending a due:[date] attribute to our command. As you saw earlier, TaskWarrior comes with built-in keywords that we can use such as tomorrow, someday, today, and many more. You can even write natural language strings to create due dates.

# Due tomorrow EOD
due:'tomorrow + 18hours'

# Due next week

# Due 6 months from now

Powerful Features

So I said TaskWarrior is powerful but so far all I've noted are standard TODO app functionalities. Here's where the core of TaskWarrior comes in.

Each task you create is automatically calculated to determine a "Urgency" score. In essence, TaskWarrior automatically priorities our next task and displays the top-most important tasks we should be focusing on. Here's what my current list looks like.

$ task

I tend to keep a busy life.

We can dig into why TaskWarrior assigned certain urgency scores. Let's dig into the chore I've yet to do, Water Plants.

$ task 34 info

Here we can see the calculation TaskWarrior is performing to determine the urgency score. It even shows us the last edit we made!


Suppose you write a task but it's not something you want to see everyday. For tasks such as these we can append the wait:[date] attribute.

$ task add Clean apartment due:'Saturday' wait:'Friday'

TaskWarrior will now only show me this task after Friday, convienent when I have a thousand other tasks on my plate and my messy apartment can wait.

Recurring Tasks

Some activies we do over and over, like cleaning the messy apartment. This is extremely easy with TaskWarrior by appending the recur:[date] attribute.

$ task add Clean apartment due:'Saturday' wait:'Friday' recur:'1week'

Now we'll only be reminded to clean the apartment on Friday to be done by Saturday and TaskWarrior will remind us to do it each week.


An incredibly powerful feature that I often use for more complicated tasks is the depends:[id] attribute. This sets a task to depend on another task which significantly alters it's urgency score. Tasks that are blockers for other tasks are automatically put at the very top of your list to make sure they are done before anything else.

# We need to get an external harddrive before we backup our computer
$ task add Buy harddrive due:tomorrow
Created task 42

# Add a new task to backup our computer
$ task add Backup computer due:tomorrow depends:42
Created task 43

Done! Now when we look at our todo list using task, we'll see that 42 is the most urgent task we need to work on.


Not only does TaskWarrior organize, it also keeps track of how much time you've spent on activities. You can start and stop the timer for tasks easily.

# Start a timer for a task
$ task 33 start

# Stop the timer/mark it done
$ task 33 done

When you run task burndown you'll also see how many tasks are in progress which is powerful when managing any number of projects.

Staying Synced

Like any proper TODO manager, TaskWarrior also keeps you synced across your devices; however, it is a bit cumbersome to setup.

Right now, I'm running a $5/mo Digital Ocean droplet that powers a few web utilities including TaskServer which keeps my work laptop, home desktop, and personal laptop all in sync. I've setup cronjobs on all my devices running TaskWarrior to sync to the TaskServer every minute so I can be sure I'm always be up to date.


The more I grow as a developer, the more I find it impossible to live without a good TODO manager. I've tried desktop clients and web applications but I never liked how over-engineered they often were. In my opinion, TaskWarrior is the perfect TODO manager and is perfect for anybody that spends 90% of their time in front of a terminal. It's easy, it's extremely flexible, and I'm learning new ways to use it every single day.

If you've considered picking up a new task manager, I seriously recommend giving TaskWarrior a shot. You might just end up changing your whole workflow for the better.

Thomas Lackemann :)


Tom is the founder of Astral TableTop. He's a homebrewer, hiker, and has an about page. Follow @tlackemann on Twitter for more discussions like this.