Dstask
Git powered terminal-based todo/note manager -- markdown note page per task. Single binary!
Install / Use
/learn @naggie/DstaskREADME
Dstask is a personal task tracker designed to help you focus. It is similar to Taskwarrior but uses git to synchronise instead of a special protocol.
If you're at home in the terminal, and with solving the occasional merge conflict, then dstask is for you!
https://github.com/user-attachments/assets/589d06fd-7486-46e4-b838-ce85af12f0fc
Video courtesy of xGoivo -- thanks!
Features:
<a href="https://repology.org/project/dstask/versions"> <img src="https://repology.org/badge/vertical-allrepos/dstask.svg" alt="Packaging status" align="right"> </a>- Powerful context system (automatically applies filter/tags to queries and new tasks)
- Git powered sync/undo/resolve (passwordstore.org style) which means no need to set up a sync server, and syncing between devices is easy!
- Task listing won't break with long task text
notecommand -- edit a full markdown note for each task. Checklists are useful here.opencommand -- open URLs found in specified task (including notes) in the browser- zsh/bash completion (including tags and projects in current context) for speed; PowerShell completion on Windows
- A single statically-linked binary
- import tool which can import GitHub issues or taskwarrior tasks.
Non-features:
- Collaboration. This is a personal task tracker. Use another system for projects that involve multiple people. Note that it can still be beneficial to use dstask to track what you are working on in the context of a multi-person project tracked elsewhere.
Requirements:
- Git
- A 256-color capable terminal
Screenshots
<table> <tbody> <tr> <td> <p align="center"> <img src="https://github.com/naggie/dstask/raw/master/etc/dstask.png"> <em>Next command (default when no command is specified)</em> </p> </td> <td> <p align="center"> <img src="https://github.com/naggie/dstask/raw/master/etc/show-resolved.png"> <em>Show-resolved command to review completed tasks by week. Useful for meetings.</em> </p> </td> <td> <p align="center"> <img src="https://github.com/naggie/dstask/raw/master/etc/edit.png"> <em>Editing a task with $EDITOR (which happens to be vim)</em> </p> </td> </tr> <tr> <td> <p align="center"> <img src="https://github.com/naggie/dstask/raw/master/etc/add.png"> <em>Adding a task</em> </p> </td> <td> <p align="center"> <img src="https://github.com/naggie/dstask/raw/master/etc/sync.png"> <em>Sync command (which uses git)</em> </p> </td> <td> </td> </tr> </tbody> </table>Installation
- Copy the executable (from the [releases page][releases]) to somewhere in your PATH.
- Linux/macOS: name it
dstaskand mark it executable (e.g./usr/local/bin/). - Windows: use
dstask.exeand place it in a directory onPATH(e.g.%USERPROFILE%\bin).
- Linux/macOS: name it
- Enable shell completions:
- Bash: add
source <(dstask bash-completion)to your.bashrc. - Zsh: add
dstask zsh-completion > /usr/local/share/zsh/site-functions/_dstaskor sourcecompletions/zsh.shin your~/.zshrc. - PowerShell (Windows): see section "PowerShell completion" below.
- Bash: add
- Set up an alias in your
.bashrc:alias task=dstaskoralias t=dstaskto make task management slightly faster. - Create or clone a
~/.dstaskgit repository for the data, if you haven't already:- Linux/macOS:
mkdir ~/.dstask && git -C ~/.dstask init - Windows:
mkdir %USERPROFILE%\.dstaskthengit -C %USERPROFILE%\.dstask init
- Linux/macOS:
Windows notes
- Default data location:
%USERPROFILE%\.dstask(can be overridden viaDSTASK_GIT_REPO). - On first run, dstask may prompt to create the repository if it doesn't exist; answer
y/yesto proceed. - Terminal: use Windows Terminal or PowerShell with a 256-color capable profile for best results.
- Shell completions: PowerShell completion is supported; see next section.
PowerShell completion
To enable PowerShell tab completion for dstask on Windows, use the embedded script in completions/powershell.ps1.
One-off for the current session:
. ./completions/powershell.ps1
Enable permanently by dot-sourcing from your PowerShell profile:
# Create a profile if it doesn't exist
if (!(Test-Path -LiteralPath $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force | Out-Null }
# Open your profile for editing
notepad $PROFILE
# Add the following line (adjust path if needed):
. "$PSScriptRoot/completions/powershell.ps1"
Alternatively, hardcode the absolute path to the repository if PSScriptRoot is not suitable for your setup, e.g.:
. "C:\\Users\\<you>\\source\\repos\\dstask-win-port\\completions\\powershell.ps1"
There are also unofficial packages for:
Moving from Taskwarrior
We have a migration guide to make the transition from taskwarrior to dstask a simple process.
Usage
Usage: dstask [id...] <cmd> [task summary/filter]
Where [task summary] is text with tags/project/priority specified. Tags are
specified with + (or - for filtering) eg: +work. The project is specified with
a project:g prefix eg: project:dstask -- no quotes. Priorities run from P3
(low), P2 (default) to P1 (high) and P0 (critical). Text can also be specified
for a substring search of description and notes.
Cmd and IDs can be swapped, multiple IDs can be specified for batch
operations.
run "dstask help <cmd>" for command specific help.
Add -- to ignore the current context. / can be used when adding tasks to note
any words after.
Available commands:
next : Show most important tasks (priority, creation date -- truncated and default)
add : Add a task
template : Add a task template
log : Log a task (already resolved)
start : Change task status to active
note : Append to or edit note for a task
stop : Change task status to pending
done : Resolve a task
context : Set global context for task list and new tasks (use "none" to set no context)
modify : Set attributes for a task
edit : Edit task with text editor
undo : Undo last action with git revert
sync : Pull then push to git repository, automatic merge commit.
open : Open all URLs found in summary/annotations
git : Pass a command to git in the repository. Used for push/pull.
remove : Remove a task (use to remove tasks added by mistake)
show-projects : List projects with completion status
show-tags : List tags in use
show-active : Show tasks that have been started
show-paused : Show tasks that have been started then stopped
show-open : Show all non-resolved tasks (without truncation)
show-resolved : Show resolved tasks
show-templates : Show task templates
show-unorganised : Show untagged tasks with no projects (global context)
bash-completion : Print bash completion script to stdout
zsh-completion : Print zsh completion script to stdout
help : Get help on any command or show this message
version : Show dstask version information
Syntax
Priority
| Symbol | Name | Note |
| ------ | -------- | ------------------------------------------------------------------- |
| P0 | Critical | Must be resolved immediately. May appear in all contexts in future. |
| P1 | High | Need to be resolved in near future, display in highlighted |
| P2 | Normal | Default priority |
| P3 | Low | Shown at bottom and faded. |
Operators
| Symbol | Syntax | Description | Example |
| --------------- | ------------------------ | ---------------------------------------------------------------- | --------------------------------------------- |
| + | +<tag> | Include tag.
Related Skills
apple-reminders
337.1kManage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
gh-issues
337.1kFetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
healthcheck
337.1kHost security hardening and risk-tolerance configuration for OpenClaw deployments
node-connect
337.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
