task

creates a plain-text task file in the current directory
git clone git://brookjeynes.dev/bjeynes/task.git
Log | Files | Refs | README | LICENSE

commit fc9de294cb92f0c63e216a2930ab5652cabb2611
Author: brookjeynes <me@brookjeynes.dev>
Date:   Wed, 10 Jun 2026 09:32:39 +0000

chore: initial commit

Diffstat:
AMakefile | 4++++
Amain.c | 5+++++
Amanifesto.txt | 133+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -0,0 +1,4 @@ +.PHONY: build + +build: + gcc -o ./build/task main.c diff --git a/main.c b/main.c @@ -0,0 +1,5 @@ +#include <stdio.h> + +int main() { + printf("hello world"); +} diff --git a/manifesto.txt b/manifesto.txt @@ -0,0 +1,133 @@ +Manifesto +========= + +Plain text is software and operating system agnostic. It's searchable, +portable, lightweight, and easily manipulated. It's unstructured. It works when +someone else's web server is down or your Outlook.PST file is corrupt. There's +no exporting and importing, no databases or tags or flags or stars or +prioritizing or _insert company name here_-induced rules on what you can and +can't do with it. + +There are three key axes to an effective todo list + +1. Priority + Your todo list should be able to tell you what's the next most important + thing for you to get done - either by project or by context or overall. You + can optionally assign tasks a priority that'll bubble them up to the top of + the list. + +2. Project + The only way to move a big project forward is to tackle a small subtask + associated with it. Your system should be able to list out all the tasks + specific to a project. + + In order to move along a project like "Cleaning out the garage", my task list + should give me the next logical action to take in order to move that project + along. "Clean out the garage" isn't a good todo item; but "Call Goodwill to + schedule pickup" in the "Clean out garage" project is. + +3. Context + Getting Things Done[1] author David Allen suggests splitting up your task lists + by context - ie, the place and situation where you'll work on the job. Messages + that you need to send go in the '@email' context; calls to be made '@phone', + household projects '@home'. That way, when you've got a few minutes in the car + with your cell phone, you can easily check your '@phone' tasks and make a call + or two while you have the opportunity. + +[1] URL:https://en.wikipedia.org/wiki/Getting_Things_Done + + +Formatting +---------- + +Each task is a plain text file. To take advantage of structured task metadata +like priority, projects, context, there are a few simple but flexible file +format rules. + +Philosophically, this format has two goals: +- The file contents should be human-readable without requiring any tools other + than a plain text viewer or editor. +- A user can manipulate the file contents in a plain text editor in sensible, + expected ways. For example, a text editor that can sort lines alphabetically + should be able to sort your task list in a meaningful way. + + +Incomplete Tasks: 3 Format Rules +-------------------------------- + +The beauty of this format is that it's completely unstructured; the fields you +can attach to each task are only limited by your imagination. To get started, +use special notation to indicate task context (e.g. '@phone' ), project (e.g. +'+GarageSale' ) and an optional priority (e.g. '(A)' ). + +A task file might look like the following: + +$ tree tasks +tasks +├── 0001-checkout-race-condition.txt +└── done + └── 0000-checkout-ui-design.txt + +$ cat 0001-checkout-race-condition.txt +(A) checkout race condition @bug +checkout + +Add a reservation hold on the orders table + +# Query all not-done items tagged with '+checkout' +$ grep --exclude-dir=done -r '+checkout' tasks +tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout + +# Query all not-done items tagged as '@bug' with a priority of '(A)' +$ grep --exclude-dir=done -r '(A).*@bug' tasks +tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout + +# Query all items tagged as '@bug' or '@ui' +$ grep -r '@ui\|@bug' tasks +tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout +tasks/done/0000-checkout-ui-design.txt:update ui to match new styleguide @ui +checkout + + +There are three formatting rules for current todo's. + +Rule 1: If priority exists, it ALWAYS appears first. + The priority is an uppercase character from A-Z enclosed in parentheses and + followed by a space. + + This task has a priority: + (A) Call Mom + + These tasks do not have any priorities: + Really gotta call Mom (A) @phone @someday + (b) Get back to the boss + (B)->Submit TPS report + + +Rule 2: Project and context may appear AFTER the title. + This task has a context and/or project: + (A) Checkout race condition @bug +checkout + (B) UI rework +checkout + + These tasks do not have contexts/tasks: + (A) @bug Checkout race condition + +checkout UI rework + + +Rule 3: Additional context may appear on the 3rd line of the file onwards. + A task does not have to have additional context. If it does, it should be on + the 3rd line of the task file. + + This task has additional context + (A) checkout race condition @bug +checkout + + Add a reservation hold on the orders table + + +Completed Tasks +--------------- + +Once a task has been completed, it is moved into the tasks/done folder. Tasks +that have not been finished sit flat-file in the tasks/ folder. There is no +concept of "in-progress", a task is either done or not-done. + + +<modified from todo.txt [https://github.com/todotxt/todo.txt]>