---
$id: https://todo.md.org.ai/TODO.md
$type: ItemList
$context: https://schema.org.ai
---

# TODO

The canonical example of a `TODO.md`. Everything below the frontmatter is
ordinary GitHub-Flavored Markdown: a heading, some sections, and task lists.
Everything above it is the whole of what this standard adds.

## Now

- [x] Register the domain @ops +infra
- [x] (A) Serve this file as `text/markdown` @web +infra
- [ ] (A) Write the register index @web +md.org.ai due:2026-08-01
- [ ] (B) Draft AUTH.md @spec +md.org.ai
  - [ ] Decide whether it describes the file or the flow
  - [ ] Find an existing `$type` before coining one
- [ ] Ask three people to break it @outreach +md.org.ai

## Later

- [ ] (C) CONTEXT.md, SKILL.md, DESIGN.md @spec +md.org.ai

## Done

- [x] Pick a `$type` that already exists: `ItemList` @spec +md.org.ai

---

## What a reader may assume

A `TODO.md` is a markdown file whose task lists are the list. A tool that
understands nothing but GFM still reads it correctly; a tool that understands
the frontmatter additionally knows what the file *is*, what vocabulary its
words come from, and what to call it when linking to it.

The optional tokens above are borrowed from `todo.txt`, unchanged in meaning:

| token | means |
| --- | --- |
| `(A)` `(B)` `(C)` | priority, highest first, immediately after the checkbox |
| `+project` | the project the item belongs to |
| `@context` | where or with whom the item can be done |
| `key:value` | any other field; `due:YYYY-MM-DD` is the common one |

They are conventions, not requirements. A `TODO.md` with no token in it is a
valid `TODO.md`.
