SkillAgentSearch skills...

Dstask

Git powered terminal-based todo/note manager -- markdown note page per task. Single binary!

Install / Use

/learn @naggie/Dstask

README

<p align="center"> <img align="center" src="etc/icon.png" alt="icon" height="64" /> </p> <h1 align="center">dstask</h1> <p align="center"> <i>Single binary terminal-based TODO manager with git-based sync + markdown notes per task</i> </p> <p align="center"> <a href="https://cloud.drone.io/naggie/dstask"><img src="https://cloud.drone.io/api/badges/naggie/dstask/status.svg" /></a> <a href="https://goreportcard.com/report/github.com/naggie/dstask"><img src="https://goreportcard.com/badge/github.com/naggie/dstask" /></a> <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue.svg" /></a> <a href="http://godoc.org/github.com/naggie/dstask"><img src="https://img.shields.io/badge/godoc-reference-blue.svg"/></a> <a href="https://gophers.slack.com/archives/C01ED7UKLBH"><img src="https://img.shields.io/badge/Gophers/dstask-yellow.svg?logo=slack"/></a> </p> <br> <br> <br>

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
  • note command -- edit a full markdown note for each task. Checklists are useful here.
  • open command -- 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>&nbsp;</td> </tr> </tbody> </table>

Installation

  1. Copy the executable (from the [releases page][releases]) to somewhere in your PATH.
    • Linux/macOS: name it dstask and mark it executable (e.g. /usr/local/bin/).
    • Windows: use dstask.exe and place it in a directory on PATH (e.g. %USERPROFILE%\bin).
  2. Enable shell completions:
    • Bash: add source <(dstask bash-completion) to your .bashrc.
    • Zsh: add dstask zsh-completion > /usr/local/share/zsh/site-functions/_dstask or source completions/zsh.sh in your ~/.zshrc.
    • PowerShell (Windows): see section "PowerShell completion" below.
  3. Set up an alias in your .bashrc: alias task=dstask or alias t=dstask to make task management slightly faster.
  4. Create or clone a ~/.dstask git repository for the data, if you haven't already:
    • Linux/macOS: mkdir ~/.dstask && git -C ~/.dstask init
    • Windows: mkdir %USERPROFILE%\.dstask then git -C %USERPROFILE%\.dstask init

Windows notes

  • Default data location: %USERPROFILE%\.dstask (can be overridden via DSTASK_GIT_REPO).
  • On first run, dstask may prompt to create the repository if it doesn't exist; answer y/yes to 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

View on GitHub
GitHub Stars1.1k
CategoryDevelopment
Updated10h ago
Forks63

Languages

Go

Security Score

100/100

Audited on Mar 26, 2026

No findings