Your README is
the task file.

mq-task runs the code blocks in your Markdown by section title, with dependencies, parallel execution, conditions, retries and caching.

Get started Read the docs View on GitHub
curl -sSL https://raw.githubusercontent.com/harehare/mq-task/refs/heads/main/bin/install.sh | bash
mq-task demo

Write tasks as Markdown

A heading is a task, code blocks are its commands, and a meta block adds behaviour. The document stays readable on GitHub.

## build

```bash
cargo build --release
```

## ci

```meta
depends = ["lint", "test", "build"]
parallel = true
```

```bash
echo "all checks passed"
```

Features

Everything a task runner needs, without leaving Markdown.

Dependencies

Automatic ordering, shared deps run once, cycles detected.

Parallel execution

Fan-out and fan-in with -j limits, fail-fast or -k keep-going.

Conditions

if on env, OS, files or commands on PATH.

Retries & timeouts

Handle flaky steps; whole process trees are stopped on timeout.

Output passing

Capture a task's stdout for its dependents.

Imports

Compose task files: checks:lint.

Caching & watch

Skip up-to-date tasks with sources and outputs; re-run on change.

Graph & completions

Text or Mermaid dependency graph, shell completions.

Interactive TUI

Search, details, argument prompts and live per-task progress.

Any language

Bash, Python, Node, Ruby, Go, jq, mq. Configure a runtime per fence language in mq-task.toml.