rr lets you build HTML from reusable components. No framework, no JS, no bundler — everything stays plain HTML, one rr build away.
report.rr.html
<rr-section id="tldr" title="TL;DR" icon="bolt">
<rr-tiles>
<rr-tile label="Shipped" value="3" icon="check" caption="this week"/>
</rr-tiles>
<rr-callout tone="amber"><b>Open decision.</b> TTL: 5 or 15 min.</rr-callout>
<rr-progress label="Rollout" pct="80" n="8/10 regions"/>
</rr-section>
rr build report.rr.html emits report.html — CSS, JS, and icons inlined, tree-shaken to what the page uses. It opens from disk and travels as an attachment. See a full document.
Why
HTML is the go-to format for one-off artifacts — reports, specs, visualizations, little apps. But a finished page is one giant file: every edit, by you or an AI agent, means reading and rewriting the whole thing. rr keeps the source small and componentized, so iteration stays fast and cheap — the big file only exists as output.
Try it
# scaffold, then build
rr init report
rr build report.rr.html
# link your own css, inlined last so it wins
rr build report.rr.html --css brand.css
Install
# npm
npm install -g rr-html
# Homebrew (macOS)
brew install hhushhas/tap/rr
# Scoop (Windows)
scoop install https://raw.githubusercontent.com/hhushhas/rr/main/scoop/rr.json