The command line needs to obey a grammar. It is then against this grammar that bugs will be identified. Conventions: - Literals are double-quoted. - "*", "+" and "?" suffixes have POSIX semantics. - Low-level primitives are in . - @reports for dynamic lists such as custom report names. The general form of commands is: task [ all-commands ] This breaks down into a supported grammar: command ::= all-commands? ; all-commands ::= custom-report | read-command | write-command | special-command ; custom-report ::= filter? @report ; read-command ::= ; write-command ::= ; special-command ::= ; filter ::= expression ; expression ::= ; Dynamic lists: @report ::= all custom reports ; Low-level: dom ::= context-value | system-value | rc-value | task-value ; context-value ::= "context.program" | "context.args" | "context.width" | "context.height" ; system-value ::= "system.version" | "system.os" ; rc-value ::= "rc." name ; task-value ::= "." attribute | "." attribute ; literal ::= | | | ; Supported primitives: --- Default: task Custom reports: task active task all task blocked task blocking task completed task list task long task ls task minimal task newest task next task oldest task overdue task ready task recurring task unblocked task waiting Build-in read-only: task burndown.daily task burndown.monthly task burndown.weekly task calendar [due| |] [y] task colors [sample | legend] task columns [substring] task count task diagnostics task execute task export task ghistory.annual task ghistory.monthly task help task history.annual task history.monthly task ids task information task logo task projects task reports task show [all | substring] task stats task tags task timesheet [weeks] task udas task uuids task version task _aliases task _columns task _commands task _config task _ids task _projects task _show task _tags task _udas task _urgency task _uuids task _version task _zshcommands task _zshids task _zshuuids Write commands: task add task annotate task append task config [name [value | '']] task delete task denotate task done task duplicate task edit task import [ ...] task log task merge task modify task prepend task pull task push task start task stop task summary task synchronize task undo