The todo.txt format does not support nested projects, which is something outline-based formats such as TaskPaper do very well. Fortunately, nested projects can be faked in todo.txt in a few different ways:

  1. Use two project tags, as in: write blog post +Blog +Plaintext
  2. Use one project and one context tag, as in: write blog post +Blog @Plaintext
  3. Combine the project and sub-project in the project tag, as in: write blog post +Blog-Plaintext

I have found option 3 to work best for me, for two reasons:

  1. Multiple project tags can confound todo.txt applications’ sorting and filtering algorithms. It defeats the point of having nested-projects if you can't filter properly on them.
  2. I use contexts either for broad, overarching categories of work (@planning, @coding, @testing) or people (@Dave, @Greg, @Dom), so they are off limits for other uses.

While the todo.txt format is not the best for planning hierarchical projects, it can be done with a simple workaround. Concatenation of the project and sub-project names is the best method for me.