Skip to content

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.

RunTaskWhat It Does
mise run data:browsedata:browseOpen Hamilton's experiment viewer over every run tidemark run recorded under data/runs/
mise run data:catalogdata:catalogRebuild the station catalog from the services that publish the gauge metadata
mise run data:cleandata:cleanRemove everything under data/ except data/provided/, data/runs/, and .gitkeep
mise run data:downloadsdata:downloadsPrint how many times GitHub has served the AVISO tar each release carries
mise run data:excerptdata:excerptCopy the Level 2 pass the methods page draws into the package from the passes under data/swot/
mise run data:fetch:coastdata:fetch:coastSeed 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:gaugesdata:fetch:gaugesSeed 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:geoiddata:fetch:geoidSeed 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:gnssdata:fetch:gnssSeed 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:swotdata:fetch:swotSeed 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:avisodata:login:avisoLog in to AVISO+ once, saving a login typed at the prompt to ~/.netrc beside the Earthdata one
mise run data:login:earthdatadata:login:earthdataLog in to NASA Earthdata once, saving a login typed at the prompt to ~/.netrc
mise run data:login:usgsdata:login:usgsLog 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:packdata:packPack what each source's fetch keeps under data/ into the Zstandard tars a release carries for it
mise run data:scheduledata:scheduleRebuild 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.

RunTaskWhat It Does
mise citedocs:citePrint each entry's footnote, or check each DOI under -- --check
mise renderdocs:renderRender 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.

RunTaskWhat It Does
mise run gha:attachgha:attachFetch and pack every source onto the week's draft release
mise run gha:cutgha:cutCreate, refresh, or deny the draft for the manifest's version
mise run gha:lintgha:lintLint the workflows and the composite action with zizmor, as annotations under GitHub Actions
mise run gha:placegha:placePlace each open issue and pull request without a milestone in the open one
mise run gha:prunegha:pruneDelete the Actions cache entries newer workflow runs replaced
mise run gha:reusegha:reuseUnpack each coverage report a run of the deployed tree attached
mise run gha:rollgha:rollAttach the data, publish the release, and roll the open work over
mise run gha:summarizegha:summarizeWrite a workflow step summary and exit with its gate verdict
mise run gha:sync:labelsgha:sync:labelsSync the GitHub labels to the registry at .github/labels.toml
mise run gha:sync:rulesetsgha:sync:rulesetsApply 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.

RunTaskWhat It Does
mise lockfilelock:checkVerify every lockfile matches its manifest and no uv or bun lockfile pins a version a published advisory names
mise liftlock:liftList the pins behind their newest release, and try or write them
mise relocklock:syncRe-resolve every lockfile against its manifest

Python ​

The py: group is the inner loop, covering the Python test suite and the formatter.

RunTaskWhat It Does
mise collectpy:collectPrint the name of every test the suite collects in sorted order, passing any further arguments to pytest
mise coverpy:coverRun the test suite under coverage, failing below fail_under, writing the HTML and JSON reports, and passing any further arguments to pytest
mise formatpy:formatRewrite the Python source to the house style, passing any further arguments to the formatter
mise lintpy:lintReport every formatting rewrite and lint finding, as annotations under GitHub Actions
mise testpy:testRun 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.

RunTaskWhat It Does
mise auditrepo:auditAudit the pins, the registries, the gates, and the task tree
mise bumprepo:bumpMove the version to the next minor release
mise mergesrepo:mergesReport how a commit merges with each open pull request
mise tallyrepo:tallyPrint the pooled coverage total the README badge reads
mise verifyrepo:verifyRun 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.

RunTaskWhat It Does
mise axesite:axeCheck every built page in both schemes for accessibility violations through axe-core in a headless Chromium, which the task installs under .cache/playwright/
mise buildsite:buildBuild docs/ into docs/.vitepress/dist, which the Pages workflow deploys
mise run site:coversite:coverRun the site suite under coverage, failing below the 95% thresholds
mise drawsite:drawWrite 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:installsite:installInstall the site's dependencies against the frozen lockfile
mise linkchecksite:linkcheckCheck every link and fragment written into the built site, the README, the contributing guide, and the classroom documents against what exists
mise run site:lintsite:lintLint 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 presentsite:presentBuild a talk under docs/classroom/presentations/ where it is out of date, then play it in the browser
mise proofsite:proofCheck 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 reelsite:reelWrite the drawing in motion the README opens on to docs/assets/reel.gif from the modules that draw it
mise run site:replaysite:replayReplay a release's data and site, or the working tree's
mise run site:replay:buildsite:replay:buildBuild a replay's site inside its clone
mise run site:replay:checksite:replay:checkRun a replay's checks inside its clone
mise run site:replay:comparesite:replay:compareCompare a replay's rebuild with its release's site file by file
mise run site:replay:seedsite:replay:seedSeed a replay's clone from its release's tars alone
mise scoursite:scourScour the site for unused files, exports, and dependencies and for import cycles
mise servesite:serveServe docs/ with hot reloading for local editing
mise run site:testsite:testRun the site suite with vitest, forwarding any further arguments
mise typechecksite:typecheckType-check the site's TypeScript with tsc, refusing a single-file component
mise weighsite:weighWeigh 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.

RunTaskWhat It Does
mise run workspace:linkworkspace:linkLink this checkout's agents, settings, hooks, and skills into the .claude directory above the worktrees