README.md

yatd, yet another td

There are many tds. This one is mine. It's in Rust, very small, very fast, very simple, uses SQLite embedded in the binary, and includes a skill. I intend it to be the bare minimum for something like a repo-specific issue tracker and possibly complementary to tools like OpenSpec.

Install with mise use -g cargo:https://git.secluded.site/yatd@latest or cargo install --git https://git.secluded.site/yatd or by cloning and running make install. Tell your agent how/when to use td by first installing the skill with td skill, then somehow referring to td when telling the agent to do something involving td. It shouldn't invoke the skill unless you mention td, allowing your agent to use other todo/issue tools in other repos even with this global skill.

Inspired by alosec/td.

Sync Bootstrapping

When syncing a project to another machine, do not run td init on the other machine. Initialize just once on the first machine, then bootstrap others by running td sync on the first machine, then td sync wormhole-code on another.

# Machine A (already initialized)
td sync

# Machine B (same repo checkout, no td project yet)
td sync 5-lurid-gecko

Running td init on both machines creates different project_id values and prevents sync from merging them.

$ td --help
Todo tracker for AI agents

Usage: td [OPTIONS] <COMMAND>

Commands:
  init      Initialize a central project and bind the current directory to it
  use       Bind the current directory to an existing project
  projects  List all known projects in central storage
  create    Create a new task [aliases: add]
  list      List tasks [aliases: ls]
  show      Show task details
  log       Append a work log entry to a task
  update    Update a task
  done      Mark task(s) as closed [aliases: close]
  rm        Delete task(s)
  reopen    Reopen task(s)
  dep       Manage dependencies / blockers
  label     Manage labels
  search    Search tasks by title or description
  ready     Show tasks with no open blockers
  next      Recommend next task(s) to work on
  stats     Show task statistics (always JSON)
  compact   Vacuum the database
  export    Export tasks to JSONL (one JSON object per line)
  import    Import tasks from a JSONL file
  sync      Sync project state with a peer via magic wormhole
  skill     Install the agent skill file (SKILL.md)
  help      Print this message or the help of the given subcommand(s)

Options:
  -j, --json               Output JSON
      --project <PROJECT>  Select a project explicitly (overrides cwd binding)
  -h, --help               Print help
  -V, --version            Print version

Contributions

I'm trying the Jujutsu VCS out for this project. I'm enjoying it and LLMs seem to do pretty well with it too. The collaboration story is a bit less convenient, especially since I'm also trying pr.pico.sh. It works very well with git projects, but jujutsu is missing some things git has which pr.pico.sh relies on. When cloning this repo, do so with jj git clone --colocate git@git.secluded.site:yatd.git and the relevant git commands should work fine.

Patch requests are in amolith/llm-projects on pr.pico.sh. You don't need a new account to contribute, you don't need to fork this repo, you don't need to fiddle with git send-email, you don't need to faff with your email client to get git request-pull working...

You just need:

  • Git
  • SSH
  • An SSH key

If you're using LLM agents, you might instead want to give them my pr.pico.sh skill.

# Clone this repo
jj git clone --colocate git@git.secluded.site:yatd.git

# Create a new change and describe what it does
jj new -m "Add fancy new thing" # Imperative, kernel-style commits, not Conventional Commits

# When ready, create a new patch request
git format-patch origin/main --stdout | ssh pr.pico.sh pr create amolith/llm-projects

# After potential feedback, revise and submit a new patchset
jj amend
git format-patch origin/main --stdout | ssh pr.pico.sh pr add {prID}

# List patch requests
ssh pr.pico.sh pr ls amolith/llm-projects --mine

See "How do Patch Requests work?" on pr.pico.sh's home page for a more complete example workflow.