decree
Python 3.11+ reimplementation of adr-tools with a typed API and a Typer CLI.
install
Decree is published on PyPI and can be installed on Linux, macOS, or Windows. We recommend using either pipx or uv for a clean, isolated installation.
Install with pipx
pipx installs Python CLI tools in their own virtual environments so they do
not interfere with system packages.
pipx ensurepath
pipx install decree
decree --help
Upgrade:
pipx upgrade decree
Uninstall:
pipx uninstall decree
Works on Ubuntu, Debian, macOS, and Windows. Uses your system Python (3.11 or newer). No sudo is required for the app itself.
Install with uv
uv is a Rust-based Python toolchain designed for speed and reproducibility.
Install uv: guide
Install decree:
uv tool install decree
decree --help
Upgrade:
uv tool upgrade decree
Uninstall:
uv tool uninstall decree
uv does not require system Python once installed.
quickstart
decree init
decree new Use beartype on public API
decree list
decree generate toc > doc/adr/README.md
decree generate graph # exits non-zero, not implemented
cli
decree init [DIR]decree new [--status STATUS] [--template PATH] [--dir DIR] [--date YYYY-MM-DD] TITLE...decree link SRC REL TGT [--reverse / --no-reverse]decree listdecree generate tocdecree generate graph(not implemented)decree upgrade-repository
exit codes
Decree follows sysexits where
available and falls back to portable numbers on platforms such as Windows. The
fallback values are listed below; on POSIX you will see the native os.EX_*
numbers (for example, usage errors exit with 64).
| Fallback | ExitCode member | Meaning |
|---|---|---|
| 0 | ExitCode.SUCCESS |
Successful run. |
| 1 | ExitCode.GENERAL_ERROR |
Unexpected runtime failure or abort. |
| 2 | ExitCode.USAGE_ERROR |
CLI usage error (missing/bad arguments). |
| 66 | ExitCode.INPUT_MISSING |
Required input was missing or unreadable. |
| 69 | ExitCode.UNAVAILABLE |
Service or dependency unavailable. |
| 78 | ExitCode.CONFIG_ERROR |
Configuration or environment problem. |
Examples:
decree new "Valid ADR" # -> 0
decree new --template missing.md foo # -> 66 (missing template)
ADR_DATE=bad-date decree new Foo # -> 78 (invalid config)
Contributors should raise click.UsageError for argument problems and
click.ClickException with ExitCode for domain failures. See the
Click exception guide
for details.
configuration
ADR_DATE: if set, used verbatim as the ADR date after validationADR_TEMPLATE: path to a custom template file
Template precedence is explicit CLI flag first, then the environment variable, then the built-in default:
ADR_TEMPLATE=/path/to/template.md decree new "Use beartype"
decree new --template /other/path.md "Use beartype" # CLI overrides env var
dependabot
Dependabot checks uv dependencies and GitHub Actions every Monday at 09:00 America/Los_Angeles.
Edit .github/dependabot.yml to change the schedule window,
and adjust the groups block if you want different buckets for runtime versus dev tooling updates.
Date handling and reproducibility
New ADRs always render Date: YYYY-MM-DD in their front matter. By default, the
current local date is used. Supply --date YYYY-MM-DD or set the ADR_DATE
environment variable to override the value (the CLI flag takes precedence). Any
override must already be in ISO format; otherwise, the command exits with an
error.
Metadata
Release files for decree 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| decree-0.2.0.tar.gz | 13.1 kB | With provenance | Details for decree-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| decree-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for decree-0.2.0-py3-none-any.whl |
Total release size: 29.0 kB
Release files / decree-0.2.0.tar.gz
| Download URL | decree-0.2.0.tar.gz |
|---|---|
| Size | 13.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f165fe4f9642c71dc401b903a9d523155f8d602b215fbe37dff2cffb7198b5ca
|
|
BLAKE2b-256 checksum How to use checksums |
210520c8decb4bf6de22b3521b114d70b6fcd15d8f877ed5e62cb7c7aec69a18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2025.
Transparency logRelease files / decree-0.2.0-py3-none-any.whl
| Download URL | decree-0.2.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
27ee28c466f8dca0d7cf0b4ef55cc656d6247e3df4dfb592e8716f0f47f8eee8
|
|
BLAKE2b-256 checksum How to use checksums |
c31035b799e0a9816966dee4f1d833f840ad458aa5f12ad9025282253da031e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2025.
Transparency logSecurity for decree 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for decree-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.