Taskwarrior can be extended by means of a third-party application,
which can be a wrapper, or hook script.
There are script examples of import and export add-ons that
support many different formats (clone the repository, look in
task.git/scripts/add-ons). Then there are more
sophisticated applications such as
that provide a complete replacement UI.
All of these provide interesting new features and improve ease of use for different kinds of users. We encourage you to create such add-ons, but in doing so, there are some rules that must be followed, which will not only protect the users data from mistreatment, but also your application from being sensitive to changes in Taskwarrior.
.datafile format is currently on its fourth version. The very first version was never released, so if you want to read Taskwarrior data properly, you will need to parse the three supported formats. Those formats are not documented. Additionally, you will need to handle the GC operations, implement the task "unwait" feature, observe user defined attribute handling restrictions, and implement recurring task synthesis all of which require .taskrc and default value access. You would essentially be rewriting the data access and configuration portion of Taskwarrior, which is a major undertaking. To support filters you would also need to evaluate the supported clauses, provide DOM access and implement aliases. Then there is also the fifth data format, which is planned...
exportcommand to query data from Taskwarrior. The
exportcommand implements filters which you can use, or you can omit a filter, get all the data, and implement your own filtering. JSON parsing is very well supported in all relevant programming languages, which means you should be using Taskwarrior itself to query the data, with a commodity JSON parser in conjunction. While the JSON format will be tweaked over time, the general form will not.
importcommand to import modified JSON back into Taskwarrior.
_gethelper command to access individual data items. Note that multiple items can be retrieved by one command. If accessing more than just a few items, use the
task --version. This command returns the version number, which will help you determine whether or not a particular feature is supported. Note that this command does not scan for a configuration file, and is therefore safe to run if Taskwarrior is not yet set up.
~/.taskdirectory. Just don't use the file names
task help | grep ' _'.