Markdown Task Board
A native VS Code Activity Bar tree for Markdown tasks. The default Folders view follows the existing folder hierarchy beneath your selected task directory and uses your active file-icon theme for files and folders.
Features
- Scans Markdown files recursively; files with a frontmatter
status are tasks.
- Shows task filenames and their parent folders, with native expansion, keyboard navigation, selection, and file-theme icons. Folders without tasks are omitted.
- Opens the task file when selected. Hover to see its H1 title, path, and metadata.
- Shows status, priority, project, milestone, and legacy epic metadata beside each file.
- Offers Folders, Status, Priority, Epic, Project, Milestone, and No grouping in the title-bar grouping picker and remembers your selection.
- Keeps task files in their existing locations. Refreshing, grouping, assigning metadata, and changing status never rename or move files. There is no drag-and-drop move action.
- Lets you right-click a task to Assign Project, Assign Milestone, Change Status, or Change Priority. These commands also work from the Command Palette, where they first ask you to select a task.
- Offers separate in Active Editor commands for all four fields. Open a task Markdown file and run one of these commands from the Command Palette to edit that file directly; a non-task editor produces an error without an edit.
- Supports selecting multiple task files in the tree and using the Selected Tasks context commands for status, priority, project, or milestone. The same bulk commands offer a multi-select task picker from the Command Palette. Bulk results are listed by file in the Markdown Task Board output channel, including partial failures.
- Allows a project, a milestone, both, or neither. Pick an existing value, enter a new name, or choose No project / No milestone to clear an assignment. Each assignment is independent.
- Creates tasks with the + button directly in the selected task directory. Optional project and milestone prompts offer an unassigned choice. Cancelling any prompt cancels creation.
- Adds a numeric suffix when a new task filename already exists, preserving the existing file.
- Selects the task directory from the title bar or Command Palette and refreshes when Markdown files or settings change.
- Uses VS Code workspace edits for metadata changes, so edits can be undone in the editor. If a task changes while a picker is open, the command rejects the stale selection and asks you to retry.
- Reads optional
taskID and dependsOn fields. The native tree shows dependency readiness and dependent counts; Show Blocked By and Show Blocks open navigable Quick Picks from a task's context menu or the Command Palette.
- Reports missing and ambiguous references, duplicate IDs, self references, malformed dependency lists, and cycles in the Problems view and on task hover. Dependency checks never change a task's status or move its file.
- New tasks receive a unique
taskID automatically. For older tasks, use Generate Task ID from the task context menu or Command Palette, Generate Task ID in Active Editor, or Generate Missing Task IDs from the Command Palette to fill every ID-less task in the selected directory. Existing IDs stay unchanged.
Settings
{
"markdownTaskBoard.directory": "tasks",
"markdownTaskBoard.statuses": ["todo", "in-progress", "review", "done"],
"markdownTaskBoard.priorities": ["low", "medium", "high", "urgent"],
"markdownTaskBoard.terminalStatuses": ["done", "cancelled"],
"markdownTaskBoard.satisfyingDependencyStatuses": ["done"],
"markdownTaskBoard.statusIcons": {
"todo": "circle",
"in-progress": "progress",
"review": "review",
"done": "done"
},
"markdownTaskBoard.newTaskTag": "tagname"
}
The directory must stay inside the first workspace folder. Statuses and priorities discovered in files are added to their configured choices. Project and milestone suggestions come from task frontmatter in the selected directory; they do not depend on folder names.
Dependencies use unique task IDs inside the selected task directory. IDs and dependencies are optional, and existing IDs are never regenerated. Use a YAML flow list (dependsOn: ["TSK-1", "TSK-2"]) or a block list (dependsOn: followed by indented - TSK-1 lines). A reference to a missing or duplicate ID remains an issue until fixed. A task is dependency ready when all its references resolve and every prerequisite has a status listed in both terminalStatuses and satisfyingDependencyStatuses. By default, cancelled is terminal but does not satisfy a dependency; add it to satisfyingDependencyStatuses if cancellation should unblock downstream work. Self references and cycles are never ready. Tasks with no dependencies are ready. Readiness is a display calculation and never rewrites status.
The statusIcons setting applies only to optional status group headers. Built-in values are circle, blocked, ready, progress, review, done, paused, cancelled, and backlog; other values appear as custom symbols in group labels. Actual file and folder icons always follow VS Code's file-icon theme.
Existing epic fields and the legacy markdownTaskBoard.epics setting are still read. An epic is no longer required to create a task. Upgrading leaves all existing files, including files previously placed in status folders, where they are. The first use of the native tree defaults to Folders.
New tasks use frontmatter like this (project and milestone lines are omitted when unassigned):
---
status: "todo"
taskID: "TSK-0123456789AB"
priority: "medium"
project: "Website"
milestone: "release-1"
creationDate: "2026-09-27T14:00:00.000Z"
tags: tagname
---
# Task title
Metadata commands edit only the corresponding frontmatter scalar, preserving the body, unrelated fields, inline comments, and line endings. Priority is inserted if missing. Clearing a project or milestone writes an empty string; cancelling a picker makes no change. Project and milestone names should be single-line scalar values; edit existing multiline YAML values in the Markdown editor before assigning them through the picker.
Development
npm install
npm test
npm run package:vsix
Press F5 in VS Code to launch an Extension Development Host, then open Task Board in the Activity Bar. On Windows with PowerShell script execution disabled, use npm.cmd in place of npm.
Version 0.1.21 replaces the webview with the native tree, removes automatic file organization, and adds project and milestone assignment commands.
Version 0.1.22 adds priority changes, active-editor metadata commands, version checks, and bulk updates with per-file results.
Version 0.1.23 adds dependency relationships, readiness, navigation, and dependency diagnostics.
Version 0.1.24 generates IDs for new tasks and adds commands to assign IDs to existing tasks.
Version 0.1.25 labels the extension and task view Task Board and packages it under the martincodes publisher.