Skip to main content

rfcman

rfcman logo

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
  • upgrade keeps the previous document and creates the next stage with a references link (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
  • list stage names
  • RFC refs for describe, upgrade, and supersede (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:

  1. Choose the next SemVer from conventional commits
  2. Update CHANGELOG.md, pyproject.toml, and __version__
  3. 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)

Source distribution for rfcman 0.2.0
File Size Uploaded Provenance
rfcman-0.2.0.tar.gz 742.3 kB With provenance Details

Built distribution (wheel)

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

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

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

Select from 2 files

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

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