Markdown Tasks
Manage each task as an individual Markdown file in Visual Studio Code.
Features
- Task Management: View and manage tasks in a dedicated Webview table.
- Filter & Sort: Filter by Priority, Status, Tags, and Title. Sort by Updated date, Alphabetical order, or Due date.
- Multi-selection: Use
Ctrl (Windows/Linux) or Cmd (macOS) + Click to select multiple items.
- Logic: Priority and Status filters use OR logic. Tags filter uses AND logic.
- Template System: Create new tasks easily using customizable templates.
- Bulk Operations: Add or remove tags from all files in a folder.
- Migemo Support: Japanese fuzzy search support for task titles.
Getting Started
- Install the extension.
- Open a folder or workspace.
- Enable the extension by setting
markdownTasks.enabled to true in your settings or via the prompt.
- Open the "Markdown Tasks" view in the Activity Bar.
Path Configuration
You can configure where the extension looks for tasks and templates using markdownTasks.searchPaths and markdownTasks.templatePaths.
Path Variables
Variables must be placed at the start of the path string.
${workspaceFolder}: The root of the currently open workspace.
${workspaceFolder:name}: The root of a specific workspace folder (required for multi-root workspaces).
Relative Paths
If you have a single folder open, you can use relative paths (e.g., docs/tasks).
- Paths starting with
./ or ../ are not allowed.
- Relative paths are not allowed in multi-root workspaces (use
${workspaceFolder:name} instead).
Each task is a Markdown file with YAML frontmatter.
---
title: My Task
priority: High
status: Active
tags:
- work
- project
due: 2023-12-31
---
Task description goes here...
- title: Task title (optional, defaults to filename).
- priority: Priority level (configurable).
- status: Status label (configurable).
- tags: List of tags.
- due: Due date string (e.g., YYYY-MM-DD).
Template System
You can define templates for creating new tasks. Configure markdownTasks.templatePaths to point to your template folder.
Template Example:
---
titleTemplate: Daily Log ${yyyy}-${MM}-${dd}
outputDirectory: ${workspaceFolder}/logs/${yyyy}/${MM}
tags:
- log
---
## Notes
Special Frontmatter Keys
titleTemplate: Defines the default title for the new task. Supports variables:
${yyyy}: Year
${MM}: Month
${dd}: Day
outputDirectory: Destination folder for the new task. Supports:
${workspaceFolder}: Workspace root.
${yyyy}, ${MM}, ${dd}: Date variables.
These keys are removed from the generated task file.
Configuration
| Setting |
Description |
Default |
markdownTasks.enabled |
Enable the extension. |
false |
markdownTasks.searchPaths |
Directories to scan for tasks. Supports variables (at start) and clean relative paths (single-root only). |
[] |
markdownTasks.templatePaths |
Directories containing task templates. Supports variables (at start) and clean relative paths (single-root only). |
[] |
markdownTasks.priorities |
List of priority levels. |
[] |
markdownTasks.statuses |
List of status labels. |
[] |
markdownTasks.itemsPerPage |
Number of tasks per page. |
20 |
markdownTasks.indentSize |
Indentation size for frontmatter. |
2 |
markdownTasks.migemoDictPath |
Path to Migemo dictionary for fuzzy search. Supports absolute paths. |
"" |
Commands
MarkdownTasks: Create a new task: Create a task from a template.
Add Tag to Folder Files: Add a specific tag to all Markdown files in a folder.
- Supports filtering files by name (partial match).
- Offers choice to update file timestamp (for cloud sync) or preserve it.
Remove Tag from Folder Files: Remove a specific tag from all Markdown files in a folder.
- Supports filtering files by name (partial match).
- Offers choice to update file timestamp (for cloud sync) or preserve it.
MarkdownTasks: Rebuild Cache: Force a full rebuild of the task cache and refresh the view.
Development
Prerequisites
Note for Linux users:
To run integration tests (pnpm test:integration) in a headless environment (e.g., CI/CD), you must have xvfb installed.
sudo apt-get install xvfb