| name | tasks |
| description | Create or update the live task dashboard (TASKS.md) in Obsidian. Use when the user wants to view or regenerate the task dashboard ā 'show my tasks', 'update TASKS.md', 'open task view'. Do NOT use for: the vault portal/map (use moc), capturing new tasks (add them inside project notes directly), or daily briefing (use daily). |
Task Dashboard
Creates or updates a permanent TASKS.md at the vault root using Obsidian Tasks plugin live query blocks. The file is always current : no vault scanning needed. Mark tasks complete directly in Obsidian by clicking the checkboxes.
Usage:
/tasks : open the full dashboard
Step 1: Locate vault root
Read vault.yml from the current working directory. The directory containing vault.yml is the vault root. If vault.yml does not exist, warn the user:
"vault.yml not found : using current working directory as vault root: [path]. Run /onboarding to set up your vault configuration."
Then proceed with cwd as vault root.
.claude is always excluded as a hardcoded literal (not in vault.yml) : it is the plugin host directory and is not user-configurable.
Step 2: Ensure TASKS.md exists and frontmatter is current
Determine tasks_path = {vault_root}/TASKS.md.
If TASKS.md does not exist:
Create it with this exact content (replace YYYY-MM-DD with today's date and substitute all five bracket-notation variables : [logs_folder], [archive_folder], [knowledge_folder], [resources_folder], [agent_folder] : with their session config values; .claude is a hardcoded literal and requires no substitution):
---
tags: [dashboard, tasks]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
# Task Dashboard
## š“ Overdue
```tasks
not done
path does not include [logs_folder]
path does not include [archive_folder]
path does not include [knowledge_folder]
path does not include [resources_folder]
path does not include [agent_folder]
path does not include .claude
due before today
sort by priority
sort by due
```
## š Due This Week
```tasks
not done
path does not include [logs_folder]
path does not include [archive_folder]
path does not include [knowledge_folder]
path does not include [resources_folder]
path does not include [agent_folder]
path does not include .claude
due after yesterday
due before in 8 days
sort by priority
sort by due
```
## š Unscheduled
```tasks
not done
path does not include [logs_folder]
path does not include [archive_folder]
path does not include [knowledge_folder]
path does not include [resources_folder]
path does not include [agent_folder]
path does not include .claude
no due date
sort by priority
```
## šµ Due Later
```tasks
not done
path does not include [logs_folder]
path does not include [archive_folder]
path does not include [knowledge_folder]
path does not include [resources_folder]
path does not include [agent_folder]
path does not include .claude
due after in 7 days
sort by due
sort by priority
```
## ā
Completed
```tasks
done
path does not include [logs_folder]
path does not include [archive_folder]
path does not include [knowledge_folder]
path does not include [resources_folder]
path does not include [agent_folder]
path does not include .claude
sort by done date
limit 20
```
If the write fails, stop immediately and tell the user:
"Could not create TASKS.md at [tasks_path]. Error: [error]. Check that the vault path is correct and that you have write permission. Vault root used: [vault_root]"
Do not proceed to Step 3 if the write failed.
If TASKS.md already exists:
Read the file. Extract created: from the frontmatter : if absent, use today's date and tell the user: "created: was missing from TASKS.md frontmatter : set to today's date. Edit it manually if you know the original date."
Overwrite the entire file using the same template as above, substituting:
created: with the extracted (or today's) date
updated: with today's date
- All five bracket-notation variables (
[logs_folder], [archive_folder], [knowledge_folder], [resources_folder], [agent_folder]) with their session config values
If the write fails, stop immediately and tell the user:
"Could not update TASKS.md at [tasks_path]. Error: [error]. Check that the vault path is correct and that you have write permission. Vault root used: [vault_root]"
Do not proceed to Step 3 if the write failed.
Step 3: Open in Obsidian and confirm
The shipped helper detects platform and emits the right URI (cygpath, percent-encoding, etc.). On macOS/Linux/MSYS just run it via Bash:
bash ".claude/plugins/onebrain/startup/scripts/open-in-obsidian.sh" "TASKS.md"
In a PowerShell-only environment where bash is not on PATH, the helper still runs because Git for Windows / WSL ships bash.exe on PATH alongside Obsidian on Windows; if it genuinely is not present, skip the open step (the file is already saved) rather than constructing a URI by hand ā manual URI assembly is exactly the pattern the helper exists to replace.
Then say:
š TASKS.md updated.
ā Opening in Obsidian...
Known Gotchas
-
TASKS.md is a query-only dashboard ā never add raw tasks directly to it. The file is overwritten on every /tasks run. Any tasks written directly into TASKS.md will be lost on the next run.
-
path does not include queries use partial matching. If a folder name appears as a substring of another (e.g., resources appears in 04-resources), the exclusion still works correctly because Obsidian Tasks matches the full path. But verify exclusions when adding new folders with overlapping names.
-
Obsidian must be open for the open obsidian:// command to work. The command fails silently if Obsidian is not running ā this is expected behavior, not an error.