Note
The project is new and may have some bugs
tasker is a lightweight, local-first Command Line Interface (CLI) tool designed to manage and organize your tasks using human-readable Markdown files.
- Local-First & Text-Based: Every task is stored in its own folder with a dedicated
TASK.mdfile. - Smart Metadata: Built-in support for filtering by STATUS, PRIORITY, and custom TAGS.
- Auto-Sorting: The
lscommand automatically parses and ranks open tasks from highest to lowest priority. - No External DB: Your filesystem is your database.
This project is heavily inspired by the task management workflow and design proposed by Tsoding. You can check out his work and content here:
- YouTube: @TsodingDaily
- Twitch: @TsodingDaily
- GitHub: tsoding
Ensure you have Go installed, clone the repository, and build the binary:
git clone [https://github.com/vladevelops/tasker.git](https://github.com/vladevelops/tasker.git)
cd tasker
go build -o tasker
go install tasker
Or after go build -o tasker just move the binary to your local system path (optional):
mv tasker /usr/local/bin/
Run the global help menu to see an overview of available commands:
tasker -h
Creates a new task folder under ./tasks/ with a templated TASK.md file.
tasker add Implement authentication feature
To customize status or priority during creation, check subcommand flags via tasker add -h.
Lists all current OPEN tasks sorted from highest to lowest priority.
tasker ls
Filter your tasks on the fly by tags using -t or --tags:
tasker ls -t frontend
tasker ls -t bug,refactor
Closes an open task by its ID/folder suffix and prompts for a mandatory resolution reason.
tasker close 7 Feature deployed successfully to staging
This updates the inner status to CLOSE and appends your reason to the task notes. The folder in self becomes a .folder so it can be filtered
Tasks are contained within a root ./tasks/ directory using an organized, predictable naming layout:
tasks/
├── 1_NEW_FOO_01_07_2026/
│ └── TASK.md
└── 7_NEW_MOO_07_07_2026/
└── TASK.md
Inside each directory, metadata is maintained at the top of the file using predictable headers that tasker updates dynamically:
# Implement authentication feature
- STATUS: OPEN
- PRIORITY: 100
- TAGS: auth, backend
NOTES:
- Use JWT for session tokens.
TODO:
- [ ] Set up middleware
- [ ] Write integration tests
- Fork the project.
- Create your feature branch (
git checkout -b feature/new_feature). - Commit your changes (
git commit -m 'Add some new_feature'). - Push to the branch (
git push origin feature/new_feature). - Open a Pull Request.
Here are the upcoming features and improvements planned for tasker:
- Neovim Plugin Integration: Create a native lazy.nvim plugin to toggle, add, close and update tasks dynamically via a floating UI window or Telescope picker without leaving the editor.
-
updateCommand: Implement an interactive or flag-based subcommand to quickly modify existing task metadata (e.g., change priority, append tags, or modify titles) directly from the terminal.
Distributed under the MIT License. See LICENSE for more information.