A PowerToys Command Palette extension that puts the progress of your local Claude Code projects in the Dock, read from each project's tasks/todo.md.
Unofficial community project. Not affiliated with or endorsed by Anthropic or Microsoft. Claude and Claude Code are trademarks of Anthropic, PBC; they are used here only to say which tool this extension works with.
- In the Dock: overall progress across all projects, e.g.
📋 78% 9 projects · 48 open(✅ when nothing is open). - Click it: a table of every project (progress bar, %, done/total, last update) and the open tasks of the project you're working on right now, grouped by section.
- Browse all tasks: a full Command Palette list of projects; open one to see its tasks grouped by
##section, ☐ open / ✓ done. Open thetodo.mdor the project folder with one click.
The extension is read-only: it never writes to your files and makes no network calls.
| Source | What it gives |
|---|---|
~/.claude.json → projects |
Every folder you've started Claude Code in |
Extra scan roots setting (default %USERPROFILE%) |
Immediate subfolders that contain tasks/todo.md, for projects you worked on from a parent folder |
Newest transcript in ~/.claude/projects |
Which project is "active" (falls back to the most recently edited todo.md) |
Only folders that have a tasks/todo.md are shown. The root scan can also pick up a non-Claude folder that happens to have tasks/todo.md; remove the root or narrow it in the settings if that's unwanted. CLAUDE_CONFIG_DIR is honoured.
Standard Markdown task lists:
# Project title
## Phase 1
- [x] done task
- [ ] open task
### Sub-heading (stays inside "Phase 1")
1. [ ] numbered tasks work too[x]/[X]is done; any other single character (,-,~,/) counts as open.##headings are sections;###and deeper are labels inside the section. Tasks before the first##go under General.- Checkboxes inside code fences or blockquotes are ignored. Nested tasks each count once.
- Percentages round down, so 100% means every task is done.
- Windows 10 19041+ / Windows 11, PowerToys with Command Palette 0.9 or later (Dock support)
- Claude Code projects that keep a
tasks/todo.md(see todo.md format)
- Install or update PowerToys and make sure Command Palette is enabled in PowerToys Settings.
- Open Command Palette (default Win+Alt+Space) → Settings → Dock (Preview) → turn on Enable Dock.
From the latest release download:
TaskDockDev.cer- the package for your CPU:
TaskDock_<version>_x64.msix(Intel/AMD) orTaskDock_<version>_arm64.msix(Arm, e.g. Snapdragon). Not sure? Run$env:PROCESSOR_ARCHITECTUREin PowerShell:AMD64→ x64,ARM64→ arm64.
The package is signed with a self-signed certificate, so Windows has to be told to trust it. In PowerShell as Administrator, in the download folder:
Import-Certificate .\TaskDockDev.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeopleIn a normal PowerShell window (or double-click the .msix and choose Install):
Add-AppxPackage .\TaskDock_<version>_x64.msix- Open Command Palette and run Reload so it picks up the new extension.
- The Task Dock band usually appears in the Dock by itself. If it doesn't, search for Task Dock in Command Palette, open its context menu and run Pin to Dock (choose the side you like, e.g. Right).
- Click the band for the summary; Browse all tasks opens the full list. Settings: search Task Dock → Settings.
Download the newer .msix and run Add-AppxPackage again; the certificate step isn't needed again. Then Reload Command Palette.
Get-AppxPackage TaskDock | Remove-AppxPackage
# optional, as Administrator: remove the trusted certificate
Get-ChildItem Cert:\LocalMachine\TrustedPeople | Where-Object Subject -eq 'CN=TaskDockDev' | Remove-ItemVersion 0.2 renamed the extension and changed its package identity, so Windows treats it as a new app. Remove the old one first; its settings are not carried over, and the Dock band has to be pinned again if it does not appear by itself:
Get-AppxPackage ClaudeTasks | Remove-AppxPackage| Symptom | Fix |
|---|---|
0x800B0109 / "the root certificate … is not trusted" on install |
Step 3 was skipped or not run as Administrator. |
0x80073CFB / "a package with the same identity is already installed" |
A development build is registered: Get-AppxPackage TaskDock | Remove-AppxPackage, then install again. |
| Band doesn't appear | Check Enable Dock is on, run Reload, then use Pin to Dock as in step 5. |
Band shows — / No tasks found |
No project with tasks/todo.md was found. Projects come from ~/.claude.json and the Extra scan roots setting; add the parent folder of your projects there. |
| A project is missing | It was never opened in Claude Code from its own folder. Add its parent folder to Extra scan roots. |
| An unrelated folder shows up | It has a tasks/todo.md under a scan root. Narrow Extra scan roots. |
| Clicking the band opens the palette instead of the flyout, or it stops updating | Command Palette host issues, see Known host issues. Reload fixes both. |
Command Palette → Task Dock → Settings:
- Refresh interval: 30 sec, 1, 2, 5 min (default 1 min). Only changed
todo.mdfiles are re-read. - Extra scan roots:
;-separated folders, environment variables allowed. - Show completed: show finished projects and tasks (default on).
Needs the .NET 10 SDK. A full Windows SDK / Visual Studio is not required.
dotnet test tests\ClaudeTasks.Tests -p:Platform=x64 # unit tests
.\scripts\dev-deploy.ps1 # build + register (Developer Mode on)
.\scripts\dev-deploy.ps1 -Remove # unregisterAfter deploying, run Reload in Command Palette. If the band does not appear by itself, use Pin to Dock (see Installation).
.\scripts\pack.ps1 -Sign # dist\...\TaskDock_<ver>_x64.msix + dist\TaskDockDev.cer-Platform ARM64 builds the Arm package. The first -Sign run creates a self-signed CN=TaskDockDev code-signing certificate in Cert:\CurrentUser\My and reuses it afterwards. Install the result as described in Installation.
Back up that certificate (with its private key) so a rebuilt machine can keep signing updates that existing installs accept; otherwise every user has to trust a new .cer:
.\scripts\backup-signing-cert.ps1 -Destination <backup folder> # prompts for a password, writes TaskDock-signing.pfxsrc/ClaudeTasks/ Command Palette extension (Dock band, flyout, list pages, settings, TaskStore)
src/ClaudeTasks.Core/ Plain .NET library: todo.md parser, project discovery, active-project detection
tests/ClaudeTasks.Tests xUnit tests for Core
scripts/ dev-deploy.ps1, pack.ps1, backup-signing-cert.ps1, make-icons.py
These are Command Palette bugs, not bugs in this extension:
- #50367: after the host releases an idle extension, clicking a band opens the palette instead of the flyout.
- #49688: bands stop repainting after roughly 41 hours of uptime.
Running Reload in Command Palette works around both.
Session Dock for Claude Code: your live Claude Code sessions in the Dock.
MIT. Parts derived from the PowerToys extension template are © Microsoft, MIT; see NOTICE.