Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Contributing to xmris

Welcome! xmris is built on a strict “xarray in, xarray out” philosophy: the pipeline is functional and N-dimensional, and every function preserves the physics metadata xarray carries. Contributing means adding to that pipeline without breaking its guarantees.

Rather than one long checklist that applies unevenly, the rules here are organised by the kind of change you are making. Find your row and follow the page it points to:

You are adding…Start hereIt defers to
A library function — transform, loader, or fitAdd a processing methodThe Architecture Contract, The Two Domains
An interactive widget — a UI over the mathsAdd a widgetThe Architecture Contract
A docs page — tutorial, explainer, or guideWrite a docs pageDocumentation style
The record of a significant decisionWrite a dev-diary entryA dev diary for xmris
The record of what shipped in a releaseWrite a changelog entryPublishing

Each of those pages carries a live checklist, rendered straight from the Claude Code skill that automates that kind of change — so whether you work by hand or with Claude, you follow the same, always-current rules.

Before your first change

  1. Set up your environment — clone the repo, run uv sync --all-extras --dev, and confirm uv run test is green.

  2. Make your change, following the page for its kind above. A significant decision is offered a dev-diary entry, written once the change lands.

  3. Open a pull request against mainmain takes no direct pushes. Six checks gate the merge: the test suite on Python 3.10 and 3.13, ruff, the docs style checker, an install of only what a real user receives, and an executed build of this documentation, so a broken notebook fails your branch rather than main. That build also publishes your change as a live preview site, which is where anything reader-facing gets reviewed.

  4. Drive it green, then hand off — a maintainer reviews and merges. Cutting a release is a separate, maintainer-run workflow: Publishing.

Where any contributor page differs from The Architecture Contract, that page wins: it is the authoritative rule set, and the skills defer to it too.