Skip to main content

Markdown-native task management for developer projects

Project description

task.md

A structured but simple task management system. Tasks work as prompts for LLM agents or tickets for humans.

Each task is a markdown file. Metadata lives in the filename and YAML frontmatter. No database, no config file — the filesystem is the data store, git is the audit trail.

tasks/
  34001-p1-done--initial-setup.md
  34002-p2-ready--add-feature.md
  34003-p3-blocked--waiting-on-api.md

Task IDs are 5-digit numbers (e.g., 34042) where the first digit is derived from the machine's hostname and the second from the tasks directory path. This avoids ID conflicts across machines and git worktrees without coordination.

Set TASKMD_MACHINE_ID=0 to pin the first digit on your primary machine.

CLI

Run directly with uvx — no install needed:

uvx --from "git+https://github.com/scottopell/taskmd.git" taskmd validate
uvx --from "git+https://github.com/scottopell/taskmd.git" taskmd fix
uvx --from "git+https://github.com/scottopell/taskmd.git" taskmd next

Or install as a persistent tool:

uv tool install git+https://github.com/scottopell/taskmd.git
taskmd init         # create tasks directory with a template file
taskmd validate     # check all task files for consistency
taskmd fix          # auto-repair (missing dates, mismatched filenames, legacy ID formats)
taskmd next         # print the next available task ID
taskmd list         # list all tasks with metadata

All commands auto-detect ./tasks or ./tasksmd as the default directory. Pass a path to override.

Agent mode

When run inside an LLM coding agent (Claude Code, Cursor, Codex, etc.), taskmd auto-detects the environment and switches to JSON output. You can also force it:

taskmd --agent validate        # structured JSON envelope
taskmd --agent --help          # self-documenting schema for agents
taskmd --agent --compact --help  # minimal schema (fewer tokens)

Library

Install as a dependency:

uv pip install git+https://github.com/scottopell/taskmd.git
from taskmd import validate, fix, next_id, list_tasks

result = validate("tasks")
if not result.ok:
    for err in result.errors:
        print(err)

tasks = list_tasks("tasks")
for t in tasks:
    print(f"{t.id:5s} {t.priority} {t.status:12s} {t.slug}")

n = next_id("tasks")
print(f"Next task: {n}")

Use from a PEP 723 script (e.g., dev.py)

#!/usr/bin/env -S uv run
# /// script
# requires-python = ">=3.11"
# dependencies = ["taskmd @ git+https://github.com/scottopell/taskmd.git"]
# ///

from taskmd import validate

result = validate("tasks")
if not result.ok:
    print(f"Task validation failed: {len(result.errors)} errors")

Task file format

Filename: DDNNN-pX-status--slug.md

---
created: 2026-03-04
priority: p2
status: ready
artifact: src/feature.py
---

# Task Title

## Summary
What needs to be done.

## Done When
- [ ] First criterion
- [ ] Second criterion

Statuses: ready, in-progress, blocked, done, wont-do, brainstorming

Priorities: p0 (critical) through p4 (polish)

Artifact: the concrete output this task produces (file path, config change, commit). Required.

Only the four fields above are allowed in frontmatter — unknown fields are rejected by validation.

To change status: edit the status: field in frontmatter, then taskmd fix to rename the file to match. You can also rename the file directly.

Legacy migration: files using old formats (4-digit NNNN or alpha-prefix AANNN) are auto-migrated by taskmd fix.

License

MIT

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

taskmd-0.1.1.tar.gz (38.7 kB view details)

Uploaded Source

Built Distributions

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

taskmd-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

taskmd-0.1.1-cp314-cp314-win_amd64.whl (895.2 kB view details)

Uploaded CPython 3.14Windows x86-64

taskmd-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

