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:
- CLI flags
- environment variables:
WORKLOG_ROOT,WORKLOG_SCOPE,WORKLOG_TIMEZONE,WORKLOG_WORKSETS_ROOT - config file
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7032bdd1984d23884f8d07aad347834847f47c915c76a82d885d1712e41d382
|
|
| MD5 |
99affdf62c38f89eb7b40278f303416d
|
|
| BLAKE2b-256 |
8f218f0d9f2cf59d0cbee9ad6281f59c61452ff60b57b5f01af1369e4d0edd9c
|
Provenance
The following attestation bundles were made for worklogs-0.3.6.tar.gz:
Publisher:
release.yml on alik-git/worklogs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
worklogs-0.3.6.tar.gz -
Subject digest:
c7032bdd1984d23884f8d07aad347834847f47c915c76a82d885d1712e41d382 - Sigstore transparency entry: 1840678783
- Sigstore integration time:
-
Permalink:
alik-git/worklogs@8eacadfb48defd11291fc319b2db2adf1a44f93a -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/alik-git
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8eacadfb48defd11291fc319b2db2adf1a44f93a -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34ec97c3d1a4cb01410e07afe7b252ec0717bf8c55d8bdf35c9651c61e273296
|
|
| MD5 |
1f44045aad74d12389239f5732c1467e
|
|
| BLAKE2b-256 |
190ce2ed7dd4c3bd3651cfbdb302ee6175c8b1b2e25be9462299880cdcabe5ea
|
Provenance
The following attestation bundles were made for worklogs-0.3.6-py3-none-any.whl:
Publisher:
release.yml on alik-git/worklogs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
worklogs-0.3.6-py3-none-any.whl -
Subject digest:
34ec97c3d1a4cb01410e07afe7b252ec0717bf8c55d8bdf35c9651c61e273296 - Sigstore transparency entry: 1840678831
- Sigstore integration time:
-
Permalink:
alik-git/worklogs@8eacadfb48defd11291fc319b2db2adf1a44f93a -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/alik-git
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8eacadfb48defd11291fc319b2db2adf1a44f93a -
Trigger Event:
release
-
Statement type: