rfcman
rfcman — a BigTalk utility.
A fast, elegant CLI for managing RFC lifecycles.
Incubated for BigTalk; usable for any project that needs structured proposal workflows.
Install
pip install rfcman
Requires Python 3.12+.
Quick start
rfcman init
rfcman new idea "Faster module loading"
rfcman list ideas
rfcman describe Idea-faster-module-loading
rfcman upgrade Idea-faster-module-loading
rfcman check
Lifecycle
Idea → Research → Proposed → Accepted
↘ Rejected
Accepted → Superseded
upgradekeeps the previous document and creates the next stage with areferenceslink (Idea-new-idea,Research-new-idea, …).- From Proposed, choose Accept or Reject.
- Accepting can optionally supersede an existing accepted RFC (type-to-filter picker).
rfcman supersede <old> <new>does the same non-interactively.
Each document stores a UUID in frontmatter. CLI args, completions, and references use Stage-filename (e.g. Idea-typed-channels for ideas/typed-channels.md). Cross-links in related / supersedes / superseded_by store UUIDs so they survive renames and stage moves.
rfcman init writes rfcman.yml in the directory where you ran the command, recording the tree location, created date, and author (from git config). Later commands discover that file (walking up from cwd) unless you pass --path / -p. Change author in rfcman.yml to override the byline on new documents.
| Command | Purpose |
|---|---|
rfcman help [CMD] |
Show help for rfcman or a command |
rfcman init [-p PATH] |
Create an RFC tree (./rfcs by default) |
rfcman new idea NAME |
Create an idea (author from rfcman.yml, else git) |
rfcman list [STAGE] |
One-line listing |
rfcman describe REF |
Summary + reference tree (terminal hyperlinks) |
rfcman upgrade REF |
Advance to the next stage |
rfcman supersede OLD NEW |
Mark accepted OLD superseded by accepted NEW |
rfcman check |
Integrity check for links and layout |
Every command also accepts help (e.g. rfcman init help, rfcman describe help).
Templates
init dumps editable body templates into rfcs/_tpls/. Frontmatter is owned by rfcman and is not dumped or overridable.
Shell completions
rfcman --install-completion bash
rfcman --install-completion zsh
rfcman --install-completion fish
Or print a script to source yourself:
rfcman --show-completion bash > completions/rfcman.bash
Pre-generated scripts also live in completions/.
After install, tab-complete:
- commands and options
liststage names- RFC refs for
describe,upgrade, andsupersede(match by stage, filename stem, or title)
Development
python -m pip install -e ".[dev]"
make check
Push commits
make push
Pushes the current branch and any local tags. Working tree must be clean.
Release to PyPI
make release
Runs checks, then Commitizen (cz bump) to:
- Choose the next SemVer from conventional commits
- Update
CHANGELOG.md,pyproject.toml, and__version__ - Create a
v*tag and push branch + tags
The tag triggers .github/workflows/publish.yml (Trusted Publishing → PyPI).
License
Apache-2.0
AI Disclosures
This project has significant contributions from AI.
Metadata
Release files for rfcman 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 | |
|---|---|---|---|---|
| rfcman-0.2.0.tar.gz | 742.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rfcman-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 768.2 kB
Release files / rfcman-0.2.0.tar.gz
| Download URL | rfcman-0.2.0.tar.gz |
|---|---|
| Size | 742.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f18f59009531dff65d9ff526624a8825861495a225356d03c07a2e6077a163b
|
|
BLAKE2b-256 checksum How to use checksums |
6132babcd5d097ddab43ec12aa4d318e1e935543e625c56253f6301f7980c3db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 Jul 21, 2026.
Transparency logRelease files / rfcman-0.2.0-py3-none-any.whl
| Download URL | rfcman-0.2.0-py3-none-any.whl |
|---|---|
| Size | 25.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f6f36ed2ab822176f7a085bd4e59669154b453b2bee578e278bdda64da1d9386
|
|
BLAKE2b-256 checksum How to use checksums |
c43fd2e565659625a96d28590968e4366f87f106a6296135ac7d91014ae70abf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 Jul 21, 2026.
Transparency logSecurity for rfcman 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 rfcman-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 Jul 21, 2026.
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.