Skip to main content

wshlst is a simple task manager CLI

Project description

wshlst v0.1.1

wshlst is a small Markdown-first task manager for the command line.

It keeps your tasks in plain .md files under a local .tasks/ directory, with YAML frontmatter for metadata and optional Markdown body content for notes, checklists, or copied source material.

Features

  • Add tasks from a title, Markdown file, or URL reference.
  • Store tags, priority, due date, status, timestamps, and source metadata.
  • List tasks by status, tag, priority, or due date.
  • Show the raw Markdown file for a task.
  • Update titles, metadata, body content, file sources, and link references.
  • Mark tasks as done or archive them without deleting their files.
  • Resolve tasks by slug, path, or explicit task(000001) reference.

Installation

This project requires Python 3.11 or newer.

The easiest way to run it locally is with uv:

uv sync
uv run wshlst --help

You can also install it into your current Python environment:

pip install .
wshlst --help

Usage

Run commands from the directory where you want your task list to live. wshlst creates .tasks/ automatically the first time you add a task.

Add tasks

wshlst add "Write project README"
wshlst add "Review API notes" --file notes/api.md
wshlst add "Read release notes" --link https://example.com/release
wshlst add "Ship docs" --tag docs --tag release --priority high --due 2026-06-30

Tasks are stored as numbered Markdown files:

.tasks/
  000001-write-project-readme.md
  000002-review-api-notes.md

Each file contains YAML frontmatter followed by optional Markdown body content:

---
id: '000001'
title: Write project README
status: todo
source:
  type: manual
  value: null
created_at: '2026-06-16T12:00:00Z'
updated_at: '2026-06-16T12:00:00Z'
finished_at: null
priority: normal
tags: []
due: null
---

List tasks

wshlst list
wshlst list --all
wshlst list --done
wshlst list --archived
wshlst list --tag docs --priority high --due-before 2026-07-01

The list output is compact and sortable:

000001 high 2026-06-30 todo Ship docs [#docs #release]

Tasks are sorted by due date first, then priority, then creation time.

Show a task

wshlst show write-project-readme
wshlst show 'task(000001)'
wshlst show .tasks/000001-write-project-readme.md

show prints the full Markdown file, including frontmatter and body.

Update a task

wshlst update write-project-readme --title "Write usage README"
wshlst update 'task(000001)' --body "# Notes\n\nKeep it concise."
wshlst update 'task(000001)' --file notes/replacement.md
wshlst update 'task(000001)' --link https://example.com/new-reference
wshlst update 'task(000001)' --tag docs --tag cli --priority normal --due 2026-07-05

Updating a title does not rename the task file. Content sources are mutually exclusive: use one of --body, --file, or --link per update.

Finish or archive

wshlst finish 'task(000001)'
wshlst rm write-project-readme

finish sets the task status to done and records finished_at. rm archives the task in place by setting the status to archived; it does not delete the Markdown file.

Task References

Commands that operate on an existing task accept:

  • Slug: write-project-readme
  • Explicit ID: task(000001)
  • File path: .tasks/000001-write-project-readme.md

Bare numeric IDs are intentionally rejected, so use task(000001) when you want to reference a task by ID.

Development

Install dependencies:

uv sync --dev

Run the test suite:

uv run pytest

Run the CLI from the working tree:

uv run wshlst --help

License

No license file is currently included in this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wshlst-0.1.1.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wshlst-0.1.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file wshlst-0.1.1.tar.gz.

File metadata

  • Download URL: wshlst-0.1.1.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wshlst-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3783b824b0fc1eaaca8442131900677e23bd8a7d1045ccccc52b2b4c0f89aedf
MD5 bc3aa4e993d214b9cb57383392fda079
BLAKE2b-256 dc792dec9deaa2c9173a51763b1988b96d4b2f6e5e12cae1116ba967b1e7d112

See more details on using hashes here.

Provenance

The following attestation bundles were made for wshlst-0.1.1.tar.gz:

Publisher: publish-pypi.yml on bouli/wshlst

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wshlst-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: wshlst-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wshlst-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 68a7d3633f8c9387c1e415f384ea1fc849db1e804eead5364c41f291921761cb
MD5 4793f6602db89aefb91d69399d26bf35
BLAKE2b-256 a9dee4e1f7fffa10acc0086b701d07be6fdbb58d7f9387d94d8c14caec21ccc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for wshlst-0.1.1-py3-none-any.whl:

Publisher: publish-pypi.yml on bouli/wshlst

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page