taskmd-0.1.1-cp314-cp314-macosx_11_0_arm64.whl (980.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

taskmd-0.1.1-cp313-cp313-win_amd64.whl (894.8 kB view details)

Uploaded CPython 3.13Windows x86-64

taskmd-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

taskmd-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (980.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

taskmd-0.1.1-cp312-cp312-win_amd64.whl (894.6 kB view details)

Uploaded CPython 3.12Windows x86-64

taskmd-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

taskmd-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (980.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

taskmd-0.1.1-cp311-cp311-win_amd64.whl (897.2 kB view details)

Uploaded CPython 3.11Windows x86-64

taskmd-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

taskmd-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (982.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for taskmd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b8b92ffd8332d3e5605c73c4e815e28e8d7305bc43ea0eba7fb4330467ad9a5d
MD5 cc23600806fa18a1a75261348dd2ee26
BLAKE2b-256 06ea19668a6385e79159c935eb8a1a295d480bf67ea5a28f32a9d469afe17995

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c922fdb4776de9f5792664686d79e79d47490caa2969a4349d63ee8f7795c0a7
MD5 b3cf5af0ecc4ff4f21e910024f0051f7
BLAKE2b-256 d6994b582e2d1aa2dc4066f28e854930f2a5395f7deb72a30060af8b96783aa2

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: taskmd-0.1.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 895.2 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for taskmd-0.1.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 08e0c2c1686cb7d8ba21d2d38e2618e9f35eab5b22a42214fe19d78638aec4c3
MD5 0ffca44b9103c9658754bdf0db7e4ba9
BLAKE2b-256 5611fd50b92dc4e046bd104d5c95ff08ba6063ea86ce7c5c7663dfb52750abe4

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb8c217d945eaee672d264f8a11c3b216f016610dc07a81195d6881f6bb86e18
MD5 75fc13d57aa50d54c3357d09f3378f2f
BLAKE2b-256 0d86d2a6e4311be5bbcce98f96a7bb620c860d109ea647172f8455ba7a1b3eb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00cdca654f924cbacd2108e2c46a47c54b0ba5f158d87d9ef92ec8325d5aaae8
MD5 0ecc5a7722c219485ac5c3af871156d1
BLAKE2b-256 f8b96ccdb6f380b2f6fa78bc404a9c8eac42a62a4a400e19a04cfe711585a9f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: taskmd-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for taskmd-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4797b39593217359ddbdd14b0bb94162f334d26f66d59361a063efae4da2c1d6
MD5 6586722235086e1a72c64fc0ea761131
BLAKE2b-256 ffe07d72a480e389b78cf0b02c88ab6563ce4287ae4decb72e96478a006177c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e58f87a06c95fac93f7f8488bdd588b72886cde13e04d832b262a4e48d75830
MD5 67f1e4f9f16244f9bbc47d80fd89d86d
BLAKE2b-256 13354092954a643086ac30f95ba528ccf52657597eaf82eacc498562167ff714

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2fefe113eeb18e541a580d52a87ff8526689d5d776f2ef81c1b6351eb4857e4
MD5 0ebd4d695c79c68a931d06a0e03062c8
BLAKE2b-256 61095fd7793d0e2bfe6e95c5931e47562d8a7ac253a2d2fb60d300f3c21fef43

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: taskmd-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 894.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for taskmd-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c2dd919bf061634d8226d6a0526a524a5bad2d7823c8c29d2f7c567c20b1534e
MD5 18193ea7d97820e17026505d503bfcfb
BLAKE2b-256 c543aaa4b0c5626274b154adf222536f7692a363cdb4609a9680999003d965bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4336cc3e2f4f897c39322324066dac76a5acebc21fddbd8994b0301e00608eb9
MD5 ed25e6f5c290d7313019d561f15aa815
BLAKE2b-256 172e13427f268a72d77575b6ad8c6b5ff9235703521e668cd94678202ef97f3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 edb70f30719509431b88a9a1a21158803ae042f4a3eec5c78298b5474c48520d
MD5 a2edbd9899e8f0d64d027bcd3e94bf8c
BLAKE2b-256 ff4c7ec646fec9b0a3fa6c45f6ac516c51390f0be7201fccdc10585e07b37789

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: taskmd-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 897.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for taskmd-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ba02e4184845d10da11aa45e09934753290ba7a21bc4d1b01710b15074c0ca5d
MD5 5370a5cfc2155489aca11969cdba6bbd
BLAKE2b-256 b78165d2b4bb3713420fbbeb7fd8fa208f95a007cb534b783f06a93836fc17bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b15a2189c8ca7dfc2151ed52a957d829af8980295214f558c12d677107a3b750
MD5 afb02863434dc0e34bf2c426eb157c5d
BLAKE2b-256 482c6de0f3fefe117eeddd6baa1eac2feef1c5edee16145582e932b232e4604e

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on scottopell/taskmd

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

File details

Details for the file taskmd-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for taskmd-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83c2cae80b05bf13d7a8edced9cc1b68e66f335c05d77596ee662a44797a9988
MD5 4705a4dead2c5a8a9a742ba63ad85913
BLAKE2b-256 a6bc4cae4b959b713c7a2f90c03bc1d0b2913b43ae9bb89c46905601c008f4e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskmd-0.1.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on scottopell/taskmd

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