The ct command line

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.