{
  "id": "tuxedo",
  "name": "tuxedo",
  "homepage": "https://github.com/webstonehq/tuxedo",
  "description": "Fast, keyboard-driven terminal UI for todo.txt.",
  "executables": [
    "tuxedo"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/tuxedo/config.toml",
      "[configHome]/tuxedo/keybinds.toml",
      "[configHome]/tuxedo/themes/*.toml"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false,
    "secret_paths": [
      {
        "file": "[configHome]/tuxedo/config.toml",
        "match": {
          "key_path": [
            "share_token"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "todo.txt command line",
    "description": "One-shot tuxedo commands against the todo file chosen by TODO_FILE or TODO_DIR. Other subcommands (append, pri, archive and so on) are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "source": [
      {
        "id": "readme",
        "kind": "manual",
        "url": "https://github.com/webstonehq/tuxedo/blob/main/README.md#command-line-interface",
        "revision": "2026-10-27",
        "evidence": "tuxedo add \"Pay rent +home @bank due:2026-07-01\"   # or: tuxedo a \"...\"\ntuxedo ls @bank                                     # filter by context\ntuxedo do 3                                          # mark task 3 complete\n| `add` | `a` | `TEXT...` | Add a task (natural-language dates supported, same as the `n` prompt). |\n| `do` | `done`, `complete` | `N...` | Mark tasks complete (recurring tasks spawn their next instance). |\n| `list` | `ls` | `[TERM...]` | List tasks. `TERM` is `+project`, `@context`, or free text. |\n- `--json` — emit machine-readable JSON instead of text.\n"
      }
    ],
    "subcommand": [
      {
        "path": [
          "add"
        ],
        "label": "Add a task",
        "description": "Append a new task to the todo file.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/webstonehq/tuxedo/blob/main/README.md#command-line-interface",
            "revision": "2026-10-27",
            "evidence": "tuxedo add \"Pay rent +home @bank due:2026-07-01\"   # or: tuxedo a \"...\"\n| `add` | `a` | `TEXT...` | Add a task (natural-language dates supported, same as the `n` prompt). |\n- `--json` — emit machine-readable JSON instead of text.\n"
          }
        ],
        "field": [
          {
            "id": "text",
            "label": "Task text",
            "description": "Can include +project, @context and due:YYYY-MM-DD.",
            "type": "string",
            "position": 0,
            "min": 1,
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "json",
            "label": "JSON output",
            "type": "boolean",
            "option": [
              "--json"
            ],
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "add",
            "label": "Add task",
            "fields": [
              "text"
            ],
            "required": [
              "text"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "text",
              "json"
            ]
          }
        ]
      },
      {
        "path": [
          "ls"
        ],
        "label": "List tasks",
        "description": "List tasks, optionally filtered by +project, @context or text.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/webstonehq/tuxedo/blob/main/README.md#command-line-interface",
            "revision": "2026-10-27",
            "evidence": "tuxedo ls @bank                                     # filter by context\n| `list` | `ls` | `[TERM...]` | List tasks. `TERM` is `+project`, `@context`, or free text. |\n- `--json` — emit machine-readable JSON instead of text.\n"
          }
        ],
        "field": [
          {
            "id": "terms",
            "label": "Filter terms",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "json",
            "label": "JSON output",
            "type": "boolean",
            "option": [
              "--json"
            ],
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "list",
            "label": "List tasks",
            "fields": [
              "terms",
              "json"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "terms",
              "json"
            ]
          }
        ]
      },
      {
        "path": [
          "do"
        ],
        "label": "Complete tasks",
        "description": "Mark tasks complete by their 1-based line number.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/webstonehq/tuxedo/blob/main/README.md#command-line-interface",
            "revision": "2026-10-27",
            "evidence": "tuxedo do 3                                          # mark task 3 complete\n| `do` | `done`, `complete` | `N...` | Mark tasks complete (recurring tasks spawn their next instance). |\n"
          }
        ],
        "field": [
          {
            "id": "numbers",
            "label": "Task numbers",
            "type": "integer",
            "position": 0,
            "min": 1,
            "multiple": true,
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "do",
            "label": "Complete tasks",
            "fields": [
              "numbers"
            ],
            "required": [
              "numbers"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "numbers"
            ]
          }
        ]
      }
    ]
  }
}
