Skip to main content

Local markdown worklog helpers for developer workflows.

Project description

worklogs

Local markdown worklog helpers for developer workflows.

worklogs creates dated markdown files under a scope, date folder, and compact filename:

~/worklog/<scope>/YYYY/MM-month/DD-ddd/HHMM-Ha--name--kind.md

Installation

uv tool install worklogs

Or with pip:

python -m pip install worklogs

Install workset too if you want worklogs to create git worksets:

uv tool install workset

Usage

Check the installed version:

worklogs --version

Create your first note:

worklogs new first-note--note --scope personal

Create a plan:

worklogs new api-refactor--plan --scope work

Plans create a linked companion note by default:

HHMM-Ha--api-refactor--plan.md
HHMM-Ha--api-refactor--note.md

Preview the generated paths and markdown without writing files:

worklogs new api-refactor--plan --scope work --dry-run

Print created paths for scripts:

worklogs new first-note--note --scope personal --print-path

Supported kinds:

plan
note
investigation
codereview

Worksets

worklogs can create or attach a git workset through the workset package. Configure repo aliases in ~/.config/workset/repos.toml:

[workset]
root = "~/worksets"
date_prefix = true
timezone = "America/Toronto"

[repos]
api = "~/repos/api"
web = "~/repos/web"

Create the plan first, then attach a workset:

worklogs new api-refactor--plan --scope work
worklogs workset api-refactor api:feat/refactor

Or create the worklog and workset in one command:

worklogs new checkout-flow--plan --scope work \
  --workset api:feat/checkout-flow \
  --workset web:main

For a first successful zero-to-workset example:

git clone git@github.com:your-org/api.git ~/repos/api
worklogs new api-refactor--plan --scope work
worklogs workset api-refactor api:feat/refactor

Worksets are created under:

<worksets-root>/YYYY/MM-month/DD-ddd/<workset-path>/

Config

Optional defaults live in:

~/.config/worklogs/config.toml

Example:

root = "~/worklog"
default_scope = "work"
timezone = "America/Toronto"
worksets_root = "~/worksets"

Resolution order:

  1. CLI flags
  2. environment variables: WORKLOG_ROOT, WORKLOG_SCOPE, WORKLOG_TIMEZONE, WORKLOG_WORKSETS_ROOT
  3. config file
  4. package defaults

With default_scope configured, the fast path can omit --scope:

worklogs new api-refactor--plan

With worksets_root configured, the workset path can omit --worksets-root:

worklogs workset api-refactor api:feat/refactor

For shorter personal shell usage, add a local alias:

alias wl='worklogs'

The package installs the explicit worklogs command; wl is intentionally left as a shell-level shortcut so it cannot shadow another global command.

Development Workflow

Run the standard checks before opening a PR:

uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest
uv build

If you are using standard Python tools instead of uv:

python -m ruff format --check .
python -m ruff check .
python -m mypy
python -m pytest
python -m build

CI / GitHub Actions

GitHub Actions runs:

  • fast Ruff-only checks
  • Ruff, mypy, and pytest
  • package build and wheel smoke test with pip
  • package build and wheel smoke test with uv

The release workflow in .github/workflows/release.yml builds and publishes the package to PyPI when a GitHub Release is published.

Publishing

This project uses PyPI Trusted Publishing. The PyPI pending publisher should be:

PyPI project name: worklogs
Owner: alik-git
Repository name: worklogs
Workflow name: release.yml
Environment name: pypi

Create a GitHub Release for the version in pyproject.toml:

gh release create v0.3.6 \
  --title "v0.3.6" \
  --notes "Clarify worklog and workset onboarding."

Publishing is release-driven on purpose: normal pushes and pull requests build and test the package, but only GitHub Releases publish to PyPI.

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

worklogs-0.3.6.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

worklogs-0.3.6-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file worklogs-0.3.6.tar.gz.

File metadata

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

File hashes

Hashes for worklogs-0.3.6.tar.gz
Algorithm Hash digest
SHA256 c7032bdd1984d23884f8d07aad347834847f47c915c76a82d885d1712e41d382
MD5 99affdf62c38f89eb7b40278f303416d
BLAKE2b-256 8f218f0d9f2cf59d0cbee9ad6281f59c61452ff60b57b5f01af1369e4d0edd9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for worklogs-0.3.6.tar.gz:

Publisher: release.yml on alik-git/worklogs

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

File details

Details for the file worklogs-0.3.6-py3-none-any.whl.

File metadata

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

File hashes

Hashes for worklogs-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 34ec97c3d1a4cb01410e07afe7b252ec0717bf8c55d8bdf35c9651c61e273296
MD5 1f44045aad74d12389239f5732c1467e
BLAKE2b-256 190ce2ed7dd4c3bd3651cfbdb302ee6175c8b1b2e25be9462299880cdcabe5ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for worklogs-0.3.6-py3-none-any.whl:

Publisher: release.yml on alik-git/worklogs

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