rfcman — a BigTalk utility: fast CLI for managing RFC lifecycles
Project description
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]"
ruff check .
ruff format .
mypy
pytest
Versioning and changelog use Commitizen (Conventional Commits):
cz bump
git push && git push --tags
Pushing a v* tag runs .github/workflows/publish.yml and uploads to PyPI (Trusted Publishing).
License
Apache-2.0
AI Disclosures
This project has significant contributions from AI.
Project details
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 rfcman-0.1.2.tar.gz.
File metadata
- Download URL: rfcman-0.1.2.tar.gz
- Upload date:
- Size: 741.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18c3aaf4a7070d514d241dfe40b1ee1408a33349441f6eb7e5c6d3ca68e17d94
|
|
| MD5 |
f77b3a51fd4cc3614925f3116d3c494a
|
|
| BLAKE2b-256 |
c398a7bd079617c5eedf65ca5b6d2a2ff7e87306a64d2e0f33e154a16420619e
|
File details
Details for the file rfcman-0.1.2-py3-none-any.whl.
File metadata
- Download URL: rfcman-0.1.2-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae245152b7490c8d7a7b29ece98f686fb799cbf02a4b15f9ec036b8fbf663691
|
|
| MD5 |
9776b57dba1b02b05c66981e264e40a2
|
|
| BLAKE2b-256 |
6698cb7ffb3bab7eb5e1d7dd77e4cff1f813daec688f603f1bcf0d5199a0e0f0
|