{
  "id": "khal",
  "name": "khal",
  "homepage": "https://lostpackets.de/khal/",
  "description": "A command-line calendar application",
  "executables": [
    "khal",
    "ikhal"
  ],
  "dotfiles": {
    "paths": [
      "~/.khal/khal.conf",
      "[configHome]/khal/config",
      "[configHome]/khal/khal.conf",
      "[xdgCache]/khal/khal.db"
    ],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "khal calendar",
    "description": "List events in a date range or add a new event to a calendar. Editing, importing, search and the interactive UI are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "doc",
        "kind": "manual",
        "url": "https://lostpackets.de/khal/",
        "revision": "usage.rst master 2026-10",
        "evidence": "khal list [-a CALENDAR ... | -d CALENDAR ...]\n[--format FORMAT] [--json FIELD ...] [--day-format DAYFORMAT]\n[--once] [--notstarted] [START [END | DELTA] ]\nkhal list -a soccer today 30d\n.. option:: --format FORMAT\n.. option:: -a CALENDAR\n.. option:: -d CALENDAR\n"
      }
    ],
    "subcommand": [
      {
        "path": [
          "list"
        ],
        "label": "List events",
        "source": [
          {
            "id": "doc",
            "kind": "manual",
            "url": "https://github.com/pimutils/khal/blob/master/doc/source/usage.rst",
            "revision": "master 2026-10",
            "evidence": "khal list [-a CALENDAR ... | -d CALENDAR ...]\n[--format FORMAT] [--json FIELD ...] [--day-format DAYFORMAT]\n[--once] [--notstarted] [START [END | DELTA] ]\nkhal list -a soccer today 30d\n.. option:: --format FORMAT\n.. option:: -a CALENDAR\n.. option:: -d CALENDAR\n"
          }
        ],
        "field": [
          {
            "id": "range",
            "label": "Start, end or delta",
            "description": "For example: today 30d, or 2019-12-01 31d.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "include",
            "label": "Only these calendars",
            "type": "string",
            "option": [
              "-a"
            ],
            "multiple": true,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "exclude",
            "label": "Exclude these calendars",
            "type": "string",
            "option": [
              "-d"
            ],
            "multiple": true,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "format",
            "label": "Output format",
            "description": "For example: {title} {description}.",
            "type": "string",
            "option": [
              "--format"
            ],
            "sources": [
              "doc"
            ]
          }
        ],
        "task": [
          {
            "id": "upcoming",
            "label": "Upcoming events",
            "fields": [
              "range",
              "include"
            ],
            "required": [],
            "set": {
              "range": [
                "today",
                "30d"
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "range",
              "include",
              "exclude",
              "format"
            ]
          }
        ]
      },
      {
        "path": [
          "new"
        ],
        "label": "Add an event",
        "source": [
          {
            "id": "doc",
            "kind": "manual",
            "url": "https://github.com/pimutils/khal/blob/master/doc/source/usage.rst",
            "revision": "master 2026-10",
            "evidence": "khal new [-a CALENDAR] [OPTIONS] [START [END | DELTA] [TIMEZONE] SUMMARY\n[:: DESCRIPTION]]\n* **-l, --location=LOCATION** specify where this event will be held.\n* **-g, --categories=CATEGORIES** specify which categories this event belongs to.\n* **-r, --repeat=RRULE** specify if and how this event should be recurring.\n  Valid values for *RRULE* are `daily`, `weekly`, `monthly`\n  and `yearly`\n* **-u, --until=UNTIL** specify until when a recurring event should run\n.. option:: -a CALENDAR\nkhal new 18:00 Awesome Event\nkhal new -a work 26.07. Great Event -g meeting -r weekly\n"
          }
        ],
        "field": [
          {
            "id": "event",
            "label": "Start, end, timezone and summary",
            "description": "For example: tomorrow 16:30 Coffee Break. Text after :: becomes the description.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "calendar",
            "label": "Calendar",
            "description": "The default calendar is used when empty.",
            "type": "string",
            "option": [
              "-a"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "location",
            "label": "Location",
            "type": "string",
            "option": [
              "--location",
              "-l"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "categories",
            "label": "Categories",
            "description": "Comma separated.",
            "type": "string",
            "option": [
              "--categories",
              "-g"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "repeat",
            "label": "Repeat",
            "type": "enum",
            "option": [
              "--repeat",
              "-r"
            ],
            "choices": [
              {
                "value": "daily",
                "label": "Daily"
              },
              {
                "value": "weekly",
                "label": "Weekly"
              },
              {
                "value": "monthly",
                "label": "Monthly"
              },
              {
                "value": "yearly",
                "label": "Yearly"
              }
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "until",
            "label": "Repeat until",
            "type": "string",
            "option": [
              "--until",
              "-u"
            ],
            "sources": [
              "doc"
            ]
          }
        ],
        "task": [
          {
            "id": "add",
            "label": "Add an event",
            "fields": [
              "event",
              "calendar",
              "location"
            ],
            "required": [
              "event"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "event",
              "calendar",
              "location"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "categories",
              "repeat",
              "until"
            ]
          }
        ]
      }
    ]
  }
}
