flowmark
A Markdown auto-formatter for clean diffs and semantic line breaks.
This is a Rust port of flowmark (Python), with identical CLI and identical output. See the Python project for full documentation, including features, CLI reference, configuration, IDE setup, and agent use.
Why the Rust version?
- Single binary, no runtime —
cargo installor download a binary. No Python environment needed. - Fast — useful for large repos or CI pipelines.
- Library crate — embed formatting in Rust toolchains via docs.rs/flowmark.
Installation
Install from crates.io:
Or download a pre-built binary from GitHub Releases.
Usage
# Format a file in place
# Format all markdown in current directory
# Read from stdin, write to stdout
|
Library usage
use FormatOptions;
let opts = default;
let formatted = opts.reformat_text;
assert_eq!;
See docs.rs/flowmark for full API documentation.
Port status
This crate tracks flowmark v0.6.4 with full feature parity:
- Identical formatting output for all supported Markdown constructs (CommonMark + GFM: tables, footnotes, alerts, strikethrough, task lists, math)
- Identical CLI flags, configuration files, and file discovery
- 430 tests (0 ignored, 0 failures), including 31 cross-language parity tests
- All 292 Python tests have verified Rust counterparts — see the port coverage mapping for the full test-by-test mapping, which is CI-enforced
The port was created using the rust-porting-playbook.
Documentation
| Document | Description |
|---|---|
| docs/port-status.md | Full project status, release readiness, architecture, and doc index |
| docs/publishing.md | Release process and crates.io publishing |
| docs/port-sync-playbook.md | How the Rust codebase stays in sync with Python upstream |
| admin/ | Port administration: test mapping, dev tools, maintenance procedures |
| CONTRIBUTING.md | Build, test, and lint instructions |
| CHANGELOG.md | Release notes |