Minting a Zenodo DOI
May 21, 2026 · View on GitHub
This document is the one-time, maintainer-only checklist for binding
skdr-eval to Zenodo so every tagged GitHub release
gets archived with a citable DOI.
Why
A non-trivial fraction of academic users will only cite — and therefore only use — a library that has a versioned DOI. The DOI also gives the project a permanent landing page independent of GitHub.
One-time setup (≈5 minutes)
- Sign in to https://zenodo.org with the GitHub identity that has admin
rights on
dgenio/skdr-eval(free account; no fee). - Open https://zenodo.org/account/settings/github/ and click "Sync now".
- Find
dgenio/skdr-evalin the repository list and flip the toggle to On. This authorizes Zenodo to listen for GitHub release webhooks on this repo. - Confirm the metadata. Zenodo will use
.zenodo.jsonat the repo root (already present) as the source of truth for title, authors, keywords, description, and license.
First release that gets a DOI
The next tagged release (after v0.8.0) will automatically:
- Trigger the existing
release.ymlworkflow. - Notify Zenodo via the GitHub webhook.
- Archive the tagged source tree.
- Mint two DOIs:
- A concept DOI representing "all versions of skdr-eval".
- A version DOI specific to that release.
Post-mint follow-up
Once the concept DOI is known, replace the placeholder in two files:
CITATION.cff— theidentifiers:block (type: doi) currently holds10.5281/zenodo.0000000. Replace with the real concept DOI.README.md— add a Zenodo DOI badge under the existing PyPI / Coverage badges (suggested badge URL pattern is provided on the Zenodo record page).
Open a small chore: bind real Zenodo DOI PR with both edits.
Methods note / preprint
A short methods note describing what skdr-eval does differently from the
broader OPE ecosystem (Open Bandit Pipeline, SCOPE-RL, banditml) is drafted
in docs/methods.md. After the DOI is live, that note can be
deposited on arXiv (cs.LG / stat.ML) and the arXiv ID added under
identifiers: in CITATION.cff.