Skip to main content

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 list
  • decree generate toc
  • decree 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 validation
  • ADR_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)

Source distribution for decree 0.2.0
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)

Table of built distributions (wheels) for decree 0.2.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page