To recur a task X days after the last time it was completed, use the task-relative-recur extension by JensErat.

I call this ‘haircut’ recurrence because you need to get your hair cut when it’s had enough time to grow long; not on the first of each month.

Here’s the problem in a nutshell

By default, taskwarrior allows you to schedule tasks to recur every X days/months/etc.. This seems to be typical of other apps as well. This works well for things like paying bills that have rigid deadlines, but for many tasks, this sort of recurrence may be a bad fit.

Now let’s say it’s December and you schedule a hair cut for the first of the following month. You set a monthly recurrence so you’ll be reminded to cut your hair next month too.

The app schedules a haircut for January 1st, February 1st, March 1st, etc. ad infinitum.

For some reason, you slack off and don’t get around to getting a haircut until January 15th.

Now, about two weeks later, taskwarrior tells you to get another haircut on February 1st. But your hair isn’t long enough yet; it would be a waste of time and money to get another haircut. You don’t get haircuts according to strict dates; you get them when you need them.

What you should use for haircuts and other such tasks is a type of recurrence that waits until after you complete a task and then schedules it for a set time period later.

I find that these sorts of tasks are extremely common, yet this sort of task recurrence feature is extremely uncommon.