Skip to content

Tutorial

This tutorial follows the real path that led to repolish becoming what it is today. Rather than presenting the full feature set up front, each part introduces a new problem and shows exactly why the next feature was needed.

By the end you will have touched every major concept in repolish and have a mental model of how the pieces connect.

What you will build

Part What you build Concepts introduced
1 — Workspace Provider A provider that manages mise.toml and a poe_tasks.toml with dprint formatter tasks Provider structure, templates, anchors
2 — Python Provider A second provider that adds ruff checks and contributes its tasks to the workspace provider Provider inputs, provide_inputs, finalize_context
3 — The Sync Problem Two separate provider repos applied across multiple projects The pain of keeping separate repos in sync
4 — Going Monorepo Combining both providers into one monorepo Monorepo mode, testing providers together
5 — Everything Together A consumer project that uses both providers at once Full repolish.yaml configuration, sessions

Companion repositories

The tutorial is written around three real repositories you will create as you follow along.

Repository Role Created in
my-project The consumer project you apply providers to throughout the tutorial Before Part 1
devkit-workspace The first provider (workspace tooling) Part 1
devkit-python The second provider (Python checks), lives separately at first Part 2
devkit The providers monorepo — devkit-workspace and devkit-python combined Part 4

Each part ends with a checkpoint block that tells you which repositories to tag and what tag to use. By the end of the tutorial every meaningful state has a permanent reference you can link to from notes, PRs, or documentation.

Prerequisites

mise will install everything else — uv, dprint, poethepoet — as the tutorial progresses. repolish itself gets installed via uv once mise has it available.

You do not need to know how repolish works internally — that is what this tutorial is for.