Tda
Work tasks from the tda task manager as an AI agent — find a claimable task (globally or for the current repo), claim it, pull ancestor context, refine into subtasks, log progress notes, and complete it. Use when asked to "work on the next task", "pick a task", or to create/update tasks in tda.From its SKILL.md
npx -y skills add davidB/todoapp --skill tdaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.2 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
tda for agents
tda is a keyboard-first task manager with a JSON CLI. Every command prints
JSON (except context, which prints Markdown). IDs are ULIDs; short unique
prefixes are accepted in the TUI, but pass full ids from JSON output. Full
command + flag reference: reference/cli.md — read it when
you need a flag you don't remember.
The CLI is safe to run while a human has the TUI open: the TUI owns the db and
serves your commands over a socket, so your writes show up live in their view.
See "Concurrency" in reference/cli.md.
Your identity (whoami)
You act under one actor id, shaped <harness>/<model>, e.g.
claude-code/opus-4-8 or opencode/gpt-5. Pick it once from your own
harness + model and reuse it as <me> everywhere below. There is no tda
command that knows who you are — the id is yours to supply.
State it up front. When you find, claim, assign, or note a task — or when
the user asks "whoami" / /tda whoami — say which actor id you are using, e.g.
"Acting as claude-code/opus-4-8." So the user (and other agents sharing the
store) can see who did what.
Users assign work to you with tda assign <id> <actor>; an unassigned todo
task is claimable by anyone.
The work loop
- Find a task:
- for the current repo:
tda next --as <me> --claimable --here - globally:
tda next --as <me> --claimable --claimablereturns only tasks you may actually claim:todo, unassigned-or-assigned-to-you, not blocked. First hit = highest priority.
- for the current repo:
- Claim it:
tda claim <id> --as <me>→ status becomeswip, you are recorded as the claimer. A denial (already claimed, assigned to someone else, blocked) is a normal outcome — pick the next task. - Start clean: clear your context (or spawn a fresh subagent) and seed it
with
tda context <id>— a self-contained Markdown brief: ancestor titles+notes (the "why"), the task itself, its children, and the workspace. - Go to the code:
Workspace: <name> — /pathin the context (or.workspace.pathintda show <id>) is the folder tocdinto. A task without a workspace is folder-independent. - Refine while working:
- child task:
tda add "subtask" --parent <id> --status todo - sibling follow-up (e.g. "user review", "todo later"): read
.parentfromtda show <id>, thentda add "..." --parent <parent> --status draft - dependency:
tda link <blocker> <blocked> --kind blocks
- child task:
- Log progress:
tda note <id> "what happened" --as <me>— appends a timestamped entry to the notes, never overwrites. Use it for decisions, blockers, and hand-off state. (tda set --notesreplaces — avoid.) - Finish:
tda set <id> --status done. To release without finishing:tda notethe state, thentda set <id> --status todo(orpausedif it should not be offered as work).
Other useful commands
tda show <id>— full task +parent,breadcrumb,children,blocked, inheritedworkspace. The one-stop read.tda q --status todo --tag x --under <id> | --here— structured queries.tda find "text"— free-text search over titles/notes.tda ls [<id>] [--tree]— children / subtree listing.tda add --batch— batch-create from stdin, 2-space indent = depth; titles support@assignee,#tag, and[due/recurrence]syntax.
Workspaces (task ↔ repo binding)
-
tda ws init(run in a repo) creates a root task bound to that folder;tda wsprints the workspace root for the cwd. -
The task stores the workspace name + a default path. On a machine where the path differs, override it in
~/.config/tda/tui.toml:[workspaces] proj = "/home/me/src/proj"
Database
--db <path> > nearest ancestor .tda/tda.db (tda db init) > the global
~/.local/share/tda/tda.db. tda db path shows what resolves.
What ships with it: 1 file
4.7 KB alongside SKILL.md
reference/
- cli.md4.7 KB