0.6 Runbook library introduced →

Markdown that runs.

rundot runs the code blocks in a markdown file, one step at a time. Write a release checklist, a deploy or a setup guide once, and run it the same way every time.

$ uv tool install rundot
Read the docs

Python 3.12+ · macOS & Linux · other ways to install

hello.mdjust markdown
---
title: Say hello
inputs:
  - name: NAME
    description: Who to say hello to
---

# Say hello

Prose is left alone. Blocks marked
run are run, in order.

## Greet

```docstring
Saying hello to <NAME>.
```

```sh run
echo "Hello, <NAME>!"
```

## Count the letters

```python run
import os
name = os.environ["NAME"]
print(f"{name} has {len(name)} letters")
```
rundot running hello.md: it asks for NAME, shows the plan, runs a shell step and a Python step, and finishes ok

What people use it for

01 · Check

Know it works before it runs.

rundot check catches broken frontmatter, undeclared placeholders and shell or Python syntax errors, with line numbers. --dry prints every command with its inputs filled in, and runs nothing.

  • Shell syntax errors & shellcheck warnings
  • Typos in frontmatter keys
  • Inputs used but never declared
rundot check in the docs →
rundot check finding a shell syntax error and an undeclared input in deploy.md, then a dry run of hello.md showing every command with inputs filled in

02 · Confirm

Pause for the bits only a person can do.

A confirm block stops the run until someone answers y. Inputs can be checked against a pattern or a list of choices. Secrets are hidden as you type them and shown as **** in the output and the transcript.

```confirm
Publish the GitHub release notes
for v<VERSION>.
```
Blocks and inputs in the docs →
rundot running a release runbook: it validates VERSION, hides the PyPI token, runs each step, then pauses at a confirm block for a manual step before finishing

03 · Library

Your runbooks, everywhere.

Drop books in ~/runbooks and run them by name from any project. A book runs in the folder you're in, so the same one works in every project.

$ cd ~/Projects/website
$ rundot rebuild-frontend
The runbook library in the docs →
rundot library listing the books in ~/runbooks, then rundot run picking rebuild-frontend by number and running it in the current project

04 · Agents

Agents improvise. Runbooks don't.

A runbook gives an agent a fixed set of steps to follow instead of working them out each time. Paste this prompt into your chat, or into your CLAUDE.md or AGENTS.md. It teaches the format and asks the agent to check and dry-run every runbook before running it.

prompt.txt raw
Loading… open prompt.txt

Also in rundot

Try it on your next release.

$ uv tool install rundot
Star on GitHub