The Tasks
Beside the subcommands The Command Line sets out, mise runs the development loop as tasks, most of them an executable file at .mise/tasks/<group>/<name> and the rest declared inline in .mise/config.toml, and mise tasks lists both. This page says what each group is for and names every task in it, with the form a reader types first, whereas a task declaring hide = true, which exists for a workflow or a hook rather than for a reader, appears neither here nor in mise tasks.
Running a Task
The tasks run most often answer to a one-word alias, so mise audit is the whole command, whereas a task carrying no alias runs by its full <group>:<name> name behind mise run, as in mise run data:catalog.
Whatever follows the task name reaches the tool the task wraps wherever the task's file passes it on, so mise test -k prepare hands -k prepare to pytest.
The Groups
Data
The data: group reaches the services the project reads, packs what each fetch keeps into the tars a weekly release carries, rebuilds the tables the package ships, opens the record of each run, and clears what a fetch left behind. A fetch writes under data/, which git ignores, whereas a rebuild writes the station catalog or the pass schedule into the package.
| Run | Task | What It Does |
|---|---|---|
mise run data:browse | data:browse | Open Hamilton's experiment viewer over every run tidemark run recorded under data/runs/ |
mise run data:catalog | data:catalog | Rebuild the station catalog from the services that publish the gauge metadata |
mise run data:clean | data:clean | Remove everything under data/ except data/provided/, data/runs/, and .gitkeep |
mise run data:downloads | data:downloads | Print how many times GitHub has served the AVISO tar each release carries |
mise run data:excerpt | data:excerpt | Copy the Level 2 pass the methods page draws into the package from the passes under data/swot/ |
mise run data:fetch:coast | data:fetch:coast | Seed the OpenStreetMap coastline osmdata derives from the newest release carrying it, or fetch it and cut it to the box around every gauge, into data/coast/, or fetch it again under -- --refresh |
mise run data:fetch:gauges | data:fetch:gauges | Seed the NOAA stations and the USGS gauges from the newest release carrying each, then fetch what each gauge's water level series lacks from the NERACOOS ERDDAP, NOAA's CO-OPS Data API, or the USGS Water Data API into data/gauges/, or only the gauges named after -- |
mise run data:fetch:geoid | data:fetch:geoid | Seed the GEOID18 grid NGS publishes from the newest release carrying it, or fetch it as PROJ's CDN serves it, into data/geoid/, or fetch it again under -- --refresh |
mise run data:fetch:gnss | data:fetch:gnss | Seed the Nevada Geodetic Laboratory's table of GNSS station velocities from the newest release carrying it, or fetch it, into data/gnss/, or the newest under -- --refresh |
mise run data:fetch:swot | data:fetch:swot | Seed each SWOT file from the newest release carrying it, then fetch every SWOT pass within reach of a gauge into data/swot/, PO.DAAC's Level 2 Expert and Unsmoothed files and, for l3, AVISO's Level 3 Unsmoothed product, or every pass again under -- --refresh, and bring the samples table up to date |
mise run data:login:aviso | data:login:aviso | Log in to AVISO+ once, saving a login typed at the prompt to ~/.netrc beside the Earthdata one |
mise run data:login:earthdata | data:login:earthdata | Log in to NASA Earthdata once, saving a login typed at the prompt to ~/.netrc |
mise run data:login:usgs | data:login:usgs | Log in to USGS once, saving a Water Data API key typed at the prompt to ~/.netrc, which raises the hourly limit on requests |
mise run data:pack | data:pack | Pack what each source's fetch keeps under data/ into the Zstandard tars a release carries for it |
mise run data:schedule | data:schedule | Rebuild the pass schedule the package ships from the passes under data/swot/ |
Docs
The docs: group rewrites every region a page takes from a declaration the repository already carries, such as the subcommands on The Command Line and the tables on this page, which read each task out of the listing mise keeps from the frontmatter every task declares.
| Run | Task | What It Does |
|---|---|---|
mise cite | docs:cite | Print each entry's footnote, or check each DOI under -- --check |
mise render | docs:render | Render the tables, footnotes, and marks the declarations describe |
GitHub Actions
The gha: group holds the GitHub-side plumbing and the lint over the workflows, which is why no task in it carries an alias. The workflows run gha:cut, gha:prune, gha:reuse, and gha:summarize on the runner, and gha:lint runs on a pull request and in mise verify alike, whereas gha:attach, gha:place, gha:roll, gha:sync:labels, and gha:sync:rulesets change the repository on GitHub, so each runs by hand once a maintainer has approved the change. On release day gha:roll runs gha:attach itself, which puts the week's data on the draft before it is published. Under -- --refresh, either task runs each fetch under --refresh before the pack, so a revision the fetches' own checks miss reaches the release.
| Run | Task | What It Does |
|---|---|---|
mise run gha:attach | gha:attach | Fetch and pack every source onto the week's draft release |
mise run gha:cut | gha:cut | Create, refresh, or deny the draft for the manifest's version |
mise run gha:lint | gha:lint | Lint the workflows and the composite action with zizmor, as annotations under GitHub Actions |
mise run gha:place | gha:place | Place each open issue and pull request without a milestone in the open one |
mise run gha:prune | gha:prune | Delete the Actions cache entries newer workflow runs replaced |
mise run gha:reuse | gha:reuse | Unpack each coverage report a run of the deployed tree attached |
mise run gha:roll | gha:roll | Attach the data, publish the release, and roll the open work over |
mise run gha:summarize | gha:summarize | Write a workflow step summary and exit with its gate verdict |
mise run gha:sync:labels | gha:sync:labels | Sync the GitHub labels to the registry at .github/labels.toml |
mise run gha:sync:rulesets | gha:sync:rulesets | Apply the rulesets and the settings at .github/settings.toml |
Locks
The lock: group keeps uv.lock, .mise/mise.lock, docs/bun.lock, and the lockfile beside each task script declaring its own dependencies in step with the manifests they resolve, and lock:check also fails on a version a published advisory names. lock:lift reads the newest release of each pin from the manager that resolves it and lists every pin behind one, where -- --try lifts them all in a scratch clone and runs mise verify there and -- --write writes the lift into the checkout. Each runs every time.
| Run | Task | What It Does |
|---|---|---|
mise lockfile | lock:check | Verify every lockfile matches its manifest and no uv or bun lockfile pins a version a published advisory names |
mise lift | lock:lift | List the pins behind their newest release, and try or write them |
mise relock | lock:sync | Re-resolve every lockfile against its manifest |
Python
The py: group is the inner loop, covering the Python test suite and the formatter.
| Run | Task | What It Does |
|---|---|---|
mise collect | py:collect | Print the name of every test the suite collects in sorted order, passing any further arguments to pytest |
mise cover | py:cover | Run the test suite under coverage, failing below fail_under, writing the HTML and JSON reports, and passing any further arguments to pytest |
mise format | py:format | Rewrite the Python source to the house style, passing any further arguments to the formatter |
mise lint | py:lint | Report every formatting rewrite and lint finding, as annotations under GitHub Actions |
mise test | py:test | Run the test suite, passing any further arguments to pytest |
Repository
The repo: group holds the gates, the coverage total, and the version bump that starts each week's release, where repo:audit checks the invariants no other gate covers and repo:verify runs locally what GitHub Actions runs on a pull request. repo:bump writes the next minor version (0.2.0 to 0.3.0) into pyproject.toml and uv.lock through uv version --bump minor, the next major version (0.5.0 to 1.0.0) through uv version --bump major under --major, or the next patch version (1.0.0 to 1.0.1) through uv version --bump patch under --patch.
| Run | Task | What It Does |
|---|---|---|
mise audit | repo:audit | Audit the pins, the registries, the gates, and the task tree |
mise bump | repo:bump | Move the version to the next minor release |
mise merges | repo:merges | Report how a commit merges with each open pull request |
mise tally | repo:tally | Print the pooled coverage total the README badge reads |
mise verify | repo:verify | Run the full local CI sweep |
Site
The site: group builds, serves, and checks the VitePress site under docs/, and mise verify runs its checks beside the package's, as One Gate per Change lists.
| Run | Task | What It Does |
|---|---|---|
mise axe | site:axe | Check every built page in both schemes for accessibility violations through axe-core in a headless Chromium, which the task installs under .cache/playwright/ |
mise build | site:build | Build docs/ into docs/.vitepress/dist, which the Pages workflow deploys |
mise run site:cover | site:cover | Run the site suite under coverage, failing below the 95% thresholds |
mise draw | site:draw | Write each drawing a page embeds to docs/pages/figures/ and the terrain's levels to docs/public/terrain/ from the modules that draw them |
mise run site:install | site:install | Install the site's dependencies against the frozen lockfile |
mise linkcheck | site:linkcheck | Check every link and fragment written into the built site, the README, the contributing guide, and the classroom documents against what exists |
mise run site:lint | site:lint | Lint the site's TypeScript and Vue with oxlint and its stylesheets with Stylelint against the baseline the base commit holds them to, as annotations under GitHub Actions |
mise present | site:present | Build a talk under docs/classroom/presentations/ where it is out of date, then play it in the browser |
mise proof | site:proof | Check every drawing in the built site against the sheet the build serves beside it, and the built sheet and every style a page sets for a length, a time, an opacity, a curve, or a color no declared value supplies |
mise reel | site:reel | Write the drawing in motion the README opens on to docs/assets/reel.gif from the modules that draw it |
mise run site:replay | site:replay | Replay a release's data and site, or the working tree's |
mise run site:replay:build | site:replay:build | Build a replay's site inside its clone |
mise run site:replay:check | site:replay:check | Run a replay's checks inside its clone |
mise run site:replay:compare | site:replay:compare | Compare a replay's rebuild with its release's site file by file |
mise run site:replay:seed | site:replay:seed | Seed a replay's clone from its release's tars alone |
mise scour | site:scour | Scour the site for unused files, exports, and dependencies and for import cycles |
mise serve | site:serve | Serve docs/ with hot reloading for local editing |
mise run site:test | site:test | Run the site suite with vitest, forwarding any further arguments |
mise typecheck | site:typecheck | Type-check the site's TypeScript with tsc, refusing a single-file component |
mise weigh | site:weigh | Weigh the theme, the CSS, the sheet KaTeX ships, the entry every page loads, each page's first load, and each visual's data against their budgets |
Workspace
The workspace: group reaches the directory that holds every worktree, which is not itself a checkout. Its task links what a session reads from this checkout's .claude/ into that directory, so a session started there reads the same configuration as one inside a worktree.
| Run | Task | What It Does |
|---|---|---|
mise run workspace:link | workspace:link | Link this checkout's agents, settings, hooks, and skills into the .claude directory above the worktrees |