Tasks and contexts are at the very heart of GTD. However, contexts apply not only for task execution, but also for task creation and task management. When creation, management and execution come together we can talk of a closed task management environment. This is not the case for a shopping list, but it is usually the case for software development projects. So that, if the project can be related to a computer folder and it is a closed task management environment, it is common to write down the tasks in a plain-text file called TODO.
Managing TODO files can be cumbersome, so there are nicer alternatives. Emacs org-mode is a good candidate, but nowadays I don't feel like using my piano skills to play emacs shortcuts. Another alternative is taskwarrior, but it is designed to be used as a whole for your system.
After some research, I found a way to turn taskwarrior in a complete TODO solution, with taskopen for an optional attached file for extended comments and notes.
$ tt add Write a post about TODOs with takswarrior and taskopen
$ tt 1 annotate Notes
$ ttnotes 1