dark-madr
A Python CLI for managing Architecture Decision Records.
Compatible with adr-tools workflow. Supports Nygard and MADR templates.
For background on ADRs, see the included paper: Using ADR on GitHub
Installation
pip install dark-madr
For development:
uv sync
uv pip install -e .
Usage
# Initialize ADR directory
adr init
# Create a new ADR
adr new "Use PostgreSQL for primary database"
# List all ADRs
adr list
# Show a specific ADR
adr show 1
# Supersede an existing ADR
adr new "Use PostgreSQL 15" --supersedes 1
# Generate table of contents
adr generate toc
Configuration
Configure defaults in pyproject.toml:
[tool.adr]
dir = "docs/decisions"
template = "madr"
default_status = "proposed"
default_authors = ["Architecture Team"]
Initialize configuration:
adr init-config
adr config # view current settings
Commands
| Command | Description |
|---|---|
adr init |
Initialize ADR directory with first ADR |
adr new <title> |
Create a new ADR |
adr list |
List all ADRs |
adr show <number> |
Display an ADR |
adr generate toc |
Generate table of contents |
adr templates |
List available templates |
adr config |
Show current configuration |
adr init-config |
Add config section to pyproject.toml |
Options
adr new "Title" --template madr # Use specific template
adr new "Title" --status accepted # Set initial status
adr new "Title" --supersedes 3 # Supersede ADR-0003
adr --adr-dir ./docs list # Override ADR directory
Templates
Two built-in templates:
- nygard (default) - Michael Nygard's original format
- madr - Markdown Any Decision Records format
View template structure:
adr help-template nygard
adr help-template madr
Custom templates can be added to a directory specified by template_dir in config.
Development
uv sync --all-extras
uv run pytest
uv run mypy src/
uv run ruff check src/
References
- Documenting Architecture Decisions - Michael Nygard
- Lightweight ADRs - ThoughtWorks Tech Radar (Adopt, Nov 2017)
- adr-tools - Nat Pryce
- MADR - Markdown Any Decision Records
License
MIT
Metadata
Release files for dark-madr 0.1.2
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 | |
|---|---|---|---|---|
| dark_madr-0.1.2.tar.gz | 101.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dark_madr-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 120.0 kB
Release files / dark_madr-0.1.2.tar.gz
| Download URL | dark_madr-0.1.2.tar.gz |
|---|---|
| Size | 101.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab0924b1205b65e82f29bcb8156e4c8a4848896284ae54cee3c1a12d4f7e92d1
|
|
BLAKE2b-256 checksum How to use checksums |
89f1f72d933a13efd3ff54839e815cf74f714a205eea778e2348efcea21a34d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dark_madr-0.1.2-py3-none-any.whl
| Download URL | dark_madr-0.1.2-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba59ef3025e6349c82b4a8597415c70e062def5f798d4983b89dd2d0934f08c1
|
|
BLAKE2b-256 checksum How to use checksums |
3456c5723565e4e4bb167110275a77642d3ffa0141e679eef39eabc8256e88e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for dark-madr 0.1.2
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.