{b}kanbn validate{b} Validate kanbn index file and all task files, and report any formatting errors. If the files are valid, this also reports tasks whose started/completed dates don't match the column they're in - which usually means the task was moved by hand or by a merge, rather than through kanbn. It also lists any line in a column that isn't a task link. Those lines are kept in the board file and ignored by every other command, so this is information rather than a problem - except for a line that looks like a task link with a typo in it, or one naming a task file that exists, both of which mean a task isn't being tracked when it probably should be. Options: {b}kanbn validate --save{b} Re-save the index and task files. This will ensure that all index column sorting settings are applied and that all tasks are formatted correctly. {b}kanbn validate --fix{b} {b}kanbn validate -f{b} Fill in missing started and completed dates for tasks that are sitting in a started or completed column without one. Each date is taken from the task's history where the move was recorded, falling back to the task's updated date and then its created date. Tasks that have a completed date while sitting outside a completed column are reported but never changed, because the date records something that actually happened. Use {b}kanbn edit "task-id" --unset completed{b} to clear one deliberately. {b}kanbn validate --json{b} {b}kanbn validate -j{b} Output validation errors in JSON format. When there is nothing to report beyond date drift this is the bare list of drift entries; when there are warnings as well - or the workspace has more than one board - it is an object with {b}drift{b} and {b}warnings{b} keys. {b}kanbn validate --board "board-slug"{b} {b}kanbn validate -b "board-slug"{b} Target a board other than the main one. Falls back to the KANBN_BOARD environment variable and then to the defaultBoard option. See {b}kanbn boards{b} for the list of boards. {b}kanbn validate --all-boards{b} Validate every board in the workspace and the tasks each of them references, rather than just the target board. In a workspace with more than one board, {b}validate{b} also reports multi-board warnings - a workspace-scoped option in a board file, several boards stamping the same shared date, sprints out of order, a task on no board at all, history naming a board that has been deleted, and markdown files beside the boards that don't parse as one. These are warnings, not errors: each describes a workspace that still works, just not the way its author probably meant it to. Action rules are checked too. A rule that names an unknown event or verb, moves to a column that doesn't exist, or writes a field Kanbn manages is an {b}error{b} - the same commands that would have run it fail before writing anything. Rules that work but probably don't do what they look like - two rules writing the same field on the same event, or {b}@me{b} where no user can be resolved - are reported as warnings.