taskwarrior — manage you tasks

Updated on 2026-02-11 by lf

A brief summary for ‘best’ practises using taskwarrior, a very flexible and fast TODO-list.

Workflow

One way to use the most important functions of taskwarrior.

task add project:<project> <task>
task # to show all the tasks
task <tasknr> start
task <tasknr> done

Starting tasks gives you a rudimentary working-time-log of your tasks. You may also provide a time measure by explicitely specifiing duration:<time> after done.

Every morning:

task end.after:-1day all # list the things I did
task                     # list the things I could do

(Of course you could add more selectors to consider, e.g., tasks related to a specific project only.

then schedule a few tasks and list your TODOs for today:

task 
task <nr> modify schedule:today
task scheduled:today status:pending

Personal Recommendations

  • Organise your topics in projects
    • coarse projects
  • If you schedule something, stick to it. Contraposition: schedule only tasks you will be able to fulfill at that date.
  • Try to write tasks in a way that your colleagues would understand what the task is about (because four days from now you’ll still have to understand it.)
    • Corrolary: Put down only concise tasks with a clear description of the objective.
    • Bonus Cheat: use annotate if anything is too long for a task description.
  • If you plan multiple tasks for a single projekt, take a look at context and use it. It will make it less cumbersome.
  • Take a look at all the wonderful tools that have been shared by the community. Do it regularly and share the tools you build.

Task management for Working Group

The taskwarrior is not intended as tool for task-coordination of a group of people. But here is how we do it nonetheless:

  • create a Unix-group on a shared host
    • make everyone of that group a member
  • create a shared directory for tasks
    • e.g. /home/group/.task
    • set rwx for group in this directory
    • set group sticky bit for this directory
  • create shared .taskrc
    • insert data.location=/home/group/.task
  • override resources in call to task
    • e.g. task rc:/home/group/.taskrc
    • you might also set a different data.location in your personal .taskrc if you are only the group-tasks, but I’d recommend you keep a personal TODO-list as well and probably synchronize it

Synchronisation

Synchronisation seems to be the weak spot of taskwarrior. For version 3 there is either the cloud-storage-based or the server-based option. We haven’t tried the server TaskChampion foremost, because we haven’t yet found out how to handle authorisation with the server.

SSH-based Synchronisation

I synchronize to our working-group TODO-list. The convention is, that tasks managed in this list are tagged by my name-tag +laf are synchronized with this list. (My local personal tasks are not tagged and thus stay in my personal list.)

task +laf export | ssh <server> task rc:/home/group/.taskrc import
ssh <server> task rc:/home/group/.taskrc +laf export | task import

I put this in a script called tasksync.sh and execute it at appropriate times.