{
  "id": "todotxt-cli",
  "name": "todo.txt-cli",
  "homepage": "http://todotxt.org",
  "description": "A simple and extensible shell script for managing your todo.txt file.",
  "icon": "https://github.com/todotxt.png",
  "executables": [
    "todo.sh"
  ],
  "platforms": [
    "macos",
    "linux"
  ],
  "dotfiles": {
    "paths": [
      "~/.todo/config",
      "~/todo.cfg",
      "~/.todo.cfg",
      "[configHome]/todo/config"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Run a todo.sh action",
    "description": "Run one todo.sh action (add, list, done, pri ...) with its arguments and the common global options. Hide/show toggles (-@, -+, -P), verbosity levels and add-on actions are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "source": [
      {
        "id": "help",
        "kind": "help",
        "url": "https://raw.githubusercontent.com/todotxt/todo.txt-cli/HEAD/todo.sh",
        "revision": "2026-10-27",
        "evidence": "Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]\nActions:\n  add|a \"(B) THING I NEED TO DO +project @context\"\n  append|app NR \"TEXT TO APPEND\"\n  archive\n  del|rm NR [TERM]\n  depri|dp NR [NR ...]\n  done|do NR [NR ...]\n  list|ls [TERM...]\n  listall|lsa [TERM...]\n  listcon|lsc [TERM...]\n  listpri|lsp [PRIORITIES] [TERM...]\n  listproj|lsprj [TERM...]\n  move|mv NR DEST [SRC]\n  prepend|prep NR \"TEXT TO PREPEND\"\n  pri|p NR PRIORITY [NR PRIORITY ...]\n  replace NR \"UPDATED TODO\"\nOptions:\n  -c\n      Color mode\n  -d CONFIG_FILE\n      Use a configuration file other than one of the defaults:\n  -f\n      Forces actions without confirmation or interactive input\n  -p\n      Plain mode turns off colors\n  -a\n      Don't auto-archive tasks automatically on completion\n  -n\n      Don't preserve line numbers; automatically remove blank lines\n      on task deletion\n  -t\n      Prepend the current date to a task automatically\n      when it's added.\n  -v\n      Verbose mode turns on confirmation messages\n"
      }
    ],
    "field": [
      {
        "id": "action",
        "label": "Action",
        "description": "Action name or alias. Add-on actions installed in the actions directory also work.",
        "type": "string",
        "position": 0,
        "suggestions": [
          {
            "value": "add",
            "label": "Add a task"
          },
          {
            "value": "list",
            "label": "List tasks"
          },
          {
            "value": "listall",
            "label": "List tasks including done.txt"
          },
          {
            "value": "done",
            "label": "Mark tasks done"
          },
          {
            "value": "pri",
            "label": "Set priority"
          },
          {
            "value": "depri",
            "label": "Remove priority"
          },
          {
            "value": "append",
            "label": "Append text"
          },
          {
            "value": "replace",
            "label": "Replace a task"
          },
          {
            "value": "del",
            "label": "Delete a task"
          },
          {
            "value": "archive",
            "label": "Archive done tasks"
          },
          {
            "value": "listproj",
            "label": "List projects"
          },
          {
            "value": "listcon",
            "label": "List contexts"
          }
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "args",
        "label": "Arguments",
        "description": "Task numbers, text or search terms, as the action expects. Quote task text.",
        "type": "string",
        "position": 1,
        "multiple": true,
        "sources": [
          "help"
        ]
      },
      {
        "id": "config_file",
        "label": "Config file",
        "type": "path",
        "option": [
          "-d"
        ],
        "path": {
          "kind": "file",
          "role": "input"
        },
        "sources": [
          "help"
        ]
      },
      {
        "id": "force",
        "label": "Force without confirmation",
        "type": "boolean",
        "option": [
          "-f"
        ],
        "effect": "overwrite",
        "sources": [
          "help"
        ]
      },
      {
        "id": "plain",
        "label": "Plain mode (no colors)",
        "type": "boolean",
        "option": [
          "-p"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "color",
        "label": "Color mode",
        "type": "boolean",
        "option": [
          "-c"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "no_archive",
        "label": "Do not auto-archive on completion",
        "type": "boolean",
        "option": [
          "-a"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "no_preserve",
        "label": "Do not preserve line numbers",
        "description": "Blank lines are removed when a task is deleted.",
        "type": "boolean",
        "option": [
          "-n"
        ],
        "effect": "delete",
        "sources": [
          "help"
        ]
      },
      {
        "id": "date_on_add",
        "label": "Prepend date when adding",
        "type": "boolean",
        "option": [
          "-t"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbose",
        "type": "boolean",
        "option": [
          "-v"
        ],
        "sources": [
          "help"
        ]
      }
    ],
    "task": [
      {
        "id": "add_task",
        "label": "Add a task",
        "fields": [
          "action",
          "args",
          "date_on_add",
          "verbose"
        ],
        "required": [
          "args"
        ],
        "set": {
          "action": [
            "add"
          ]
        }
      },
      {
        "id": "list_tasks",
        "label": "List tasks",
        "fields": [
          "action",
          "args",
          "plain"
        ],
        "set": {
          "action": [
            "list"
          ]
        }
      },
      {
        "id": "complete",
        "label": "Mark tasks done",
        "fields": [
          "action",
          "args",
          "no_archive",
          "verbose"
        ],
        "required": [
          "args"
        ],
        "set": {
          "action": [
            "done"
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "action",
          "args",
          "date_on_add",
          "plain"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "config_file",
          "force",
          "color",
          "no_archive",
          "no_preserve",
          "verbose"
        ]
      }
    ]
  }
}
