The ct command line
Manage todos from the terminal with JSON-first output — built for scripts, git hooks, and coding agents.
ct is createtodo in your terminal. Every command prints JSON, so results pipe straight
into jq, git hooks, or an agent’s context.
Install and sign in
npm install -g @createtodo/cli
ct login # stores your API key locally
ct login uses a workspace API key — give each agent its own.
The core loop
ct ready # actionable work: open, no unresolved blockers
ct claim MZ-123 # assign to yourself and mark it started
ct show MZ-123 --relations # full detail incl. blockers and subtodos
ct close MZ-123 # done — response lists newly unblocked todos
Dependencies make the loop self-organizing: ct dep add MZ-124 MZ-123 means MZ-124 waits on MZ-123, ct ready hides blocked work, and closing a blocker
reports what it freed up.
Keeping the backlog healthy
ct health surfaces stale, orphaned, and thin todos before they rot. ct also warns when
a new todo lacks a real description — a nudge that matters double when agents are the ones
filing.
Run ct help for the full command surface, and ct <command> --help for any command’s
flags.
Teach your agent the conventions
A CLI is only half the story — the agent also needs to know how to use it well. One command installs a skill file with the commands and the conventions that matter: reference todos by identifier, never invent one, write real descriptions, flag human decisions instead of guessing.
ct skill install claude-code # also: codex, cursor, gemini, universal
For Claude Code there is session priming on top: ct init wires ct prime to run on
session start, so the agent opens every session already knowing what is in progress, what
is ready, and what the rules are.